内窥镜作为现代医学的重要设备,随着制造业的不断发展,实现内窥镜信号线的自动焊接已成为一个必然的趋势。在生产制造过程中,焊点检测系统作为自动焊接平台的前端系统起着重要作用,通过检测到的焊点坐标配合三轴移动平台完成自动化焊接,可以极大地提高生产效率,减小生产成本。
近年来,国内外学者针对焊点检测做了许多分析与研究。Bunyak等提出一种PCB有效层检测算法,对焊点的圆心、半径和形状有较高的检测效率[1]。Mar等设计出一种基于机器视觉的PCB焊点自动检测系统,通过光照归一化减小光源影响,将图像从RGB颜色空间转换为YIQ颜色空间,从而提高焊点检测精度[2]。王梅梅以机器视觉技术为核心,通过对PCB板图像进行分割,将感兴趣区域(ROI)从图像中分离出来,提高了焊点定位的精度,同时减小计算量[3]。但基于机器视觉的焊点检测技术需要使用图像采集卡和PC端,从而达不到实时检测的目标,同时成本高且不利于携带。此外也有基于DSP[4-5]的焊点坐标检测技术,这种方法可以利用DSP将图像信号采集和图像处理两个模块连接起来,但由于DSP内部程序的执行方式是串行的,这使得该系统在图像采集速度以及处理速度等方面存在劣势。
针对上述问题,本文设计了一种基于FPGA图像处理的内窥镜焊点检测系统。该系统以FPGA作为主控器控制图像信号的采集、图像处理、焊点检测以及图像信号的传输,利用FPGA并行执行的优势实现对目标板焊点坐标的提取,具备检测效率高,成本低,易携带,实时性强等特点。
1 系统总体概述基于FPGA图像处理[6]的内窥镜焊点检测系统的整体设计如图1所示。整个系统主要由图像采集模块、图像处理模块、焊点坐标提取模块、瑕疵检测模块、SDRAM控制模块和VGA显示模块组成。FPGA芯片作为主控器件通过SCCB总线协议对OV5640进行初始化的配置。图像采集模块在FPGA的控制下对OV5640输出的图像信号进行采集,以单通道灰度图像形式输出采集结果。图像处理模块将采集到的图像进行中值滤波去噪,并采用Sobel边缘检测算法提取图像中的边缘信息。焊点坐标提取模块的功能是构建像素坐标系,根据检测到的边缘信息对焊点坐标进行采集,并对采集到的坐标进行效验。瑕疵检测模块主要利用采集到的焊点坐标进行检测区域分割,在分割的区域内进行瑕疵的判别。图像数据经过处理后将传送到SDRAM[7]中存储,由于系统时钟快和数据吞吐量大的特点,这里使用16 bit宽和1GB容量的DDR2 SDRAM进行图像的存储和处理,大大提高了视频显示的流畅性和实时性。最终通过VGA实时的显示检测结果,极大地提高了调试效率。
|
图 1 系统整体框图 Figure 1 Overall block diagram of the system |
图像采集模块主要是由两部分组成,包括OV5640图像传感器的初始化模块和图像信号采集模块。初始化模块在系统上电复位稳定后,根据预先存放在寄存器中的参数,通过SCCB通信协议[8]对控制OV5640输出图像大小和输出图像模式的寄存器进行配置,使OV5640图像传感器输出的图像分辨率为1280×720,图像信号模式为RGB565。在正常工作模式下,图像采集模块根据OV5640输出的行同步信号采集图像数据,得到三通道彩色图像。为了在后续高速信息处理下减小数据量,提高数据处理的速率,系统将三通道彩色图像转换成单通道的灰度图像作为输出并传到下一模块进行进一步处理。
2.2 滑动窗口设计在一些经典的图像处理如Sobel边缘检测、中值滤波、高斯滤波以及模糊滤波等,都需要窗处理方式以便运算操作。系统采用硬件描述语言生成3×3图像滑动窗口,不仅可以实现算法的加速,同时满足对整幅图像的处理。
FPGA硬件实现结构图如图2所示。FPGA使用两个fifo实现3×3的滑动窗口,设定每个fifo的深度为1280(图像一行像素的个数),数据位宽为8 bit。当fifo0和fifo1全部写满时,下一时钟上升沿输出的data_in、fifo0_out和fifo1_out就是图像连续三行的数据,同时保持列对齐。将data_in、fifo0_out和fifo1_out分别利用移位寄存器经过两个周期的延时得到3×3窗口。
|
图 2 3×3滑动窗口生成图 Figure 2 3×3 slide window to generate graph |
中值滤波[9]是一种能有效抑制噪声的非线性信号处理技术,在图像处理中对保护边缘信息具有良好的效果,实现原理是将某一像素点值用其领域内的中值所代替。
得到3×3滑动窗口后,以流水线思想为理论基础进行中值滤波算法的硬件设计。在一级流水线处理中内设3个sort(三输入排序模块),分别对3×3窗口的每一行数据进行排序,得到每行的最大值、最小值和中值。在二级流水线处理中,将3个最大值、3个最小值和3个中值分别通过sort模块排序处理,找出3个最大值中的最小值,3个最小值中的最大值和3个中值中的中间值。最后,三级流水线将上级输出的3个值通过sort模块再次排序处理,得到中值。
2.4 边缘检测算法的硬件设计系统采用Sobel边缘检测算法[10-11],该算法可以良好的保留检测焊点的轮廓信息并剔除目标板的背景颜色。为保证整个系统的实时性,算法的FPGA 硬件实现首先需要使用3×3滑动窗口对滤波后的图像进行存储,利用内部设定的横向与纵向卷积因子模板分别与滑动窗口进行卷积,得到横向与纵向的图像灰度值,即Gx与Gy。Sobel算子模板如下。
| $ {\boldsymbol{h}}=\left[\begin{array}{ccc}-1& 0& 1\\ -2& 0& 2\\ -1& 0& 1\end{array}\right],\;{\boldsymbol{v}}=\left[\begin{array}{ccc}-1& -2& -1\\ 0& 0& 0\\ 1& 2& 1\end{array}\right] $ | (1) |
梯度幅值Gr的硬件设计则是利用FPGA开发板内部的开平方根IP核来实现运算过程。将得到的梯度幅值与特定的阈值相比较判断是否为边缘信号。
图像处理效果如图3所示。
|
图 3 图像处理效果图 Figure 3 Effect of image acquisition |
焊点检测算法主要包括焊点坐标提取、焊点坐标效验以及目标板瑕疵检测。为实现焊点检测,需要先对焊点的坐标进行采集。由于目标板在经过图像处理模块后可以良好的保留焊点边缘,因此可以利用边缘坐标比较法对焊点坐标提取,其原理是根据每个焊点的位置关系,通过边缘信号搜索和边缘坐标位置的实时比较来提取焊点坐标。
3.1 焊点坐标提取实现焊点坐标的提取需构建像素坐标系,在一级流水线处理中系统根据像素同步信号对每个输入的像素点赋予坐标信息,像素坐标系模块的硬件设计结构如图4所示。
|
图 4 像素坐标系实现结构图 Figure 4 Structure of pixel coordinate system |
边缘信号采集模块利用自定义位宽的移位寄存器进行设计,移位寄存器的位宽可根据采集情况进行调整,以6位宽的移位寄存器为例,该模块根据同步信号对当前输入的图像信号进行判断。由于处理过后的图像为二值图像,当输入的图像信号为黑色点像素,移位寄存器向左移一位,最低位赋1,否则最低位赋0。
移位寄存器[12]的值作为边缘信号采集的重要条件。当移位寄存器内部全为0时,表示检测到了背景区域;当移位寄存器内部不全为1时,表示检测到了噪声信号或即将检测到焊点边缘;当移位寄存器内部全为1时,表示检测到了焊点的边缘信息。由于FPGA内部并行处理的特性,此时像素坐标系模块输出的坐标可以作为焊点边缘的坐标进行存储。
在FPGA内部设计的边缘坐标采集模块从每帧图像的第一个像素点开始依次遍历每个像素点。在边缘信号采集过程中,系统会检测到很多的焊点边缘,通过利用各焊点的位置特征对边缘坐标进行比较,可以精确提取各个焊点的坐标。在实际的检测过程中,目标板随机摆放时,焊点的位置特征存在不同情况如图5所示。
|
图 5 目标板随机摆放图 Figure 5 Random placement of the target board |
在对1号焊点坐标提取前,通过观察目标板随机摆放情况可以看出,1号焊点的纵坐标最小,但在图(b)中纵坐标最小的焊点包括3号焊点。因此,在边缘信号采集过程中,通过边缘坐标比较,找出纵坐标最小的边缘坐标,若存在多个则将行坐标最小的边缘坐标作为1号焊点的边缘坐标,经效正后得到焊点的中心坐标,其余焊点坐标的提取与之类似,硬件设计逻辑流程图如图6所示。
|
图 6 焊点坐标采集流程图 Figure 6 Flow chart of welding point coordinate acquisition |
FPGA内设8个寄存器用来对每帧图像的检测区域内4个焊点的坐标进行存储。在三级流水线处理中,坐标效验是根据采集到的焊点坐标计算出相邻两焊点坐标之间的距离,并与特定的阈值相比较进行判断。阈值由目标板各点之间的固定间距转换到像素坐标系下进行设定。如果两坐标之间的距离超出阈值范围,则判定目标板不合格,FPGA内设的flag信号将会拉高,产生的flag信号用来控制蜂鸣器发出警报或者控制分拣装置。
3.2 瑕疵检测在使用检测合格的焊点坐标进行自动化焊接前,对目标板进行瑕疵检测,即判别各个焊点间无短路和余铜现象,有利于产品质量的进一步提升。
瑕疵检测区域的边界分割函数为
| $ X=\frac{\left(Y-{Y}_{0}\right)}{\left({Y}_{1}-{Y}_{0}\right)}\left({X}_{1}-{X}_{0}\right)+{X}_{0} $ | (2) |
式中:(X0,Y0)和(X1,Y1)为连续两个焊点的坐标;(X,Y)为线性区域分割的边界坐标。该模块的硬件设计是将采集到的合格焊点坐标利用式(2)进行线性区域分割。根据4个焊点的坐标位置构建线性区域分割模型如图7所示。
|
图 7 线性区域分割模型 Figure 7 Linear region segmentation model |
系统通过在线性分割的区域内采集边缘信号来实现瑕疵检测。对瑕疵边缘的采集利用边缘信号采集模块,通过适当调整模块内部移位寄存器的位宽,可以提高对瑕疵边缘的采集精度。将采集到边缘信号的数值与设定的阈值相比较,若超出设定的阈值范围系统将发出警报,同时将检测区域内的瑕疵用红色像素点显示,有利于工作人员更直观地发现目标板上的瑕疵所在。
4 实验结果与总结本系统的硬件测试平台如图8所示,焊点检测系统采用Altera Cyclone IV E FPGA系列的EP4CE30F23C8作为主控芯片,驱动OV5640图像传感器进行焊点图像的采集与处理工作。在Altera公司的Quartus II 13.0开发环境中,以Verilog HDL硬件描述语言完成图像信号采集模块、图像处理模块、焊点检测算法、瑕疵判别算法和VGA驱动模块的硬件设计。将设计好的硬件电路配置文件下载到FPGA中,在系统上电复位后显示器上显示出清晰的焊点画面。
|
图 8 测试平台 Figure 8 Test platform |
系统设置绿框标记的区域作为检测区域,对区域内部的目标板进行检测。为了直观地显示检测到的焊点坐标,采用十字光标法对坐标进行标记,焊点坐标提取效果图如图9所示。可以看出十字光标的中心位置位于焊点上,当目标板在检测区域内移动时,十字光标也跟随焊点位置移动,具有实时性。
|
图 9 焊点坐标提取图 Figure 9 Extraction of coordinates of solder joint |
为验证系统检测坐标的精确性和可靠性,将系统自动检测到的像素坐标经过坐标转换后与人工标定得到的实际坐标进行比较,根据获取的数据计算坐标残差。由于1个目标板共有4个焊点,这里对5个目标板进行检测,共得到20个焊点的坐标信息,经过计算和分析后,对比结果如表1所示。
|
|
表 1 检测坐标与实际坐标对比 Table 1 Comparision between the detected coordinates and the actual coordinates |
对系统检测的焊点坐标进行统计分析,结果如表2所示。
|
|
表 2 焊点检测实验结果分析 Table 2 Analysis of experimental results of welding spot detection |
系统要求所测得的坐标误差不超过0.1 mm,由表2可以看出系统检测到的坐标与实际坐标误差范围在0~0.07 mm以内,在X轴和Y轴上坐标误差范围在0~0.06 mm以内,最大误差都小于0.1 mm。实验表明,经系统检测得到的焊点坐标在精度上达到了设计要求,可以运用到自动化焊接系统中。
4.3 瑕疵检测测试目标板瑕疵检测效果图如图10所示,图(a)中的两个目标板在4个焊点之间均存在约0.04 mm2的余铜。对图(a)中两块目标板的瑕疵检测结果如图(b)、图(c)所示,系统设置屏幕中心绿框所标记的240×240像素区域作为检测区域,对区域内部的目标板进行瑕疵检测,存在瑕疵的目标板将被红色方框所标记并以红色像素点显示检测到的瑕疵边缘。
|
图 10 目标板瑕疵图 Figure 10 Defect of target plate |
本文在分析内窥镜信号线自动焊接的需求后,设计了一种基于FPGA的内窥镜焊点检测系统。主要介绍系统以FPGA为核心,与外围硬件实现图像采集、图像处理、焊点检测和瑕疵判别算法,将检测到的焊点像素坐标进行标记,通过VGA实时显示处理结果。实验结果表明,本文设计的内窥镜焊点检测系统具有实时性,对焊点的检测精度≤0.1 mm,工作稳定,体积小便于携带,满足系统设计的技术指标,具有实际使用价值。
| [1] | BUNYAK F, ERCAL F. Inspection of power and ground layers in PCB images[C]//Proceedings of SPIE 3521, Machine Vision Systems for Inspection and Metrology VII. Boston, United States: SPIE, 1998: 190-197. |
| [2] | MAR N S S, YARLAGADDA P K D V, FOOKES C. Design and development of automatic visual inspection system for PCB manufacturing[J]. Robotics and Computer-Integrated Manufacturing, 2011, 27(5): 949–962. DOI:10.1016/j.rcim.2011.03.007 |
| [3] | 王梅梅. 基于机器视觉技术的自动微点焊系统[D]. 广州: 广东工业大学, 2015. |
| [4] | 刘党辉, 沈兰荪. DSP芯片及其在图像技术中的应用[J]. 测控技术, 2001, 20(5): 16–19,23. DOI:10.3969/j.issn.1000-8829.2001.05.005 |
| [5] | 孙东雷. 基于DSP的点焊信号采集与FFT分析系统[D]. 西安: 西北工业大学, 2005. |
| [6] | 付昱强. 基于FPGA的图像处理算法的研究与硬件设计[D]. 南昌: 南昌大学, 2006. |
| [7] | 杨朋飞, 聂亮. 基于FPGA和DDR3的图像采集系统设计及实现[J]. 自动化与仪表, 2019, 34(9): 37–40,51. |
| [8] | 高强, 王炜, 刘建, 等. SCCB总线配置的FPGA视频采集与显示系统设计[J]. 单片机与嵌入式系统应用, 2014, 14(1): 73–75,79. |
| [9] | 万丰丰, 周国民, 周晓. 一种去除椒盐噪声的自适应模糊中值滤波算法[J]. 浙江大学学报:理学版, 2019, 46(4): 445–453. |
| [10] | 张棋, 贾方秀, 殷婷婷. 基于改进Sobel算法的实时图像边缘检测系统设计[J]. 仪表技术与传感器, 2018(2): 101–104,108. DOI:10.3969/j.issn.1002-1841.2018.02.025 |
| [11] | 乔磊. 基于FPGA的图像边缘检测系统研究与设计[D]. 淮南: 安徽理工大学, 2017. |
| [12] | 夏宇闻. Verilog数字系统设计教程[M]. 北京: 北京航空航天大学出版社, 2003. |
2022, Vol. 44
Issue (5): 53-60


