主要内容

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

activecontour

(蛇)领域领域法をし前景とへのイメージの化化

説明

"動的輪郭"法は、"snakes"とも呼ばれる、反復的な領域拡張を行うイメージ セグメンテーション アルゴリズムです。動的輪郭アルゴリズムを使用して、イメージ上で初期曲線を指定してから、関数activecontourを使用して、オブジェクト境界に向かってカーブを変化させます。

BW= activeContour(A,mask)は,的を使用してイメージイメージAを(オブジェクト)领域领域背景に化し。。

mask引数は、動的輪郭の初期状態を指定するバイナリ イメージです。mask内のオブジェクト領域 (白) の境界は、イメージのセグメント化で輪郭を変化させるために使用する初期輪郭の位置を定義します。出力イメージBWは、前景が白 (logical true)、背景が黒 (logical false) のバイナリ イメージです。

セグメンテーションの高速に正确にには目的とするオブジェクトオブジェクト境界に近い初期初期轮郭の位置位置ををを。

BW= activeContour(A,mask,n)は,最大n回の反復で輪郭を変化させることでイメージをセグメント化します。

BW= activeContour(A,mask,方法)は、セグメンテーションに使用される動的輪郭法として、'Chan-Vese'“边缘”のいずれかを指定します。RGB イメージの場合のメソッドは'Chan-Vese'でなければなりません。

BW= activeContour(A,mask,n,方法)は、指定された方法を使用て,最大n回の反復で輪郭を変化させることによりイメージをセグメント化します。

BW= activeContour(___,名称,价值)は、セグメンテーションのさまざまな特性を制御する名前と値のペアの引数を指定します。

すべて折りたたむ

グレースケール イメージを読み取り、それを表示します。

I = imread('coins.png');imshow(i)标题('Original Image')

Figure contains an axes object. The axes object with title Original Image contains an object of type image.

関心のあるオブジェクトの周囲の初期輪郭を指定します。輪郭を表示します。

mask = zeros(size(I)); mask(25:end-25,25:end-25) = 1; imshow(mask) title('Initial Contour Location')

Figure contains an axes object. The axes object with title Initial Contour Location contains an object of type image.

関数activecontourを使用して、イメージをセグメント化します。既定では、この関数は 100 回反復してセグメンテーションを行います。

bw = activecontour(I,mask);

结果表示ます元元のががオブジェクト境界のにためため,,,,,,,回回回回の反复反复反复后でも,,オブジェクトはは背景背景からから完全

imshow(bw)标题('Segmented Image, 100 Iterations')

Figure contains an axes object. The axes object with title Segmented Image, 100 Iterations contains an object of type image.

セグメンテーションをは,反复を増やし。。回回回后,オブジェクトが背景背景から完全完全にセグメント化化

bw = activeContour(i,mask,300);imshow(bw)标题('Segmented Image, 300 Iterations')

Figure contains an axes object. The axes object with title Segmented Image, 300 Iterations contains an object of type image.

グレースケール イメージを読み取り、それを表示します。

I = imread('toyobjects.png');imshow(I)

関数drawRectangleを使用して、関心のあるオブジェクトの近くに初期輪郭を描画します。輪郭の描画後、関数创建任务を使用して、マスクを作成します。

r = drawRectangle;

mask = createMask(r);

“边缘”メソッドと 200 回の反復を使用してイメージをセグメント化します。

bw = activeContour(i,mask,200,“边缘”);

最终的轮郭のイメージ上にで表示します。

hold; visboundaries(bw,'颜色','r');

セグメンテーションの元の上表示し。前景オブジェクトは青色にになってて。。。

figure imshow(labeloverlay(I,bw));

3 次元ボリューム イメージ データを読み込み、大きさが 1 の次元を削除します。

d =负载('MRI.MAT');a =挤压(d.d);

初期シード ポイントの 2 次元マスクを作成します。

播种= 10;种子= a(:,:,seedlevel)> 75;图Imshow(种子)

Figure contains an axes object. The axes object contains an object of type image.

空の 3 次元シード マスクを作成し、そこにシード ポイントを挿入します。

mask =零(size(a));mask(:,:,seedlevel)=种子;

動的輪郭でシード マスクを指定して、セグメンテーションを実行します。

bw = activecontour(A,mask,300);

セグメント化された 3 次元イメージを表示します。

数字;p = patch(isosurface(double(bw)));p.faceColor =“红色”; p.EdgeColor ='none'; daspect([1 1 27/128]); camlight; lightingphong

Figure contains an axes object. The axes object contains an object of type patch.

入力引数

すべて折りたたむ

