﻿ 一种用于电子元件检测的圆定位算法 A Circle Positioning Algorithm for Electronic Element Detection

Computer Science and Application
Vol.06 No.10(2016), Article ID:18829,10 pages
10.12677/CSA.2016.610075

A Circle Positioning Algorithm for Electronic Element Detection

Zhihan Yang, Xiuli Shao, Zhaozheng Yuan, Huadong Zhang

School of Computer and Control Engineering, Nankai University, Tianjin

Received: Oct. 6th, 2016; accepted: Oct. 24th, 2016; published: Oct. 28th, 2016

ABSTRACT

At present, the image processing of the PCB circuit detection system based on machine vision is mainly to achieve the accurate positioning of components. According to machine vision positioning of the circular electronic components on the PCB board, we put forward the method: 1) to use Canny edge detection combined with Sobel transform coarse positioning detection method, 2) according to the detection target circle on the edge, and the gray gradient, to get the line set across edge points, 3) and then to use a sliding window to implement positioning of the center of the circle, 4) then to use the method of concentric rings, find the rounded edge radius, which can accurately locate the position of the circular electronic components. In practical application, the algorithm meets the requirements of real-time and accuracy in the industrial production of electronic enterprises.

Keywords:Circle Location, PCB Optical Detection, Edge Detection, Gray Gradient

1. 前言

2. PCB板的圆定位算法

Figure 1. Circle location algorithm

2.1. 预处理

2.1.1. 灰度化

(公式1)

2.1.2. 高斯平滑处理

2.2. 粗定位圆心区域

2.2.1. 边沿的计算

Figure 2. Gray and smooth processing of color image

Figure 3. Edge and gradient direction

Figure 4. Based on the edge of Canny computing

1) 应用高斯滤波来平滑图像去除噪声；

3) 应用非最大抑制(non-maximum suppression)技术来消除边误检；

4) 应用双阈值的方法来决定可能的边界；

5) 利用滞后技术来跟踪边界。

2.2.2. 边沿点Sobel切线方向的计算

Sobel [9] [10] [11] 算子常用于边缘检测中计算图像亮度函数的一阶梯度之近似值。在图像的任何一点使用此算子，将会产生该点对应的梯度矢量或是其法矢量。本文使用的Sobel算子如下：

Sobel X: X方向求导，将图像(I)与一个奇数大小的内核进行卷积。

Sobel Y: Y方向求导，将图像(I)与一个奇数大小的内核进行卷积。

(56,56)点的正切值为，(i,j)为计算点的坐标，计算得到，计算反正切，得到角度为θ = 48.73˚，

2.2.3. 绘制交点图

1) 创建空白的切线交点图Cross；

2) Canny图中按坐标顺序，取一点边沿点C；

3) 根据SobelX，Sobel计算C点的正切；

5) 如果切线经过点P，P当前的值位D；

6) 修改P点的值为D + 1；

7) 依次计算切线上每一个点的新值；

8) 计算Canny图中下一个边沿点，直到遍历完毕。

2.2.4. 滑动窗口圆心区域粗定位

1) 图的宽W，高H，设定滑动窗口的宽为，高为

2) 设定搜索步长X方向为，Y方向为

3) 遍历全图(图6右)，找到滑动窗口像素和最大的区域，得到粗定位的圆心区域；

Figure 5. Calculation of X Sobel and Y Sobel and its tangent direction diagram

Figure 6. Tangent intersection graph

4) 初始化滑动窗口像素和最大值 sum_max = 0，最大值坐标位置

5) 滑动窗口左上角坐标图7左上角开始，计算，区域的像素值总数sum，如果sum > sum_max：

a) sum_max = sum，

b) 更新坐标为，计算新坐标的sum，直到遍历完毕；

c)

d) 如果，新坐标为

e) 如果，新坐标为

f) 如果，遍历完毕，结束运算。

2.3. 半径计算

