【HALCON】fit_circle_contour_xld 関数について - XLD輪郭の円フィッティング
2024-09-07
2024-09-07
HALCON
のfit_circle_contour_xld
関数は、XLD輪郭に基づいてサブピクセル精度で円をフィッティングするための強力なツールです。XLD(Extended Line Description)は、HALCONで使用される高度な輪郭表現であり、円形のオブジェクトを高精度にフィッティングする際に非常に効果的です。工業検査や形状解析において、円の形状を正確に検出するためにこの関数は重要な役割を果たします。
fit_circle_contour_xld 関数の概要
fit_circle_contour_xld
関数は、XLD輪郭を基にサブピクセル精度で円をフィッティングします。フィッティングとは、与えられたデータ(この場合は輪郭)に最も適合する円のパラメータを計算することを指します。サブピクセル精度でのフィッティングは、ピクセル単位以上の精度を求める場面で特に有効です。
基本的な使用方法
以下に、fit_circle_contour_xld
関数の基本的な構文を示します。
fit_circle_contour_xld(Contours, 'algebraic', -1, 0, 0, 3, 2, Radius, Row, Column, StartPhi, EndPhi, PointOrder)
Contours
フィッティングするXLD輪郭。'algebraic'
使用するフィッティングアルゴリズム(例としてアルジブラ的フィッティングを指定)。-1
使用する輪郭の全点を対象にフィッティングする場合のパラメータ。0
円の開始角度(未指定の場合は0
を指定)。0
円の終了角度(未指定の場合は0
を指定)。3
最大繰り返し数。2
サブピクセルのしきい値。これにより精度を調整します。Radius
出力されるフィッティングされた円の半径。Row
/Column
フィッティングされた円の中心の行・列座標。StartPhi
/EndPhi
円弧の開始・終了角度。PointOrder
円の点の順序(時計回りか反時計回りかを指定)。
具体例
以下に、fit_circle_contour_xld
関数を使用して円をフィッティングする具体例を示します。
* 画像の読み込み
read_image(Image, 'circle_image.png')
* エッジの検出とXLD輪郭の抽出
edges_sub_pix(Image, Edges, 'canny', 1.0, 20, 40)
* 円フィッティング
fit_circle_contour_xld(Edges, 'algebraic', -1, 0, 0, 3, 2, Radius, Row, Column, StartPhi, EndPhi, PointOrder)
* 結果の表示
disp_message(WindowHandle, 'Radius: ' + Radius, 'window', 12, 12, 'black', 'true')
disp_message(WindowHandle, 'Center: (' + Row + ', ' + Column + ')', 'window', 30, 12, 'black', 'true')
この例では、画像circle_image.png
内のエッジを検出し、そのエッジを基にXLD輪郭を生成した後、円フィッティングを行います。フィッティング結果として、円の半径と中心座標が出力されます。
応用例
fit_circle_contour_xld
関数は、円形オブジェクトを扱う様々なシーンで使用されます。
-
工業製品の検査
製品や部品の円形部分(穴や円形の外周など)を精密に測定し、規定のサイズや形状との一致を確認することが可能です。例えば、ボルトやパイプの検査に利用されます。 -
精密な形状解析
円形状のオブジェクトの正確な位置や寸法を計測するために使用されます。サブピクセル精度での測定により、ピクセル単位の誤差を大幅に減少させます。 -
ロボットビジョン
ロボットが円形オブジェクトを正確に認識し、ピックアップや配置などの作業を行う際に、正確な円の検出が求められます。
まとめ
HALCON
のfit_circle_contour_xld
関数は、XLD輪郭を基にサブピクセル精度で円をフィッティングするための非常に強力なツールです。工業検査や形状解析など、精度が求められるシーンで幅広く活用されており、特に円形オブジェクトの測定や検出において高いパフォーマンスを発揮します。サブピクセル精度でのフィッティングにより、従来のピクセル単位を超えた高精度な結果を得ることが可能です。