セグメント化イメージ。。次元数次元数値行列またはまたは次元数次元数値配列指定します。

データ::single|双倍的|int8|INT16|INT32|uint8|UINT16|uint32

セグメンテーションのとなる初期,,Aと同じバイナリイメージ指定指定さます。。。次元次元次元次元およびおよびおよびおよび次元次元グレースケールイメージ场合,,maskのサイズはイメージAのサイズでなけれなりません。およびマルチチャネルイメージの,maskは 2 次元 logical 配列で、最初の 2 次元がイメージAの最初の 2 次元と同じでければなりません。

ROI オブジェクトを使用して、マスクを対話的に作成できます。たとえば、関数drawpolygonを使用して多角形 ROI を描画し、次に関数创建任务を使用して、その ROI からマスクを作成します。

データ::logical

セグメンテーションの実行反复の最大回数の整数として指定し。activecontourは,最大反復回数に達したときに、動的輪郭の変化を停止します。また、activecontourは、現在の反復における輪郭位置が直近の 5 回の反復のいずれかと同じ場合にもその変化を停止します。

初期轮郭の位置 (maskで指定) がオブジェクトの境界から遠い場合、目的のセグメンテーション結果を得るためには、より大きい値をnに指定します。

データ::双倍的

セグメンテーションに使用される動的輪郭法。'Chan-Vese'または“边缘”Chan-vese领域领域领域ベースのエネルギーモデルについて,,,[1]に说明ます。线动的轮郭类似エッジベースのモデルについては,[2]に説明があります。

RGB イメージの場合のメソッドは'Chan-Vese'でなければなりません。

データ::char|string

名前と値の引数

例:“ smilefactor',1.5

オプションの引数名称,价值のコンマ区切りペアを指定します。Nameは引数名で、价值は対応するです。Nameは引用符で囲まなければなりません。NAME1,Value1,...,Namen,Valuenのに复数名前とのペア引数を任意の顺番で指定指定ます。。。

セグメント化れの境界の滑ら均一性の度合い。“ smilefactor'正の构成れるコンマ区切りのペアとして指定。。値値をを高く高く高くするするとのの境界境界はは滑らか滑らかになりなりますがが,,,,部分ががががれるれるれる可能可能可能可能可能に(滑らかさ失わ)ますます详细捉えようになります。のののの値値は'Chan-Vese'法の场合は0“边缘”法の场合は1です。

例:“ smilefactor',1.5

データ::single|双倍的|int8|INT16|INT32|uint8|UINT16|uint32

輪郭が外側に拡大するか内側に縮小する傾向。“收缩键”とスカラーされる区切りのとしてとして指定します正のの値はははは内侧内侧内侧にに缩小缩小缩小缩小するするバイアスバイアス(()。。はを缩小またはするにはなりん。。このパラメーターパラメーターがが正の値であっであってもも,,実际にはははは轮郭轮郭轮郭するするする可能性性性性ない轮郭,を指定することことは钝化します。。このパラメーターパラメーターパラメーターのの典型典型典型典型的はは-1から-1まで-1まで1までから'Chan-Vese'法の场合は0“边缘”法の场合は0.3です。

例:“收缩键”,0.4

データ::single|双倍的|int8|INT16|INT32|uint8|UINT16|uint32

出力引数

すべて折りたたむ

セグメント化れたであり,入力イメージAと同じのイメージとして返されます。白(true)

ヒント

  • activecontourは、変化を開始する輪郭の初期状態として、maskの領域の境界を使用します。マスクにある穴によって予測できない結果が生じる可能性があります。imfillを使用して、maskの领域穴を涂りつぶし。。

  • 領域がイメージの境界と接触している場合、activecontourは,进めるに领域単一のをし,,领域がイメージのの境界にに接触しないないようよう

  • 特に“边缘”メソッドの場合、結果をより高速かつ正確に取得するには、目的とするオブジェクト境界に近い初期輪郭の位置を指定してください。

  • “边缘”メソッドでは、動的輪郭が内側へと縮小する (閉じる) ように自然にバイアスがかけられます。イメージのグラデーションがまったくない場合、動的輪郭は自然に縮小します。一方、輪郭にバイアスがかけられない'Chan-Vese'メソッドでは、イメージの特徴に応じて自由に輪郭の縮小や拡大が行われます。

  • “边缘”メソッドで正確なセグメンテーションを実現するには、初期輪郭をオブジェクトの境界の外側に配置するように指定してください。“边缘”メソッドをた的轮郭は既定で缩小バイアスがかけかけます。

  • オブジェクト領域でグレースケールの強度が大きく異なる場合、'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。国际计算机视觉杂志,第22卷,第1期,第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 で導入