1) 计算Canny图(图4)的边沿点中，对圆心区域(图8)有贡献的边沿点。

a) 对Canny中每一个白点；

b) 取Canny中白点P(X,Y)；

c) P点切线穿过圆心粗定位区域(图8的绿色区域)；

d) P点到矩形中心的连线，和P点切线的角度小于设定值15˚；

e) P点满足条件则保留，否则删除，最终得到有贡献的边沿图，如图8所示。

Figure 7. The center location

Figure 8. Center edge contribution

2) 以粗定位圆心Center(X,Y)为中心，从外向内确定半径R。

a) 图像宽高。X，(W-X)，Y，(H-Y)四个值中最小值，作为搜索半径的最大值，半径的搜索区域为，搜索宽度为

b) 初始，计算，环形区域内的所有白点数目Sum；

c) 如果，即环形区域达到70%的圆半径，则得到最终的半径R；

d) 否则，继续搜索，直到找到。如果，还未找到，则定位半径失败。

2.4. 圆心再定位

1) 将图9中，半径，圆环区域内的边沿点保留，去掉其他的边沿点。

2) 如图10中白色边沿所示。

3) 根据SobelX、SobelY，对图10中每个边沿点，按照圆心粗定位的算法，得到切线交汇图(图11)。

4) 在切线交汇图中，使用圆心滑动窗口(半径为)，找到切线交汇最多的区域，小圆圆心即为最终的圆心，如图10中心点所示。

Figure 10. Ring edge

Figure 11. Tangent intersection graph

Figure 12. Location result

2.5. 算法验证

Table 1. Experimental result

2.6. 结论

A Circle Positioning Algorithm for Electronic Element Detection[J]. 计算机科学与应用, 2016, 06(10): 607-616. http://dx.doi.org/10.12677/CSA.2016.610075

1. 1. Uda, R.O. and Hart, P.E. (1972) Use of the Hough Transform to Detect Lines and Curves in Pictures. Communications of the ACM, 15, 11-15. http://dx.doi.org/10.1145/361237.361242

2. 2. 夏磊, 蔡超, 周成平, 丁明跃. 一种用Hough变换检测圆的快速算法[J]. 计算机应用研究, 2007, 10(24): 197-210.

3. 3. Pei, S.-C. and Horng, J.-H. (1995) Circular Arc Detection Based on Hough Transform. Pattern Recognition Letters, 16, 615-625. http://dx.doi.org/10.1016/0167-8655(95)80007-G

4. 4. 叶峰, 陈灿杰, 赖乙宗, 等. 基于有序Hough变换的快速圆检测算法[J]. 光学精密工程, 2014, 22(4): 1105-1111.

5. 5. 郭峰林, 管庶安, 何健. 基于势函数的印刷电路板定位孔快速定位算法[J]. 科技导报, 2010, 28(16): 71-73.

6. 6. 王耀贵. 图像高斯平滑滤波分析[J]. 计算机与信息技术, 2008(8).

7. 7. Jain, R., Kasturi, R. and Schunck, B.G. (1995) Machine Vision. McGraw-Hill, Inc., Boston, 112-139.

8. 8. Canny, J. (1986) A Computational Approach to Edge Detection. IEEE Trans Pattern Analysis and Machine Intelligence, 8, 679-698. http://dx.doi.org/10.1109/TPAMI.1986.4767851

9. 9. 何春华, 张雪飞, 胡迎春. 基于改进Sobel算子的边缘检测算法的研究[J]. 光学技术, 2012(3): 323-327.

10. 10. Vincent, O.R. and Folorunso, O. (2009) A Descriptive Algorithm for Sobel Image Edge Detection. Proceedings of Informing Science & IT Education Conference (InSITE), 97-107.

11. 11. 沈德海, 侯建, 鄂旭. 基于改进的Sobel算子边缘检测算法[J]. 计算机技术与发展, 2013(11): 22-25.