Main Content

bwdistgeodesic

バイナリ イメージの測地線距離変換

説明

D = bwdistgeodesic(BW,mask) は、バイナリ イメージ BWmask で指定されるシード位置を与えられ、測地線距離変化を計算します。BWtrue である領域は、距離変換の計算中に遷移できる有効な領域を表します。BWfalse である領域は、距離変換の計算中に遷移できない制約される領域を表します。BW 内の true ピクセルごとに、測地線距離変換によって、そのピクセルから mask 内の最も近い true ピクセルまでの制約距離の数値が割り当てられます。出力行列 D には測地線距離が含まれます。

D = bwdistgeodesic(BW,C,R) は、バイナリ イメージ BW の測地線距離変換を計算します。ベクトル CR には、シード位置の列座標と行座標が含まれます。

D = bwdistgeodesic(BW,idx) は、バイナリ イメージ BW の測地線距離変換を計算します。idx はシード位置の線形インデックスのベクトルです。

D = bwdistgeodesic(___,method) は、method で指定される別の距離計量を使用して測地線距離変換を計算します。

すべて折りたたむ

この例で使用する、サンプル バイナリ イメージを作成します。

BW = [1 1 1 1 1 1 1 1 1 1;...
     1 1 1 1 1 1 0 0 1 1;...
     1 1 1 1 1 1 0 0 1 1;...
     1 1 1 1 1 1 0 0 1 1;...
     0 0 0 0 0 1 0 0 1 0;...
     0 0 0 0 1 1 0 1 1 0;...
     0 1 0 0 1 1 0 0 0 0;...
     0 1 1 1 1 1 1 0 1 0;...
     0 1 1 0 0 0 1 1 1 0;...
     0 0 0 0 1 0 0 0 0 0];
 BW = logical(BW);

2 つのシード位置ベクトルを作成します。

C = [1 2 3 3 3];
R = [3 3 3 1 2];

測地線距離変換を計算します。BW が false である出力ピクセルは、未定義の測地線距離をもち、NaN 値を含んでいます。シード位置から要素 BW(10,5) に接続されるパスがないため、出力 D(10,5)Inf の値になります。

D = bwdistgeodesic(BW,C,R)
D = 10x10 single matrix

     2     1     0     1     2     3     4     5     6     7
     1     1     0     1     2     3   NaN   NaN     6     7
     0     0     0     1     2     3   NaN   NaN     7     7
     1     1     1     1     2     3   NaN   NaN     8     8
   NaN   NaN   NaN   NaN   NaN     3   NaN   NaN     9   NaN
   NaN   NaN   NaN   NaN     4     4   NaN    10    10   NaN
   NaN     8   NaN   NaN     5     5   NaN   NaN   NaN   NaN
   NaN     8     7     6     6     6     6   NaN     8   NaN
   NaN     8     7   NaN   NaN   NaN     7     7     8   NaN
   NaN   NaN   NaN   NaN   Inf   NaN   NaN   NaN   NaN   NaN

入力引数

すべて折りたたむ

バイナリ イメージ。任意の次元の数値配列または logical 配列として指定します。数値入力の場合、非ゼロのピクセルは 1 (true) であると見なされます。

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

シード位置。BW と同じサイズの logical 配列として指定します。

シード位置の列座標。R と同じ長さの正の整数のベクトルとして指定します。

シード位置の行座標。C と同じ長さの正の整数のベクトルとして指定します。

シード位置の線形インデックス。正の整数のベクトルとして指定します。

距離計量。次のいずれかを指定します。

メソッド

説明

'chessboard'

2 次元の場合、(x1,y1) と (x2,y2) の間のチェス盤距離は、次のとおりです。

max(abs(x1-x2),abs(y1-y2))

'cityblock'

2 次元では、(x1,y1) と (x2,y2) の間のシティブロック距離は、次のとおりです。

abs(x1-x2) + abs(y1-y2)

'quasi-euclidean'

2 次元の場合、(x1,y1) と (x2,y2) の間の準ユークリッド距離は、次のとおりです。

|x1x2|+(21)|y1y2|, |x1x2|>|y1y2|

(21)|x1x2|+|y1y2|, otherwise.

データ型: char | string

出力引数

すべて折りたたむ

測地線距離。BW と同じサイズの数値配列として返されます。

データ型: single

アルゴリズム

bwdistgeodesic は、次の文献に記載されている測地線距離アルゴリズムを使用します。Soille, P., Morphological Image Analysis: Principles and Applications, 2nd Edition, Secaucus, NJ, Springer-Verlag, 2003, pp. 219–221.

バージョン履歴

R2011b で導入