【HALCON】find_shape_model 関数について - シェイプモデルを用いたマッチング

【HALCON】find_shape_model 関数について - シェイプモデルを用いたマッチング

2024-08-22

2024-08-22

find_shape_model 関数とは

find_shape_model 関数は、画像内でシェイプモデルを検索し、最適な一致箇所を見つけるために使用されます。この関数は、あらかじめ作成されたシェイプモデルを画像に対して適用し、一致した位置、回転角度、およびスコアを返します。

使用方法

find_shape_model 関数の基本的な構文は以下の通りです。

find_shape_model(Image, ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels, Greediness, Row, Column, Angle, Score)
  • Image: 検索対象となる入力画像
  • ModelID: 事前に作成されたシェイプモデルのID
  • AngleStart: モデルの最小回転角度
  • AngleExtent: 回転角度の範囲
  • MinScore: モデルの一致に必要な最小スコア
  • NumMatches: 検出するモデルの最大数
  • MaxOverlap: 複数の検出結果の最大重複率
  • SubPixel: サブピクセル精度での計算方法
  • NumLevels: 使用するピラミッドレベルの数
  • Greediness: 検索の貪欲度(速度と精度のバランス)
  • Row, Column, Angle: 検出されたモデルの位置と回転角度
  • Score: 検出されたモデルの一致スコア

具体例

以下に、find_shape_model 関数を使用してシェイプモデルを画像内で検索する具体例を示します。

create_shape_model (ImageReduced, 0, rad(-45), rad(180), 0, \
                    'none', 'use_polarity', 30, 10, ModelID)
find_shape_model (SearchImage, ModelID, rad(-45), rad(180), \
                  0.5, 1, 0.5, 'interpolation', \
                  0, 0, Row, Column, Angle, Score)

この例では、まずシェイプモデルを作成し、その後、画像内でそのモデルの最も一致する箇所を検索しています。

パラメータの詳細

  • MinScore
    モデルが一致したとみなされるための最低スコアを設定します。スコアは0から1の範囲であり、値を高く設定することで検索速度が向上しますが、誤検出の可能性も増加します。
  • NumMatches
    検出するモデルの最大数を設定します。0を指定すると、すべての一致が返されます。
  • SubPixel
    サブピクセル精度での計算方法を指定します。interpolation はほとんどの用途で十分な精度を提供し、least_squares やその高精度バージョンはさらに精度を向上させます。

精度の向上

高精度なマッチングが必要な場合、SubPixel パラメータをleast_squaresに設定することで、モデルの位置と回転角度をサブピクセル精度で計算できます。特に、精度が重要なアプリケーションでは、least_squares_highleast_squares_very_high を選択することで、より正確な結果が得られます。

並列化とパフォーマンス

find_shape_model 関数は、マルチスレッド処理に対応しており、内部データレベルでの並列化が自動的に行われます。これにより、大規模なデータセットや時間制約のあるアプリケーションでも効率的に動作します。また、Greediness パラメータを調整することで、検索速度と精度のバランスを取ることが可能です。

まとめ

find_shape_model 関数は、画像内でシェイプモデルを迅速かつ正確に検索するための強力なツールです。パラメータ設定により、精度と速度を調整し、特定のアプリケーションに最適な検索結果を得ることができます。シェイプモデルの作成と組み合わせて、さまざまな画像認識タスクに対応することが可能です。

Recommend