activecontour
動的輪郭 (snakes) 領域拡張法を使用した前景と背景へのイメージのセグメント化
構文
説明
"動的輪郭" 法は、"snakes" とも呼ばれる、反復的な領域拡張を行うイメージ セグメンテーション アルゴリズムです。動的輪郭アルゴリズムを使用して、イメージ上で初期曲線を指定してから、関数 activecontour
を使用して、オブジェクト境界に向かってカーブを変化させます。
は、動的輪郭を使用して、イメージ BW
= activecontour(A
,mask
)A
を前景 (オブジェクト) 領域と背景領域にセグメント化します。
mask
引数は、動的輪郭の初期状態を指定するバイナリ イメージです。mask
内のオブジェクト領域 (白) の境界は、イメージのセグメント化で輪郭を変化させるために使用する初期輪郭の位置を定義します。出力イメージ BW
は、前景が白 (logical true
)、背景が黒 (logical false
) のバイナリ イメージです。
セグメンテーションの結果をより高速にかつ正確に取得するには、目的とするオブジェクト境界に近い初期輪郭の位置を指定してください。
は、セグメンテーションのさまざまな特性を制御する名前と値のペアの引数を指定します。BW
= activecontour(___,Name,Value
)
例
入力引数
出力引数
ヒント
activecontour
は、変化を開始する輪郭の初期状態として、mask
の領域の境界を使用します。マスクにある穴によって予測できない結果が生じる可能性があります。imfill
を使用して、mask
の領域の穴を塗りつぶしてください。領域がイメージの境界と接触している場合、
activecontour
は、処理を進める前に領域から単一ピクセルのレイヤーを削除し、領域がイメージの境界に接触しないようにします。特に
"edge"
メソッドの場合、結果をより高速かつ正確に取得するには、目的とするオブジェクト境界に近い初期輪郭の位置を指定してください。"edge"
メソッドでは、動的輪郭が内側へと縮小する (閉じる) ように自然にバイアスがかけられます。イメージのグラデーションがまったくない場合、動的輪郭は自然に縮小します。一方、輪郭にバイアスがかけられない"Chan-Vese"
メソッドでは、イメージの特徴に応じて自由に輪郭の縮小や拡大が行われます。"edge"
メソッドで正確なセグメンテーションを実現するには、初期輪郭をオブジェクトの境界の外側に配置するように指定してください。"edge"
メソッドを使用した動的輪郭は、既定では縮小するバイアスがかけられます。オブジェクト領域でグレースケールの強度が大きく異なる場合、
"Chan-Vese"
メソッド [1] では、イメージ内のすべてのオブジェクトがセグメント化されないことがあります。たとえば、イメージに背景よりも明るいオブジェクトと暗いオブジェクトが含まれる場合、通常、"Chan-Vese"
メソッドでは、明るいオブジェクトか暗いオブジェクトのどちらか一方のみがセグメント化されます。
アルゴリズム
activecontour
は、動的輪郭の変化を実装するために、[3] で説明されているメソッドと類似した Sparse-Field level-set メソッドを使用します。
参照
[1] T. F. Chan, L. A. Vese, Active contours without edges. IEEE Transactions on Image Processing, Volume 10, Issue 2, pp. 266-277, 2001.
[2] V. Caselles, R. Kimmel, G. Sapiro, Geodesic active contours. International Journal of Computer Vision, Volume 22, Issue 1, pp. 61-79, 1997.
[3] R. T. Whitaker, A level-set approach to 3d reconstruction from range data. International Journal of Computer Vision, Volume 29, Issue 3, pp. 203-231, 1998.
バージョン履歴
R2013a で導入