Main Content

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

距離変換は、イメージ内で離れている点の計量または尺度を与えます。関数 bwdist は、off (0) に設定された各ピクセルとバイナリ イメージの最も近い非ゼロ ピクセルの間の距離を計算します。

関数 bwdist は、複数の距離計量をサポートしています。

距離計量

距離計量

説明

ユークリッド

ユークリッド距離は 2 つのピクセル間の直線距離です。

Image data and distance transform for Euclidean distance

シティブロック

シティブロック距離計量は 4 連結近傍に基づいたピクセル間のパスを計算します。隣同士のピクセルは 1 単位、対角要素は 2 単位離れています。

Image data and distance transform for city block distance

チェス盤

チェス盤距離計量は 8 連結近傍に基づいたピクセル間のパスを計算します。隣同士または対角要素のピクセルは 1 単位離れています。

Image data and distance transform for chessboard distance

準ユークリッド

準ユークリッド計量は水平、垂直、対角の線分に沿ったユークリッド距離の合計を測定します。

Image data and distance transform for quasi-Euclidean distance

この例は、重なりをもつ 2 つの円筒オブジェクトを含んでいるバイナリ イメージを作成します。

center1 = -10; 
center2 = -center1; 
dist = sqrt(2*(2*center1)^2); 
radius = dist/2 * 1.4; 
lims = [floor(center1-1.2*radius) ceil(center2+1.2*radius)]; 
[x,y] = meshgrid(lims(1):lims(2)); 
bw1 = sqrt((x-center1).^2 + (y-center1).^2) <= radius; 
bw2 = sqrt((x-center2).^2 + (y-center2).^2) <= radius; 
bw = bw1 | bw2; 
figure
imshow(bw)

バイナリ イメージの補数の距離変換を計算するには、関数 bwdist を使用します。2 つの円筒領域の中心が白色になることを、距離変換のイメージで確認してください。

D = bwdist(~bw); 
figure
imshow(D,[])

Grayscale image in which objects are white and pixels become darker as the distance from the objects increases.

参考

関連するトピック