opencv学习(三十三)之霍夫变换

本文介绍了OpenCV中的霍夫变换,包括霍夫线变换的原理和函数HoughLines()、HoughLinesP()的使用,以及霍夫圆变换的原理和函数HoughCircles()的应用,探讨了霍夫变换在图像处理中检测直线和圆的效率与方法。
摘要由CSDN通过智能技术生成

1.霍夫变换综述

霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法。主要用来从图像中分离出具有某种相同特征的几何形状。最基本的霍夫变换是从黑白图像中检测直线。在图像处理中可以通过霍夫变换可以快速的检测出直线或圆。

2.霍夫线变换

opencv提供三种不同的霍夫线变换分别是:标准霍夫变换(Standard Hough Transform, SHT)、多尺度霍夫 变换(Multi-Scale Hough Transform, MSHT)和累计概率霍夫变换(Progressive Probabilistic Hough Transform, PPHT).其中多尺度霍夫变换(MSHT)为经典霍夫变换(SHT)在多尺度下的一个变种。而累计概率霍夫变换(PPHT)算法是标准霍夫变换(SHT)算法的一个改进,它在一定的范围内进行霍夫变换,计算单独线段的方向以及范围,从而减少计算量,缩短计算时间。之所以称PPHT为概率的事因为并不将累加器平面内的所有可能的点累加,而只是累加其中的一部分,想法是如果峰值足够高,只用一小部分时间去寻找它就够了。(本段参考博文地址:http://blog.csdn.net/poem_qianmo/article/details/26977557
在opencv中可以用HoughLines函数来调用标准霍夫变换(SHT)和多尺度霍夫变换(MSHT).而HoughLinesP函数用于调用累计概率霍夫变换PPHT。累计概率霍夫变换执行效率很高。
霍夫线变换是用来寻找直线的方法,在使用霍夫线变换之前首先要对图像进行边缘检测的处理,也即霍夫线变换的直接输入只能是边缘二值图像。
霍夫线变换实现原理如下:
(1). 众所周知,一条直线在图像二维空间可由两个变量表示。如:

  • a.在笛卡尔坐标系:可由参数(m, b)斜率和截距表示。
  • b.在极坐标系:可由参数(r, θ)极径和极角表示
    这里写图片描述
    对于霍夫变换,我们将用极坐标系来表示直线。因此直线的表达式可为:
    这里写图片描述
    化简的:r=xcosθ+ysinθ
    (2). 一般来说对于点这里写图片描述,我们可以将通过这个点的一簇直线同一定义为:

这里写图片描述
这就意味着对于每一对这里写图片描述代表一条通过点这里写图片描述的直线。
(3). 如果对于一个给定点这里写图片描述,我们在极坐标对极径极角平面绘出所有通过它的直线,将得到一条正弦曲线。例如对于给定点这里写图片描述这里写图片描述我们可以绘出下图:
这里写图片描述
只绘出满足条件r>0和0<θ<2π。

(4). 我们可以对图像中所有点进行上述操作,如果两个不同点经过上述操作后得到的曲线在平面θ-r相交就意味着它们通过同一条直线。例如接上面的例子,我们继续对点x1=9,y1=4和点x2=12, y2=3绘图得到下图:
这里写图片描述
这三条曲线在θ-r平面相交于点(0.925, 9.6), 坐标表示的是参数对(θ, r)或者是说点(x0, y0),点(x1, y1)和点(x2, y2)组成的平面内的直线。
(5).上述说明一般来讲,一条能够通过在平面θ-r寻找交于一点的曲线数量检测。越多曲线交于一点也就意味着这个交点表示的直线由更多的点组成。一般来说我们可以通过

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值