Chamfer Distance--倒角距离


很多博客都在讲倒角距离变换(chamfer distance transform),看完之后,我对倒角距离仍然是一片雾水。因此,在这篇文章论述一下我对倒角距离的理解。

前言:距离变换

距离变换的主要目的是通过识别目标点与背景点,将二值化图像转化为灰度图。
距离变换主要分为欧式距离变换和非欧式距离变换,非欧式距离变换包括棋盘距离变换、城市街区距离变换、倒角距离变换。
城市街区距离: ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ |x_1-x_2|+|y_1-y_2| x1x2+y1y2
棋盘距离: m a x ( ∣ x 1 − x 2 ∣ , ∣ y 1 − y 2 ∣ ) max(|x_1-x_2|, |y_1-y_2|) max(x1x2,y1y2)

2D图像中的倒角距离

倒角距离的定义,倒角距离是两条曲线或两个二进制图像之间的距离。
The Chamfer distance is a sum of positive distances and is defined for unsigned distance functions. In the case of two-dimensional template matching using Chamfer distance, the reference image and the template are both binary edge images which can be obtained using an edge filter on the original images.
倒角距离是一些距离之和,为了无符号的距离函数所定义。
具体实例
例如,我们要对齐上图中两个数字5,此时倒角距离的定义为模板 T T T 中一点 t t t 和图像 I I I 中某点最小距离的平均值。

2D图像的距离变换

距离变换
距离变换是一个距离函数 D ( p ) D(p) D(p),数值对应像素 p p p距离图像 I I I中最近特征的距离。上图中,灰色为特征,右侧为距离变换之后得到的图像。

3D点云中的倒角距离

3D空间的倒角距离主要用于点云重建或者3D重建工作。定义如下:
倒角距离
以上公式的 S 1 , S 2 S_1, S_2 S1,S2分别表示两组3D点云,第一项代表 S 1 S_1 S1中任意一点 x x x S 2 S_2 S2的最小距离之和,第二项则表示 S 2 S_2 S2中任意一点 y y y S 1 S_1 S1的最小距离之和。
如果该距离较大,则说明两组点云区别较大;如果距离较小,则说明重建效果较好。
一般来说,该距离用作3D重建网络的损失函数。

  • 53
    点赞
  • 131
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
倒角距离变换(chamfer distance transform)是一种用于计算图像中点到最近目标点的距离的算法。它可以用于图像分割、目标识别和物体跟踪等应用。在Python中,可以使用OpenCV库来实现倒角距离变换。 下面是使用Python实现倒角距离变换的步骤: 1. 导入必要的库: ```python import cv2 import numpy as np ``` 2. 读取图像并将其转换为灰度图像: ```python image = cv2.imread('image.jpg') gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) ``` 3. 对灰度图像进行二值化处理: ```python ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) ``` 4. 使用OpenCV的distanceTransform函数计算距离变换: ```python distance = cv2.distanceTransform(binary, cv2.DIST_L2, 3) ``` 这里的DIST_L2表示使用欧式距离,3表示使用3x3的邻域进行计算。 5. 对距离变换结果进行归一化处理: ```python cv2.normalize(distance, distance, 0, 1.0, cv2.NORM_MINMAX) ``` 这一步是为了将距离值映射到0到1之间。 6. 可以根据需要可视化距离变换的结果: ```python cv2.imshow('Distance Transform', distance) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这里使用imshow函数显示距离变换结果,并使用waitKey函数等待按键响应。 通过以上步骤,就可以在Python中实现倒角距离变换。请注意,这只是一个简单的示例,具体的实现可能因应用场景和需求的不同而有所差异。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [距离变换](https://blog.csdn.net/qq_32146369/article/details/106115991)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Chamfer Distance--倒角距离](https://blog.csdn.net/weixin_42894692/article/details/106148094)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值