テンプレートマッチング用のモデルの作成
イントロダクション
テンプレートマッチング ツールは、工業用検査アプリケーションの最初のステップの 1 つとしてよく使用されます。 目標は、オブジェクトの位置を検出することです。 これを行う前に、ユーザーは予想されるオブジェクトの形状または構造を表すモデルを作成する必要があります。 この手順を簡単にするために、Aurora Vision Studio には簡単なユーザー インターフェイスが用意されています。 これを「テンプレート マッチング用 GUI」と呼びます。
テンプレート マッチングの GUI は、EdgeModel と GrayModelの2 つのタイプの値を扱うエディターです。
これは、これを開くためにユーザーがプログラム内でテンプレート一致フィルターを選択し、 [プロパティ] ウィンドウの inGrayModel または inEdgeModel 入力で ボタンをクリックする必要があることを意味します。
産業用アプリケーションの大部分では、Aurora Vision Studio に実装されたテンプレート マッチング アルゴリズムにより、デフォルトのパラメーターを使用してオブジェクトの位置が簡単に検出されます。
ただし、主に信頼性を高めるために、一部のチューニングが必要になる場合があります。 他のパラメータよりも頻繁に使用されるパラメータのグループがあることが判明しました。 したがって、テンプレート マッチングの GUI は、ベーシックとエキスパートの 2 つのバージョンで利用できます。 これは、Aurora Vision Studio で利用できる複雑さのレベルに関連しています。
モデルの作成
Basic
基本ウィンドウには次の要素が含まれています。
- 上部: 使用可能なテンプレート画像のリスト
- 下: ファイルからテンプレート画像をロードするためのボタンも含まれるシンプルなツールバー
- 左側: 長方形のテンプレート領域を選択するツール
- 右側: パラメータとビューに関連するいくつかのオプションを設定するためのトラックバー
- 中央: 選択したテンプレート画像のコンテキストでテンプレート領域を選択するための領域
テンプレート マッチング モデルを作成するには、次のことを行う必要があります。
- 「参照画像」リストからテンプレート画像を選択します。
- 描画ツールを使用して、長方形のテンプレート領域を選択します。
パフォーマンスを最大化するには、この四角形をできるだけ小さくする必要があります。 - エッジベースのマッチングのみ:エッジしきい値パラメータを設定します。このパラメータは、エッジの品質が最高になる値に設定する必要があります。 エッジしきい値 は、エッジとしてみなされるピクセルの最小強度 (グラデーションの大きさ) を決定します。
- 回転許容値を 0°~ 360°の範囲で設定します。このパラメータは、予想されるオブジェクトの最大回転を決定します。 回転許容値が小さいほど、一致が速くなります。
- 上位レベルで見つかった候補者を検証するために使用される最低のピラミッド レベルを決定する最小ピラミッド レベル パラメータを設定します。 言及する価値があるのは、このパラメーターを 0 より大きい値に設定すると、計算が大幅に高速化される可能性がありますが、マッチングの精度が低下する可能性があることです。 Image Pyramid の詳細については、マシンビジョンガイド のテンプレート マッチング ドキュメントを参照してください。
Expert
エキスパート ウィンドウには次の要素が含まれています。
- 上部: 使用可能なテンプレート画像のリスト
- 下: ファイルからテンプレート画像をロードするためのボタンも含まれるシンプルなツールバー
- 左側: 任意の形状のテンプレート領域を選択するためのツール
- 右側: モデルのパラメータ、その説明、ビューに関連するいくつかのオプション
- 中央: 選択したテンプレート画像のコンテキストでテンプレート領域を選択するための領域
テンプレート マッチング モデルを作成するには、次のことを行う必要があります:
- 「参照画像」リストからテンプレート画像を選択します。
- 描画ツールを使用してテンプレート領域をマークします(ツールの上のボタンで現在の色が切り替わることに注意してください。つまり、図形を描画または消去することができます)。
パフォーマンスを最大化するには、この領域をできるだけ小さくする必要があります。 - エッジベース マッチングのみ: inSmoothingStdDev、inEdgeMagnitudeThreshold、および inEdgeHysteresis パラメータを、検出されたエッジの品質が最高になる値に設定します。
最初に inEdgeHysteresis を 0 に設定し、次にすべてのエッジで確実に一部の部分が検出されるように inEdgeMagnitudeThreshold の値を選択してから、inEdgeHysteresis を増やすことをお勧めします。 。 パラメータ inSmoothingStdDev の値を変更すると、小さなノイズが除去される場合があります。
例えば:
- 予想されるオブジェクト回転の範囲に応じて inMinAngle パラメータと inMaxAngle パラメータを設定します(範囲が狭いほど、一致が速くなります)。
- 速度を高めるために角度精度を低くしたい場合は、inAnglePrecision を 1.0 より低い値に設定します。
- 異なるスケールでオブジェクトを検出する必要がある場合は、inMinScale、inMaxScale、および inScalePrecision を適切な値に設定します。 スケール内のオブジェクトを検出する場合は、検出時間が長くなることに注意する必要があります。
- 結果を確認するには、[更新] ボタンをクリックするか、[変更ごとにプレビューを更新する] にチェックを入れます。
- 「次へ >」ボタンをクリックして、対象のオブジェクト全体 (期待されるマッチング結果) を表すテンプレート四角形を選択します。
- [OK] をクリックしてウィンドウを閉じ、モデルを生成します。
テンプレートマッチングの実行
モデルの準備ができたら、アプリケーションでのテンプレート マッチングの実行は簡単です。フィルターを接続してマッチング パラメーターを設定した後、結果は LocateSingleObject_Edges1フィルター (または同様のもの) の出力に表示されます。