【HALCON】add_metrology_object_circle_measure 関数について - 計測モデルに円または円弧を追加する
2024-08-23
2024-08-23
HALCON
のadd_metrology_object_circle_measure
関数は、計測モデルに円や円弧を追加して、計測領域を定義するために使用されます。この関数を利用すると、画像内の円形または円弧形状のエッジを精密に検出できます。産業用途では、部品検査や寸法測定などで頻繁に利用されます。円の中心、半径、計測領域のサイズを指定し、エッジ検出のしきい値を設定して、高精度な測定が可能となります。
使用例
次に、HALCON
のadd_metrology_object_circle_measure
関数を使って、円形の計測領域を設定し、画像内のエッジを検出する具体的な手順を示します。
* 画像を読み込む
read_image(&Image, "circles.png")
* 計測モデルを作成する
create_metrology_model(&MetrologyHandle)
* 円形の計測オブジェクトを追加
add_metrology_object_circle_measure(MetrologyHandle, 100.0, 150.0, 50.0, 10.0, 5.0, 1.0, 30.0, [], [], &Index)
* モデルを適用してエッジを検出
apply_metrology_model(Image, MetrologyHandle)
* 結果を取得する
get_metrology_object_result(MetrologyHandle, Index, "all", "result_type", "all_param", &Results)
このコードでは、まず画像を読み込み、計測モデルを作成した後、add_metrology_object_circle_measure
関数を使用して円形の計測オブジェクトをモデルに追加しています。次に、画像に対してモデルを適用し、円周上のエッジを検出します。
引数
-
MetrologyHandle
計測モデルのハンドルです。create_metrology_model
関数で生成されたものを指定します。 -
Row
円または円弧の中心のY座標(行)を指定します。 -
Column
円または円弧の中心のX座標(列)を指定します。 -
Radius
円または円弧の半径を指定します。 -
MeasureLength1
円周に垂直な方向の計測領域の長さを指定します。 -
MeasureLength2
円周に沿った方向の計測領域の長さを指定します。 -
MeasureSigma
エッジ検出の際に使用されるガウスフィルタのシグマ値です。通常は1.0に設定されますが、エッジの滑らかさに応じて調整できます。 -
MeasureThreshold
エッジ検出の際に使用されるしきい値です。このしきい値を超えるエッジのみが検出されます。 -
GenParamName
汎用パラメータ名を指定します。通常は空のリストに設定されます。 -
GenParamValue
GenParamName
に対応する値を指定します。通常は空のリストに設定されます。 -
Index
作成された計測オブジェクトのインデックスが返されます。このインデックスを使用して後続の処理を行います。
戻り値
add_metrology_object_circle_measure
関数は、計測モデルに追加された円または円弧オブジェクトのインデックスを返します。このインデックスを用いて、計測結果を取得したり、オブジェクトの特性を調整することができます。
応用例
工業用円形部品の寸法測定
この関数は、製造ラインでの円形部品の寸法測定において非常に役立ちます。例えば、円形の金属部品やゴム部品の直径や位置を正確に測定し、品質管理を行うために使用されます。
* 工業部品の円形検出
read_image(&Image, "industrial_part.png")
create_metrology_model(&MetrologyHandle)
add_metrology_object_circle_measure(MetrologyHandle, 200.0, 250.0, 60.0, 15.0, 5.0, 1.0, 25.0, [], [], &Index)
apply_metrology_model(Image, MetrologyHandle)
この例では、工業部品の画像から円形エッジを検出し、その寸法や位置を測定しています。
並列処理を用いた円形エッジの高速検出
HALCON
のadd_metrology_object_circle_measure
関数は並列処理に対応しており、複数の円形オブジェクトを同時に計測モデルに追加して高速に処理できます。これにより、複数の部品や構造を一度に検出することが可能です。
* 並列処理で複数の円形オブジェクトを追加
parallel(
add_metrology_object_circle_measure(MetrologyHandle, 120.0, 130.0, 35.0, 10.0, 2.0, 1.0, 30.0, [], [], &Index1),
add_metrology_object_circle_measure(MetrologyHandle, 220.0, 230.0, 45.0, 12.0, 3.0, 1.5, 40.0, [], [], &Index2)
)
このコードでは、並列処理を利用して複数の円形オブジェクトを同時に追加し、処理速度を大幅に向上させています。
注意点
- 円形や円弧の半径や計測領域のパラメータを適切に設定することが重要です。過小または過大な設定は、エッジ検出の精度に影響を与える可能性があります。
- しきい値の設定が高すぎると、重要なエッジが検出されない可能性があります。しきい値は適切に調整してください。
まとめ
HALCON
のadd_metrology_object_circle_measure
関数は、計測モデルに円や円弧を追加し、エッジ検出を行うための強力なツールです。この関数を使用することで、精密な円形構造の測定が可能となり、製造業や工業用途での寸法測定において非常に有効です。並列処理を活用することで、大規模な画像解析にも対応できます。