【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
: 事前に作成されたシェイプモデルのIDAngleStart
: モデルの最小回転角度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_high
や least_squares_very_high
を選択することで、より正確な結果が得られます。
並列化とパフォーマンス
find_shape_model
関数は、マルチスレッド処理に対応しており、内部データレベルでの並列化が自動的に行われます。これにより、大規模なデータセットや時間制約のあるアプリケーションでも効率的に動作します。また、Greediness
パラメータを調整することで、検索速度と精度のバランスを取ることが可能です。
まとめ
find_shape_model
関数は、画像内でシェイプモデルを迅速かつ正確に検索するための強力なツールです。パラメータ設定により、精度と速度を調整し、特定のアプリケーションに最適な検索結果を得ることができます。シェイプモデルの作成と組み合わせて、さまざまな画像認識タスクに対応することが可能です。