以下为该学习地址的学习笔记:Distance transformation in image - Python OpenCV - GeeksforGeeks
简介
距离变换是一种用于计算图像中每个像素与最近的非零像素之间距离的技术。它通常用于图像分割和物体识别任务,因为它可以帮助识别图像中物体的边界。(如下图片来源于Chamani, H., Rabbani, A., Russell, K. P., Zydney, A. L., Gomez, E. D., Hattrick-Simpers, J., & Werber, J. R. (2023). Rapid reconstruction of 3-D membrane pore structure using a single 2-D Micrograph. arXiv preprint arXiv:2301.10601.)
1. 距离变换在OpenCV中的实现
OpenCV 中的距离变换函数 cv2.distanceTransform()
接收二值图像并返回两个数组:距离图像和标签图像(the distance image and the label image)。距离图像包含每个像素与最近的非零像素的距离值,标签图像包含最近的非零像素的标签。
#简单表示一下
dist_transform, labels = cv2.distanceTransform(binary_image, distance_type, mask_size)
binary_image
: 输入的二值图像,非零像素通常表示前景对象。distance_type
: 距离类型,可以使用常量如cv2.DIST_L1
(曼哈顿距离)或cv2.DIST_L2
(欧几里得距离)。mask_size
: 掩码大小,确定用于计算距离的掩码的大小,值越大计算越精确但速度越慢。
距离类型
cv2.DIST_L1
: 曼哈顿距离the Manhattan distance,即只计算水平和垂直方向的距离。cv2.DIST_L2
: 欧几里得距离the Euclidean distance,即计算实际的几何距离,包含所有方向。
掩码大小
掩码大小(mask size)决定了计算距离时使用的邻域范围,常用的大小有3、5等。较大的掩码可以提供更精确的距离值,但计算开销也会增加。
距离变换的结果
距离变换的结果是一个与原始图像大小相同的距离图像,每个像素值表示该像素到最近前景像素的距离。通过