ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

imsegfmm

高速マーチング法を使用したバイナリ イメージのセグメンテーション

構文

BW = imsegfmm(W,mask,thresh)
BW = imsegfmm(W,C,R,thresh)
[BW,D] = imsegfmm(___)

説明

BW = imsegfmm(W,mask,thresh) は高速マーチング法を使用して計算された、セグメント化されたイメージ BW を返します。配列 W は、各ピクセルの重みを指定します。mask はシード位置を指定する論理配列です。thresh は範囲 [0 1] 内の非負のスカラーであり、imsegfmm がバイナリ イメージ BW を得るために高速マーチング法の出力に適用するしきい値のレベルを指定します。

BW = imsegfmm(W,C,R,thresh) はセグメント化されたイメージを返します。このとき、行インデックスと列インデックスが格納されたベクトル CR でシード位置を指定します。CR には W 内の有効なピクセル インデックスを値として格納しなければなりません。

[BW,D] = imsegfmm(___) は高速マーチング法を使用して計算された正規化後の測地線距離マップ D を返します。BWD をしきい値処理したバージョンで、正規化後の測地線距離値が thresh 未満であるすべてのピクセルが前景ピクセルと見なされて true に設定されています。さまざまなレベルで D をしきい値処理すると、異なるセグメンテーション結果が得られます。

すべて折りたたむ

この例では、高速マーチング法により、シード位置とのグレースケール強度の差に基づいてイメージ内のオブジェクトをセグメント化する方法を説明します。

イメージを読み取ります。

I = imread('cameraman.tif');
imshow(I)
title('Original Image')

マスクを作成し、シード位置を指定します。roipoly を使用してマスクを対話的に作成することもできます。

mask = false(size(I));
mask(170,70) = true;

グレースケール強度の差に基づいて重み配列を計算します。

W = graydiffweight(I, mask, 'GrayDifferenceCutoff', 25);

重みを使用してイメージをセグメント化します。

thresh = 0.01;
[BW, D] = imsegfmm(W, mask, thresh);
figure
imshow(BW)
title('Segmented Image')

さまざまなしきい値を使用して測地線距離行列 D をしきい値処理すると、異なるセグメンテーション結果が得られます。

figure
imshow(D)
title('Geodesic Distances')

入力引数

すべて折りたたむ

重み配列。非スパースで非負の数値配列として指定します。この重み配列を計算するには、関数 graydiffweightgradientweight を使用します。W には非負の値を設定しなければなりません。W では、前景 (オブジェクト) としてセグメント化する領域には高い値を設定し、その他の領域すべてに低い値を設定するのが理想的です。

例: W = graydiffweight(I, mask,'GrayDifferenceCutoff', 25);

データ型: single | double | uint8 | int8 | int16 | uint16 | int32 | uint32

シード位置マスク。W と同じサイズの論理配列として指定します。mask が true である位置がシード位置です。graydiffweight を使用して重み行列 W を作成した場合は、graydiffweight で使用したのと同じ mask の値を imsegfmm でも使用することを推奨します。

例: mask = false(size(I)); mask(170,70) = true;

データ型: logical

バイナリ イメージの取得に使用するしきい値レベル。[0 1] の範囲の非負のスカラーとして指定します。通常、低い値を指定すると BW 内の前景領域 (論理値 true) が大きくなり、高い値を指定すると前景領域が小さくなります。

例: 0.5

データ型: double

参照ピクセルの列インデックス。数値ベクトルとして指定します。

例: [50 75 93]

データ型: double

参照ピクセルの行インデックス。数値ベクトルとして指定します。

例: [48 71 89]

データ型: double

出力引数

すべて折りたたむ

セグメント化されたイメージ。W と同じサイズの論理配列として返されます。

例:

データ型: logical

正規化された測地線距離マップ。W と同じサイズの double の配列として返されます。Wsingle クラスの場合は、Dsingle クラスになります。

ヒント

  • Wsingle クラスの場合には、imsegfmm は内部的に単精度浮動小数点数演算を使用します。そうでない場合には、imsegfmmW のすべてのクラスの内部計算に倍精度浮動小数点演算を使用します。

  • 重み値が 0NaN のピクセルは、D 内の対応する位置の測地線距離値が Inf になり、セグメント化されたイメージ BW では背景の一部 (論理値 false) となります。

参照

[1] Sethian, J. A. Level Set Methods and Fast Marching Methods: Evolving Interfaces in Computational Geometry, Fluid Mechanics, Computer Vision, and Materials Science, Cambridge University Press, 2nd Edition, 1999.

R2014b で導入

この情報は役に立ちましたか?