Geometric Pattern Matching vTool#
Geometric Pattern Matching vToolは、Image入力ピンを介して画像を受け入れ、出力ピンを介して検出された一致に関する情報を出力します。
Calibration vToolによって提供される変換データを使用して、一致の位置をメートル単位のワールド座標で出力できます(Positions_m出力ピンが使用可能になります)。これを行うには、Calibration vToolをマッチングの前に使用し、両方のvToolsの変換出力/入力ピンを接続します。
Geometric Pattern Matchingバージョン#
Geometric Pattern Matching vToolには2つのバージョンがあります。次の表にバージョン間の違いを示します。表見出しのバージョンをクリックすると、このトピックの関連セクションに直接ジャンプします。
Basic | Pro | |
---|---|---|
部分的に表示されているパターンが検出されましたか? | いいえ | はい |
スケーリングを使用できますか? | いいえ | はい |
一致はサブピクセルの正確さで返されますか? | いいえ | はい |
モデルのエッジとは異なる極性のエッジを持つパターンが検出されましたか? | いいえ | はい |
検出角度を制限できますか? | いいえ | はい |
仕組み#
パターンを定義して入力画像に適用することで、一致に関する次の情報を収集できます。
- マッチングスコア
- 位置
- 方向
- 垂直および水平スケーリング係数(vToolのProバージョンでのみ使用可能)
- 一致の視覚化を含む領域
パターン定義#
パターンマッチングの最初の手順は、アプリケーションによって検出されるオブジェクトの代表的な画像に基づくモデルのティーチングです。このティーチング画像では、いずれかのペンを使用して目的のパターンをマークして、それをティーチングします。アプリケーションはこのモデルを使用し、本番環境で一致するパターンを検出します。パターンはエッジによって形成されます。
情報
- 代表的な画像をテンプレートとして選択します。
- テンプレート画像で、目的のパターンのエッジをマークします。検索画像で一般的に表示される目立つエッジを選択します。
- ペンでマークされたピクセルがパターンの一部を形成します。このことを知っておくことは重要です。Geometric Pattern Matching Basic vToolは画像内で完全に表示されているパターンのみを検出するためです。したがってBaslerは、可能な限り小さいペンを使用することを推奨します。
基準点の使用#
マークしたパターンに基準点を表示することもできます。デフォルトでは、基準点はパターンの重心に配置されます。ほとんどのアプリケーションで、これはうまく機能します。
ただし、必要に応じて、基準点を別の位置に移動できます。一例は、ロボットピッキングアプリケーションです。そのシナリオでは、ロボットのグリッパーと、ピックするオブジェクトの形状を考慮して、ビジョンシステムがロボットのグリッピング位置を決定する必要があります。ここでは、これらの両方の側面に対応するように、基準点を適切に配置できます。
基準点を表示するには、まずティーチング画像にパターンをマークする必要があります。
Contrast#
Contrast設定とは、パターンのエッジのコントラストを指します。コントラストを低く設定すると、関連するすべてのモデルのエッジが検出されます。一方、コントラストを十分高く設定すると、ノイズの多いエッジや不要なエッジを除外します。ほとんどの場合、[Contrast Auto]を有効にすると、良好な結果が得られます。有効な場合、vToolが適切なコントラストを決定します。
コントラストはモデルに含まれます。ここで変更を行う場合は、モデルを再ティーチングする必要があります。
Scaling#
スケーリングオプションは、検索画像にあるモデルとオブジェクトの間のサイズの許容範囲を定義します。
情報
Scalingは、vToolのProバージョンでのみ使用できます。
ノースケーリング、等方性スケーリング、または異方性スケーリングの3つの異なるスケーリングオプションを使用できます。
- No scaling:カメラからオブジェクトまでの距離またはオブジェクトサイズ自体が一定の場合に、このオプションを選択します。
- Isotropic scaling:等方性スケーリングでは、カメラとオブジェクト間の距離の変化やオブジェクトサイズの変化を補正できます。
- Anisotropic scaling:異方性スケーリングは、垂直方向と水平方向の2方向でスケーリングが行われることを意味します。したがって、オブジェクトの長さと幅が異なる場合があります。このオプションは、例えば、長さと幅が異なる長方形を検出する場合に役立ちます。
情報
- 処理時間を短縮し、vToolの堅牢性を高めるには、常に最も単純なスケーリングオプションを選択します。オブジェクトのスケールがアプリケーション内で同じままの場合は、[No scaling]を使用します。オブジェクトサイズが変化する場合は、[Isotropic scaling]を選択します。形状が変化する場合にのみ[Anisotropic scaling]を使用します。
- アプリケーションでスケーリングが必要な場合は、スケーリング範囲をできるだけ低く設定します。これによっても、処理時間は短縮され、vToolの堅牢性が向上します。
スケーリング設定はモデルに含まれています。ここで変更を行う場合は、モデルを再ティーチングする必要があります。
極性#
パターンマッチングアルゴリズムは、テンプレートと検索画像内のエッジに基づいています。エッジは、隣接するエッジ点のセットです。
そのため、エッジ点は、背景と検索パターンの境界をマークします(ピクセルの明から暗、または暗から明への遷移)。エッジ点の極性は、このグレー値遷移の方向を示します。
検索画像内のエッジ点の極性に関しては、次の3つのオプションを使用できます。
- Identical:検索画像内のすべてのエッジ点の極性は、テンプレート画像と同じでなければなりません。検索画像の一部のエッジ点の極性がテンプレート画像のエッジ点と異なる場合、パターンが検出されることはありますが、スコアが低くなります。
- Identical and inverted:極性が反転されたエッジ点も検出されます。つまり、同一パターンと反転パターンが検出されます。単純な例として、円形の検出では、明るい背景に暗い円と暗い背景に明るい円のどちらも同じモデルを使用して検出されます。
- Ignore polarity:エッジ点の極性は無視されます。つまり、あらゆる極性のエッジ点が検出されます。
例:明るい背景にグレーの円のパターンをティーチングします。その結果、明るい背景にあるグレーの円、暗い背景にある明るい円、明るい領域と暗い領域が混ざった背景にある円が検出されます。検索画像内のエッジ点が指定された最小エッジコントラストを満たすことが少なくなるため、マッチングスコアが少し下がる場合があることに注意してください。
情報
Baslerは、本当にアプリケーションに必要な場合にのみ、[Identical and inverted]および[Ignore polarity]オプションを使用することを推奨します。特に[Ignore polarity]は、不要なパターンを検出する可能性が高くなります。
次の表に、使用可能なさまざまな極性オプションを示します。
極性の設定 | テンプレート画像 | 検出されるパターン |
---|---|---|
Identical | ![]() | ![]() |
Identical and inverted | ![]() | ![]() ![]() |
Ignore polarity | ![]() | ![]() ![]() ![]() |
検出角度#
一部のアプリケーションでは、検出されるパターンの方向をモデルから回転できる角度を制限すると便利な場合があります。これにより、処理速度と堅牢性が向上する可能性があります。
検出角度の範囲を定義するには、次の2つのオプションがあります。
- Target:これは、パターンが検出されている間にモデルから回転できる角度です。検出するパターンの予想平均回転に基づいて値を選択します。デフォルト設定は0°です(検索画像内のパターンの方向は、モデル内のパターンと同じであると見なされます)。ばらつきを許容するには、適切な許容範囲を選択します。
- Tolerance:このオプションでは、検出角度の許容範囲を指定できます(ターゲット角度を中心とする角度の範囲を定義します)。デフォルト設定は180°(360°回転が可能)です。
ターゲットと許容範囲の設定に基づいて、検出角度の範囲を次のように計算できます。検出角度は(ターゲット-許容範囲)から開始し、(ターゲット+許容範囲)で終了します。
例:アプリケーション内のオブジェクトが10°から30°の範囲で回転して表示されることがわかっている場合は、ターゲット角度を20°に、角度許容範囲を10°に設定します。
角度を制限することは、対称のオブジェクトの場合に特に役立ちます。長方形の場合は、許容範囲を90°に設定します。円の場合は、許容範囲を0°に設定します。
情報
角度は反時計方向で正です。
実行の設定#
- Matches:限られた数のオブジェクトしか発生しないアプリケーションの場合は、一致する可能性のある数を、正確にこの数に制限することをお勧めします。これにより、処理速度と堅牢性が向上します。
- Score:スコア値は、すべての一致で計算されます。このスコアは、画像内の実際のオブジェクトがパターンのモデルとどの程度似ているかを示します。例えば、スコア値0.9は、すべてのモデルポイントの90%が検索画像のエッジに一致する可能性があることを示します。
最適なScore設定を見つけるには、中程度の値から始めて、いくつかのテスト画像を実行します。Scoresピンの出力値を観察します。ある程度の許容範囲を与え、テスト画像で決定された最低スコア出力値の50-80%の間のスコア値を選択します。スコアの設定が低すぎると、不必要な一致も検出される可能性があります。その場合は、テスト画像で目的のパターンのみが見つかるまで、スコア値を再調整します。 - Timeout:タイムクリティカルなアプリケーションの場合、タイムアウトを指定できます。タイムアウトは、例えば、画像にティーチングされたパターンが含まれていない場合など、処理時間が変化する場合や予測できない場合に役立ちます。タイムアウトを指定すると、検出プロセスは指定されたタイムアウト後に停止し、次の画像に進みます。
Baslerは、タイムアウトを目的の時間制限よりも少し短く設定することを推奨します。これは、vToolが検出プロセスを即座に停止しないためです。したがって、タイムアウトは目的の時間制限の70-80%に設定します。
キャリブレーションの使用#
結果として得られた位置の一致は、ワールド座標にメートル単位で出力することもできます。これを実現するには、Calibration vToolのTransformation出力ピンを、Geometric Pattern Matching vToolのTransformation入力ピンに接続します。
Geometric Pattern Matching vToolを設定するには、実際の処理と同じキャリブレーション構成を使用する必要があります。
情報
- 画像に2次元のエッジを生成する3次元ワールド空間内のオブジェクトの輪郭は、少なくともおおよそ同じ平面上にある必要があります。この場合、ワールド内のオブジェクトと画像内のエッジの位置の違いによる遠近法の歪みの影響は無視できます。
- 光学設定により大きな遠近法の歪みが生じる広角レンズの場合、検査オブジェクトの高さは、オブジェクトからカメラまでの距離に比べて低くする必要があります。または、オブジェクトの高さを無視できない場合は、同じ高さレベルのモデルエッジを選択します。
- キャリブレーションのセットアップ中にキャリブレーションプレートの表面をこの平面に配置して、オブジェクトの輪郭の平面を登録します。
一般的な使用例#
- オブジェクトのCounting:この場合、Scores出力ピンの要素数のみが関係します。
- image coordinatesでのオブジェクトのLocating:後続の処理には、Positions_pxおよびAngles_radの出力ピンを使用します。
- world coordinatesでのオブジェクトのLocating:Positions_mおよびAngles_radの出力ピンを使用して、オブジェクトの位置をロボットなどに送信し、オブジェクトを把握します。
- オブジェクトのサイズの決定:VScalingFactorsおよびHScalingFactors出力ピンを使用して、サイズまたはオブジェクト距離のばらつきを測定します。
パターンマッチング結果の一般的な例を以下に示します。
Geometric Pattern Matching Basic#
Geometric Pattern Matching Basic vToolは、画像で完全に表示されているオブジェクトのみを検出します。パターン定義中にマークされたピクセルは、パターンをティーチングするときにオブジェクトの一部を形成します。
オブジェクトの1ピクセルのみが画像の外側にある場合、オブジェクトはまったく検出されないか、誤った位置かつ低スコアで検出されます。そのため、Baslerは可能な限り小さいペンを使用することを推奨します。
オブジェクトは、ティーチングされたパターンのオブジェクトに対して、サイズがまったく同じで、カメラまでの距離が同じ位置にある必要があります。サイズ、距離、またはその両方にばらつきが予想される場合は、Geometric Pattern Matching Pro vToolを使用してください。このvToolには[Scaling]オプションがあるためです。
Positions_px出力ピンは、オブジェクトの位置を整数値で返します。サブピクセルに正確さが必要な場合は、Geometric Pattern Matching Pro vToolを使用します。
vToolの設定#
Geometric Pattern Matching Basic vToolを設定するには:
- [vTool Settings]エリアの[Recipe Management]ペインで、[Open Settings]をクリックするか、[vTool]をダブルクリックします。
[Geometric Pattern Matching Basic]ダイアログが開きます。 - ティーチング画像を撮影するか、開きます。[
Single Shot]ボタンを使用してライブ画像を取得するか、[Open Image]ボタンをクリックして既存の画像を開きます。 - ペンを使用して、画像内の目的のパターンをマークします。図面を修正するには、消しゴムを使用するか、図面を完全に削除します。
- [Model Settings: Contrast]エリアで、[Contrast]を調整し、モデルの関連するエッジを検出します。
モデルエッジは、[Edge visualization]で選択した色とともにティーチング画像に視覚化されます。 - ツールバーの[Teach]ボタンをクリックして、一致するモデルをティーチングします。
- 必要に応じて、[Show Reference Point]をクリックして基準点を表示します。
基準点がパターンの中心に表示され、[Set Reference Point Manually]ボタンが使用可能になります。これで、基準点を目的の位置にドラッグできます。[Set Reference Point Manually]を再度クリックすると、基準点がデフォルトの位置に戻ります。 - 必要に応じて、[Execution Settings]エリアの[Matches]設定を調整し、一致の数を最大に制限します。
- 必要に応じて、ターゲットオブジェクトのみが見つかるように[Score]設定を調整します。
- タイムアウトを指定する場合は、[No timeout]チェックボックスをオフにし、入力フィールドに目的のタイムアウトを入力します。
パターンマッチングの結果は、ピンデータビューで表示できます。ここで、表示する出力を選択できます。
Geometric Pattern Matching Pro#
Geometric Pattern Matching Pro vToolでは、パターン検出がきわめて柔軟です。
この[Scaling]オプションを使用すると、オブジェクトのサイズがティーチングしたパターンと異なる場合、またはカメラからオブジェクトの距離がばらつく場合に、オブジェクトが検出されたままになるようにできます。また、画像エリアでの表示が完全でないオブジェクトが検出され、一致の位置がサブピクセルの正確さで返されます。
[Polarity]オプションを使用すると、パターンエッジ点がモデルのエッジ点と同じ極性を持つ必要があるか、または異なる極性のエッジ点を持つパターンも検出するかどうかを指定できます。
検出角度オプションを使用すると、パターンの回転角度がモデルから逸脱できる程度を制限できます。
vToolの設定#
Geometric Pattern Matching Pro vToolを設定するには:
- [vTool Settings]エリアの[Recipe Management]ペインで、[Open Settings]をクリックするか、[vTool]をダブルクリックします。
[Geometric Pattern Matching Pro]ダイアログが開きます。 - ティーチング画像を撮影するか、開きます。[
Single Shot]ボタンを使用してライブ画像を取得するか、[Open Image]ボタンをクリックして既存の画像を開きます。 - ペンを使用して、画像内の目的のパターンをマークします。図面を修正するには、消しゴムを使用するか、図面を完全に削除します。
- [Model Settings]エリアで[Contrast]を調整し、モデルの関連するエッジを検出します。
モデルエッジは、[Edge visualization]で選択した色とともにティーチング画像に視覚化されます。 -
[Model Settings]エリアで、必要に応じて次のオプションを設定します。
- Scaling:任意のオプションを選択し、アプリケーションの必要に応じてスケーリング範囲を調整します。
- Polarity:アプリケーションの必要に応じて任意のオプションを選択します。
- Detection angle:アプリケーションの必要に応じて検出角度を小さくしたり調整したりします。
-
ツールバーの[Teach]ボタンをクリックして、一致するモデルをティーチングします。
- 必要に応じて、[Show Reference Point]をクリックして基準点を表示します。
基準点がパターンの中心に表示され、[Set Reference Point Manually]ボタンが使用可能になります。これで、基準点を目的の位置にドラッグできます。[Set Reference Point Manually]を再度クリックすると、基準点がデフォルトの位置に戻ります。 - 必要に応じて、[Execution Settings]エリアの[Matches]設定を調整し、一致の数を最大に制限します。
- 必要に応じて、ターゲットオブジェクトのみが見つかるように[Score]設定を調整します。
- タイムアウトを指定する場合は、[No timeout]チェックボックスをオフにし、入力フィールドに目的のタイムアウトを入力します。
パターンマッチングの結果は、ピンデータビューで表示できます。ここで、表示する出力を選択できます。
入力#
画像#
Camera vToolから、またはImage Format ConvertervToolなどの画像を出力するvToolから、直接画像を受け入れます。
- データ型:Image
- 画像形式:8ビット-16ビットのモノラルまたはカラー画像。カラー画像は、内部でモノラル画像に変換されます。
変換#
Calibration vToolから変換データを受け入れます。
- データ型:Transformation Data
出力#
スコア#
一致のスコアを返します。
- データ型:Float Array
Positions_px#
画像座標(行/列)での一致の位置を返します。
- データ型:PointF Array
Positions_m#
ワールド座標での一致の位置をメートル単位(x/y)で返します。
- データ型:PointF Array
Angles_rad#
一致の方向をラジアンで返します。
- データ型:Float Array
VScaling係数#
一致の垂直スケーリング係数を返します。
- データ型:Float Array
HScaling係数#
一致の水平スケーリング係数を返します。
- データ型:Float Array
領域#
検出されたすべての一致の領域を返します。
- データ型:Region Array