图像识别中距离变换的原理及作用详解,并附用OpenCV中的distanceTransform实现距离变换的代码!

比眉伴天荒 2022-08-23 08:58 403阅读 0赞

距离变换的定义是计算一个图像中非零像素点到最近的零像素点的距离,也就是到零像素点的最短距离。

这个定义对于初接触距离变换的人来说,完全不知所云啊~那是因为缺乏一些知识背景,下面听我慢慢道来吧!

距离变换的处理图像通常都是二值图像,而二值图像其实就是把图像分为两部分,即背景和物体两部分,物体通常又称为前景目标!通常我们把前景目标的灰度值设为255,即白色,背景的灰度值设为0,即黑色。所以定义中的非零像素点即为前景目标,零像素点即为背景。所以图像中前景目标中的像素点距离背景越远,那么距离就越大,如果我们用这个距离值替换像素值,那么新生成的图像中这个点越亮。具体的应用就是找前景目标的中心~下面给一个具体的例子。

下面这个例子是确认手掌中心的例子:

由于伸出的手指相对于手掌来说比较细(如下图“src”窗口图像所示),也就是说手指上的像素距离零像素距离很短,所以经过距离变换后的图像在手指部位的像素值较小(如下图“dst”窗口图像所示),通过设定合理的阈值对距离变换后的图像进行二值化处理,则可得到去除手指的图像(如下图“bidist”窗口图像所示),手掌重心即为该图像的几何中心。

20160613111532487

其它需要注意的:

1 从定义中我们可以看出距离变换中其实只计算前景目标区域(即非零像素点)的距离值!

下面给出利用OpenCV中的distanceTransform函数实现距离变换的源码:

(具体函数的介绍可参看官方文档:点此查看官方文档)

代码请参见博文 https://blog.csdn.net/lehuoziyuan/article/details/84066646

发表评论

表情:
评论列表 (有 0 条评论,403人围观)

还没有评论,来说两句吧...

相关阅读