20180918 【距离变换函数】

OpenCV中,函数distanceTransform()用于计算图像中每一个非零点像素与其最近的零点像素之间的距离,输出的是保存每一个非零点与最近零点的距离信息;

图像上越亮的点,代表了离零点的距离越远。

用途:

可以根据距离变换的这个性质,经过简单的运算,用于细化字符的轮廓和查找物体质心(中心)。

                          OpenCV:distanceTransform距离变换函数

OpenCV函数distanceTransform():

功能:用来计算原图像中距离变换图像;

void distanceTransform( InputArray src,  

                    OutputArray dst,

OutputArray labels,

int distanceType,

int maskSize,

int labelType=DIST_LABEL_CCOMP ); 

函数说明:

用于计算图像中每一个非零点像素与其最近的零点像素之间的距离,输出的是保存每一个非零点与最近零点的距离信息;图像上越亮的点,代表了离零点的距离越远。

参数:

src是单通道的8bit的二值图像(只有0或1)

dst表示的是计算距离的输出图像,可以使单通道32bit浮点数据

distanceType表示的是选取距离的类型,可以设置为CV_DIST_L1,CV_DIST_L2,CV_DIST_C等,具体如下:

  DIST_L1       = 1,   //!< distance = |x1-x2| + |y1-y2| 

  DIST_L2       = 2,   //!< the simple euclidean distance 

  DIST_C        = 3,   //!< distance = max(|x1-x2|,|y1-y2|) 

  DIST_L12      = 4,   //!< L1-L2 metric: distance =2(sqrt(1+x*x/2) - 1)) 

  DIST_FAIR     = 5,   //!< distance = c^2(|x|/c-log(1+|x|/c)),c = 1.3998 

  DIST_WELSCH = 6,  //!< distance = c^2/2(1-exp(-(x/c)^2)), c= 2.9846 

  DIST_HUBER  = 7   //!< distance = |x|<c ? x^2/2 :c(|x|-c/2), c=1.345 

maskSize表示的是距离变换的掩膜模板,可以设置为3,5或CV_DIST_MASK_PRECISE,对 CV_DIST_L1 或CV_DIST_C 的情况,参数值被强制设定为 3, 因为3×3 mask 给出5×5 mask 一样的结果,而且速度还更快。

labels表示可选输出2维数组;

labelType表示的是输出二维数组的类型;

OpenCV:distanceTransform距离变换函数

猜你喜欢

转载自blog.csdn.net/qq_18234121/article/details/82754187