openCV入门----霍夫变换直线检测(CvHoughLine2的使用)

      上回书说道,霍夫变换检测直线的原理,以及自己编程实现,那么今天我就来使用openCV里的函数来完成这个有意思的任务,看看能收获些什么呢?      前面我们利用openCV处理过平滑图像(高斯滤波)、边缘检测(canny算法),这些都是直接调用后可以直接得出图像的结果,然后显示出来,然而霍夫变换相对来说复杂一点点,它返回的结果是直线的参数,那么什么是直线的参数呢?     ...
摘要由CSDN通过智能技术生成

      上回书说道,霍夫变换检测直线的原理,以及自己编程实现,那么今天我就来使用openCV里的函数来完成这个有意思的任务,看看能收获些什么呢?

      前面我们利用openCV处理过平滑图像(高斯滤波)、边缘检测(canny算法),这些都是直接调用后可以直接得出图像的结果,然后显示出来,然而霍夫变换相对来说复杂一点点,它返回的结果是直线的参数,那么什么是直线的参数呢?

      这个问题我后面再来解释,先看看openCV里处理霍夫变换检测直线的函数有哪些?

      1.  CvHoughLine(...)

      2.  CvHoughLine2(...)

      openCV里有两个函数(比较常用)处理霍夫变换直线检测,有什么区别呢。

      CvHoughLine:是用于标准的霍夫变换方法

      CvHoughLine2:可以使用三种霍夫变换的方法,分别是标准霍夫变换(SHT)、多尺度标准霍夫变换(MSHT)、累计概率霍夫变换(PPHT)。

这些个方法是什么东西呢?暂且我们不管这个问题,但是很直观地告诉我们第二个比第一个要好,方法选择更加多,一看就是前者的升级进化版,所以我确定要学习第二个方法,那么第一个方法也自然水到渠成了。接下来我们再来具体探讨第二个方法的使用。

 

      首先,我们就从上述提到的三种方法开始解释,那三种霍夫变换究竟是什么东东呢?其实到现在我也只是简单地了解一下这玩意可能是什么,却也说不出究竟是个啥,怎么做出来的(这是不是就说明了没有经自己的手编程,那么永远都是门外汉或者说要经过长时间的纠结才能入门这个事实呢,所以有些玩意还是要自己动手才能明白的!),但是目前这个阶段,了解一下也就可以了:

     上述说是三种方法,其实归结到底是两种方法,(1)标准霍夫变换 (2)累计概率霍夫变换

     标准霍夫变换实际上就是我们上回书探讨的坐标变换的那个方法,详细细节请参考上一篇博客;

     PPHT实际上是标准霍夫变换的一个变种,计算单独线段的方向以及范围。之所以称之是概率,是因为并不将累加器平面内的所有可能得点相累加,而是只累加其中的一部分。该想法是如果峰值将要足够的高,只用一小部分时间去寻找它就足够了,这样可以大大节省时间。

      解释如上,摘自《Learning openCV》,但是总有一种看了跟没看的感觉,总的来说,主要了解一下一下几点就好了吧(个人认为):

      1.标准霍夫变换(SHT)就是满大街、书上、网上都找到的基本上相同的解释,如同我上篇介绍的那样;

      2.SHT返回的是直线的方向;

      3.PPHT以概率的方式操作累加器;

      4.PPHT可以大大节省时间;

      5.PPHT返回的是直线的方向和范围。

     知道了这几个区别,我相信聪明的你看出来了,哪个更加牛逼一些-----PPHT!不说别的,光从返回值来说,PPHT方法返回的信息将更加丰富,对编程者来说也意味着更加nice!

 

     接着,知道了以上比较笼统的概念后,我们来细看这个函数:

函数原型:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值