APP下载

基于FPGA 图像处理的内窥镜焊点检测系统

2022-11-18贾晨鑫张荣福任梦圆徐朝辉龚姬央丹刘翰林

光学仪器 2022年5期
关键词:焊点瑕疵寄存器

贾晨鑫,张荣福,任梦圆,徐朝辉,龚姬央丹,刘翰林

(上海理工大学 光电信息与计算机工程学院,上海 200093)

引言

内窥镜作为现代医学的重要设备,随着制造业的不断发展,实现内窥镜信号线的自动焊接已成为一个必然的趋势。在生产制造过程中,焊点检测系统作为自动焊接平台的前端系统起着重要作用,通过检测到的焊点坐标配合三轴移动平台完成自动化焊接,可以极大地提高生产效率,减小生产成本。

近年来,国内外学者针对焊点检测做了许多分析与研究。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 系统整体框图Fig.1 Overall block diagram of the system

2 图像采集与处理的FPGA 实现

2.1 图像采集模块设计

图像采集模块主要是由两部分组成,包括OV5640 图像传感器的初始化模块和图像信号采集模块。初始化模块在系统上电复位稳定后,根据预先存放在寄存器中的参数,通过SCCB 通信协议[8]对控制OV5640 输出图像大小和输出图像模式的寄存器进行配置,使OV5640 图像传感器输出的图像分辨率为1 280×720,图像信号模式为RGB565。在正常工作模式下,图像采集模块根据OV5640 输出的行同步信号采集图像数据,得到三通道彩色图像。为了在后续高速信息处理下减小数据量,提高数据处理的速率,系统将三通道彩色图像转换成单通道的灰度图像作为输出并传到下一模块进行进一步处理。

2.2 滑动窗口设计

在一些经典的图像处理如Sobel 边缘检测、中值滤波、高斯滤波以及模糊滤波等,都需要窗处理方式以便运算操作。系统采用硬件描述语言生成3×3 图像滑动窗口,不仅可以实现算法的加速,同时满足对整幅图像的处理。

FPGA 硬件实现结构图如图2 所示。FPGA使用两个fifo 实现3×3 的滑动窗口,设定每个fifo 的深度为1 280(图像一行像素的个数),数据位宽为8 bit。当fifo0 和fifo1 全部写满时,下一时钟上升沿输出的data_in、fifo0_out 和fifo1_out就是图像连续三行的数据,同时保持列对齐。将data_in、fifo0_out 和fifo1_out 分别利用移位寄存器经过两个周期的延时得到3×3 窗口。

图2 3×3 滑动窗口生成图Fig.2 3×3 slide window to generate graph

2.3 中值滤波算法的硬件设计

