霍夫圆变换
与霍夫直线变换
的原理类似
,也是将圆上的每个点转换到霍夫空间
,其转换的参数方程如下:
对于圆来说,
θ
的取值范围在0~360°
,这样就有了三个参数
,另外两个参数
是圆心(x0,y0)
与半径γ
。这里的
霍夫空间
便是一个三维空间
,
所以如果还是跟之前的累积计算一样,计算量
就会大大增加
,
这样显然不利于快速计算与检测
,所以在OpenCV中,
霍夫圆检测
不是基于二值图像
或者边缘检测的结果
,
而是基于灰度图像的梯度
来找到候选区域
,
然后基于候选区域
实现霍夫圆检测
,
这样就会大大减少计算量
,提高程序的执行速度与性能
,
但是基于梯度实现霍夫圆检测也带来了另外一个问题
,那就是结果特别容易受到噪声
影响,
对图像中的噪声
特别敏感
,
所以在OpenCV中使用相关API实现霍夫圆检测的时候
,
首先需要通过模糊操作
对图像进行噪声抑制处理
。
一般来说,常见的均值、高斯、中值模糊
对图像噪声的抑制
已经比较有效
,
但是在霍夫圆检测
中有时候还会用到边缘保留滤波
来抑制平坦区域噪声
,
以便在进行梯度计算
的时候能够更好地得到候选区域
。
霍夫圆检测的API:
HoughCircles(Mat image, Mat circles, int method, double dp, double minDist, double param1, double param2, int minRadius, int maxRadius)
image
:8位单通道的灰度图像。circles
:输出的三个向量的数组,圆心与半径(x,y,r)。method
:唯一支持的方法就是基于梯度霍夫变换——HOUGH_GRADIENT。dp
:图像分辨率,注意dp越大,图像就会相应减小分辨率;当dp等于1时,其跟原图的大小一致;当dp=2时,其为原图的一半。minDis
t:表示区分两个圆的圆心之间最小的距离,如果两个圆之间的距离小于给定的minDist,则认为是同一个圆,这个参数对霍夫圆检测来说非常有用,可以帮助降低噪声影响。param1
:边缘检测Canny算法中使用的高阈值。param2
:累加器阈值,值越大,说明越有可能是圆。minRadius
:检测的最小圆半径,单位为像素。maxRadius
:检测的最大圆半径,单位为像素。
使用API实现灰度图像圆检测:
private void houghCircleDemo(Mat src, Mat dst) { Mat gray = new Mat(); Imgproc.pyrMeanShiftFiltering(src, gray, 15, 80); Imgproc.cvtColor(gray, gray, Imgproc.COLOR_BGR2GRAY); Imgproc.GaussianBlur(gray, gray, new Size(3, 3), 0); // detect circles Mat circles = new Mat(); dst.create(src.size(), src.type()); Imgproc.HoughCircles(gray, circles, Imgproc.HOUGH_GRADIENT, 1, 20, 100, 30, 10, 200); for(int i=0; i<circles.cols(); i++) { float[] info = new float[3]; circles.get(0, i, info); Imgproc.circle(dst, new Point((int)info[0], (int)info[1]), (int)info[2], new Scalar(0, 255, 0), 2, 8, 0); } circles.release(); gray.release(); }
运行结果如下图,左侧为原图,右侧是霍夫圆检测运行结果:
霍夫圆检测
相比霍夫直线检测
,计算量大,输出参数多,
因此一般都通过指定半径范围
,指定边缘阈值
与累积器阈值
来减少计算量
,
否则速度就会很慢
,这个也是在使用的时候需要特别注意
的。
上述三个指定参数如何影响霍夫圆检测的计算量
指定半径范围
:
minRadius:检测的最小圆半径,单位为像素。
maxRadius:检测的最大圆半径,单位为像素。
即函数只检测半径处于minRadius和maxRadius之间的圆,所以指定半径范围自然能够影响计算量了。
指定边缘阈值
霍夫圆检测的基于内部边缘检测的结果;
而边缘阈值影响边缘检测最终留下的边缘像素,即影响内部边缘检测的结果,
因而影响霍夫圆检测的计算量;
累积器阈值
此阈值的高低便是提取圆的要求的高低,高阈值高要求高计算量,反之亦然。
此外
广义霍夫变换
通过拓展,可以实现任意形状的检测,可以查阅其他相关的资料了解,这里便不多说了。
作者:凌川江雪
链接:https://www.jianshu.com/p/6a2ef6a4f4d1