美文网首页
霍夫变换

霍夫变换

作者: 思思入扣 | 来源:发表于2019-07-17 16:00 被阅读0次

一、霍夫直线检测

霍夫变换(Hough Transfrom),是1972年提出的,最开始就是用来在图像中检测直线,后来扩展能检测圆、曲线等

原理:

图像是一个个离散的像素点构成,如果在图像中有一条直线,那也是一系列的离散点构成。
一条直线可以用方程式:y=kx+b表示,k是斜率,b是截距,(x,y)也是点。我们可以转换成b=-kx+y。我们可以把(k,b)看作另外一个空间的点



我们看到,在x-y图像空间中的一个点,变成了k-b参数空间中的一条线,而x-y图像空间中的2个点连成的线,变成了k-b参数空间中的一个交点
所以,霍夫变换检测直线的原理就是:

如果x-y图像空间中有很多点在k-b空间中相交于一点,那么这个交点就是我们要检测的直线

有一个问题需要注意,图像空间中如果一条直线是垂直的,那么斜率k是没有定义的(或者说无穷大)。为了避免这个问题,霍夫变换采用了另一个参数空间:距离-角度参数空间
那么在图像中,每个点都可以用距离和角度来表达



点(x,y)与距离和角度的关系变成了r=xcosθ+ysinθ
在新的距离-角度参数空间中,图像中的一个点变成了一个正弦曲线,而不是k-b参数空间中的直线了。这些正弦曲线的交点就是图像空间中我们要检测的直线了
每一个(r,θ)都表示一条经过(x0,y0)直线,那么同一条直线上的点必然会有同样的(r,θ)。如果将某个点所有的(r,θ)绘制成下面的曲线,那么同一条直线上的点的(r,θ)曲线会相交于一点


函数:(cv2.HoughLines(src, 1, np.pi/180,200))

(1)参数是输入图像,且必须是二值图像,在进行霍夫变换之前需要采用阈值方法的边缘检测;
第二和第三个参数分别是r,θ对应的精度;
第四个参数是阈值,判定为直线投票数的最小值;
注意,投票数取决于直线上点的个数,因此这个阈值代表了检测到的直线的最短长度
霍夫变换的应用:用于分离图像中特殊形状的特征
可以容忍特征边界描述的误差,并且不受噪声的干扰
广泛用于条形码扫描、验证和识别

二、霍夫圆检测

假设一个圆,半径为r,圆心为(a,b),我们将其表示为:


1.png

HoughCircles( InputArray image, OutputArray circles, Int method, Double dp, Double mindist, Double param1, ouble param2, Int minradius, Int maxradius )
参数:
image:输入图像 ,必须是8位的单通道灰度图像
circles: 输出结果,发现的圆信息 (x, y, radius)
method: 方法 CV_HOUGH_GRADIENT
dp = 1:用来检测圆心的累加器图像的分辨率于输入图像之比的倒数,且此参数允许创建一个比输入图像分辨率低的累加器。例如,如果dp= 1时,累加器和输入图像具有相同的分辨率。如果dp=2,累加器便有输入图像一半那么大的宽度和高度。
mindist:10 最短距离-可以分辨是两个圆的,否则认为是同心圆。这个参数如果太小的话,多个相邻的圆可能被错误地检测成了一个重合的圆。反之,这个参数设置太大的话,某些圆就不能被检测出来了。
param1:它表示传递给canny边缘检测算子的高阈值,而低阈值为高阈值的一半。
param2:中心点累加器阈值 – 候选圆心。它越小的话,就可以检测到更多根本不存在的圆,而它越大的话,能通过检测的圆就更加接近完美的圆形了。
minradius, // 最小半径
maxradius//最大半径

相关文章

  • 【OpenCV入门教程之十四】OpenCV霍夫变换:霍夫线变换,

    【OpenCV入门教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑文辑: https://blog.c...

  • OpenCV-Python学习(十六):霍夫变换

    目录: 1.什么是霍夫变换? 2.OpenCV中的霍夫线变换-->直线检测 3.OpenCV中的霍夫圆变换-->圆...

  • 霍夫变换之直线检测

    霍夫变换 查看图像 结果: 边缘检测 结果: 霍夫变换检测直线 结果:

  • 霍夫变换

    霍夫变换——直线   Hough Line Transform用来做直线检测,前提是已经做了边缘检测。  霍夫变换...

  • 霍夫变换

    随机霍夫变换介绍[https://blog.csdn.net/zkl99999/article/details/4...

  • 霍夫变换

    一、霍夫直线检测 霍夫变换(Hough Transfrom),是1972年提出的,最开始就是用来在图像中检测直线,...

  • 霍夫变换

    基本原理 霍夫变换,是将座标由直角座标系变换到极座标系,然后再根据数学表达式检测某些形状(如直线和圆)的方法。当直...

  • 霍夫变换---OpenCV-Python开发指南(35)

    什么是霍夫变换 霍夫变换是一种在图像中寻找直线,圆形以及其他简单形状的方法。霍夫变换采用类似于投票的方式来获取当前...

  • 霍夫变换概述和标准霍夫变换

    在图像处理和计算机视觉领域中,如何冲当前的退选哪个中提取出所需要的特征信息是图像识别的关键所在。在许多应用场合中需...

  • Python+OpenCV教程17:霍夫变换

    主站:http://ex2tron.wang原文:Python+OpenCV教程17:霍夫变换 学习使用霍夫变换识...

网友评论

      本文标题:霍夫变换

      本文链接:https://www.haomeiwen.com/subject/kpzqlctx.html