コンテンツにスキップ

Template Matching vTool#

Template Matching vToolでは、画像内のオブジェクトを検出できます。検出は、ティーチングテンプレートを使用したピクセルのグレー値情報に基づいています。

エッジが不鮮明なオブジェクトや、境界が明確に定義されていないオブジェクトを検出するのに最適です。

Template Matching vToolは、Image入力ピンを介して画像を受け入れ、出力ピンを介して検出された一致に関する情報を出力します。

Calibration vToolによって提供される変換データを使用して、一致の位置をメートル単位のワールド座標で出力できます(Positions_m出力ピンが使用可能になります)。これを行うには、Calibration vToolをマッチングの前に使用し、両方のvToolsの変換出力/入力ピンを接続します。

Template Matching Basic vTool

仕組み#

テンプレートを定義して入力画像に適用することで、一致に関する次の情報を収集できます。

  • マッチングスコア
  • 位置
  • 方向
  • 一致の視覚化を含む領域

テンプレートの定義#

テンプレートマッチングの最初の手順は、アプリケーションによって検出されるオブジェクトの代表的な画像に基づくモデルのティーチングです。

このティーチング画像では、目的の領域をマークしてティーチングします。アプリケーションはこのモデルを使用し、本番環境でこのオブジェクトを検出します。

Template Matching Basic vToolは、画像に完全に表示されているオブジェクトのみを検出します。つまり、テンプレート画像でマークされた領域は、一致する位置で検索画像に完全に含まれている必要があります。そのため、目的のオブジェクトにマークを付けるときはできるだけ小さなペンを使用して正確に行ってください。

オブジェクトは、ティーチングされたモデルのオブジェクトに対して、サイズがまったく同じで、カメラまでの距離が同じ位置にある必要があります。

テンプレートマッチングは、モデルと検索画像のグレー値情報に直接基づいて行われます。テンプレートマッチングでは、正規化相互相関アルゴリズムが使用されます。

情報

  • 代表的な画像をテンプレートとして選択します。
  • テンプレート画像で、目的のオブジェクトの領域をマークします。オブジェクトに特徴的で、検索画像で一般的に表示される領域を選択します。

基準点の使用#

マークした領域に基準点を表示することもできます。デフォルトでは、基準点は領域の重心に配置されます。ほとんどのアプリケーションでは、これはうまく機能します。

ただし、必要に応じて、基準点を別の位置に移動できます。一例は、ロボットピッキングアプリケーションです。そのシナリオでは、ロボットのグリッパーと、ピックするオブジェクトの形状を考慮して、ビジョンシステムがロボットのグリッピング位置を決定する必要があります。ここでは、これらの両方の側面に対応するように、基準点を適切に配置できます。

基準点を表示するには、まずティーチング画像にテンプレート領域をマークする必要があります。

実行の設定#

  • Matches:限られた数のオブジェクトしか発生しないアプリケーションの場合は、一致する可能性のある数を、正確にこの数に制限することをお勧めします。これにより、処理速度と堅牢性が向上します。
  • Score:スコア値は、すべての一致で計算されます。このスコアは、モデル内の領域と検索画像内で一致した領域の間の相関係数です。
    最適なScore設定を見つけるには、まず中程度の値から開始し、いくつかのテスト画像を実行します。Scoreピンの出力値を確認します。ある程度の許容範囲を与え、テスト画像で決定された最低スコア出力値の50~80%のスコア値を選択します。スコアが低すぎると、一部の不必要な一致も検出される可能性があります。その場合は、テスト画像で目的のテンプレートのみが見つかるまで、スコア値を再調整します。
  • Timeout:タイムクリティカルなアプリケーションの場合、タイムアウトを指定できます。タイムアウトは、例えば、ティーチングされたオブジェクトが画像に含まれていない場合など、処理時間が変化する場合や予測できない場合に役立ちます。タイムアウトを指定すると、検出プロセスは指定されたタイムアウト後に停止し、次の画像に進みます。
    Baslerは、タイムアウトを目的の時間制限よりも少し短く設定することを推奨します。これは、vToolが検出プロセスを即座に停止しないためです。したがって、タイムアウトは目的の時間制限の70~80%に設定します。

キャリブレーションの使用#

結果として得られた位置の一致は、ワールド座標にメートル単位で出力することもできます。これを実現するには、Calibration vToolTransformation出力ピンを、Template Matching vToolのTransformation入力ピンに接続します。

Template Matching vToolを設定するには、実際の処理と同じキャリブレーション構成を使用する必要があります。

情報

  • 2次元画像を生成する3次元ワールド空間内のオブジェクトの表面は、空間のほぼ同じ平面上にある必要があります。この場合、ワールド内のオブジェクトと画像内のエッジの位置の違いによる遠近法の歪みの影響は無視できます。
  • 広角レンズでは、光学設定により大きな遠近法の歪みが生じます。これらのレンズの場合、検査オブジェクトの高さは、オブジェクトからカメラまでの距離に比べて低くする必要があります。または、オブジェクトの高さを無視できない場合は、同じ高さレベルのテンプレート画像内の領域を選択します。
  • キャリブレーションのセットアップ中にキャリブレーションプレートの表面をこの平面に配置して、オブジェクトの平面を登録します。

一般的な使用例#

  • オブジェクトのCounting:この場合、Scores出力ピンの要素数のみが関係します。
  • image coordinatesでのオブジェクトのLocating:後続の処理には、Positions_pxおよびAngles_radの出力ピンを使用します。
  • world coordinatesでのオブジェクトのLocatingPositions_mおよびAngles_radの出力ピンを使用して、オブジェクトの位置をロボットなどに送信し、オブジェクトを把握します。

vToolの設定#

Template Matching Basic vToolを設定するには:

Template Matching Basic vTool設定

  1. [vTool Settings]エリアの[Recipe Management]ペインで、[Open Settings]をクリックするか、[vTool]をダブルクリックします。
    [Template Matching Basic]ダイアログが開きます。
  2. ティーチング画像を撮影するか、開きます。[
    Single Shot]ボタンを使用してライブ画像を取得するか、[Open Image]ボタンをクリックして既存の画像を開くことができます。
  3. ペンを使用して、画像内の目的の領域をマークします。図面を修正するには、消しゴムを使用するか、図面を完全に削除します。
  4. ツールバーの[Teach]ボタンをクリックして、一致するモデルをティーチングします。
  5. 必要に応じて、[基準点を表示する]をクリックして基準点を表示します。
    基準点がテンプレート領域の中央に表示され、[基準点を手動で設定する]ボタンが使用可能になります。これで、基準点を目的の位置にドラッグできます。[基準点を手動で設定する]を再度クリックすると、基準点がデフォルトの位置に戻ります。
  6. 必要に応じて、[Execution Settings]エリアの[Matches]設定を調整し、一致の数を最大に制限します。
  7. 必要に応じて、ターゲットオブジェクトのみが見つかるように[Score]設定を調整します。
  8. タイムアウトを指定する場合は、[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

領域#

検出されたすべての一致の領域を返します。

  • データ型:Region Array

典型的な先行機#