霍夫变换原理

本文详细介绍了霍夫变换的基本原理及其在直线检测中的应用。通过笛卡尔坐标和霍夫空间的转换,阐述了如何通过图像中点的分布找到共线点对应的霍夫空间直线。霍夫变换可以解决直线检测问题,即使在存在无限斜率直线的情况下,通过转换为极坐标系统得以解决。此外,还展示了霍夫变换的具体步骤和实例,说明了如何通过投票机制找出图像中的直线特征。
摘要由CSDN通过智能技术生成

基本原理

一条直线可由两个点A=(x1, y1)和B=(x2, y2)确定(笛卡尔坐标)

另一方面,y=kx+q也可写成关于(k, q)的函数表达式(霍夫空间)

对应的变换可以通过图形直观表示

变换后的空间称为霍夫空间。即:笛卡尔坐标系中一条直线,对应霍夫空间的一个点

反过来同样成立(霍夫空间的一条直线,对应笛卡尔坐标系的一个点) 

共线的A、B两个点,对应霍夫空间的情形

再看一下三个点共线的情况

可以看出如果笛卡尔坐标系的点共线,这些点在霍夫空间对应的直线交于一点,这也是必然的,因为共线的情况下斜率k和截距q是不变的。

如果不止一条直线呢?再看看多个点的情况(有两条直线)

其实(3, 2)与(4, 1)也能组成直线,只不过它由两个点确定。而图中A、B两点是三条直线的交点,这也是霍夫变换的后处理基本方式:选择由尽可能多直线汇成的点

霍夫空间中选择由三条直线相交确定的点(中间图),对应笛卡尔坐标系的直线(右图)

到这里问题似乎解决了,已经完成了霍夫变换的求解,但是如果像下图这种情况呢? 

k=∞是不方便表示的,因此考虑将笛卡尔坐标表示转换成极坐标表示。

在极坐标下其实是一样的,极坐标的点→霍夫空间的直线,只不过霍夫空间不再是(k, q)的参数,而是(ρ, θ)的参数,对比图如下

霍夫变换的步骤如下

一个具体的例子

如上图,假定在一张8×8大小的图片中有一条直线,首先从左上角(1, 8)像素点开始分别计算θ=0°、45°、90°、135°、180°时ρ的值分别为1, 9\sqrt{2}/2, 8, 7\sqrt{2}/2, -1,并给这5个值分别计一票。同理计算像素(3, 6)点θ=0°、45°、90°、135°、180°时ρ的值,并分别计票,这时发现θ=45°, ρ=9\sqrt{2}/2已经计了两票了。以此类推,遍历图片中的所有像素点,最终发现θ=45°, ρ=9\sqrt{2}/2一共5票,而其它点票数均少于5票,所以得到图片中直线的极坐标方程为9\sqrt{2}/2=xcos45^{^{\circ}}+ysin45^{\circ},至此该直线方程就求出来了,(实际中θ取值跨度不会这么大,一般是1度)。

参考

https://www.cnblogs.com/php-rearch/p/6760683.html 

https://www.cnblogs.com/lvchaoshun/p/10645231.html

https://stackoverflow.com/questions/40531468/explanation-of-rho-and-theta-parameters-in-houghlines

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值