【HALCON】query_contour_global_attribs_xld 関数について - XLD輪郭のグローバル属性クエリ

【HALCON】query_contour_global_attribs_xld 関数について - XLD輪郭のグローバル属性クエリ

2024-09-12

2024-09-12

HALCONquery_contour_global_attribs_xld関数は、XLD(Extended Line Description)形式の輪郭に関連するグローバル属性をクエリするためのツールです。XLD輪郭は、サブピクセル精度で形状を表現する高精度な輪郭形式であり、画像解析において重要な役割を果たします。この関数を使用することで、XLD輪郭全体に関する属性情報を取得し、形状の特徴を解析することができます。

query_contour_global_attribs_xld 関数の概要

query_contour_global_attribs_xldは、XLD形式の輪郭全体に関連するグローバルな属性(例えば、長さ、重心、エリアなど)をクエリするための関数です。これにより、輪郭全体の統計情報を取得し、形状の特徴を把握できます。グローバル属性は、個々の点や部分的な特徴とは異なり、輪郭全体に適用される属性です。

関数の基本構文

query_contour_global_attribs_xld(Contour, AttribNames)
  • Contour
    XLD形式の輪郭オブジェクト。
  • AttribNames
    取得されるグローバル属性名のリスト(出力)。

この関数は、指定されたXLD輪郭に関連するグローバル属性の名前をリストとして取得します。これにより、輪郭全体に関する属性の種類を確認し、さらなる解析に役立てることができます。

使用方法

以下は、query_contour_global_attribs_xldを使用してXLD輪郭のグローバル属性名を取得する基本的な例です。

* 画像の読み込み
read_image(Image, 'sample_image.png')

* XLD輪郭の抽出
edges_sub_pix(Image, EdgesXLD, 'canny', 1, 20, 40)

* XLD輪郭のグローバル属性を取得
query_contour_global_attribs_xld(EdgesXLD, AttribNames)

* グローバル属性名を表示
for i := 0 to |AttribNames| - 1 by 1
    disp_message(WindowHandle, 'Global Attribute: ' + AttribNames[i], 'window', 12, 12 + i * 20, 'black', 'true')
endfor

この例では、画像から抽出されたXLD輪郭EdgesXLDに対して、関連するグローバル属性情報を取得し、その属性名を表示しています。これにより、輪郭全体の統計的な特徴を確認できます。

応用例

query_contour_global_attribs_xldは、次のようなシナリオで使用されます。

  • XLD輪郭の特徴解析
    グローバル属性を使用して、輪郭全体の統計情報を取得し、形状の解析や分類に活用します。例えば、輪郭の長さや重心を取得して、特定のパターンを検出します。

  • 形状のフィルタリング
    輪郭の長さや面積に基づいてフィルタリングを行い、特定のサイズや形状を持つオブジェクトのみを選択します。

  • 形状認識や物体検出
    XLD輪郭のグローバル属性を利用して、オブジェクトの形状や位置に関する特徴を分析し、物体検出や認識を行います。

具体例

以下は、XLD輪郭のグローバル属性を取得し、その中でも輪郭の長さを利用してフィルタリングする具体的な例です。

* 画像の読み込み
read_image(Image, 'sample_image.png')

* XLD輪郭の抽出
edges_sub_pix(Image, EdgesXLD, 'canny', 1, 20, 40)

* XLD輪郭のグローバル属性を取得
query_contour_global_attribs_xld(EdgesXLD, AttribNames)

* 長さ属性が利用可能か確認し、フィルタリング
if ('length' in AttribNames)
    length_xld(EdgesXLD, Length)
    Threshold := 50  * 長さのしきい値
    select_contours_xld(EdgesXLD, FilteredContours, 'length', Threshold, 99999, -1, -1)
    disp_message(WindowHandle, 'Filtered Contours based on Length', 'window', 12, 12, 'black', 'true')
    dev_display(FilteredContours)
endif

このコードでは、XLD輪郭のグローバル属性の1つである「長さ」を取得し、その長さに基づいて輪郭をフィルタリングしています。指定したしきい値以上の長さを持つ輪郭のみを選択し、表示しています。

まとめ

HALCONquery_contour_global_attribs_xld関数は、XLD輪郭に関連するグローバル属性情報をクエリし、輪郭の統計的な特徴を解析するための強力なツールです。グローバル属性を活用することで、輪郭全体の特徴を把握し、形状解析や物体認識の精度を向上させることができます。特に、輪郭の長さや重心などの情報を使ったフィルタリングや解析に役立ちます。

Recommend