定义
被广泛应用在图像分析、计算机视觉领域的一种特征检测算法。
Hough变换是从图像处理中识别几何形状的基本方法之一。Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。这样就把原始图像中给定曲线的检测问题转化为寻找参数空间中的峰值问题。即把检测整体特性转化为检测局部特性,比如直线、椭圆、圆、弧线等。
霍夫变换于1962年由Paul Hough首次提出,后于1972年由Richard Duda和Peter Hart推广使用,经典霍夫变换用来检测图像中的直线,后来霍夫变换扩展到任意形状物体的识别,多为圆和椭圆。
基本原理
对于直角坐标系(笛卡尔坐标系)平面的一条直线的斜截式:y=k0x+q0
其中q0是直线的截距,k0是直线的斜率。而(k0,q0)可以视为参数空间(k,q)中的一点。
我们知道当直线与x轴垂直时,k为无穷大,因此斜截式无法表示全部的直线。用Hesse normal form来表示直线的参数(这里只是将参数的表示换了,而不是将直线从直角坐标系换到极坐标系)。
所以:,代入原斜截式方程得到方程的表达式如下:
整理可得
其中r是从原点到直线的距离,是
和x轴的夹角。
因此,给定一个点(x0,y0),通过该点的所有直线的参数会在
平面上形成一个三角函数,可由下方程式证明:
因此,判断两个点是否共线的问题,在经过霍夫变换之后,变成判断通过两点的所有直线是否相交的问题。又因为通过一个点的所有直线在 平面上代表一条曲线,画出任意两个点的两条曲线,若相交,就表示这两个点在同一条直线上。
优点
Hough直线检测的优点是抗干扰能力强,对图像中直线的残缺部分、噪声以及其它共存的非直线结构不敏感。
缺点
Hough变换算法的特点导致其时间复杂度和空间复杂度都很高,并且在检测过程中只能确定直线方向,丢失了线段的长度信息。
参考文献
[1] P.V.C. Hough, Machine Analysis of Bubble Chamber Pictures, Proc. Int. Conf. High Energy Accelerators and Instrumentation, 1959
[2] Hough, P.V.C. Method and means for recognizing complex patterns, U.S. Patent 3,069,654, Dec. 18, 1962
[3] Duda, R. O. and P. E. Hart, "Use of the Hough Transformation to Detect Lines and Curves in Pictures," Comm. ACM, Vol. 15, pp. 11–15 (January, 1972)
[4] Shapiro, Linda and Stockman, George. "Computer Vision", Prentice-Hall, Inc. 2001