Geometric Pattern Matching vTool#
エッジベースのマッチングは処理時間とMemoryをほとんど消費しないため、エッジが鋭いオブジェクトや大型のオブジェクトの検出に最適です。
Geometric Pattern Matching vToolは、Image入力ピンを介して画像を受け入れ、出力ピンを介して検出された一致に関する情報を出力します。
また、アライメント変換データを出力することで、Image Alignment vToolが入力画像を、マッチング中に使用した参照画像に位置合わせできます。これにより、Measurements vToolが参照画像とは異なる位置にあるオブジェクトを測定できます。
ROI Creator vToolを使用して関心領域を指定する場合、Geometric Pattern Matching vToolがROI入力ピンを介してROIデータを受け入れます。この場合、オブジェクトはマッチングモデルのデフォルトの基準点が関心領域内にある場合にのみ検出されます。
関心領域は、その特定領域内のオブジェクトにフォーカスを合わせたり、誤った候補を除外したり、処理時間を短縮したりするために使用できます。
Calibration vToolによって提供される変換データを使用して、一致の位置をメートル単位のワールド座標で出力できます(Positions_m出力ピンが使用可能になります)。これを行うには、Calibration vToolをマッチングの前に使用し、両方のvToolsの変換出力/入力ピンを接続します。
Geometric Pattern Matching vToolのライセンスを購入するには、Baslerウェブサイトにアクセスしてください。このライセンスにはImage Alignment vToolも含まれています。

