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


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

在实际应用中,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
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值