使用Hough转换检测直线

本文介绍了如何使用Hough变换检测图像中的直线。首先,讲述了Hough变换的背景和原理,即通过将图像边缘点映射到参数空间进行投票,找出直线。接着,详细解释了基于r和θ参数的空间表示,以及为何采用这种表示方式。文章还讨论了实现细节,包括票数分散问题及其解决方案。最后,提到了C++代码实现,用CImg库检测A4纸的四条边缘。
摘要由CSDN通过智能技术生成

一,使用背景

对图像进行边缘检测,我们可以得到图像的边缘图,就是只有在图像中处于边缘位置上的点的像素值才有可能大于0,其余位置的像素值均为0。想通过边缘图像提取出边缘所在的直线,然后在原图像中画出来,我们就可以借助 hough 转换来实现。也可以说,在使用 hough 转换检测直线之前,应该获取图像的边缘图像。


二,原理

图像空间中的一条线可以使用 y=m0x+b0 来表示。此时如果有一个m,b二维空间,那么图像上的一条直线就对应m,b空间上的一个点。映射关系如下图所示:

这里写图片描述

而对于图像上的一点 (x0,y0) ,我们可以设经过它的所有直线(垂直于x轴的直线除外)为 y0=mx0+b ,也就是说图像空间上的一个点,对应m,b空间的一条直线。映射关系如下图所示:

这里写图片描述

再考虑图像空间上的两个点 (x0,y0) (x1,y1) ,那么它们映射到m,b空间上就是两条直线,当 x0!=x1 的时候,映射到m,b空间上的两条线就肯定会有一个交点,这个交点就是图像空间中由两个点决定的一条线映射过来的。映射关系如下图所示:

这里写图片描述

假设现在我们有一张图像,图像上只有一条直线

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值