Qiye Keji Yu Fazhan
圆检测是计算机视觉领域的常见方向,被广泛应用于工程实践项目。Hough 变换圆检测[1]是最基本的检测方法,其原理是把曲线由图像空间中映射到由圆的3个参数构成的参数空间,累加统计参数空间的点,最大累加值的参数即为所求圆的参数。但该算法存在很多不足之处,在参数量、计算量和内存占用方面有很大的改进空间。针对上述不足,Xu L 等人[2]提出使用随机Hough 变换做圆检测,该方法在图像空间中随机选取不共线的3个特征点,映射成参数空间中的一个点,是多到一的映射,大大减少了计算量,但是在图像复杂的情形下,由于噪声较多,从而引入大量的无效采样,增加迭代次数,降低检测效率[3]。随后,有很多改进的算法被提出,周勇亮等人[4]提出一种有效继承的累计加速算法,每次成功检测圆后不清空参数空间,在随机Hough 变换圆检测算法上测试取得很好的速度提升,但是对于单圆和极端情况下加速效果并不明显。Chen 等人[5]在随机Hough 变换的基础上进行了改进,使用第4个随机采样点判断是否在候选圆上,随后再验证圆的真伪,提高了圆的检测速度。
除此之外,还有许多学者从不同的角度改进圆检测算法,如在Hough 变换的基础上结合梯度信息[6],运用圆的几何属性做圆检测[7]及使用图像的直方图[8]作为评判依据,这些措施都取得了不错的提升。
文中提到的改进算法是基于随机Hough 变换(RHT )圆检测算法进行,虽然大幅提高了算法检测效率,
但是仍存在漏检及无效积累等严重问题。为了改善这一问题,本文提出了一种基于k-means 聚类算法和随机Hough 变换圆检测结合的新的圆检测算法,通过结合两种算法的优点,对采样空间进行约
束,大大减少了无效采样并降低了圆的漏检率。
1传统的随机Hough 变换圆检测
在平面直角坐标系中,圆的标准方程如下:
(x -a )2+(y -b )2
=r 2
(1)
其中,(a ,b )为圆心坐标,r 为圆的半径,(a ,b ,r )为圆的3个参数,分别是圆心坐标和半径。随机Hough 变换(RHT )圆检测算法需要在边缘点集合中随机采样3个点(x 1,y 1)、(x 2,y 2)、(x 3,y 3),再将随机选取的3个点代入圆的方程中,可以得到如下方程组:
(x 1-a )2+(y 1-b )2=r 2(2)(x 2-a )2+(y 2-b )2=r 2(3)(x 3-a )2+(y 3-b )2=r 2
(4)
求解以上方程组可求得圆的3个参数(a ,b ,r ),即圆心坐标和圆半径。然后计算边缘上的其他点到圆心的距离d ,并与所得参数r 进行比较,若满足|d -r |≤δ,δ为设定的误差阈值,则该圆为候选圆。否则,重新采样。随后将其他边缘点执行相同的过程,并统计在预设误差范围内的边缘点的个数,当边缘点个数累积达到设定阈值时,确定该圆为真实圆;否则,重新采样。重复上述步骤,直至所有的真实圆检测完成,或者是重复次数达到最大迭代次数。
2本文的KR 圆检测算法
本文的圆检测算法主要分为两个部分:一是通过k -means 聚类算法对边缘点进行聚类,得到每个圆的ROI ;二是在每个圆的ROI 基础上采用随机Hough 变换算法检测圆,
【基金项目】湖南大学与上汽通用五菱汽车股份有限公司联合攻关项目“白车身焊点质量自动化检测”(桂攻科:1598008-18)。
【作者简介】代巍,男,硕士,上汽通用五菱股份有限公司高级工程师,研究方向:车身制造技术;沈云啸,男,硕士,上汽通用五菱汽车股份有限公司高级工程师,研究方向:整车系统集成、发动机和变速器开发和应用;谢宁,男,上汽通用五菱汽车股份有限公司高级工程师,研究方向:车身工艺规划和
集成开发;何道聪,男,上汽通用五菱汽车股份有限公司高级工程师,研究方向:车身工艺集成开发;马亚东,男,湖南大学汽车车身先进设计制造国家重点实验室硕士研究生在读,研究方向:计算机视觉、图像处理。
KRA :一种双阶段精确圆检测算法
代巍1,沈云啸1,谢宁1,何道聪1,马亚东2
(1.上汽通用五菱汽车股份有限公司,广西柳州545007;
2.湖南大学汽车车身先进设计制造国家重点实验室,湖南长沙410082)
【摘要】为解决现有随机Hough 变换(RHT )圆检测算法存在的无效积累严重问题,提出
一种基于k-means 聚类算法和随机Hough 变换(RHT )圆检测算法的双阶段圆检测算法(KRA )。所提出的KRA 由k-means 聚类算法和RHT 圆检测算法两部分组成。k-means 聚类算法负责对边缘点进行聚类,得到每一类边缘点额范围。在此基础上,RHT 圆检测算法对区域内的点进行检测,最终得到圆的参数。实验表明,提出的KRA 能检测到所有圆,并且算法的聚类和检测时间只占RHT 圆检测时间的25.2%~67.8%,即采样积累减少25.2%~67.8%,从而证明了文章提出的算法在减少无效采样方面的有效性。【关键词】圆检测;感兴趣区域(ROI );k 均值聚类;随机Hough 变换;小范围随机采样【中
图分类号】TP391.41【文献标识码】A 【文章编号】1674-0688(2021)03-0040-03
40
Qiye Keji Yu Fazhan
(a )初试图像
(b )边缘图像
图1
对图像预处理
图2采用k-means 聚
类算法得到圆的ROI 从而得到多个圆的圆心和半径。2.1边缘点聚类
在工程实践中,工程背景相对复杂,在复杂环境拍摄的图像存在不同程度的噪声,导致检测过程中的计
算量剧增。为了缓解上述复杂背景问题,首先对圆所在区域进行提取。通过对原始图像进行一系列预处理,包括灰度化和中值滤波处理,减少了随机噪声对后期处理的影响;对滤波后的图像进行Can-ny 边缘检测,得到二值图像,并收集所有边缘点构造边缘点集;对边缘点的数据采用k-means 聚类算法进行聚类,方法描述如下。
(1)在边缘点集中随机选取k 个点作为初始聚类的簇心。(2)分别计算每个样本点到k 个簇心的距离(本文取欧式距离),到离该点最近的簇核心,将它归属到对应的簇。
(3)所有点都归属到簇后,边缘点就被分为k 类。之后重新计算每个簇的中心,将其定义为新的簇核心。
(4)反复迭代步骤(2)和(3),直到达到某个中止条件。
2.2ROI 分区独立采样
传统的随机Hough 变换(RHT )圆检测算法是在当前所有边缘点中随机采样3个点,但是在多个圆的情况下会有大量无效采样。为缓解以上无效采样问题,本文提出分区采样的方法。通过k-means 聚类算法对边缘点进行聚类,每个圆的边缘点都有属于本身的聚类中心,再以此聚类中心点为中心,做一个可以囊括该类所有中心点的正方形,作为该圆的ROI 。采样时,只在该类边缘点所在的ROI 区域内部采样,大幅度提高采样效率,减少无效采样。具体步骤如下。
(1)以聚类算法得到的k 个点作为中心,分别以该类中距离中心点最远的点到该中心的距离为半边长,得到该类边缘的区域边框,即该圆的ROI 。
(2)在圆对应的ROI 区域内分别随机采样3个边缘点,并确保3点不共线。
(3)将采样得到的边缘点代入公式(5)、公式(6)、公式(7)计算圆的参数。
a =
x 22+y 22-(x 21+y 2
1
)2×(y 2-y 1)x 23+y 23-(x 21+y 21)2×(y 3-y 1)4[(x 2-x 1)(y 3-y 1)-(x 3-x 1)(y 2-y 1)]行圆汽车大全
(5)
b =2×(x 2-x 1)x 2
2
+y 22
-(x 21
+y 21
)
2×(x 3-x 1)x 23+y 23-(x 21+y 2
1
)4[(x 2-x 1)(y 3-y 1)-(x 3-x 1)(y 2-y 1)](6)r =(x 1-a )2+(y 1-b )
2√(7)
其中,(a ,b ,r )分别为圆的横纵坐标及圆心。
2.3真圆的判定
通过统计位于候选圆上的边缘点数目,对候选圆进行判断,即如果边缘点位于该候选圆的圆心距离等于半径,则认为
边缘点在候选圆上,否则,边缘点不在候选圆上。
考虑到数字化误差,应留有一个小余量,判断边缘点是否在候选圆上应满足公式(8)。
(x e -a )2+(y e -b )2√
-r ≤啄(8)其中,(x e ,y e )是边缘点坐标,(a ,b )为候选圆圆心坐标。
将统计的位于候选圆上的边缘点数目与判定为真圆的相关阈值进行对比,从而确定候选圆的真假性,若候选圆上的边缘点数目大于等于判定阈值,则候选圆为真圆,否则,候选圆不是真圆。即
N e
≥N T
候选圆为真圆other
候选圆为假圆
{(9)
其中,N e 为统计得到的在候选圆上的边缘点,N T 为设定的数量阈值。
3试验验证与结果分析
为了验证本文算法的检测效果,我们采用多幅合成图像进行测试,并与RHT 圆检测算法在检测时间和检测精确度上进行比较。实验目的是通过圆检测算法实现在对图像中圆的精确检测,实验所用计算机处理器为Intel (R )Core (TM )i5-4210M CPU @2.6GHz ,8GB RAM ,运行环境为Python 3.6。
3.1圆的ROI 区域获取
对原图像1(a )进行灰度化和Canny 边缘检测,得到如图1(b )所示的边缘图像,采用k-means 聚类算法对所有的边缘点进行聚类处理,从而得出k 个聚类中心,在此基础上按照ROI 分区独立采样方法获得圆的ROI (如图2所示)。
3.2试验结果对比
首先利用圆的ROI 区域获取方法获取圆的ROI ,在每个圆的ROI 内分区独立采样,然后分别采用随机Hough 变换圆检测算法对每个ROI 进行圆检测,使用的图像如图3所示,本文对图像的检测效果如图4所示,算法各环节耗时见表1,与传统的随机Hough 变换圆检测算法对比,检测时间见表2,算法运行时间与圆个数的关系如图5所示。
本文算法与RHT 算法在不同个数的合成标准圆的图像上
(如图3所示)进行比较,从试验结果可知,本文提出的KRA 在总的检测时间上比RHT 略高(如图5所示),经过实验对比
41
Qiye Keji Yu Fazhan
图3
合成图像
(a )(b )
(c )(d )
(a )(b )(c )(d )
图4本文的算法检测可视化效果分析KRA 算法的各个关键环节(见表1),其中前处理耗时最长,在4张测试图像中占比分别为77.69%、69.50%、64.46%和56.27%。纵向比较前处理时间占比可以发现,随
着圆个数的增加,处理时间增加幅度很小的同时,在整个算法的占比不断减小。从图5可以看出,KRA 的主要部分即聚类和圆检测时间一直低于直接RHT 算法的检测时间,可以得知,KRA 缩小了随机采样的像素空间,成功地缓解了RHT 圆检测无效积累严重的问题。
3.3算法性能分析
通过以上实验结果和实验数据表明,本文提出的方法在多个圆同时存在的情况下具有优势。通过对圆的ROI 提取,很好地解决了由于边缘点数量大带来的无效采样剧增的问题;ROI 分区采样是完全随机采样和约束采样的一种折中方法,既能将所有的边缘点分区,又能在ROI 内实现局部随机采样,大大减少无效采样积累,提高圆检测速度。
4结语
本文提出的多圆检测算法结合了k-means 和随机Hough 变换圆检测算法的优点,既能将所有边缘点进行ROI
分区,又能在ROI 内随机采样,提高了采样的有效性。试验结果证明,本文提出的方法在速度上比传统的随机Hough 变换圆检测算法更有优势,尤其是在圆个数较多的情况下优势非常明显。但是本文算法仍然存在不足,在使用k-means 聚类算法对边缘点进行聚类时需要指定k 值的大小,即圆的个数,从而一定程度上限制了算法的适应性。因此,后续还需要对算法进行改进和研究。
参考文献
[1]Smereka M ,Duleba I .Circular object detection us-ing a modified Hough transform [J ].International Journal of Applied Mathe matics and Computer Sc-ience ,2008,18(1):85.
[2]XU L ,OJA E ,KULTANEN P .A new curve detec-
tion method :randomized Hough transform (RHT )[J ].Pattern Recognition Letters ,1990,11(5):331-338.[3]何奎.基于图像处理技术的圆环零件检测方法研究
[D ].大连:大连理工大学,2017.
[4]周勇亮,金燕,何萍,等.随机Hough 变换圆检测累计
加速算法[J ].计算机辅助设计与图形学学报,2014,
26(4):574-580.
[5]Chen The-Chuan ,Chung Kuo-Lian .An efficient ra-ndomized algorithm for detecting circles [J ].Comp-uter Vision and Image Understanding ,2001,83(2):172-191.
[6]Kimme C ,Ballard D ,Sklansky J .Finding circles by
an array of accumulator [J ].Commun .ACM ,1975,18(2):120-122.
[7]Huang YH ,Chuang KL ,Yang WN ,Chiu SH .Effi-cient symmetry-based screening strategy to speed up randomized circle-detection [J ].Pattern Recog-nition Letters ,2012,33(16):2071-2076.[8]Yuan B ,Liu M .Power histogram for circle detect-ion on images [J ].Pattern Recognition ,2015,48(10):3268-3280.
图像序号前处理时间聚类时间检测圆时间总时间(a)0.7450.1410.0730.959(b)0.7770.1660.175 1.118(c)0.7890.1930.242 1.224(d)
0.911
0.368
0.340
1.619
表1
本文的KRA 算法各个环节耗时对比(单位:s )
图像序号本文的KRA 算法RHT 算法前处理时间聚类+圆检测
圆检测时间(a)0.7450.2140.850(b)0.7770.3410.838(c)0.7890.435 1.056(d)
0.911
0.708
1.044
表2
检测时间对比(单位:s )
圆的数量(个)
图5本文提出的算法运行时间与圆个数的关系
42
发布评论