霍夫变换的应用实例1

在看下面一个问题:我们要从一幅图像中检测出半径已知的圆形来。这个问题比前一个还要直观。我们可以取和图像平面一样的参数平面,以图像上每一个前景点为圆心,以已知的半径在参数平面上画圆,并把结果进行累加。最后找出参数平面上的峰值点,这个位置就对应了图像上的圆心。在这个问题里,图像平面上的每一点对应到参数平面上的一个圆。

把上面的问题改一下,假如我们不知道半径的值,而要找出图像上的圆来。这样,一个办法是把参数平面扩大称为三维空间。就是说,参数空间变为x--y--R三维,对应圆的圆心和半径。

图像平面上的每一点就对应于参数空间中每个半径下的一个圆,这实际上是一个圆锥。最后当然还是找参数空间中的峰值点。不过,这个方法显然需要大量的内存,运行速度也会是很大问题。有什么更好的方法么?我们前面假定的图像都是黑白图像(2值图像),实际上这些2值图像多是彩色或灰度图像通过边缘提取来的。我们前面提到过,图像边缘除了位置信息,还有方向信息也很重要,这里就用上了。根据圆的性质,圆的半径一定在垂直于圆的切线的直线上,也就是说,在圆上任意一点的法线上。这样,解决上面的问题,我们仍采用2维的参数空间,对于图像上的每一前景点,加上它的方向信息,都可以确定出一条直线,圆的圆心就在这条直线上。这样一来,问题就会简单了许多。

霍夫变换 是一种特征检测(feature extraction),被广泛应用在 图像分析 (image analysis)、计算机视觉(computer vision)以及数位影像处理(digital image processing)。霍夫变换是用来辨别找出物件中的特征,例如:线条。他的 算法 流程大致如下,给定一个物件、要辨别的形状的种类,算法会在参数空间(parameter space)中执行投票来决定物体的形状,而这是由累加空间(accumulator space)里的局部最大值(local maximum)来决定。

现在广泛使用的霍夫变换是由RichardDuda和PeterHart在公元1972年发明,并称之为广义霍夫变换(generalizedHoughtransform),广义霍夫变换和更早前1962年的PaulHough的专利有关。经典的霍夫变换是侦测中的 直线 ,之后,霍夫变换不仅能识别直线,也能够识别任何形状,常见的有圆形、椭圆形。1981年,因为DanaH.Ballard的一篇期刊论文"Generalizing the Hough transform to detect arbitrary shapes",让霍夫变换开始流行于计算机视觉界。

●源图像

●处理后图像

●函数原型

○c++

○Android

●参数解释

○image:输入图像:8-bit,灰度图

○lines:存储线段极坐标的容器,每一条线由具有四个元素的矢量(x_1,y_1, x_2, y_2) 表示,其中,(x_1, y_1)和(x_2, y_2) 是每个检测到的线段的结束点。

○rho:生成极坐标的像素扫描步长。

○theta:生成极坐标的角度步长,一般是π/180。

○threshold:要”检测” 一条直线所需最少的的曲线交点 。

○minLineLength :默认值0,表示最低线段的长度,比这个设定参数短的线段就不能被显现出来。

○maxLineGap :默认值0,允许将同一行点与点之间连接起来的最大的距离。

●c++中

●Android中

本文来自作者[一哲大叔]投稿,不代表泰博号立场,如若转载,请注明出处:https://www.staplesadv.cn/ds/20025.html

(20)
一哲大叔的头像一哲大叔签约作者

文章推荐

发表回复

作者才能评论

评论列表(3条)

  • 一哲大叔的头像
    一哲大叔 2025年08月28日

    我是泰博号的签约作者“一哲大叔”

  • 一哲大叔
    一哲大叔 2025年08月28日

    本文概览:在看下面一个问题:我们要从一幅图像中检测出半径已知的圆形来。这个问题比前一个还要直观。我们可以取和图像平面一样的参数平面,以图像上每一个前景点为圆心,以已知的半径在参数平面上画...

  • 一哲大叔
    用户082812 2025年08月28日

    文章不错《霍夫变换的应用实例1》内容很有帮助

联系我们

邮件:泰博号@gmail.com

工作时间:周一至周五,9:30-17:30,节假日休息

关注微信