霍夫变换检测直线

对于结构化道路的检测,常用的方法是采用霍夫变换检测道路中的直线段。

一条直线可以看做是图像上的若干个像素点组成,也可以用一条直线方程来表示,如 y=kx+b,那么霍夫变换检测直线段其实是将图像像素点空间变换到参数空间,对于直线来说就是参数(k,b),也可以用来检测其他形状如圆和椭圆,只是参数空间表示不一样了。

霍夫变换的说明可以详细参考[1]:


图1

由于用斜截式表示直线时无法表示垂直于X轴的直线,那么这条直线也可以用参数空间(γ,θ)来表示,那么一条直线也可以表示成:γ=xcosθ+ysinθ。


图2

 



图3

如图3所示,图像空间的一个点可能有无数条直线经过,这些直线如果用参数空间(γ,θ)来表示的话,实际上是一条正弦波函数,也就是说图像空间一个点对应于参数空间中一条曲线。如果有三条正弦波函数相交于一点,则表示这三点在一条直线上,并且这条直线的参数就是这个交点对应的(γ,θ)。

但是实际在图像中,像素点是离散的,因此我们可以以一定分辨率如为1°,长度为1个像素点进行遍历搜索图像,然后判断待检测的轮廓(在用霍夫变换之前一般要先用边缘检测得到二值轮廓图像)中是不是有一定数量的像素点在某一参数的直线上,这样我们便可以得到某一参数的直线(不能检测直线段)。

 

Opencv中的霍夫变换函数有三种[2]:

OpenCV支持三种不同的霍夫线变换,它们分别是:标准霍夫变换(Standard Hough Transform,SHT)和多尺度霍夫变换(Multi-ScaleHough Transform,MSHT)累计概率霍夫变换(Progressive Probabilistic Hough Transform ,PPHT)。

 其中,多尺度霍夫变换(MSHT)为经典霍夫变换(SHT)在多尺度下的一个变种。累计概率霍夫变换(PPHT)算法是标准霍夫变换(SHT)算法的一个改进,它在一定的范围内进行霍夫变换,计算单独线段的方向以及范围,从而减少计算量,缩短计算时间。之所以称PPHT为“概率”的,是因为并不将累加器平面内的所有可能的点累加,而只是累加其中的一部分,该想法是如果峰值如果足够高,只用一小部分时间去寻找它就够了。这样猜想的话,可以实质性地减少计算时间。

 

 比如检测校园处道路,效果如下:

  

 

 

还可参考博客:

[1] https://en.wikipedia.org/wiki/Hough_transform

[2] http://blog.csdn.net/poem_qianmo/article/details/26977557

[3]http://xiahouzuoxin.github.io/notes/html/OpenCV%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86%E7%AF%87%E4%B9%8BHough%E5%8F%98%E6%8D%A2.html



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值