ハルコン形状マッチングパラメータの詳細説明

find_shape_model(画像 : : ModelID、AngleStart、AngleExtent、MinScore、NumMatches、MaxOverlap、SubPixel、NumLevels、Greediness : 行、列、角度、スコア)

注:出力パラメータは 4 つあります。これらは、画像内のターゲットの座標 (行、列)、つまり重心の座標、ターゲットの回転角度、およびマッチング スコアです。











1. 行と列の座標は検索画像内のテンプレートの正確な位置ではないため、直接使用することはできません。これらの値は変換行列の作成用に最適化されており、この行列の照合結果を後続のステップの ROI の調整などのさまざまなタスクに使用できます。

2. スコアは 0 ~ 1 の数値で、検索画像に表示されるテンプレートの割合のおおよその尺度です。テンプレートの半分が遮蔽されている場合、値は 0.5 を超えることはできません。MinScore パラメータを大きく設定すると、検索が速くなります。テンプレートが画像内で遮蔽されていない場合、MinScore を 0.8、または 0.9 に設定することもできます。

3. 画像のドメインは、create_shape_model でモデルを作成するために使用される画像のドメイン領域の重心であるモデル参照点の検索領域を定義します。set_shape_model_origin 関数を使用して設定された異なる初期位置は考慮されません。モデルは、モデルが完全にこの画像に属する画像ドメイン領域内の点内で検索されます。これは、モデルが画像境界を越える場合、たとえ取得された品質係数 (スコア) が MinScore より大きくても、モデルを見つけることができないことを意味します。このパフォーマンスは set_system('border_shape_models','true') によって変更できるため、画像の境界を超え、MinScore より大きい品質係数を持つモデルも見つけることができます。このとき、画像の外側の点は遮蔽されているとみなされ、品質係数を下げることができます。このモードでは検索時間が長くなります。

4. **パラメータ AngleStart および AngleExtent は、テンプレート検索の回転角度を決定します。角度は、create_shape_model オペレーターで指定された角度とできるだけ一致している必要があります。**パラメータ AngleStart および AngleExtent は、モデル検索の回転角度を決定します。必要に応じて、回転範囲が切り取られ、create_shape_model 関数で指定された回転範囲になります。これは、モデルの作成と検索の角度範囲が実際には重複している必要があることを意味します。検索中の角度の範囲は、2*pi を法として変更されません。プレゼンテーションを簡略化するために、この段落の残りの部分ではすべての角度を度で表し、find_shape_model 関数ではラジアンで設定します。したがって、テンプレート作成時に AngleStart=-20°、AngleExtent=40° とした場合、検索テンプレート関数 find_shape_model で AngleStart=350°、AngleExtent=20° と設定しても、角度モジュロ 360 が重なっていても、テンプレートは見つかりません。テンプレートを見つけるには、この例では AngleStart=350° を AngleStart=-10° に変更する必要があります。

5. パラメータ MinScore は、テンプレートが一致したときに画像内で見つかる品質係数の少なくとも種類を定義します。MinScore を大きく設定すると、検索が速くなります。テンプレートが画像内で遮蔽されていない場合、MinScore は 0.8 または 0.9 まで設定できます。

6. NumMatches は、画像上で見つかるテンプレートの最大数を定義します。マッチング品質係数が MinScore より大きく、ターゲットの数が NumMatches よりも多い場合は、最高の品質係数を持つ NumMatches ターゲット位置のみを返します。見つかった一致するターゲットが NumMatches 未満の場合は、見つかったターゲットのみが返されます。MinScore パラメーターは NumMatches よりも優れています。
**イメージ内にターゲットが 1 つしかない場合は、NumMatches を 1 に設定し、MinScore を 0.5 などの低い値に設定します。この方法は、画像内で一致するターゲットを見つけるためのより堅牢なパラメーター設定です。
**
7. モデルが対称性を持っている場合、検索画像の同じ位置、異なる角度でターゲットに一致する複数の領域が見つかります。パラメータ MaxOverlap は 0 ~ 1 で、見つかった 2 つのターゲット領域の最も重なり合う係数を定義します。これにより、それらを 2 つの異なるターゲット領域として返すことができます。オーバーラップは、ターゲット領域の任意の方向で最小の外接する四角形 (smallest_rectangle2 を参照) を見つけることに基づいて計算されます。MaxOverlap=0 の場合、見つかったオブジェクト領域は重複できません。MaxOverlap=1 の場合、見つかったすべてのオブジェクト領域を返す必要があります。見つかった 2 つのターゲット領域が互いに重なり、MaxOverlap より大きい場合は、最良のもののみを返します。

