現在地:スタート “マシンビジョンガイド” テンプレートマッチング
はじめに
テンプレートマッチングは、画像上のあらかじめ定義されたテンプレートと一致する部分を識別するハイレベルなマシンビジョン技術です。 高度なテンプレートマッチングアルゴリズムにより、その方向や局所的な明るさに関係なく、テンプレートの出現を見つけることができる。 2051>
Concept
テンプレート・マッチング技術は、次のようなニーズに応えることが期待されている:オブジェクトの参照画像(テンプレート画像)と検査される画像(入力画像)がある場合、テンプレート画像からのオブジェクトが存在するすべての入力画像位置を識別したい。
まず、単純なテンプレートマッチングのデモを行う。これは実際の応用には不十分であるが、実際のテンプレートマッチングのアルゴリズムの基となるコアコンセプトを示すものである。
ナイーブテンプレートマッチング
プラグの画像を検査し、そのピンを見つけることが目的であると想像してください。 探している参照オブジェクトを表すテンプレート画像と、検査される入力画像が提供されます。
テンプレート画像 |
入力画像 |
実際の探索はかなり単純に行います-テンプレート画像をあらゆる位置で画像の上に配置するのです。 その都度、テンプレートと現在重なっている画像セグメントとの間の類似度を数値で計算する。
画像相関
上記の仕様で発生する副問題の1つは、並べられたテンプレート画像と入力画像の重なった部分の類似度指標を計算することで、これは同じ次元の2つの画像の類似度指標を計算することと等価である。 これは古典的な作業であり、画像の類似性の数値的な尺度は、通常、画像相関と呼ばれます。
相互相関
画像1 | 画像2 | Cross-> 画像1 | Cross-> | Cross-> | Cross-> | Cross-> | Cross-> |
---|---|---|---|---|---|---|---|
19404780 | |||||||
23316890 | |||||||
24715810 |
画像相関の計算方法の基本はいわゆる交差法である。相関があります。 これは、本質的に画像の対応する画素値のペアワイズ乗算の単純な合計である。
相関値は確かに比較される画像の類似性を反映しているように見えますが、相互相関法はロバストとは程遠いものです。 その主な欠点は、画像の全体的な明るさの変化に偏ってしまうことです。ある画像が明るくなると、2番目の画像がまったく類似していなくても、別の画像との相互相関が急上昇することがあります。 \mbox{Image1}(x,y) \times \mbox{Image2}(x,y)
正規化相互相関
画像1 | 画像2 | NCC |
---|---|---|
-0.417 | ||
0.553 | ||
0.844 |
正規化相互相関は、古典的相互相関法の拡張バージョンで、オリジナルのものより2つの改良点を導入しています:
- 結果はグローバル輝度変更に対して不変、すなわち、。つまり、どちらの画像も一貫して明るくしたり暗くしたりしても、結果に影響を与えません(これは、各ピクセル値から平均画像の明るさを減算することで達成されます)。
- 最終的な相関値は範囲にスケーリングされ、2つの同一画像のNCCは1.0に、画像とその否定のNCCは-1.0になります。
Template Correlation Image
さて、本題に戻りましょう。 正規化相互相関(画像の類似度を表すロバストな指標)を導入したことで、テンプレートがどの位置にどの程度フィットするかを判断することができるようになりました。 各画素の明るさは、その画素の上に配置されたテンプレートのNCC値(黒色は最小相関-1.0、白色は最大相関1.0)を表しています。
テンプレート画像 |
テンプレート相関画像 |
マッチの識別
この時点で行う必要があるのは、テンプレート相関画像のどの点が実際のマッチと見なすのに十分であるかを決めることです。 通常、テンプレート相関を(同時に)表す位置をマッチとして識別します:
- ある定義済みの閾値より強い(つまり、0.1より強い)。5より強い)
- 局所的に最大(隣接するピクセルのテンプレート相関より強い)
0.5 以上のテンプレート相関の領域は、マッチングされた位置のテンプレート相関を表す。75 |
局所的にテンプレート相関が最大となる点 |
局所的にテンプレート相関が0.75を超える点 |
まとめ
Adaptive Vision Studioでこの手法を表すのは非常に簡単で、たった2つの組み込みフィルタがあればいいのです。 ImageCorrelationImage フィルタを使ってテンプレート相関画像を計算し、ImageLocalMaxima を使ってマッチを識別します – 前のセクションで説明したように、結果から弱いローカル最大値を切り落とす inMinValue パラメータを設定するだけです。
- テンプレートの出現は参照テンプレート画像の方向を維持しなければならない。
- この方法は非効率的で、中~大規模の画像に対してテンプレート相関画像を計算するのは時間がかかる。
次のセクションでは、これらの問題が高度なテンプレートマッチング技術でどう対処されているかに言及する。
Grayscale-based Matching, Edge-based Matching
Grayscale-based Matchingは高度なテンプレートマッチングアルゴリズムであり、相関ベースのテンプレート検出のオリジナルのアイデアを拡張し、効率を高め、その方向に関わらずテンプレートの出現を検索できるようにしたものである。
このセクションでは、両アルゴリズムの本質的な詳細について説明します。 次のセクション(フィルタツールセット)では、Adaptive Vision Studioでこれらの技術を使用する方法を説明します。
イメージピラミッド
イメージピラミッドは一連のイメージで、各イメージは前の要素のダウンサンプリング(この場合、2倍でスケールダウン)した結果です。
レベル0(入力画像) |
レベル1 |
Level 2 |
ピラミッド処理
画像ピラミッドを適用して、相関処理の効率を向上させることができる。に基づくテンプレート検出が可能です。 重要なのは、参照画像に描かれたテンプレートは、通常、画像の大幅なダウンサンプリングの後でも識別可能であることです(ただし、当然ながら、その過程で細かいディテールは失われます)。 したがって、ピラミッドの最上位レベルでダウンサンプリングされた(したがって処理速度がはるかに速い)画像の一致候補を特定し、ピラミッドの下位レベルで検索を繰り返し、毎回、前のレベルで高得点を得たテンプレート位置のみを考慮することができる。
レベル0(テンプレート参照画像) |
レベル1 |
レベル2 |
Grayscale->
Level 2
Level 3
Level 5
Level 6
Level 7
Level 8
Level 9
Level 10
Level 10 Level 9based matching
アプリケーションの中には、(プラグの例で見たように)オブジェクトの方向が均一で固定されているものがあります。 検出される物体が回転して見えることがよくある。 テンプレートマッチングのアルゴリズムでは、古典的なピラミッド探索を多角度マッチング、すなわちテンプレートの回転したインスタンスの識別に適応させます。 入力画像に対するピラミッド探索の間、アルゴリズムは単独のテンプレート位置ではなく、ペア(テンプレート位置、テンプレート方向)を特定する。 元のスキーマと同様に、アルゴリズムは探索の各レベルで、前のレベルで良いスコアを出した(つまり、解像度の低い画像のテンプレートと一致するように見えた)(位置、向き)のペアのみを検証します。
テンプレート画像 |
入力画像 |
マルチ検索結果の結果。 |
ピラミッドマッチングとマルチアングル検索はグレースケール・ベース・テンプレートマッチング法を構成する。
Edge-based Matching
Edge-based Matchingは、先に述べたGrayscale-based Matchingを、ある重要な観察に基づいて強化したものである-どんな物体もその形状は主にエッジによって定義されるということである。 したがって、テンプレート全体を照合する代わりに、そのエッジを抽出し、近傍の画素だけを照合することで、不要な計算を省くことができる。 一般的なアプリケーションでは、通常、達成された高速化は重要である。
グレースケールに基づくマッチング: | |||
---|---|---|---|
エッジに基づくマッチング: グレースケールに基づくマッチング: | |||
Template Matchingアルゴリズムで使用するテンプレートピラミッドの異なる種類のこと。 |
オブジェクト全体ではなく、オブジェクトのエッジをマッチングするには、オリジナルのピラミッド・マッチング法を少し修正する必要があります:均一な背景上に配置された均一な色のオブジェクトをマッチングするとします。 オブジェクトの端の画素はすべて同じ強度を持ち、元のアルゴリズムは適切な色の十分大きな塊があればどこでもオブジェクトにマッチングしてしまうが、これは明らかに我々が達成したいことではない。 この問題を解決するために、エッジベースマッチングでは、エッジピクセルの強度ではなく、グラデーション方向(説明のために HSV 空間の色として表される)をマッチングします。
フィルター ツールセット
Adaptive Vision Studio には、グレースケール ベース マッチングとエッジ ベース マッチングを実装するフィルターが用意されています。
ピラミッドマッチングの前にテンプレート画像を処理する必要があるため、アルゴリズムは2つの部分に分けられます:
- モデルの作成 – このステップではテンプレート画像のピラミッドを計算し、その結果はモデル(ピラミッドマッチングの実行に必要なすべてのデータを表す原子オブジェクト)に格納されます。
- Matching – このステップでは、テンプレートモデルを使用して、入力イメージのテンプレートとマッチングします。
このような処理の構成により、一度計算したモデルを何度も再利用することが可能になる。
Available Filters
両方の Template Matching 法について、アルゴリズムの各ステップにひとつずつ、2 つのフィルターが提供されている。
Edge-based Matching | ||
---|---|---|
Model Creation: | ||
Matching: |
GrayModel と CreateEdgeModel フィルターの使用は、より高度なアプリケーションでのみ必要であることに注意してください。 それ以外の場合は、Matching ステップで単一のフィルターを使用し、フィルターの inGrayModel または inEdgeModel パラメーターを設定してモデルを作成することで十分です。 詳細は、Creating Models for Template Matchingを参照してください。
テンプレートマッチングを適用する際の主な課題は、プログラム構造の設計よりも、フィルターパラメーターを慎重に調整することにあります。
高度なアプリケーションスキーマ
高度なアプリケーションには、テンプレートマッチングの対話型GUIでは不十分で、CreateGrayModelまたはCreateEdgeModelフィルターを直接使用する必要があるものがいくつかあります。 例えば、
- モデルを作成するのに、自明ではないイメージの前処理が必要な場合。
- 一連のイメージから自動的に作成されるモデルの配列全体が必要な場合。
- エンドユーザーがランタイムアプリケーションで独自のテンプレートを定義できる必要がある場合(例えば、入力イメージ上で選択を行うなど)です。
スキーマ 1: 別プログラムでのモデル作成
ケース 1 と 2 では、モデル作成を別のタスク マクロ フィルターで実装し、モデルを AVDATA ファイルに保存し、そのファイルをメイン プログラムでのマッチング フィルターの入力にリンクすることが推奨されます:
モデル作成: | メインプログラム: |
---|---|
このプログラムができていれば、いつでもプログラムとして「CreateModel」タスクを実行してモデルを再作成することができるようになりました。
Schema 2: Dynamic Model Creation
ケース3では、モデルを動的に作成する場合、モデル作成フィルターとマッチングフィルターを同じタスクにする必要がある。 しかし、前者はそれぞれのHMIイベント(例えば、ユーザーがImpulseButtonをクリックしたり、VideoBoxで何らかのマウス操作をしたとき)が発生したときに、条件付きで実行されるべきです。 モデルを表現するために、最新のモデルを保存するEdgeModel?型のレジスタを使用する必要があります(別のオプションとして、LastNotNilフィルタを使用することも可能です)。以下は、HMI でボタンがクリックされたときに、入力画像上の定義済みのボックスからモデルが作成される実現例です:
Model Creation
Height of the Pyramid
inPyramidHeight パラメータは、ピラミッドのマッチングのレベル数を決め、テンプレートがピラミッド最高レベルでまだ認識できる最大の数を設定する必要があります。 この値は、診断出力 diagPatternPyramid (Grayscale-based Matching) または diagEdgePyramid (Edge-based Matching) を使用して、対話型の実験によって選択する必要があります。
次の例では、inPyramidHeight 値 4 は高すぎる (両方の方法に対して)、テンプレートの構造はピラミッドのこのレベルで完全に失われるためです。 また、値 3 は (特に Edge-based Matching の場合) 少し過剰に見えますが、値 2 は間違いなく安全な選択でしょう。
レベル 0 | レベル 1 | レベル 2 | レベル 3 | レベル 4 | |||
---|---|---|---|---|---|---|---|
Grayscale-based Matching (diagPatternPyramid). |
|||||||
Edge-based Matching (diagEdgePyramid): |
Edge-based Pramid> (diagPyamid) |
Angle Range
inMinAngle, inMaxAngleパラメータはマッチングの過程で考慮するテンプレートの向きの範囲に決定されます。 例えば(括弧内の値はinMinAngle, inMaxAngleの組を表す):
- (0.0, 360.0): すべての回転を考慮する(デフォルト値)
- (-15.0, 15.0): テンプレートは基準テンプレートから最大15度(各方向とも)離れることができる
- (0.0, 0.): 回転を考慮する(デフォルト)
- (0.0, 360.0): テンプレートは角度から離れることができる(デフォルト)
- (0.0): 回転を考慮する(デフォルト)
- (0.0): 方向を考慮する(デフォルト)
可能な向きの範囲が広いと(メモリ使用量と計算時間の両方で)かなりのオーバーヘッドが発生するので、可能な限り範囲を制限することが推奨されます。
エッジ検出の設定 (エッジ ベース マッチングのみ)
CreateEdgeModel フィルターのパラメータ inEdgeMagnitudeThreshold, inEdgeHysteresis は、テンプレート イメージでエッジ検出に使用するヒステリシス閾値の設定を指定します。 inEdgeMagnitudeThreshold 値が低いほど、テンプレート画像からより多くのエッジが検出されます。 これらのパラメータは、テンプレートの重要なエッジがすべて検出され、結果に含まれる冗長なエッジ(ノイズ)の量ができる限り少なくなるように設定する必要があります。 ピラミッドの高さと同様に、エッジ検出の閾値は診断出力diagEdgePyramidを用いたインタラクティブな実験によって選択されるべきです。今回は最も低いレベルの画像だけを見る必要があります。
(15.0, 30.)0) – ノイズ過多
(40.0, 60.0) – OK
(60.0, 70.0).0) – 重大なエッジが失われた
CreateEdgeModel フィルターは、ピラミッドの頂点にエッジが検出されない(つまり、いくつかの重大なエッジだけでなく、それらのすべてが失われた)モデルの作成を許可しないので、その場合はエラーになります。 このようなことが起こるたびに、ピラミッドの高さ、エッジのしきい値、またはその両方を減らす必要があります。
Matching
inMinScore パラメータは、アルゴリズムが一致候補の検証でどれだけ寛容かを決定し、値が高いほど少ない結果が返されることになります。 このパラメーターは、対話的な実験を通じて、すべての正しい一致が返されることを保証するのに十分な低い値に設定する必要がありますが、低すぎるとアルゴリズムの速度が低下し、結果に偽の一致が現れる可能性があります。 後者は、検討しているテンプレートに、識別可能なエッジによって定義されていないが、マッチングする必要がある滑らかな色の遷移領域がある場合にのみ考慮すべきです。
Previous: Shape Fitting Next: ローカル座標系