1
基于MATLAB的数字图像处理研究
1.8.7 6.7 距离变换

6.7 距离变换

距离变换首先是由Rosenfeld和Pfaltz在1966年引入的。在提出这个概念的同时,他们给出了一种快速算法,随后在1968年改进为“伪”并行算法。出于计算效率考虑,由这些方法计算得到的并不是真正的欧氏距离,与坐标的选取有很大的关系,但奠定了后来各类快速距离变换的基本思想。

距离变换是计算机图像技术中基本的操作技术。它实质是一种图像变换方法,被广泛地应用于图像形态处理(如细化、粗化、骨架化),模式匹配(如物体检测和Stereofeature匹配),机器人碰撞检测,计算图像两点之间的最短距离、最短路径检测,形状因子的计算,数据压缩,离散Voronoi图等方面。

给定一幅离散二值图,它由一些特征像素点和非特征像素点组成,这里所谓的特征点可以是点、边或物体等感兴趣的对象。尽管对这个二值图作任何的处理并不会给我们提供更多的额外信息,但合适的处理能给我们提供灵活的处理方式,距离变换就是这么一种手段。通过距离变换,一幅二值图就可以转换成相应的灰度图,其中每个像素对应它到最近特征点的距离值。这样,原来的二值图就成为灰度更为丰富的灰度图。

MATLAB图像处理工具箱中提供了距离变换函数bwdist(),以及数据矩阵转换为灰度图像函数mat2gray()。图6-36是一幅生成的二值图像,图6-37是欧几里得距离变换后的图像,图6-38是城市区域变换后的图像,图6-39是棋盘距离变换后的图像,图6-40是类欧几里得距离变换后的图像。程序代码如下:

f=zeros(200,200);

f(50,50)=1;

f(50,150)=1;

f(150,100)=1;

imshow(f);

g1=bwdist(f,'euclidean');

g1=mat2gray(g1);

figure,imshow(g1);

g2=bwdist(f,'cityblock');

g2=mat2gray(g2);

figure,imshow(g2);

g3=bwdist(f,'chessboard');

g3=mat2gray(g3);

figure,imshow(g3);

g4=bwdist(f,'quasi-euclidean');

g4=mat2gray(g4);

figure,imshow(g4)。

img185

图6-36

img186

图6-37

img187

图6-38

img188

图6-39

img189

图6-40