图像距离变换与分割技术详解
1. 距离变换概述
距离变换是一种将输入图像转换为新图像的操作,新图像中每个输出像素的值等于该像素到输入图像中最近零像素的距离,这个距离是根据特定的距离度量来计算的。通常,距离变换的输入是某种边缘图像,比如经过反转的Canny边缘检测输出(边缘值为0,非边缘值非零)。
计算距离变换有两种方法:
- Borgefors方法 :使用一个通常为3×3或5×5的掩码数组。数组中的每个点定义了相对于掩码中心特定位置的点的“距离”,较大的距离通过掩码中的条目定义的“移动”序列来累积和近似。使用更大的掩码可以得到更准确的距离,OpenCV会根据特定的距离度量自动选择合适的掩码。
- Felzenszwalb方法 :计算精确的距离,但速度稍慢。两种方法的时间复杂度都与像素总数呈线性关系。
距离度量有多种类型,包括经典的L2(笛卡尔)距离度量。
2. 无标记距离变换的 cv::distanceTransform() 函数
当调用OpenCV的距离变换函数 cv::distanceTransform() 时,输出图像将是一个32位浮点型图像(即CV::F32)。函数原型如下:
void cv::distanceTransform(
cv::InputArray src, // 输入图像
cv::OutputArray dst,
超级会员免费看
订阅专栏 解锁全文
362

被折叠的 条评论
为什么被折叠?



