目录
霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法。主要用来从图像中分离出具有某种相同特征的几何形状。最基本的霍夫变换是从黑白图像中检测直线。在图像处理中可以通过霍夫变换可以快速的检测出直线或圆。
霍夫线变换
OpenCV 提供三种不同的霍夫线变换分别是:标准霍夫变换(Standard Hough Transform, SHT)、多尺度霍夫变换(Multi-Scale Hough Transform, MSHT)和累计概率霍夫变换(Progressive Probabilistic Hough Transform, PPHT)。其中多尺度霍夫变换(MSHT)为经典霍夫变换(SHT)在多尺度下的一个变种。而累计概率霍夫变换(PPHT)算法是标准霍夫变换(SHT)算法的一个改进,它在一定的范围内进行霍夫变换,计算单独线段的方向以及范围,从而减少计算量,缩短计算时间。之所以称 PPHT 为概率的事因为并不将累加器平面内的所有可能的点累加,而只是累加其中的一部分,想法是如果峰值足够高,只用一小部分时间去寻找它就够了。
在 OpenCV 中可以用 HoughLines 函数来调用标准霍夫变换(SHT)和多尺度霍夫变换(MSHT).而 HoughLinesP 函数用于调用累计概率霍夫变换 PPHT。累计概率霍夫变换执行效率很高。
霍夫线变换是用来寻找直线的方法,在使用霍夫线变换之前首先要对图像进行边缘检测的处理,也即霍夫线变换的直接输入只能是边缘二值图像
霍夫线变换实现原理如下:
(1). 众所周知,一条直线在图像二维空间可由两个变量表示。如:
- a.在笛卡尔坐标系:可由参数(m, b)斜率和截距表示。
- b.在极坐标系:可由参数(r, θ)极径和极角表示
对于霍夫变换,我们将用极坐标系来表示直线。因此直线的表达式可为:
化简的:r=xcosθ+ysinθ
(2). 一般来说对于点,我们可以将通过这个点的一簇直线同一定义为:
这就意味着对于每一对代表一条通过点的直线。
(3). 如果对于一个给定点,我们在极坐标对极径极角平面绘出所有通过它的直线,将得到一条正弦曲线。例如对于给定点和我们可以绘出下图: