opencv学习笔记(二十四)霍夫线变换

霍夫变换是图像处理中寻找直线的一种方法,包括标准霍夫变换、多尺度霍夫变换和累计概率霍夫变换。OpenCV提供了cvHoughLines2函数来实现这些变换,其中CV_HOUGH_PROBABILISTIC适用于高效检测长直线。参数包括距离精度rho、角度精度theta、阈值threshold等,用于控制直线检测的精度和效果。
摘要由CSDN通过智能技术生成

霍夫变换

霍夫变换是一种在图像中寻找直线.、圆及其他简单形状的方法。
原始的霍夫变化是一种直线变换,即在二值图像中寻找直线的一种相对快速方法。变换可以推广到其他普通的情况,而不仅仅是简单的直线。
这个网站原理说的挺清楚
http://www.tuicool.com/articles/Mn2EBn

霍夫线变换

霍夫直线变换的基本理论是二值图像中的任何点都可能是一些候选直线集合的一部分。如果要确定每条线进行参数化,例如一个斜率a和截距b,原始图像中的一点会变换为(a,b)平面上的轨迹,轨迹上的点对应着所有过原始图像上点的直线(见图6-9)。如果我们将输入图像中所有非0像素转化成输出图像中的这些点集并且将其贡献相加,然后输入图像(例如(x,y)平面)出现的直线将会在输出图像(例如(a,b)平面)以局部最大值出现。因为我们将每个点的贡献相加,因此(a,b)平面通常被称为
累加平面( accumu lator plane) 。

你可能认为用斜率—截距的形式来代表所有通过的点并不是一种最好的方式(因为作为斜率函数,直线的密度有相当的差异,以及相关的事实是可能的斜率间隔的范围是从负无穷到正无穷)。正是由于这个原因,在实际数值计算中使用的变换图像的参数化略微有些不同。首选的参数化方式是每一行代表极坐标(ρ, β)中的一个点,并且隐含的直线是通过象征点,垂直于远点到此点的半径。如图6-10所示,此直线的方程如下:
这里写图片描述
这里写图片描述

OpenCV的霍夫变换算法并没有将这个算法显式地展示给用户。而是简单地返回(ρ, β)平面的局部最大值。然而,需要了解这个过程以便更好地理解OpenCV霍夫变换函数中的参数。
OpenCV支持两种不同形式的霍夫变换:标准霍夫变换(SHT)和累计概率
霍夫变换((PPHT)。刚才所说的是SHT算法。PPHT是这种算法的一个变种,计算单独线段的方向以及范围(如图6-11所示)。之所以称PPHT为“概率”的,是因为并不将累加器平面内的所有可能点累加,而只累加其中的一部分。该想法是如果峰值将要足够高,只用一小部分时间去寻找它就足够了。这个猜想的结果可以实质性地减少计算时间。尽管有一些变量的含义是取决于用哪个算法,但可以使用OpenCV中的同一个函数来访问这两个算法。

OpenCV中的霍夫线变换有如下三种:
<1> 标准霍夫变换(StandardHough Transform,SHT),由HoughLines函数调用。

<2> 多尺度霍夫变换(Multi-ScaleHough Transform,MSHT),由HoughLines函数调用。

<3> 累计概率霍夫变换(ProgressiveProbabilistic Hough Transform,PPHT),由HoughLinesP函数调用。

然而,百度到一个教程:从HoughLinesP函数可以看出,该函数会调用cvHoughLines2函数。它通过参数CV_HOUGH_PROBABILISTIC,最终调用了cvHoughLinesProbabilistic函数——我觉得HoughLines函数也同理。所以我们只管学好cvHoughLines2函数就好了。

cvHonghLines2()

功能:
利用Hough变换在二值图像中寻找直线。
定义:
CvSeq* cvHonghLines2(
CvArr* image,

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值