中值滤波[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 算子模板如下。

梯度幅值Gr的硬件设计则是利用FPGA 开发板内部的开平方根IP 核来实现运算过程。将得到的梯度幅值与特定的阈值相比较判断是否为边缘信号。

图像处理效果如图3 所示。

图3 图像处理效果图Fig.3 Effect of image acquisition

3 焊点检测算法的FPGA 实现

焊点检测算法主要包括焊点坐标提取、焊点坐标效验以及目标板瑕疵检测。为实现焊点检测,需要先对焊点的坐标进行采集。由于目标板在经过图像处理模块后可以良好的保留焊点边缘,因此可以利用边缘坐标比较法对焊点坐标提取,其原理是根据每个焊点的位置关系,通过边缘信号搜索和边缘坐标位置的实时比较来提取焊点坐标。

3.1 焊点坐标提取

实现焊点坐标的提取需构建像素坐标系,在一级流水线处理中系统根据像素同步信号对每个输入的像素点赋予坐标信息,像素坐标系模块的硬件设计结构如图4 所示。

图4 像素坐标系实现结构图Fig.4 Structure of pixel coordinate system

边缘信号采集模块利用自定义位宽的移位寄存器进行设计,移位寄存器的位宽可根据采集情况进行调整,以6 位宽的移位寄存器为例,该模块根据同步信号对当前输入的图像信号进行判断。由于处理过后的图像为二值图像,当输入的图像信号为黑色点像素,移位寄存器向左移一位,最低位赋1,否则最低位赋0。

移位寄存器[12]的值作为边缘信号采集的重要条件。当移位寄存器内部全为0 时,表示检测到了背景区域;当移位寄存器内部不全为1 时,表示检测到了噪声信号或即将检测到焊点边缘;当移位寄存器内部全为1 时,表示检测到了焊点的边缘信息。由于FPGA 内部并行处理的特性,此时像素坐标系模块输出的坐标可以作为焊点边缘的坐标进行存储。

在FPGA 内部设计的边缘坐标采集模块从每帧图像的第一个像素点开始依次遍历每个像素点。在边缘信号采集过程中,系统会检测到很多的焊点边缘,通过利用各焊点的位置特征对边缘坐标进行比较,可以精确提取各个焊点的坐标。在实际的检测过程中,目标板随机摆放时,焊点的位置特征存在不同情况如图5 所示。

图5 目标板随机摆放图Fig.5 Random placement of the target board

在对1 号焊点坐标提取前,通过观察目标板随机摆放情况可以看出,1 号焊点的纵坐标最小,但在图(b)中纵坐标最小的焊点包括3 号焊点。因此,在边缘信号采集过程中,通过边缘坐标比较,找出纵坐标最小的边缘坐标,若存在多个则将行坐标最小的边缘坐标作为1 号焊点的边缘坐标,经效正后得到焊点的中心坐标,其余焊点坐标的提取与之类似,硬件设计逻辑流程图如图6 所示。

图6 焊点坐标采集流程图Fig.6 Flow chart of welding point coordinate acquisition

FPGA 内设8 个寄存器用来对每帧图像的检测区域内4 个焊点的坐标进行存储。在三级流水线处理中,坐标效验是根据采集到的焊点坐标计算出相邻两焊点坐标之间的距离,并与特定的阈值相比较进行判断。阈值由目标板各点之间的固定间距转换到像素坐标系下进行设定。如果两坐标之间的距离超出阈值范围,则判定目标板不合格,FPGA 内设的flag 信号将会拉高,产生的flag 信号用来控制蜂鸣器发出警报或者控制分拣装置。

3.2 瑕疵检测

在使用检测合格的焊点坐标进行自动化焊接前,对目标板进行瑕疵检测,即判别各个焊点间无短路和余铜现象,有利于产品质量的进一步提升。

瑕疵检测区域的边界分割函数为

式中:(X0,Y0)和(X1,Y1)为连续两个焊点的坐标;(X,Y)为线性区域分割的边界坐标。该模块的硬件设计是将采集到的合格焊点坐标利用式(2)进行线性区域分割。根据4 个焊点的坐标位置构建线性区域分割模型如图7 所示。

图7 线性区域分割模型Fig.7 Linear region segmentation model

系统通过在线性分割的区域内采集边缘信号来实现瑕疵检测。对瑕疵边缘的采集利用边缘信号采集模块,通过适当调整模块内部移位寄存器的位宽,可以提高对瑕疵边缘的采集精度。将采集到边缘信号的数值与设定的阈值相比较,若超出设定的阈值范围系统将发出警报,同时将检测区域内的瑕疵用红色像素点显示,有利于工作人员更直观地发现目标板上的瑕疵所在。

4 实验结果与总结

本系统的硬件测试平台如图8 所示,焊点检测系统采用Altera Cyclone IV E FPGA 系列的EP4CE30F23C8 作为主控芯片,驱动OV5640 图像传感器进行焊点图像的采集与处理工作。在Altera 公司的Quartus II 13.0 开发环境中,以Verilog HDL 硬件描述语言完成图像信号采集模块、图像处理模块、焊点检测算法、瑕疵判别算法和VGA 驱动模块的硬件设计。将设计好的硬件电路配置文件下载到FPGA 中,在系统上电复位后显示器上显示出清晰的焊点画面。

图8 测试平台Fig.8 Test platform

4.1 焊点坐标检测测试

系统设置绿框标记的区域作为检测区域,对区域内部的目标板进行检测。为了直观地显示检测到的焊点坐标,采用十字光标法对坐标进行标记,焊点坐标提取效果图如图9 所示。可以看出十字光标的中心位置位于焊点上,当目标板在检测区域内移动时,十字光标也跟随焊点位置移动,具有实时性。

图9 焊点坐标提取图Fig.9 Extraction of coordinates of solder joint

4.2 坐标检测误差分析

为验证系统检测坐标的精确性和可靠性,将系统自动检测到的像素坐标经过坐标转换后与人工标定得到的实际坐标进行比较,根据获取的数据计算坐标残差。由于1 个目标板共有4 个焊点,这里对5 个目标板进行检测,共得到20 个焊点的坐标信息,经过计算和分析后,对比结果如表1 所示。

表1 检测坐标与实际坐标对比Tab.1 Comparision between the detected coordinates and the actual coordinates

对系统检测的焊点坐标进行统计分析,结果如表2 所示。

系统要求所测得的坐标误差不超过0.1 mm,由表2 可以看出系统检测到的坐标与实际坐标误差范围在0~0.07 mm 以内,在X轴和Y轴上坐标误差范围在0~0.06 mm 以内,最大误差都小于0.1 mm。实验表明,经系统检测得到的焊点坐标在精度上达到了设计要求,可以运用到自动化焊接系统中。

表2 焊点检测实验结果分析Tab.2 Analysis of experimental results of welding spot detection

4.3 瑕疵检测测试

目标板瑕疵检测效果图如图10 所示,图(a)中的两个目标板在4 个焊点之间均存在约0.04 mm2的余铜。对图(a)中两块目标板的瑕疵检测结果如图(b)、图(c)所示,系统设置屏幕中心绿框所标记的240×240 像素区域作为检测区域,对区域内部的目标板进行瑕疵检测,存在瑕疵的目标板将被红色方框所标记并以红色像素点显示检测到的瑕疵边缘。

图10 目标板瑕疵图Fig.10 Defect of target plate

5 结论

本文在分析内窥镜信号线自动焊接的需求后,设计了一种基于FPGA 的内窥镜焊点检测系统。主要介绍系统以FPGA 为核心,与外围硬件实现图像采集、图像处理、焊点检测和瑕疵判别算法,将检测到的焊点像素坐标进行标记,通过VGA 实时显示处理结果。实验结果表明,本文设计的内窥镜焊点检测系统具有实时性,对焊点的检测精度≤0.1 mm,工作稳定,体积小便于携带,满足系统设计的技术指标,具有实际使用价值。

猜你喜欢

焊点瑕疵寄存器
登记行为瑕疵与善意取得排除的解释论
Lite寄存器模型的设计与实现
哦,瑕疵
哦,瑕疵
分簇结构向量寄存器分配策略研究*
DH36钢摩擦叠焊焊点分布规律研究
基于特征聚集度的FCM-RSVM算法及其在人工焊点缺陷识别中的应用
毫无瑕疵的推理
SnAgCu/Cu微焊点界面IMC演变及脆断分析
高速数模转换器AD9779/AD9788的应用