【数字图像处理】霍夫(Hough)变换

系列文章目录

本系列主要是在阅读论文时的学习笔记,在遇到较为经典的数字图像处理的算法和知识点,对其进行整理和总结,主要包括原理,方法,算法等。(希望可以坚持下来)

系列文章目录如下:

暂时还没(持续更新)



绪论

霍夫变换是一种较为经典的检测简单形状如线段和圆形、椭圆等的方法。采用的基本思想是累加投票的思想。


一、霍夫变换原理

        在笛卡尔坐标系(平面直角坐标系)中表示一条直线的方法有两种:

  1. y = kx + b
  2. r = xcosθ + ysinθ

 1.1 y = kx + b

        在此,常用的方法是第一种,已知确定的k0、b0就可以确定一条直线。由此引入霍夫空间。在笛卡尔坐标系空间下,横坐标为x,纵坐标为y,而在霍夫空间的坐标系下,横坐标为k,纵坐标为b,要表示霍夫坐标系下的直线采用的方法是:b = xk + y 。

        那对于一条已知的确定的直线:y = k0x +b0,在霍夫坐标系下有已知一点(k0, b0)与其对应。而相对应的若在霍夫坐标系下有直线:b = -x0k + y0,在直角坐标系下有已知一点(x0, y0)与其对应。在此要注意负号是因为在进行对应是y = kx + b对应的是b = -xk + y 。相关的对应关系如下图所示:

标题笛卡尔坐标系中一已知直线对应霍夫坐标系中的一点
标题霍夫空间中的一已知直线对应笛卡尔坐标系中一点

 

        所以得出映射关系:

  • 笛卡尔坐标系中一已知直线映射霍夫坐标系中的一点
  • 霍夫空间中的一已知直线映射笛卡尔坐标系中一点

1.2 r = xcosθ + ysinθ

        而在笛卡尔坐标系中有一特殊存在:x = a(垂直于x轴的直线,k无穷大),在这种情况就无法在一般的霍夫坐标系中找到一点与其对应,这时要将坐标转换成极坐标的形式(ρ-θ),ρ是原点到直线的垂直距离,θ是直线的垂线与横轴逆时针方向的夹角,垂直线的角度为0,水平线的角度为180度。在霍夫空间中坐标系的横坐标变为θ,纵坐标变为ρ。

        映射关系如下图所示:

极坐标下的相互映射关系

 

        所以映射关系变为:

  • 笛卡尔极坐标系内的一已知点映射到霍夫空间中是一曲线
  • 霍夫空间极坐标系内的一已知点映射到笛卡尔空间中是一直线

1.3 使用原理

        目的: 找笛卡尔空间中的线条

  1. 笛卡尔空间转换到霍夫空间,将笛卡尔空间中的点,转换成霍夫空间中的直线(曲线)
  2. 很多的点被转换成直线(曲线),这些线会产生交点。
  3. 在霍夫空间找交点最多的点,这个点的霍夫坐标值就是笛卡尔空间中的线条的k和b(ρ和θ)。


二、实现步骤

假设有一个100x100像素的图片,现在使用霍夫变换检测图片中的直线:
1、创建一个二维数组,初始化所有值为0。数组的行表示r,列表示θ。即创建了一个在霍夫空间中的极坐标系。数组尺寸的大小决定着结果的准确性。如果我们希望直线的角度的精度为1度,那这个数组的列就设置为180列,每列是一度,依次从0度到180度。数组的行表示r,如果我们希望直线的精度达到像素级别的,r的最大值就应该等于图像的对角线距离(即认为图像的左上角为图像原点,图像中点到原点的距离即为r),所以r就从0取到图像的对角线长度值。这个数组我们又称为累加器。
2、遍历原图中的每一个点,计算每个点在θ取0-180之间的每个r,如果这个数值在上述累加器中存在相应的位置,则在该位置上加1。遍历后即获得了在霍夫空间中极坐标系中的很多曲线。
3、搜索累加器中的最大值,(即找到2中获取的霍夫空间中极坐标系中的很多曲线的交点)并找到这个最大值对应的r和θ,就可以将图像中直线表示出来了。


引用

相关参考及引用:


  1. opencv学习笔记(十六):霍夫变换
  2. 第16章:霍夫变换
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
虽然Hough变换在形状检测中具有广泛的应用,但它也存在一些缺陷和限制,包括以下几个方面: 1. 计算复杂度高:Hough变换的计算复杂度较高,尤其是在处理大型图像或复杂形状时。对于每个像素点,需要计算其在参数空间中的所有可能参数值,并进行累加操作。这种计算复杂度可能限制了Hough变换在实时应用或大规模图像处理中的使用。 2. 参数选择困难:Hough变换的性能和准确性受到参数空间的选择和设置的影响。选择合适的参数空间和调整相关参数是一项具有挑战性的任务。不同形状和图像可能需要不同的参数设置,而且对于复杂形状或存在噪声的图像,参数选择更加困难。 3. 对噪声敏感:Hough变换对噪声比较敏感。噪声可能导致错误的参数累加,从而产生错误的检测结果。在应用Hough变换之前,通常需要对图像进行预处理,如平滑或边缘检测,以减少噪声对结果的影响。 4. 对形状变换敏感:Hough变换对形状的旋转、缩放和平移变换较为敏感。如果形状发生变换,例如旋转或缩放,Hough变换可能无法正确检测到形状,并且可能需要额外的处理步骤来解决这个问题。 5. 多个形状冲突:当图像中存在多个形状时,Hough变换可能会产生冲突,导致无法准确检测到所有形状。这是因为Hough变换依赖于在参数空间中找到累加器数组中的峰值点。当多个形状的参数空间相互重叠时,可能会导致峰值点的混淆。 尽管Hough变换存在这些缺陷和限制,但它仍然是一种广泛应用于形状检测和图像处理领域的重要技术。在实际应用中,可以结合其他技术和方法来克服这些限制,并提高形状检测的准确性和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值