基于FPGA玻璃缺陷图像采集处理系统
扫描二维码
随时随地手机看文章
玻璃缺陷检测是玻璃生产过程中一个相当重要课题。玻璃缺陷(气泡、结石、锡点等)妨碍了它在重大技术领域中的应用,不但影响了产品的外观,同时由于它的不平整度及屈光度的影响,使得人透过玻璃观察实物时受到障碍。目前,国内外在该领域的研究成果大致为分别利用线、面阵CCD获取表面图像,由后续软件对图像加以分析的方法来实现对表面质量的检测处理。在此正是基于这样一种指导思想下,设计了一种基于FPGA的玻璃缺陷在线检测系统方案,利用FPGA实时、高速、可重构的特点,对玻璃缺陷图像进行的预处理(卷积运算),从而大大降低了后期数据处理的压力,使得图像处理系统运算速度快,具有很好的适应性。
1 图像采集处理系统硬件平台
在图像信号处理过程中为保证实时性,首先要求实时图像处理系统具有处理大数据的能力;其次对系统体积的大小、功能、稳定性等也有严格要求。实时图像处理算法中经常要用到对图像的求和、求差、二维梯度、图像分割等不同层次、不同种类的运算。基于上述因素,考虑到FPGA和DSP的优异性能,这里在玻璃缺陷检测系统中采用了如图1所示的硬件平台。
系统内各模块功能简要描述如下:
(1)视频采集异步FIFO模块(内嵌于FPGA中)接收从视频A/D芯片SAA7113送来的数字视频流,解决系统数据缓冲和异步时钟的问题,因为SAA7113送过来的LLC频率为27 MHz,而FPGA系统时钟频率为48 MHz。
(2)视频解码模块用来对得到的数字视频流进行解码,识别出行、场同步信号,并且根据需要选择采集图像的大小。
(3)I2C配置接口模块(通过EP2C35进行模拟配置)通过I2C总线对SAA7113进行初始化配置,选择产生的数字视频格式等。
(4)图像帧存控制模块用来读/写系统两片帧存储器,并且可以在它们之间进行读/写切换操作。
(5)图像低级处理模块从帧存中读取一帧图像数据,对其进行底层大量运算的图像预处理,如噪声消除、边缘检测等,最后将处理完的图像数据经通信模块送至后端DSP处理器做进一步操作。此外由于采用基于SDRAM工艺的FPGA芯片,所以还需要配置电路在上电时对FPGA进行配置。
系统上电时,FPGA首先从外部配置芯片中读取配置数据,通过AS主动串行方式完成自身的程序加载,进入工作模式状态。随后I2C配置接口模块完成对SAA7113的初始化,初始化结束后,FPGA等待采集图像的命令。FPGA收到采集命令后,启动采集视频数据模块、异步FIFO模块和视频解码模块进行解码,将数据轮换写到两个帧存中,供图像低级处理模块处理、经DSP对图像做进一步处理,然后由通信模块送往工控PC。
2 系统中内存管理和图像低级处理技术
2.1 SDRAM控制实现及仿真
视频转换芯片输出的视频图像数据通过8位总线VPO传输给FPGA,FPGA需要将数据保存到SDRAM中,SDRAM在读写上有严格的时序要求。SDRAM的命令由RAS_n,CAS_n,WE_n和LOAD_mode构成,分别表示行选择、列选择、读/写控制和寄存器配置控制。在该系统中,设计了SDRAM(基于FPGA)接口模块,该模块控制SDRAM的命令与时序。模块内设计了初始化机制和系统指令分析机制。初始化机制不仅要完成对SDRAM的初始化配置,还要完成对控制器的初始化配置,从而使控制器与外部SDRAM的工作模式一致。为了实现高效的SDRAM存取,提高SDRAM总线的利用率,SDRAM接口模块CLK采用133 MHz的高速时钟,当得到数据存取模块的读FIFO要求后.向SDRAM连续写入16个字;当得到PC接口模块的读SDRAM请求后读出1个字;其他时间保证SDRAM进行刷新工作,以免数据丢失。从该硬件设汁平台可以看出,系统中的SDRAM分别由PFGA和DSP控制。当DSP和FPGA完成对相应SDRAM的操作后,需要进行总线切换。总线切换后,DSP和FPGA开始对另一块SDRAM进行相应操作。[!--empirenews.page--]
其主要代码如下:
[!--empirenews.page--]
2.2 图像低级处理的FPGA实现
图像处理系统中,底层的图像预处理(滤波、锐化)的数据量很大,要求运算速度很快,但运算结构相对比较简单,适应于FPGA通过硬件实现。而在数字信号处理中,卷积器经常被用于图像滤波、边缘检测、图像锐化,在玻璃缺陷检测系统中,对采集的图像进行滤波去噪处理,以降低后续处理运算的压力。设对于两个长度分别为m和n的序列f(i)和g(j),于是可以给出一个长度为N=m+n-1输出序列:
设f(i)为模板序列{ω1,ω2,…,ωk},g(j)为输入序列{x1,x2,…,xn},模板匹配后的结果序列为{y1,y2,…,yn-k+1},则:
上式显然与常规意义下的卷积有所不同,但只要将{ω1,ω2,…,ωk}从左到右按镜像排列预置于模块中即可。可以看出,每个输入点xi都要与模块中的所有元素进行累加和相乘。
VHDL程序顶层文件代码如下:
[!--empirenews.page--]
假设模板为{1,l,1},其仿真波形如图3所示。
在实际操作中,模板的值预置于每个单元中,很容易修改,可以方便地完成各种“窗口”的卷积运算。在卷积实现的基础上,只要采用不同系数的模板就可以完成各种运算,而且如果将卷积中的乘法和加法运算,分别换成比较运算和布尔运算中的“与”运算,那么卷积问题就换成了图像匹配问题。如果将乘法运算改为加减法,将累加运算改为取最大、最小值,就可以完成灰度图像的膨胀和腐蚀运算,这对于进行玻璃缺陷检测是有着极大帮助的。
3 结 语
这里阐述了一种基于FPGA的玻璃缺陷图像采集处理系统方案,给出了具体的应用和设计框图,它体积小、系统集成度高,能有效地对图像进行高速采集处理。系统中采用的图像数据卷积算法,大大减轻DSP后期数据处理的压力,在研究过程中表明,采用FPGA实现图像低层次算法,设计者必须非常了解FPGA器件内部的资源,同时系统中涉及到时钟信号、RAM、PCI接口等各种器件,大量复用的数据、地址线要求设计者必须精心考虑逻辑结构和功能时序才能充分发挥出FPGA的功能,取得理想的应用效果。