【HALCON】select_shape 関数について - 形状フィーチャーによるリージョン選択ガイド
2024-08-20
2024-08-20
HALCON
のselect_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
関数は、画像処理において形状に基づいてリージョンをフィルタリングするための非常に有用なツールです。例えば、オブジェクトの面積や直径、円形度などを条件に、特定の物体を正確に抽出することが可能です。