【HALCON】形態学処理完全ガイド - 膨張・収縮・オープニング・クロージング
HALCONの形態学処理(Morphology)は、画像内の領域の形状を変化させる基本的な画像処理手法です。ノイズ除去、形状解析、特徴抽出など幅広い用途に使用されます。
基本演算
膨張(Dilation)
領域を拡大する処理です。構造要素の形状に従って境界が外側に広がります。
dilation_circle - 円形構造要素による膨張
dilation_circle(Region : RegionDilation : Radius : )
read_image(Image, 'example.png')
threshold(Image, Region, 128, 255)
dilation_circle(Region, DilatedRegion, 3.5)
dilation_rectangle1 - 矩形構造要素による膨張
dilation_rectangle1(Region : RegionDilation : Width, Height : )
dilation1 / dilation2 - 任意構造要素による膨張
* dilation1: 膨張(Minkowski加算)
dilation1(Region, StructElement : RegionDilation : Iterations : )
* dilation2: 参照点付き膨張
dilation2(Region, StructElement : RegionDilation : Row, Column, Iterations : )
収縮(Erosion)
領域を縮小する処理です。構造要素の形状に従って境界が内側に収縮します。
erosion_circle - 円形構造要素による収縮
erosion_circle(Region : RegionErosion : Radius : )
threshold(Image, Region, 128, 255)
erosion_circle(Region, ErodedRegion, 3.5)
erosion_rectangle1 - 矩形構造要素による収縮
erosion_rectangle1(Region : RegionErosion : Width, Height : )
erosion1 / erosion2 - 任意構造要素による収縮
* erosion1: 収縮(Minkowski減算)
erosion1(Region, StructElement : RegionErosion : Iterations : )
* erosion2: 参照点付き収縮
erosion2(Region, StructElement : RegionErosion : Row, Column, Iterations : )
複合演算
オープニング(Opening)
収縮→膨張の順で実行。小さな突起やノイズを除去します。
opening(Region, StructElement : RegionOpening : )
opening_circle(Region : RegionOpening : Radius : )
opening_rectangle1(Region : RegionOpening : Width, Height : )
* 小さなノイズを除去
opening_circle(Region, OpenedRegion, 2.5)
クロージング(Closing)
膨張→収縮の順で実行。小さな穴や隙間を埋めます。
closing(Region, StructElement : RegionClosing : )
closing_circle(Region : RegionClosing : Radius : )
closing_rectangle1(Region : RegionClosing : Width, Height : )
* 小さな穴を埋める
closing_circle(Region, ClosedRegion, 2.5)
スケルトン化(細線化)
領域の骨格(中心線)を抽出します。
skeleton - スケルトン抽出
skeleton(Region : Skeleton : )
threshold(Image, Region, 128, 255)
skeleton(Region, Skeleton)
morph_skeleton - 形態学的スケルトン
morph_skeleton(Region : Skeleton : )
junctions_skeleton - スケルトンの接合点検出
junctions_skeleton(Skeleton : EndPoints, JuncPoints : )
skeleton(Region, Skeleton)
junctions_skeleton(Skeleton, EndPoints, JuncPoints)
* EndPoints: 端点
* JuncPoints: 分岐点
グレースケール形態学
輝度値を持つ画像に直接適用する形態学処理です。
gray_dilation - グレースケール膨張
局所的な最大値を取得し、明るい領域を拡大します。
gray_dilation(Image, SE : ImageDilation : MaskHeight, MaskWidth : )
gray_dilation_rect(Image : ImageMax : MaskHeight, MaskWidth : )
gray_erosion - グレースケール収縮
局所的な最小値を取得し、暗い領域を拡大します。
gray_erosion(Image, SE : ImageErosion : MaskHeight, MaskWidth : )
gray_erosion_rect(Image : ImageMin : MaskHeight, MaskWidth : )
gray_opening - グレースケールオープニング
gray_opening(Image, SE : ImageOpening : )
gray_opening_rect(Image : ImageOpening : MaskHeight, MaskWidth : )
gray_closing - グレースケールクロージング
gray_closing(Image, SE : ImageClosing : )
gray_closing_rect(Image : ImageClosing : MaskHeight, MaskWidth : )
gray_skeleton - グレースケールスケルトン
gray_skeleton(Image : GraySkeleton : )
構造要素の生成
gen_circle - 円形構造要素
gen_circle(: Circle : Row, Column, Radius : )
gen_rectangle1 - 矩形構造要素
gen_rectangle1(: Rectangle : Row1, Column1, Row2, Column2 : )
gen_ellipse - 楕円形構造要素
gen_ellipse(: Ellipse : Row, Column, Phi, Radius1, Radius2 : )
用途別使い分け
ノイズ除去
* 小さな白いノイズを除去(オープニング)
opening_circle(Region, Cleaned, 1.5)
* 小さな黒い穴を埋める(クロージング)
closing_circle(Cleaned, Final, 1.5)
物体の分離
* 接触している物体を分離(収縮)
erosion_circle(Region, Separated, 3.0)
輪郭の平滑化
* オープニング→クロージングで滑らかに
opening_circle(Region, Temp, 2.0)
closing_circle(Temp, Smoothed, 2.0)
中心線抽出
* スケルトン化で中心線を取得
skeleton(Region, CenterLine)
処理の比較
| 処理 | 効果 | 主な用途 |
|---|---|---|
| 膨張 | 領域拡大 | 穴埋め、接続 |
| 収縮 | 領域縮小 | ノイズ除去、分離 |
| オープニング | 収縮→膨張 | 小さな突起除去 |
| クロージング | 膨張→収縮 | 小さな穴埋め |
| スケルトン | 細線化 | 中心線抽出 |
まとめ
HALCONの形態学処理は、画像の前処理から特徴抽出まで幅広く活用できます。構造要素の形状とサイズを適切に選択することで、効果的な画像処理が可能です。
Recommend
2024-09-13
【HALCON】regiongrowing 関数について - 領域拡張によるセグメンテーション
2024-09-13
【HALCON】rgb1_to_gray 関数について - RGB画像をグレースケール画像に変換
2024-09-13
【HALCON】sobel_amp 関数について - Sobelフィルタによるエッジ強度の計算
2024-09-13
【HALCON】write_image 関数について - 画像の保存
2024-09-13
【HALCON】xyz_to_object_model_3d 関数について - XYZデータから3Dオブジェクトモデルの生成
2024-09-12
【HALCON】read_cam_par 関数について - カメラパラメータの読み込み
2024-09-12
【HALCON】read_object_model_3d 関数について - 3Dオブジェクトモデルの読み込み
2024-09-12
【HALCON】read_ocr_class_mlp 関数について - MLP OCRクラス分類器の読み込み
2024-09-12
【HALCON】set_system 関数について - システムパラメータの設定
2024-09-12
【HALCON】smallest_circle 関数について - 最小外接円の計算
2024-09-12
【HALCON】smallest_rectangle1 関数について - 最小外接矩形(軸平行)の計算
2024-09-12
【HALCON】タプル操作完全ガイド - tuple関数リファレンス