Main Content

graydist

グレースケール イメージのグレーで重み付けされた距離変換

説明

T = graydist(I,mask) は、グレースケール イメージ I のグレーで重み付けされた距離変換を計算します。masktrue である位置はシード位置です。

T = graydist(I,C,R) は、ベクトル CR でシード位置の列座標と行座標を指定します。

T = graydist(I,ind) はシード位置の線形インデックス ind を指定します。

T = graydist(___,method) は別の距離計量 method を指定します。

すべて折りたたむ

魔方陣を作成します。関数 magic で生成される行列では、行方向、列方向、対角方向の和が等しくなります。左上隅から右下隅までの最短パスは対角線に沿っています。

A  = magic(3)
A = 3×3

     8     1     6
     3     5     7
     4     9     2

正方形の左上隅と右下隅をシード位置として指定して、グレーで重み付けされた距離変換を計算します。

T1 = graydist(A,1,1);
T2 = graydist(A,3,3);

2 つの変換の和によって、シード位置の間の最短パスを求めます。予想どおり、対角線上に定数値の最短パスがあります。

T  = T1 + T2
T = 3×3

    10    11    17
    13    10    13
    17    17    10

入力引数

すべて折りたたむ

グレースケール イメージ。数値配列または logical 配列として指定します。

シード位置を指定するバイナリ マスク。I と同じサイズの logical 配列として指定します。

シード位置の列座標と行座標。正の整数のベクトルとして指定します。座標値は I 内の有効な C,R 添字です。

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

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

メソッド

説明

'chessboard'

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

max(│x1 – x2│,│y1 – y2│).

'cityblock'

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

│x1 – x2│ + │y1 – y2

'quasi-euclidean'

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

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

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

詳細については、バイナリ イメージの距離変換を参照してください。

出力引数

すべて折りたたむ

グレーで重み付けされた距離変換。I と同じサイズの数値配列として返されます。I の入力数値型が double である場合は、T の出力数値型は double です。入力が他の数値型のいずれかである場合は、出力 Tsingle です。

データ型: single | double

アルゴリズム

graydist は測地線時間アルゴリズムを使用します [1]。パスに沿った測地線時間の基本方程式は次になります。

τf(P)=f(po)2+f(pl)2+i=1l1f(pi)

method は外向きの伝播中に局所的な近傍に割り当てられる面取りの重みを決定します。測地線時間への各ピクセルの寄与は、ピクセル強度を乗じた特定方向の面取りの重みに基づきます。

参照

[1] Soille, P. "Generalized geodesy via geodesic time." Pattern Recognition Letters. Vol.15, December 1994, pp. 1235–1240.

バージョン履歴

R2011b で導入