【HALCON】シェイプマッチング完全ガイド - モデル作成から検出まで
HALCONのシェイプマッチングは、画像内で特定の形状パターンを高速かつ高精度に検出する技術です。産業用検査、ロボットビジョン、品質管理など幅広い分野で活用されています。
基本的なシェイプマッチング
create_shape_model - シェイプモデルの作成
テンプレート画像から形状モデルを作成します。回転に対応したマッチングが可能です。
create_shape_model(Template, NumLevels, AngleStart, AngleExtent, AngleStep,
Optimization, Metric, Contrast, MinContrast, ModelID)
パラメータ:
Template: モデルを作成するテンプレート画像NumLevels: ピラミッドレベル数(‘auto’推奨)AngleStart/AngleExtent: 回転角度の範囲AngleStep: 角度ステップ(‘auto’推奨)Optimization: 最適化方法(‘none’, ‘point_reduction_low’など)Metric: マッチング基準(‘use_polarity’, ‘ignore_local_polarity’など)Contrast/MinContrast: コントラスト設定
* シェイプモデルの作成例
read_image(Image, 'template.png')
threshold(Image, Region, 100, 255)
reduce_domain(Image, Region, TemplateImage)
create_shape_model(TemplateImage, 'auto', -0.39, 0.79, 'auto',
'auto', 'use_polarity', 30, 10, ModelID)
find_shape_model - シェイプモデルの検出
作成したモデルを画像内で検索し、位置・角度・スコアを取得します。
find_shape_model(Image, ModelID, AngleStart, AngleExtent, MinScore,
NumMatches, MaxOverlap, SubPixel, NumLevels,
Greediness, Row, Column, Angle, Score)
パラメータ:
MinScore: 最小一致スコア(0〜1)NumMatches: 検出する最大数(0で全て)MaxOverlap: 検出結果の最大重複率SubPixel: サブピクセル精度(‘interpolation’, ‘least_squares’など)Greediness: 貪欲度(速度と精度のバランス)
* シェイプモデルの検出
read_image(SearchImage, 'search.png')
find_shape_model(SearchImage, ModelID, -0.39, 0.79, 0.5, 1, 0.5,
'interpolation', 0, 0.9, Row, Column, Angle, Score)
* 検出位置の表示
dev_display(SearchImage)
gen_cross_contour_xld(Cross, Row, Column, 20, Angle)
dev_display(Cross)
スケーリング対応マッチング
create_scaled_shape_model - スケール対応モデル作成
異なるサイズで現れる物体を検出するためのモデルを作成します。
create_scaled_shape_model(Template, NumLevels, AngleStart, AngleExtent,
AngleStep, ScaleMin, ScaleMax, ScaleStep,
Optimization, Metric, Contrast, MinContrast, ModelID)
追加パラメータ:
ScaleMin/ScaleMax: スケール範囲(例: 0.8〜1.2)ScaleStep: スケールステップ
* スケーリング対応モデルの作成
create_scaled_shape_model(Template, 'auto', 0, rad(360), 'auto',
0.8, 1.2, 'auto', 'auto', 'use_polarity',
30, 10, ModelID)
find_scaled_shape_model - スケール対応モデル検出
find_scaled_shape_model(Image, ModelID, AngleStart, AngleExtent,
ScaleMin, ScaleMax, MinScore, NumMatches,
MaxOverlap, SubPixel, NumLevels, Greediness,
Row, Column, Angle, Scale, Score)
* スケーリング対応モデルの検出
find_scaled_shape_model(Image, ModelID, 0, rad(360), 0.8, 1.2,
0.5, 0, 0.5, 'least_squares', 0, 0.9,
Row, Column, Angle, Scale, Score)
XLDベースのシェイプマッチング
create_shape_model_xld - XLD輪郭からモデル作成
画像ではなくXLD輪郭データから直接モデルを作成します。CADデータからのモデル作成に有用です。
create_shape_model_xld(Contours, NumLevels, AngleStart, AngleExtent,
AngleStep, Optimization, Metric, MinContrast, ModelID)
* XLD輪郭からモデルを作成
gen_ellipse_contour_xld(Contour, 200, 200, 0, 100, 50, 0, rad(360), 'positive', 1.5)
create_shape_model_xld(Contour, 'auto', 0, rad(360), 'auto',
'none', 'use_polarity', 30, ModelID)
NCCマッチング(正規化相互相関)
輝度パターンに基づくマッチング手法です。テクスチャのある対象に適しています。
create_ncc_model - NCCモデルの作成
create_ncc_model(Template, NumLevels, AngleStart, AngleExtent,
AngleStep, Metric, ModelID)
Metric オプション:
'use_polarity': コントラストの極性を考慮'ignore_global_polarity': 全体的な極性を無視
* NCCモデルの作成
create_ncc_model(Template, 5, -0.2, 0.4, 'auto', 'use_polarity', ModelID)
find_ncc_model - NCCモデルの検出
find_ncc_model(Image, ModelID, AngleStart, AngleExtent, MinScore,
NumMatches, MaxOverlap, SubPixel, NumLevels,
Row, Column, Angle, Score)
* NCCモデルの検出
find_ncc_model(SearchImage, ModelID, -0.2, 0.4, 0.7, 1, 0.5,
'true', 0, Row, Column, Angle, Score)
モデルの管理
write_shape_model / read_shape_model - モデルの保存・読込
* モデルの保存
write_shape_model(ModelID, 'model.shm')
* モデルの読込
read_shape_model('model.shm', ModelID)
clear_shape_model - モデルの解放
* メモリからモデルを解放
clear_shape_model(ModelID)
get_shape_model_params - モデルパラメータの取得
get_shape_model_params(ModelID, NumLevels, AngleStart, AngleExtent,
AngleStep, ScaleMin, ScaleMax, ScaleStep, Metric)
マッチング手法の比較
| 手法 | 特徴 | 適用場面 |
|---|---|---|
| shape_model | エッジベース、高速 | 輪郭がはっきりした物体 |
| scaled_shape_model | スケール変化対応 | サイズが変わる物体 |
| ncc_model | 輝度パターンベース | テクスチャのある対象 |
| shape_model_xld | CAD/輪郭データ使用 | 設計データからの検出 |
実用的なパラメータ設定
速度重視の設定
* 高速検索(精度は低下)
find_shape_model(Image, ModelID, -0.2, 0.4, 0.7, 1, 0.5,
'none', 3, 0.9, Row, Column, Angle, Score)
精度重視の設定
* 高精度検索(処理時間増加)
find_shape_model(Image, ModelID, -0.2, 0.4, 0.5, 0, 0.3,
'least_squares_high', 0, 0.7, Row, Column, Angle, Score)
ノイズ環境での設定
* ノイズ耐性を高める
create_shape_model(Template, 'auto', -0.39, 0.79, 'auto',
'point_reduction_medium', 'ignore_local_polarity',
40, 15, ModelID)
応用例
部品検査
* 複数部品の検出と位置決め
find_shape_model(Image, ModelID, 0, rad(360), 0.6, 0, 0.5,
'least_squares', 0, 0.8, Rows, Columns, Angles, Scores)
for i := 0 to |Rows|-1 by 1
* 各部品の処理
vector_angle_to_rigid(0, 0, 0, Rows[i], Columns[i], Angles[i], HomMat2D)
endfor
ロボットビジョン
* ピッキング対象の位置・姿勢取得
find_scaled_shape_model(Image, ModelID, 0, rad(360), 0.9, 1.1,
0.7, 1, 0.5, 'least_squares', 0, 0.9,
Row, Column, Angle, Scale, Score)
* ロボット座標系への変換
affine_trans_point_2d(CamToRobot, Column, Row, RobotX, RobotY)
まとめ
HALCONのシェイプマッチングは、産業用画像処理の中核技術です。目的に応じて適切なモデルタイプを選択し、パラメータを調整することで、高速かつ高精度な検出が実現できます。
Recommend
2024-09-13
【HALCON】regiongrowing 関数について - 領域拡張によるセグメンテーション
2024-09-13
【HALCON】rgb1_to_gray 関数について - RGB画像をグレースケール画像に変換
2024-09-13
【HALCON】sobel_amp 関数について - Sobelフィルタによるエッジ強度の計算
2024-09-13
【HALCON】write_image 関数について - 画像の保存
2024-09-13
【HALCON】xyz_to_object_model_3d 関数について - XYZデータから3Dオブジェクトモデルの生成
2024-09-12
【HALCON】read_cam_par 関数について - カメラパラメータの読み込み
2024-09-12
【HALCON】read_object_model_3d 関数について - 3Dオブジェクトモデルの読み込み
2024-09-12
【HALCON】read_ocr_class_mlp 関数について - MLP OCRクラス分類器の読み込み
2024-09-12
【HALCON】set_system 関数について - システムパラメータの設定
2024-09-12
【HALCON】smallest_circle 関数について - 最小外接円の計算
2024-09-12
【HALCON】smallest_rectangle1 関数について - 最小外接矩形(軸平行)の計算
2024-09-12
【HALCON】タプル操作完全ガイド - tuple関数リファレンス