- HOME
- 【画像処理マスターへの道】 次の一歩を手前の一歩から考える ~分割点灯の照らす世界~
装置メーカー 画像処理ソフト
【画像処理マスターへの道】
次の一歩を手前の一歩から考える
~分割点灯の照らす世界~
画像処理に関連するさまざまな情報をお届けする連載です。
前回の記事では、画像処理の実行環境としての画像処理装置をクローズアップしてお届けしました。今回は再び画像処理ライブラリにフォーカスしてご紹介します。
画像処理のコアライブラリとバリエーション
当社画像処理ライブラリはいずれもFIE(FAST Image Engine)をコアライブラリとしています。
画像ファイルアクセスから、ブロブ解析やサーチ、前処理のための各種フィルタ、エッジ抽出と直線・円の検出、領域内の特徴量の計算、それらの解析のための古典的な機械学習(サポートベクターマシンや遺伝的アルゴリズムなど)まで、画像処理アルゴリズムの構築に必要な機能は、全てこのコアライブラリにあります。
この他にも、画像処理アルゴリズムでよく使われる幾何計算として、2点を通る直線と点までの距離と中点座標の算出や、円と直線の交点の算出、5点を通る辺を持つ四角形の中心座標の算出、長穴の測定(6点指定)などのユーティリティ関数も含まれています(FIEモジュールでは「幾何計算」の中の「一般計算」のカテゴリに格納されています)。
また、このライブラリは、さまざまな環境で実行できるようにC言語で実装されています。高速化などの改良変更や新規機能の追加などで互換性が保たれていることを確認するために、サポートしている環境を再現した実機で毎晩テストが行われています。
ライブラリをアップデートしたら動かなくなった、結果が変わったなどということはあってはなりませんから、細心の注意を払って開発、保守されています。
画像処理フィルタの例
幾何計算関数の例
このコアライブラリを利用したバリエーションとして、主に3種類の画像処理ライブラリがあります。まずはOS視点でご紹介します。
一つ目は当社独自OSのLNX上で動作するFAST Vision Library for LNXです。開発言語にはC言語を使用し、LNXシステムの機能による当社画像入力ボードからの画像取り込みやIO制御、GUI設計(実行画面や設定画面など)などを活用して画像処理システムを構築します。
二つ目はWindows OS上で動作するWILです。開発言語にはC/C++の他、C#とVisual Basic(.NET Framework)が使用できます。当社画像入力ボードからの画像取り込みとIO制御のモジュールも含まれ、GUI設計は主に.NET Frameworkで行いながらもWILの提供する機能(画像ビューなど)を補助的に活用することができます。また、グラフィカルに画像処理アルゴリズムを検討、更にソースコード出力も可能な開発支援ツールWIL-Builderも提供しています。
三つ目は当社指定のLinuxディストリビューション上で動作するFIE for Linuxです。開発言語にはC/C++言語を使用します。FTL for Linux(FTL:FAST Transport Layer)を併用することで当社画像入力ボードとIOボードがサポートされます。
開発支援ツールWIL-Builder
新しい開発言語への対応としてPython言語からFIE / FTL を呼び出すことができるラッパーライブラリとしてPyFIE / PyFTLの提供も開始しています。
Python開発環境で一般的なパッケージ管理システムのpipに対応しています。ラッパーライブラリ部分はPyPI(Python Package Index)に登録されていますので、pip installのコマンドでインストールすることができます。環境に応じてWILまたはFIE / FTL for Linuxをインストールしてご使用ください。
Pythonの豊富なオープンソースのパッケージと組み合わせることで、より柔軟な画像処理システムの構築とアルゴリズム開発の効率化を実現できます。
また、特注対応とはなりますが、ARM CPU向けとして、Raspberry PiシリーズやJetsonシリーズなどのエッジ端末のサポートも進めています。
照度差ステレオ機能の活用例
画像処理アルゴリズムの検討は画像を見てヒトが何を基準に判断しているかを言葉で言い表すところから始まります。最終的に、決まった形状を見つけているのであればサーチをしたくなるでしょうし、光っているキズを見つけるのであればブロブ解析をしたくなることでしょう。
そのためのノイズ抑制や強調などの前処理に各種フィルタを駆使することで、結果をより安定させていきます。これらの画像処理システムを構築するために必要な機能はライブラリに網羅されています。
そこには「見える画像を撮る」という大前提が隠れています。対象物を手に取り、照明の当て方をさまざまに変えて、「見える」を探します。そう考えると、画像処理というのは凄腕プログラマだけが居れば成り立つものでもなく、対象物の物性と現象の理解が根底にあると言ってもいいかもしれません。
ここでは分割点灯照明と組み合わせて使う照度差ステレオ機能の活用例をご紹介します。
照明を右側から当てると左側が影になり、左側から当てると右側が影になるけれど、両側から当てると左右の両方とも明るくなってしまって見たい箇所が見えなくなってしまうので、両方の画像をうまく合成して使いたいということがあります。
近年では通常のリング照明の形状で8方向を分割して点灯できる照明が各社からリリースされています。この照明を組み合わせて主に3次元情報を取得する照度差ステレオ(フォトメトリックステレオ)機能をライブラリに追加しています。
8方向からの照明を順に点灯させた8枚の画像
照明の照射方向を変えて撮像した複数枚の画像から、物体表明の微細な変化を強調させた画像を生成する手法です。絵柄やテクスチャ、背景ノイズの中にある凹凸やキズなどを強調することができます。
より具体的には、複数枚の画像から法線画像を計算することで、高さ画像と曲率画像、輪郭強調画像を計算することができます。また、ハレーション除去にも活用することが出来ます。
左から高さ画像、輪郭強調画像、曲率画像、ハレーション除去画像
活用例1:テクスチャ上のカード文字認識
一般的な照明では前景の文字が目立って背景の凹形状が目立ちませんが、照度差ステレオの高さ画像であれば高さの無い前景の文字をキャンセルして高さのある凹形状の文字を強調した画像を得ることができます。
左図:一般的な照明、右図:照度差ステレオの高さ画像
活用例2:フライス加工痕上のキズ
一般的な照明ではキズがフライス加工痕(カッターマーク)に埋もれてしまっていますが、照度差ステレオの輪郭強調画像であれば、フライス加工痕を抑制しながら、キズ部分を強調した画像を得ることができます。
左図:一般的な照明、右図:照度差ステレオの輪郭強調画像
活用例3:光沢面上のキズ
照度差ステレオの輪郭強調画像であれば、ハレーションの生じやすい光沢面上にある山折り状のキズを強調した画像を得ることができます。
左図:分割点灯した8枚の画像、右図:照度差ステレオの輪郭強調画像
活用例4:シール検査
一般的な照明では凸形状に前景の文字が重なって見えてしまっていますが、照度差ステレオの曲率画像であれば前景の文字を抑制して、凸形状のみを強調した画像を得ることができます。
左図:一般的な照明、右図:照度差ステレオの曲率画像
活用例5:バーコード印字上のキズ
一般的な照明ではバーコードの黒い部分にあるキズがほとんど見えていませんが、照度差ステレオの曲率画像であれば黒色のバー部分にあるキズを強調した画像を得ることができます。
左図:一般的な照明、右図:照度差ステレオの曲率画像
活用例6:チップ部品上のキズ
一般的な照明ではチップの表面のキズがほとんど見えていませんが、照度差ステレオの曲率画像であれば表面の印字も抑制してキズのみを強調した画像を得ることができます。
左図:一般的な照明、右図:照度差ステレオの曲率画像
分割点灯をAIでも
分割点灯照明と照度差ステレオ機能を組み合わせることで、一般的な照明だけでは見えづらいものを強調した画像を得ることができます。そうは言っても、残念ながらどのようなものでも見えるようになるわけではありません。
例えば、次図は凹凸のある金属板です。右側の白い部分の打痕は強調できていますが、画像横方向に延びているテクスチャの中の薄いキズは、照度差ステレオ機能をもってしてもノイズに埋もれてしまってルールベースだけでの検出は難しそうです。
左図:一般的な照明、右図:照度差ステレオの輪郭強調画像
照明の照射方向を切り替えた元画像を見ると特定の方向の照明のときに明るく見えてはいます。その方向の照明の画像だけを使えると良いのですが、キズがどの角度にあるか分からないときには照明の方向をどれかに決め打ちすることもできませんので、どれかの画像に反応のあったときをNGとして検出することはできないでしょうか。
当社のAIプラットフォームであればできます。多視点画像分類または多視点アノマリー検出の機能は、1つのワーク分の複数枚の画像を1セットのデータとして学習する機能です。
元々は対象物の周囲に配置した複数台のカメラで(あるいは1台のカメラの前で対象物を回転させて)撮像した複数枚の画像を1セットとして扱うという意味で「多視点」と呼ばれていますが、対象物とカメラと固定して照明の照射方向を切り替えた複数枚の画像でも有効性が確認できています。
左図:照明方向を切り替えた8枚の画像(これらを1つのワーク分の1セットとして学習) 右図:AIのNG判定の根拠を示すマップ(異常なほど赤く表示)
手に持ったワークを、さまざまに傾けながらその過程でキラッと光るNG箇所を見つけるという目視検査の自動化においては、照度差ステレオで見えるものは照度差ステレオで、元画像では見えているけれど、照度差ステレオでも強調しきれないものは、「多視点画像分類」または、「多視点アノマリー検出」で、といったハイブリッドのご提案ができる環境が整ってきています。
まとめ
今回の前半では画像処理ライブラリのラインアップとその機能をご紹介してきました。豊富な画像処理フィルタはもちろんのこと、特に計測テーマでの実利用に便利な幾何計算関数も多種取り揃えています。
後半では、画像処理の大前提である「見える画像を撮る」方法の一つとして、分割点灯照明と照度差ステレオの組合せの例をご紹介してきました。さらにAIプラットフォームの多視点画像分類・多視点アノマリー検出と組み合わせることで、分割点灯においてもルールベースとAIのハイブリッドを実現することができます。
次回は、画像処理研究最前線の動向のご紹介を予定しています。お楽しみに!