マイブーム@技術と生活

仕事や生活に関わる技術的なことを記述します。

マシンビジョン

(2014年の文章より)


■ Cognex社のPatMax®テクノロジー

Cognex社のPatMax®は、パターンの位置を特定するためのツールです。PatMax®の優れている点は、障害物の影響を完全に無視して、(x, y, θ)の座標を計算できることにあります。既にご存知の通り、PatMax®は特徴(エッジ)を基にして検索を行いますが、障害物によって対象物の一部が隠されていても、残された特徴を利用して(x, y, θ)を正確に算出することができます。言い換えれば、障害物による特徴(エッジ)は考慮されず、網目の後ろにある対象物であっても、誤差なく位置を特定できるということです。

PatMax®の動作は、物体の輪郭に沿ってCaliperを適用しているかのような印象を受けます。そのため、通常の画像においては、位置誤差はほぼゼロになることが多いです。この技術は、装置の振動までも検出するほどです。

PatMax®が苦手とする点の一つは、コントラストの差を区別しないことです。これは、画像全体の明るさが極端に変化しても、対象物を見つけ出せることを意味します。PatMax®は形状を基に判断し、対象を特定します。この問題は画像側での工夫によって解決可能であり、大きな問題にはなりません。

また、多重に重なった円(直径差が3〜5ピクセル)やその他の形状の区別は、どの画像処理技術においても難しいかもしれません。しかし、PatMax®は画像のアスペクト比(例えば、1:1.166)までも検出します。登録されたモデルにおいてアスペクト比を厳密に一致させることで、形状の区別がより容易になります。


■ Caliperツール

Caliperツールは、方向性のある長方形のウィンドウを指定し、左から右へ走査してエッジがある位置を検出するツールです。グレーレベルを利用した補間計算により、サブピクセル精度で位置を特定することが可能です。一般的に、この精度は1/4ピクセルとされています。このツールは一方向に走査するため、指定したウィンドウにおける"x位置"のみを計算します。ウィンドウのy方向のグレーレベルは加算され平均化されるため、ウィンドウの高さはノイズに対する感度を示します。

ウィンドウを物体を跨がせて配置し、左右(または上下)のエッジを検出することで、物体の"幅"を測定できます。ウィンドウは物体に対して垂直に設定する必要があり、この角度は測定される幅の精度に直接影響します。Cognex社のPatMax®ツールを使用して高精度で物体の角度を決定できるため(カタログ値は0.02度)、一般的な幅測定手順は「PatMax® → フィクスチャ → Caliper」となります。

Caliperを使用した位置決定も可能ですが、Cognex社のPatMax®テクノロジーが存在する現在、プログラミングが複雑になりがちであり、ノイズの影響を避けることが難しく、利用可能な用途が限定される傾向にあります。


■ Blobツール

画像内の塊(Blob)を特定するのに用いられるのがBlobツールです。このツールは、画像のピクセルを特定の閾値を用いて2値化(pix > thr ? val = 255 : val = 0)し、その結果得られるピクセルの塊について、面積や重心などの情報を提供します。実際には、画像の明るさの変化に応じて閾値を動的に設定したり、ピクセルの連結性を分析して塊を定義したり、見つかったBlobをフィルタリングして選別する処理が行われます。

Blobツールを実行する際に特に便利な機能がマスク機能です。これにより、不要な部分を隠して、目的の領域内のマークのみを検出することが可能になります。例えば、物体の欠陥検査を行う場合、PatMax®で位置を特定し、アフィン変換を利用して常に同じ領域を切り出し(マスク画像が固定で良い)、マスク画像を適用してBlobツールで欠陥を検出する、という手順が考えられます。

また、対象物の形状が不定で、サーチツールのパターン登録に適していない場合にも、Blobツールを使用して対象物の位置や向きを検出するという用途に利用されます。


■ Cognex社のPatInspect(R)テクノロジー(欠陥検査)

PatInspect®は、対象物の正常画像から実行時画像を引き算し、その結果残る部分(欠陥)を検出するためのツールです。その主な目的は、登録された画像と実行時の画像の差分画像を生成することにあります。

対象物がカメラの前で移動する際、画像の差分を取ると、位置や角度にわずかなずれがあると、それが差分として現れてしまいます。「欠陥とみなされるマークの面積 > 正常部分で避けられない差分の面積」が、検出可能な欠陥の最小面積を決める要因となります。

位置、角度(およびスケール)は、PatMax®を使用してほぼ誤差ゼロで求められるため、PatInspect®を使用する際には、正常部分における差分に関する心配はほとんどありません。むしろ、生産品にバラツキが存在し、そのバラツキをマスキングする努力が必要です。

