【HALCON】add_metrology_object_ellipse_measure 関数について - 計測モデルに楕円や楕円弧を追加する

【HALCON】add_metrology_object_ellipse_measure 関数について - 計測モデルに楕円や楕円弧を追加する

2024-08-23

2024-08-23

add_metrology_object_ellipse_measure関数の概要

HALCONadd_metrology_object_ellipse_measure関数は、計測モデルに楕円や楕円弧を追加して、画像内でエッジを精密に検出するために使用されます。この関数は、楕円形状の物体や構造を検出し、寸法や位置を測定するために役立ちます。楕円の中心座標、長軸と短軸の半径、回転角度、計測領域のサイズを指定することで、画像内の楕円形状のエッジを高精度で測定することが可能です。

特に産業用途では、楕円形状の部品やオブジェクトの寸法測定に使用され、製造業や品質管理などの分野で役立ちます。

使用例

以下に、add_metrology_object_ellipse_measure関数を使用して楕円形の計測領域を設定し、画像内のエッジを検出する具体的な例を示します。

* 画像を読み込む
read_image(&Image, "ellipse.png")

* 計測モデルを作成する
create_metrology_model(&MetrologyHandle)

* 楕円形の計測オブジェクトを追加
add_metrology_object_ellipse_measure(MetrologyHandle, 150.0, 200.0, 0.5, 80.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)

このコードでは、楕円形の計測領域を設定し、その領域内のエッジを検出しています。楕円の中心座標、回転角度、長軸・短軸の半径、および計測領域のサイズを指定して、画像内で精密なエッジ検出を行います。

引数

  • MetrologyHandle
    計測モデルのハンドル。create_metrology_model関数で生成されたものを指定します。
  • Row
    楕円の中心のY座標(行)。
  • Column
    楕円の中心のX座標(列)。
  • Phi
    楕円の回転角度(ラジアン単位)。楕円のメイン軸がどの方向に回転しているかを表します。
  • Radius1
    楕円の長軸の半径。
  • Radius2
    楕円の短軸の半径。
  • MeasureLength1
    楕円のエッジに垂直な方向の計測領域の長さ。
  • MeasureLength2
    楕円のエッジに沿った方向の計測領域の長さ。
  • MeasureSigma
    エッジ検出の際に使用されるガウス関数のシグマ値。通常は1.0に設定されますが、滑らかさに応じて調整が可能です。
  • MeasureThreshold
    エッジ検出時に使用されるしきい値。しきい値を超えるエッジのみを検出します。
  • GenParamName
    汎用パラメータ名。通常は空のリストに設定されますが、特定の設定が必要な場合に使用します。
  • GenParamValue
    汎用パラメータ値。GenParamNameに対応する値を指定します。通常は空のリストに設定されます。
  • Index
    作成された計測オブジェクトのインデックス。このインデックスを使って後続の処理でオブジェクトを参照します。

戻り値

add_metrology_object_ellipse_measure関数の戻り値は、計測モデルに追加された楕円または楕円弧オブジェクトのインデックスです。このインデックスを利用して、後続の処理で計測結果の取得やオブジェクトの特性変更を行います。

応用例

工業用楕円形部品の寸法測定

この関数は、産業用途で楕円形の部品を精密に測定する際に非常に役立ちます。例えば、楕円形の金属部品やパイプの寸法測定に使用され、製造業や品質管理での使用が一般的です。

* 楕円形部品の測定
read_image(&Image, "industrial_ellipse_part.png")
create_metrology_model(&MetrologyHandle)
add_metrology_object_ellipse_measure(MetrologyHandle, 150.0, 250.0, 0.3, 90.0, 60.0, 15.0, 8.0, 1.0, 25.0, [], [], &Index)
apply_metrology_model(Image, MetrologyHandle)

この例では、楕円形の工業部品の画像からエッジを検出し、その形状や寸法を測定しています。

並列処理による高速計測

HALCONのadd_metrology_object_ellipse_measure関数は並列処理に対応しており、複数の楕円形オブジェクトを同時に計測することが可能です。これにより、大規模な画像処理を高速に実行できます。

* 並列処理による複数の楕円形オブジェクトの計測
parallel(
    add_metrology_object_ellipse_measure(MetrologyHandle, 120.0, 130.0, 0.0, 70.0, 40.0, 10.0, 5.0, 1.0, 30.0, [], [], &Index1),
    add_metrology_object_ellipse_measure(MetrologyHandle, 220.0, 230.0, 0.5, 85.0, 55.0, 12.0, 6.0, 1.5, 40.0, [], [], &Index2)
)

このコードでは、複数の楕円形オブジェクトを並列処理で同時に追加し、計測速度を向上させています。

注意点

  • 楕円や楕円弧の中心座標、半径、回転角度のパラメータは正確に設定する必要があります。正しく設定されていないと、エッジ検出の精度が低下する可能性があります。
  • エッジ検出のしきい値も慎重に設定する必要があります。しきい値が高すぎると、重要なエッジが検出されないことがあります。

まとめ

HALCONadd_metrology_object_ellipse_measure関数は、楕円や楕円弧を計測モデルに追加して精密なエッジ検出を行うための強力なツールです。楕円形状の部品や構造物を正確に測定し、製造業や品質管理の分野で広く利用されています。並列処理や大規模データ処理への対応により、効率的かつ高速な計測が可能です。

Recommend