Geometric Pattern Matchingバージョン#
Geometric Pattern Matching vToolには2つのバージョンがあります。次の表にバージョン間の違いを示します。表見出しのバージョンをクリックすると、このトピックの関連セクションに直接ジャンプします。
| Basic | Pro | |
|---|---|---|
| 部分的に表示されているパターンが検出されましたか? | いいえ | はい |
| スケーリングを使用できますか? | いいえ | はい |
| 一致はサブピクセルの正確さで返されますか? | いいえ | はい |
| モデルのエッジとは異なる極性のエッジを持つパターンが検出されましたか? | いいえ | はい |
| 検出角度を制限できますか? | いいえ | はい |
| ライセンスの購入 | Baslerウェブサイトにアクセス | Baslerウェブサイトにアクセス |
仕組み#
パターンを定義して入力画像に適用することで、一致に関する次の情報を収集できます。
- マッチングスコア
- 位置
- 方向
- 垂直および水平スケーリング係数(vToolのProバージョンでのみ使用可能)
- 一致の視覚化を含む領域
パターン定義#
パターンマッチングの最初の手順は、アプリケーションによって検出されるオブジェクトの代表的な画像に基づくモデルのティーチングです。このティーチング画像では、いずれかのペンを使用して目的のパターンをマークして、それをティーチングします。アプリケーションはこのモデルを使用し、本番環境で一致するパターンを検出します。パターンはエッジによって形成されます。
情報
- 代表的な画像をテンプレートとして選択します。
- テンプレート画像で、目的のパターンのエッジをマークします。検索画像で一般的に表示される目立つエッジを選択します。
- ペンでマークされたピクセルがパターンの一部を形成します。このことを知っておくことは重要です。Geometric Pattern Matching Basic vToolは画像内で完全に表示されているパターンのみを検出するためです。したがってBaslerは、可能な限り小さいペンを使用することを推奨します。
基準点の使用#
マークしたパターンに基準点を表示することもできます。デフォルトでは、基準点はパターンの重心に配置されます。ほとんどのアプリケーションで、これはうまく機能します。
情報
関心領域を使用している場合、デフォルトの基準点は関心領域内に存在する必要があります。
ただし、必要に応じて、基準点を別の位置に移動できます。一例は、ロボットピッキングアプリケーションです。そのシナリオでは、ロボットのグリッパーと、ピックするオブジェクトの形状を考慮して、ビジョンシステムがロボットのグリッピング位置を決定する必要があります。ここでは、これらの両方の側面に対応するように、基準点を適切に配置できます。
基準点を表示するには、まずティーチング画像にパターンをマークする必要があります。
Contrast#
Contrast設定とは、パターンのエッジのコントラストを指します。コントラストを低く設定すると、関連するすべてのモデルのエッジが検出されます。一方、コントラストを十分高く設定すると、ノイズの多いエッジや不要なエッジを除外します。ほとんどの場合、[Contrast Auto]を有効にすると、良好な結果が得られます。有効な場合、vToolが適切なコントラストを決定します。
コントラストはモデルに含まれます。ここで変更を行う場合は、モデルを再ティーチングする必要があります。
Scaling#
スケーリングオプションは、検索画像にあるモデルとオブジェクトの間のサイズの許容範囲を定義します。
情報
Scalingは、vToolのProバージョンでのみ使用できます。
3種類のScalingオプションを利用できます:
- 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°の回転が許可されます)です。
ターゲットと許容範囲の設定に基づいて、検出角度の範囲を次のように計算できます。検出角度は(ターゲット-許容範囲)から開始し、(ターゲット+許容範囲)で終了します。
Example: アプリケーション内のオブジェクトが10°〜30°の範囲で回転して出現することが分かっている場合は、目標角度を20°に、角度のToleranceを10°に設定します。
角度を制限することは、何らかの対称性を持つオブジェクトに対して特に有効です。長方形の場合はToleranceを90°に設定します。円の場合はToleranceを0°に設定します。
情報
角度は反時計方向で正です。
実行の設定#
- Matches:限られた数のオブジェクトしか発生しないアプリケーションの場合は、一致する可能性のある数を、正確にこの数に制限することをお勧めします。これにより、処理速度と堅牢性が向上します。
- Score: 一致ごとにスコア値が計算されます。このスコアは、画像内の実際のオブジェクトがパターンのモデルにどれほど似ているかを示します。たとえば、0.9のスコア値は、すべてのモデルポイントの90%が検索画像のエッジと一致したことを表しています。
最適なScore設定を見つけるには、中程度の値から始めてテスト画像をいくつか実行します。Scoresピンの出力値を確認してください。確実に対象を見つけるには、常にScoreオプションをScoresピンが出力するスコアよりも低い値に設定してください。これは、ある程度の許容範囲を持たせるためのベストプラクティスであり、推奨されます。
テスト画像で求められた最低スコア出力値の50〜80%の間でスコア値を選択してください。スコアが低すぎる場合は、不要な一致も検出される可能性があります。その場合は、テスト画像で意図したパターンのみが検出されるようになるまで、スコア値を再調整してください。
画像内に複数の合致が存在する場合、それらはスコアの降順でソートされます。 - タイムアウト:タイムクリティカルなアプリケーションの場合、タイムアウトを指定できます。タイムアウトは、例えば、ティーチングされたパターンが画像に含まれていない場合など、処理時間が変化する場合や予測できない場合に役立ちます。タイムアウトを指定すると、検出プロセスは指定されたタイムアウト後に停止し、次の画像に進みます。
Baslerでは、タイムアウトを目的の時間制限よりも少し短く設定することを推奨しています。これは、vToolが検出プロセスを即座に停止しないためです。したがって、タイムアウトは目的の時間制限の70~80%に設定します。
Output Settings#
Alignment Transformation#
位置合わせ変換データを出力する場合は、2つのオプションから選択できます:
- Single value: 最初の合致のみの位置合わせ変換データを出力します。この場合の出力ピン名はAlignmentTfです。
- Array: 見つかったすべての合致の位置合わせ変換データを配列として出力します。この場合の出力ピン名はAlignmentTfsです。
情報
この機能が導入される前に作成されたレシピは、引き続き機能します。そのようなレシピを読み込むと、位置合わせ変換の出力はSingle valueに設定されます。必要に応じてこれを変更できます。
Position Output#
一致したオブジェクトの位置の絶対座標と相対座標のどちらを出力するかを選択できます:
- Absoluteは、座標が画像座標系の原点(0,0)を基準にしていることを意味します。領域ピクセルの座標も原点に基づきます。
- Relativeは、座標がreference pointからの相対値であることを意味します。領域ピクセルの座標もそれに合わせて変換されます。
キャリブレーションの使用#
結果として得られた位置の一致は、ワールド座標にメートル単位で出力することもできます。これを実現するには、Calibration vToolのTransformation出力ピンを、Geometric Pattern Matching vToolのTransformation入力ピンに接続します。
Geometric Pattern Matching vToolを設定するには、実際の処理と同じキャリブレーション構成を使用する必要があります。
情報
- 画像内に2次元エッジを生成する3次元ワールド空間内のオブジェクトの輪郭は、ほぼ同じ平面上にある必要があります。この場合、ワールド内のオブジェクトと画像内のエッジの位置の違いによる遠近法の歪みの影響は無視できます。
- 光学設定により大きな遠近法の歪みが生じる広角レンズの場合、検査オブジェクトの高さは、オブジェクトからカメラまでの距離に比べて低くする必要があります。または、オブジェクトの高さを無視できない場合は、同じ高さレベルのモデルエッジを選択します。
- キャリブレーションのセットアップ中にキャリブレーションプレートの表面をこの平面に配置して、オブジェクトの輪郭の平面を登録します。
トラブルシューティング#
ヒント
vToolの実行時間が非常に長い場合は、次の最適化を検討してください:
- 検索しているオブジェクトが対称(長方形や円など)である場合、またはオブジェクトが特定の領域にのみ存在すると予想される場合は、検出角度を制限します。
- Scalingが必要な場合は、Scalingファクターを可能な限り制限するようにしてください。
- 極性(polarity)の設定を確認してください。Identicalは最も時間を節約できるオプションであり、ユースケースを解決するのに十分な場合があります。
- 事前に分かっている場合は、一致の数を制限してみてください。
一般的な使用例#
- オブジェクトの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ビットのモノラルまたはカラー画像。カラー画像は、内部でモノラル画像に変換されます。
Roi#
領域または矩形を出力するROI Creator vToolなどのvToolから、関心領域を受け入れます。複数の矩形または領域が内部で結合されて、単一の関心領域が形成されます。
- データタイプ:RectangleF、RectangleF配列、領域、領域配列
変換#
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
AlignmentTf#
Image Alignment vToolが入力画像内のオブジェクトをマッチング時に使用された基準オブジェクトと位置合わせするために使用する変換データを返します。alignment transformation outputはSingle valueに設定されています。
- データ型:Transformation Data
AlignmentTfs#
Image Alignment vToolが入力画像内のオブジェクトをマッチング時に使用された基準オブジェクトと位置合わせするために使用する変換データを返します。alignment transformation outputはArrayに設定されています。
- データ型:Transformation Data Array