霍夫变换(直线检测算法)

霍夫变换是一种图像处理技术,用于检测图像中的直线。它将图像中的像素点转换为极坐标系中的直线参数(r, theta),通过累加过程找出峰值,从而识别出直线的存在。该算法在图像分析中有着广泛的应用。" 122433563,11763310,Mirai Okiru:针对ARC物联网设备的新型DDoS僵尸网络,"['物联网安全', 'DDoS防御', '僵尸网络', '嵌入式安全', '网络安全']
摘要由CSDN通过智能技术生成

霍夫变换是图像变换中的经典手段之一,主要用来从图像中分离出具有某种相同特征的几何形状(如直线,圆等)。霍夫变换寻找直线与圆的方法相比其他方法可以更好的减少噪声干扰。经典的霍夫变换常用来检测直线、圆、椭圆等。

在实际应用中,y=k*x+b形式的 直线方程 没有办法表示x=c形式的直线(这时候, 直线的斜率 为无穷大)。所以实际应用中,是采用 参数方程 p=x*cos(theta)+y*sin(theta)。这样,图像平面上的一个点就对应到参数p---theta平面上的一条 曲线 上。其它的还是一样。

霍夫变换算法思想:

以直线检测为例,每个像素坐标点经过变换都变成都直线特质有贡献的统一度量,一个简单

的例子如下:一条直线在图像中是一系列离散点的集合,通过一个直线的离散极坐标公式,

可以表达出直线的离散点几何等式如下:

X *cos(theta) + y * sin(theta)  = r 其中角度theta指r与X轴之间的夹角,r为到直线几何垂

直距离。任何在直线上点,x, y都可以表达,其中 r, theta是常量。该公式图形表示如下:



然而在实现的图像处理领域,图像的像素坐标P(x, y)是已知的,而r, theta则是我们要寻找的变量。如果我们能绘制每个(r, theta)值根据像素点坐标P(x, y)值的话,那么就从图像笛卡尔坐标系统转换到极坐标霍夫空间系统,这种从点到曲线的变换称为直线的霍夫变换。变换通过量化霍夫参数空间为有限个值间隔等分或者累加格子。当霍夫变换算法开始,每个像素

坐标点P(x, y)被转换到(r, theta)的曲线点上面,累加到对应的格子数据点,当一个波峰出现时候,说明有直线存在。



OPENCV霍夫变换使用方法——边缘检测+霍夫变换求出图像中的直线

学习OpenCV(中文版).pdf
p205霍夫变换



openCV中文论坛中的霍夫变换教程:
霍夫线变换
1.霍夫线变换是一种用来寻找直线的方法。
2.用霍夫变换之前,首先要对图像进行边缘检测的处理,也即霍夫线变换的直接输入只能是边缘二值图像。
它是如何实现的?
1.众所周知,一条直线在图像二维空间可由两个变量表示。
a。在笛卡尔坐标系:可由参数:(m,b)斜率和截距表示
b。在极坐标系:可由参数:(r,θ)极径和极角表示
对于霍夫变换,我们将用极坐标系来表示直线。因此直线的表达式可为:
化简得:r = x cos θ + y sinθ
2.一般来说对于点(x0,y0),我们可以将通过这个点的一族直线统一定义为:
这就意味着每一对(r θ θ)代表一条通过(x0,y0)的直线。
3.如果对于一个给定点(x0,y0)我们在极坐标对极径极角平面绘出所有通过它的直线,将得到一条正弦曲线。例如,对于给定点x0 = 8,y0 = 6,我们可以绘出下图:
4.我们可以对图像中所有的点进行上述操作。如果两个不同点进行上述操作后得到的曲线在平面θ-r相交,这就意味着它们通过同一条直线。
eg。接着上面的例子我们继续对点:x1 = 9, y1 = 4 和点 x2 = 12,y2 = 3绘图,得到下图
这三条曲线在θ-r平面相交于点(0.925, 9.6)。
5.以上材料说明什么呢?这意味着一般来说,一条直线能够通过在平面θ-r寻找教育一点的曲线数量来检测。越多曲线交于一点也就意味着这个交点表示的直线由更多的点组成。一般来说我们可以通过设置直线上点的阈值来定义,多少条曲线交于一点我们才认为是检测到了一条直线。
6.这就是霍夫变换要做的,它追踪图像中每个点对应曲线间的交点。如果交于一点的曲线的数量超过了阈值,那么可以认为这个交点所代表的参数对(θ,r θ)在原图像中为一条直线。

标准霍夫线变换和统计概率霍夫线变换:
openCV实现了以下两种霍夫线变换:
a。标准霍夫线变换
原理在上面的部分已经说明了。他能给我们提供一组参数对(θ,r
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值