在直线检测的基础上理解了霍夫变换,圆检测也是利用霍夫变换的原理。
在直角坐标系中圆的方程为:
(
x
−
a
)
2
+
(
y
−
b
)
2
=
r
2
(x-a)^2+(y-b)^2=r^2
(x−a)2+(y−b)2=r2
极坐标系方程:
x
=
a
+
r
c
o
s
θ
x=a+rcos\theta
x=a+rcosθ
y
=
b
+
r
s
i
n
θ
y=b+rsin\theta
y=b+rsinθ
将极坐标方程转化为参数空间的方程:
a
=
x
−
r
c
o
s
θ
a=x-rcos\theta
a=x−rcosθ
b
=
y
−
r
s
i
n
θ
b=y-rsin\theta
b=y−rsinθ
在此我们假定已知要找寻的圆的纵坐标 Y,则将上述三维参数空间转化为二维参数空间,方程3为:
a
=
x
−
r
c
o
s
θ
a =x-rcos\theta
a=x−rcosθ
r
=
(
y
−
Y
)
/
s
i
n
θ
r =(y-Y)/sin\theta
r=(y−Y)/sinθ
对于上述已经转成二维参数空间,则可以利用直线检测的方法进行检测
步骤
1.进行边缘检测,使用的边缘检测算法不能丢失重要的边缘信息
2.确定二维累加矩阵的精度,即a和r的取值范围,可由要提取的圆特征决定。
3.遍历图像中像素值不为0的点(不同的边缘算法边缘像素值可能为0可能为255),再遍历可能的
θ
\theta
θ取值,带入方程3进行计算,再对相应的累加矩阵进行加1操作。
4.寻找局域最大值得出要找的的圆。