【HALCON】regiongrowing 関数について - 領域成長法による画像のセグメンテーション

【HALCON】regiongrowing 関数について - 領域成長法による画像のセグメンテーション

2024-08-22

2024-08-22

regiongrowing 関数とは

regiongrowing 関数は、領域成長法を用いて画像をセグメント化するための手法です。この関数は、指定されたグリッドに基づいて画像を分割し、隣接する領域間のグレースケール値の差がトレランス値以下の場合、それらを同じ領域として結合します。このプロセスを繰り返すことで、画像内の同じ特徴を持つ領域をまとめていきます。

使用方法

regiongrowing 関数の基本的な構文は以下の通りです。

regiongrowing(Image, Regions, Row, Column, Tolerance, MinSize)
  • Image: 入力となる画像
  • Regions: 出力されるセグメント化された領域
  • Row: 垂直方向のグリッドサイズ
  • Column: 水平方向のグリッドサイズ
  • Tolerance: グレースケール値の差が許容される範囲
  • MinSize: 出力される領域の最小サイズ

具体例

以下に、regiongrowing 関数を使用した具体的な例を示します。

read_image(Image, 'fabrik')
mean_image(Image, Mean, 5, 5)
regiongrowing(Mean, Result, 5, 5, 6.0, 100)
dev_display(Result)

この例では、まず画像を読み込み、5x5のグリッドサイズで平滑化された画像に対して領域成長法を適用しています。トレランスは6.0に設定されており、最小サイズ100ピクセルの領域が出力されます。

パラメータの詳細

  • Row / Column: グリッドサイズを指定します。指定されたサイズで画像を分割し、それぞれのグリッドの中心点のグレースケール値が使用されます。デフォルトでは3が設定されており、奇数である必要があります。

  • Tolerance: 2つの領域のグレースケール値の差がこの値以下の場合、それらは同じ領域として結合されます。トレランス値を増やすことで、より多くの領域が結合され、少ない領域数になります。

  • MinSize: 出力される領域の最小サイズを指定します。この値未満の領域は削除されます。

フィルタリングの活用

大きなグリッドサイズを使用する場合や、ノイズが含まれる画像に対しては、事前に平滑化処理(例えば、mean_imagegauss_filter を使用)を行うことで、より精度の高い領域分割が可能です。

並列化とパフォーマンス

regiongrowing 関数は、マルチスレッド処理に対応しており、並列化が自動的に行われます。これにより、大規模なデータセットや時間制約のあるアプリケーションにおいても、効率的に動作します。

まとめ

regiongrowing 関数は、高速かつ効果的に画像をセグメント化するためのツールです。グレースケール値の差を基準にして隣接するピクセルを結合し、同じ特徴を持つ領域を生成します。画像のノイズが少ない場合や、特定の領域を抽出したい場合に特に有効です。また、フィルタリング処理を事前に行うことで、精度を向上させることが可能です。

Recommend