Matlab 图像处理之距离函数

距离变换提供像素与某个图像的子集(可能是表示物体或某些特征)的距离。所产生的图像在该子集元素位置处的像素值为0,邻近的像素具有较小的值,离他越远的数值就越大。换句话说,一幅二值图像的距离变换提供每个像素到最近非零像素的距离。在图像边界外的假象像素也当做非零像素看待。

作为说明,考虑一幅二值图像,1表示物体,0表示背景。这里,距离变换给图像的每个像素赋予到最近物体或到整个图像边界的距离。物体内部像素的距离变换等于0。输入图像如图1所示,D4距离的距离变换结果如图2所示。
图1 二值图像。灰色像素对应于物体而白色像素对应于背景 图2 在计算时考虑D4距离的距离变换结果
D4距离是城市街区距离,在数字栅格中不允许向对角线方向移动。只允许横向和纵向移动。
D4[(i,j),(h,k)]=|i-h|+|j-k|.(数距离时,可以从当前格开始跳,直到跳到离他最近的物体的格子里,所用的步数就是距离)

距离变换的意义:在二值图像中,距离变换就是将二值图像转换为灰度图像的过程。在二值图像中,通常将图像分为前景图像和背景图像,假设目标图像的像素为1为白色,背景图像的像素为0为黑色。在转换后的灰度图像中每个连通域中的像素的灰度级,与该像素点到其背景像素点的最近距离有关。
假设一个二值图像的包含一个连通区域S,其中有目标O和背景B,距离为D,则距离变换的定义如下:
这里写图片描述

其中disf()为距离函数,如果用欧拉距离公式表示,如下:
这里写图片描述

对距离的计算可采用两个模板,分别为向前和向后模板,如下图所示。
这里写图片描述

计算步骤如下:
1.使用向前模板,对图像从上到下,从左到右进行扫描,模板中心0点对应的像素值如果为0则跳过,如果为1则计算模板中每个元素与其对应的像素值的和,分别为sum1,sum2,sum3,sum4,sum5,而中心像素为这五个值中的最小值。
2.使用向后模板,对图像从下到上,从右到左进行扫描,方法同上。
3.一般我们使用的模板为3*3或5*5,分别如下图所示:
这里写图片描述
bwdist函数用于计算元素之间的距离。
如果a=这里写图片描述,那么[D,L]=bwdist(a);
D=这里写图片描述,L=这里写图片描述
其中,D表示零元素所在位置靠近非零元素的最短距离。L表示该元素所靠近的非零元素的位置,matlab中,元素所在的位置标号,是按列来计算的。比如a中各元素的索引值如下:
这里写图片描述
棋盘距离变换的代码,(在二值图像中)
T=bwdist(F,’chessboard’);
%(x1,y1) 和 (x2,y2)的棋盘距离是 (│x1 – x2│,│y1 – y2│)的最大值.

  • 8
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值