【HALCON】select_shape 関数について - 形状フィーチャーによるリージョン選択ガイド

【HALCON】select_shape 関数について - 形状フィーチャーによるリージョン選択ガイド

2024-08-20

2024-08-20

HALCONselect_shape 関数は、画像処理において形状フィーチャーを基にリージョンを選択するための強力なツールです。この関数を使用すると、特定の形状条件を満たすリージョンのみを選択することが可能です。この記事では、select_shape 関数の使い方とその詳細な動作について説明します。

関数の概要

select_shape 関数は、入力されたリージョンの形状フィーチャーを計算し、指定された条件を満たすリージョンのみを選択して出力します。この関数を使用することで、リージョンの大きさや形状に基づいて、特定の物体のみを効率的に抽出することができます。

関数のシグネチャ

select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )
  • Regions:
    入力オブジェクト。形状フィーチャーの検査対象となるリージョンの配列です。
  • SelectedRegions:
    出力オブジェクト。条件を満たすリージョンが格納されます。
  • Features:
    入力コントロール。選択に使用する形状フィーチャーを指定します。
  • Operation:
    入力コントロール。複数の形状フィーチャーを使用する場合の論理演算を指定します(and または or)。
  • Min:
    入力コントロール。指定されたフィーチャーの最小値を設定します。
  • Max:
    入力コントロール。指定されたフィーチャーの最大値を設定します。

使用できる形状フィーチャーの一覧

select_shape 関数で使用できる形状フィーチャーの一覧は以下の通りです:

  • area: オブジェクトの面積
  • row: 重心の行インデックス
  • column: 重心の列インデックス
  • width: リージョンの幅
  • height: リージョンの高さ
  • ratio: 幅と高さの比率
  • row1: 左上隅の行インデックス
  • column1: 左上隅の列インデックス
  • row2: 右下隅の行インデックス
  • column2: 右下隅の列インデックス
  • circularity: 円形度
  • compactness: コンパクトさ
  • contlength: 輪郭の長さ
  • convexity: 凸性
  • rectangularity: 長方形度
  • ra: 主軸の半径
  • rb: 副軸の半径
  • phi: 楕円の向き
  • anisometry: 異方性
  • bulkiness: 体積性
  • struct_factor: 構造係数
  • outer_radius: 最小外接円の半径
  • inner_radius: 最大内接円の半径
  • inner_width: 最大内接長方形の幅
  • inner_height: 最大内接長方形の高さ
  • dist_mean: 境界から重心までの平均距離
  • dist_deviation: 境界から重心までの距離のばらつき
  • roundness: 丸み
  • num_sides: ポリゴンの辺の数
  • connect_num: 接続成分の数
  • holes_num: 穴の数
  • area_holes: オブジェクトの穴の面積
  • max_diameter: リージョンの最大直径
  • orientation: リージョンの向き
  • euler_number: オイラー数
  • rect2_phi: 最小外接長方形の向き
  • rect2_len1: 最小外接長方形の長さ
  • rect2_len2: 最小外接長方形の幅
  • moments_m11: 幾何モーメント
  • moments_m20: 幾何モーメント
  • moments_m02: 幾何モーメント
  • moments_ia: 幾何モーメント
  • moments_ib: 幾何モーメント
  • moments_m11_invar: 不変モーメント
  • moments_m20_invar: 不変モーメント
  • moments_m02_invar: 不変モーメント
  • moments_phi1: 幾何モーメント(相対的な不変モーメント)
  • moments_phi2: 幾何モーメント(相対的な不変モーメント)
  • moments_m21: 幾何モーメント
  • moments_m12: 幾何モーメント
  • moments_m03: 幾何モーメント
  • moments_m30: 幾何モーメント
  • moments_m21_invar: 不変モーメント
  • moments_m12_invar: 不変モーメント
  • moments_m03_invar: 不変モーメント
  • moments_m30_invar: 不変モーメント
  • moments_i1: セントラルモーメント
  • moments_i2: セントラルモーメント
  • moments_i3: セントラルモーメント
  • moments_i4: セントラルモーメント
  • moments_psi1: セントラルモーメント(不変)
  • moments_psi2: セントラルモーメント(不変)
  • moments_psi3: セントラルモーメント(不変)
  • moments_psi4: セントラルモーメント(不変)

操作の選択

Operation パラメータは、複数の形状フィーチャーを使用する場合に、リージョンが選択される条件を指定します。

  • and: すべての指定されたフィーチャーが条件を満たすリージョンのみを選択します。
  • or: 少なくとも1つのフィーチャーが条件を満たすリージョンを選択します。

使用例

以下は、select_shape 関数を使用して特定の形状フィーチャーに基づいてリージョンを選択する簡単な例です。

* 画像を読み込んでしきい値処理を実行
read_image(Image, 'monkey')
threshold(Image, Region, 128, 255)
connection(Region, ConnectedRegions)

* 面積と最大直径に基づいてリージョンを選択
select_shape(ConnectedRegions, Eyes, ['area', 'max_diameter'], 'and', [500, 30.0], [1000, 50.0])

* 選択されたリージョンを表示
dev_display(Eyes)

この例では、画像をしきい値処理してリージョンを抽出し、その中から面積と最大直径に基づいて目の部分に相当するリージョンを選択しています。

まとめ

select_shape 関数は、画像処理において形状に基づいてリージョンをフィルタリングするための非常に有用なツールです。例えば、オブジェクトの面積や直径、円形度などを条件に、特定の物体を正確に抽出することが可能です。

Recommend