8.SubPixel は、見つかったオブジェクトがサブピクセル精度で抽出されるかどうかを決定します。SubPixel が「none」(または背景互換性のために「false」) に設定されている場合、モデルの位置は、create_shape_model で定義されたピクセル精度と角度解像度のみになります。SubPixel が「補間」(または「true」) に設定されている場合、位置と角度の両方がサブピクセル精度になります。このモードでは、モデルの位置が質量係数関数で補間され、計算時間がほとんどかからず、広く使用されるのに十分な精度が得られます。ただし、非常に高い精度が要求される一部のアプリケーションでは、テンプレートの位置は、テンプレート点から関連する画像点までの距離を最小化するなど、最小二乗調整によって決定する必要があります。このモードでは、「補間」に比べて追加の計算時間が必要になります。最小二乗調整のモードは、「least_squares」、「least_squares_high」、「least_squares_very_high」です。これらは、最小距離を検索する精度を定義するために使用できます。選択した精度が高くなるほど、サブピクセル抽出にかかる時間が長くなります。レベルが高いほど時間がかかります。一般に、時間と精度のバランスをとるために「least_squares」を使用します。
ただし、通常、SubPixel は「補間」に設定されます。最小二乗法を設定する場合は、「least_squares」を選択します。これにより、実行時間と精度の間のトレードオフが保証されます。
オブジェクトがテンプレートに対してわずかに変形している場合、そのマッチング スコアは低くなります。このようなターゲットの場合、最大許容ターゲット変形の追加パラメータである「max_deformation 1」をパラメータ SubPixel に渡すことができ、文字列の値は 0 ~ 32 の整数値です。0 は変形が許可されないことを意味します。** 最大許容変形値が高くなると、実行時間が長くなり、マッチングエラーのリスクが高くなります。したがって、最大変形はできるだけ小さく選択する必要があります。**意味のあるスコア値を取得し、マッチングエラーを回避するには、許容可能な変数を最小二乗法と組み合わせて使用​​することをお勧めします。

9. NumLevels は、検索に使用されるピラミッド レイヤーの数です。ピラミッドは、画像の解像度に応じて画像をレイヤーに分割します。ピラミッド レイヤーが多いほど、マッチング速度が速くなります。必要に応じて、レイヤーの数はモデルが作成された範囲まで切り捨てられます。NumLevels=0 の場合、テンプレートの作成時にピラミッドのレベル数を使用します。さらに、NumLevels には、一致するテンプレートを見つけるためのピラミッド レベルの最小数を定義する 2 番目のパラメーターを含めることもできます。NumLevels=[4,2] は、ピラミッドの ​​4 番目のレベルで一致が開始され、ピラミッドの ​​2 番目のレベルで一致が見つかることを示します (最低レベルは 1 に設定されます)。この方法はマッチングの実行時間を短縮するために使用できますが、このモードの位置精度は通常モードよりも低く、いわゆるノーマル モードはピラミッドの最下位でマッチングします。したがって、より高い精度が必要な場合は、SubPixel を少なくとも「least_squares」に設定する必要があります。ピラミッドの最下層の設定が大きすぎると、望ましい精度が達成されなかったり、間違った一致領域が検出されたりする可能性があります。これは、ピラミッドの上位レベルのテンプレートが、信頼できる最適なテンプレートを見つけるほど具体的ではないためです。この場合、最下位のピラミッド レベルを最小値に設定する必要があります。
注: 画像の焦点が合っていない場合やレンズがぼやけている場合にテンプレート マッチングを実行する場合、値を [0,-1] などの負の値に設定する必要があります。find_shape_model は、テスト対象のターゲットを見つけるためにピラミッドの最下位レベルで見つかった一致するアイテムを返します。
また、ピラミッド レベルは画像ごとに若干異なる場合があります。低品質の画像のマッチングを容易にするために、マッチング中に最低のピラミッド レベルを決定できます。ここでのコツは、ピラミッドの最低レベルを負の数値で指定できることです。たとえば、NumLevels が [4,-2] の場合、マッチングはピラミッド レベル 4 から始まり、最も下のピラミッド レベルまで追跡されます。このレベルのピラミッドで一致するターゲットが見つからない場合は、引き続きピラミッド レベルを下げて検索し、少なくとも 1 つの一致するターゲットが見つかったピラミッド レベルを最下位のピラミッド レベルにして、見つかったターゲットを返します。

10. パラメーター Greediness は、検索時の「貪欲さ」を決定します。Greediness=0 の場合、画像内にテンプレートが存在する限り、安全な検索ヒューリスティックを使用します。ただし、この方法での検索は比較的時間がかかります。Greediness=1 の場合、安全でない検索ヒューリスティックを使用します。そのため、テンプレートが画像内に存在する場合でも、まれにテンプレートが見つからない可能性があります。Greediness=0.9 に設定すると、ほぼすべてのケースでモデルとの一致を常に見つけることができます。

最後に、ターゲットが見つからない場合、テンプレート検索演算子は時間がかかります。マッチング時間は演算子 set_shape_model_param
(ModelID, 'timeout', 1000)
で設定できます。find_shape_model が 'timeout' に達すると、実行は直ちに終了され、一致結果は出力されず、エラー コード 9400 (H_ERR_TIMEOUT) が返されます。

おすすめ

転載: blog.csdn.net/Douhaoyu/article/details/130941423