PatInspect®が行うのは画像差分の生成のみなので、生成された差分画像はBlobツールに引き継がれ、欠陥の位置や面積が測定されます。Blobツールは、欠陥のフィルタリングをより柔軟に行えます。PatInspect®は、登録画像との差異を得点化する機能を持ちますが、この得点は画像全体の明るさの変化や、生産品のバラツキが多い部分(エッジ部分)の影響を考慮しています。

生産品のバラツキに関する問題は、Cognex社の新しいツールであるBoundaryInspect®を使用することで解決可能ですが、高性能なパソコンが必要とされるようです。


■ コグネックス社のCVLソフトウェア

CVLはCognex Vision Libraryの略称で、クラスライブラリです。そのため、ユーザーインターフェイスは基本的なもの(画像を表示するウィンドウや、その上にグラフィックを表示する関数)に限定されています。Cognex社のビジョンツールは、初めにCVLに実装され、その後、ユーザーインターフェイスを備えたVisionProなどに実装されます。CVLのメジャーバージョンアップはVisionProよりも遅れがちであるため、VisionProにはより進んだ機能が含まれることがあります。CVLは基本機能に焦点を当てており、他のソフトウェアが提供する応用機能は含まれていません。例えば、画像を簡単に2値化する場合、CVLではピクセルマップを使用します。

CVLでアプリケーションを開発する際にはC++の使用が必須です。C++の知識、マニュアルを読むための英語力、および数学の理解があれば、CVLは非常に強力なツールになりますが、これら三つのスキルをすべて持つ人は少ないです。日本語のマニュアルも提供されていますが、これは古いバージョンに対応しており、最新機能を利用したい場合は英語のマニュアルを参照する必要があります。何か不明な点がある場合は、ヘッダーファイル(.h)を直接調べるとよいでしょう。


■ コグネックス社のVisionProソフトウェア

VisionProを使用すると、マシンビジョンアプリケーションを比較的短時間で開発することが可能です。開発プロセスは、まずQuickBuildを用いてビジョンツールの動作を設計し、その後VB.NETC#を使ってユーザーインターフェイスを構築します。QuickBuildは複数のカメラを管理でき、各カメラに対する画像処理をマルチスレッドで実行します。I/O出力は通信エクスプローラを介して行い、制御フローはスクリプトによってカスタマイズ可能です。そのため、効率的に使用すれば、ユーザーインターフェイスの開発に集中できます。

QuickBuildからVB.NET/C#への結果データの受け渡しは、ポステッドアイテム機能を介して行います。この部分のプログラミングスキルは、学習が必要です。Microsoftの開発環境がVB.NET/C#に移行し、オブジェクト指向やマルチスレッドプログラミングが一般化したことで、プログラミングは以前よりも複雑になりました。それでも、QuickBuildの使用により、複数カメラを使用したマルチスレッドアプリケーションの開発が比較的容易になります。

CVLと比較した場合、VisionProはビジョンツールの実験と実行可能なアプリケーションの迅速な開発を可能にします。CVLを使用して複数のカメラとマルチスレッドを扱い、ユーザーインターフェイスも開発しようとすると、はるかに時間がかかるでしょう。CVLでは全ての関数が使用可能ですが、VisionProでも主要なビジョンツールが揃っています。.NET Framework上で動作するため、処理にはある程度の時間がかかる可能性があります。最短の処理時間を求める場合には、CVLの選択が適切かもしれません。


OCRツール

文字列の内容を識別する際に使用されるのがOCRツール(Readツール)です。このツールは、SEMIフォント、OCR-Aフォント、Canonフォント、Tripleフォントといった、読み取り誤りが発生しにくいように設計されたフォントを認識する能力を持っています。これらのフォントは、その形状が読み取りやすさを考慮して工夫されています。ユーザーが独自のフォントを登録することも可能です(CVLでサポート)、その場合、読み取り精度が低下する可能性があります。


■ OCVツール

既知の文字列が正確に書かれているかどうかを確認するのに用いられるのがOCVツール(Optical Character Verification、文字検証)です。使用されるフォントは任意で、事前に登録されます。Cognex社の独自アルゴリズムを使用することで、"I"と"1"のように外観が似ている文字や、刻印状態が悪い場合であっても、各文字を正確に区別することが可能です。


■ コグネックス社の In-Sight EasyBuilder

In-Sight EasyBuilderは、マシンビジョンアプリケーションの設置を極めて簡単に行えるシステムです。特に、スマートフィーチャー機能が優れています。このスマートフィーチャーを用いたカメラキャリブレーションにより、画像のピクセル座標を実世界の座標系に簡単に変換することが可能です。また、スマートフィーチャーを活用した寸法測定ツールは、対象物の計測を容易にします。さらに、測定結果を出力するための通信設定も簡単に行えるようになりました。