飞道的博客

标准霍夫变换

313人阅读  评论(0)


1. 霍夫变换简介

  • 目的 :从图像中分离出具有某种相同特征的几何形状

霍夫变换是图像处理中 从图像中识别几何形状 的基本方法之一
最基本的霍夫变换是从黑白图像中检测直线
在图像处理中可以通过霍夫变换可以快速的检测出直线或圆


2. 霍夫线变换

霍夫线变换是用来寻找图片中直线的方法


2.1. 检测图片的条件

首先要对图像进行 边缘检测 的处理
也即霍夫线变换的直接输入只能是 边缘二值图像,如下图:


2.2. 直线的表示

一条直线在图像二维空间可由两个变量表示,如:

  • 在笛卡尔坐标系:可由参数 斜率 k 和 截距 b 表示:y = kx + b
    不过,由于直线的斜率可能为无穷大,或者无穷小
    那么在k-b参数空间就不便于对直线进行描述和刻画
  • 在极坐标系:可由参数(r, θ)极径和极角表示

    对于霍夫变换,将用极坐标系来表示直线
    参考 y=kx + b,直线的表达式可为:

    化简结果: r r = xcosθ + ysinθ

一般来说对于点(x0, y0
可以将通过这个点的一簇直线同一定义为: r r = x0cosθ + y0sinθ
这就意味着对于每一对(r, θ)代表一条通过点(x0, y0)的直线


2.3. 所有通过点的直线

如果对于一个给定点(x0, y0
在极坐标对极径极角平面绘出所有通过它的直线,将得到一条正弦曲线
如对于给定点 x0 = 8 和 y0 = 6,可以绘出下图:


2.4. θ - r 相交

对图像中所有点进行上述操作:历遍 θ θ ,得到 r r ,得到所有通过点的直线的表达

如果两个不同点经过上述操作后得到的曲线在平面 θ r θ - r 相交
就意味着 它们可以在同一条直线上

继续对存在的点 x1=9,y1=4 和 点 x2=12, y2=3 历遍操作,得到下图:


这三条曲线在 θ r θ - r 平面相交于点(0.925, 9.6)
那么参数对(θ, r)为点(x0, y0),(x1, y1)和(x2, y2)组成的平面内的直线


2.5. 阈值定义直线

一般来讲,一条能够通过在平面 θ r θ - r 寻找交于一点的曲线数量检测
越多曲线交于一点也就意味着这个交点表示的直线由更多的点组成

一般来说可以通过设置直线上点的阈值
来定义多少条曲线交于一点认为检测到了一条直线

图像中的每个点对应曲线间的交点,如果交于一点的曲线数量超过了阈值
那么可以认为这个交点所代表的参数对(θ, rθ)在原图像中为一条直线


3. 霍夫圆变换

霍夫圆变换的基本原理和霍夫线变换类似
只是点对应的二维极径极角空间被三维的圆心点x、 y及半径r空间取代

对圆来说,需要三个参数来表示一个圆 C:(X0, Y0, r r )
(X0, Y0) 表示圆心的位置, r r 表示半径

现在原边缘图像的任意点(x,y)对应的经过这个点的所有可能圆
圆的数学的数学表达式为:(x - x0)2 +(y - y0)2 = r2
是在三维空间由上面这三个参数来表示了,对应一条三维空间的曲线

与二维的霍夫线变换同样的道理
对于多个边缘点越多,这些点对应的三维空间曲线相交于一点
那么经过共同圆的点就越多

类似的可以用同样的阈值的方法来判断一个圆是否被检测到
这就是标准霍夫圆变换的原理
但也正是在三维空间计算量大,标准霍夫圆变化很难被应用到实际中


谢谢!


转载:https://blog.csdn.net/qq_32618327/article/details/104464099
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场