Main Content

二值图像的距离变换

距离变换提供图像中点间距的一种度量或测度。bwdist 函数计算二值图像中设置为 off (0) 的每个像素与最近的非零像素之间的距离。

bwdist 函数支持多种距离度量。

距离度量

距离度量

描述

示意图

欧几里德

欧几里德距离是两个像素之间的直线距离。

Image data and distance transform for Euclidean distance

City block

城市街区距离测量基于 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

此示例创建一个包含两个相交圆形目标的二值图像。

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 函数。在距离变换的图像中,请注意两个圆形区域的中心是白色的。

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

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

另请参阅

相关主题