张谦 裴海龙 史步海 赵运基
(华南理工大学自主系统与网络控制教育部重点实验室∥自动化科学与工程学院,广东广州510640)
在个人卫生用品相关行业中使用的无纺布原材料,是一次性用品,且与人体直接接触,因而顾客对产品的质量及卫生状况极其关注.然而在无纺布的生产过程中,不可避免地会出现一些机器油污、粉末、滴胶甚至死昆虫等污物附着在成品表面上,这些污物的面积大小不一.目前国内无纺布成品行业的生产线速度每分钟高达300m,包装前的人工随机抽样检测不仅效率低下,无法检测所有产品,而且增加了人员成本.在生产线上安装视觉检测系统,是近两年来国内无纺布成品生产厂商提出的新需求.
目前无纺布行业使用的机器视觉检测系统主要有两种:(1)国际大厂商提供的集成系统,如Cognex、Keyence、Omron等的视觉检测系统;(2)国内一些公司采用OEM相机在个人计算机(PC)平台上自主开发的视觉检测系统.然而这两种视觉检测系统的价格昂贵,不仅增加了生产线制造厂家及最终产品制造商的成本,而且他们也无法掌握核心知识产权.
在实际应用中,视觉检测系统不仅需要检测可靠,还需要使用方便.文献[1]中基于FPGA设计的视觉检测系统,以PCI接口的形式插入到PC上,不利于生产线的安装,降低了系统的易用性和可靠性;如果以FPGA片上软核的形式设计人机界面,需要占用大量逻辑单元,导致实现检测算法时受到约束.文献[2-3]中基于DSP/FPGA构架设计的系统,实现了嵌入式视觉检测系统的数据采集及图像处理,但仍然依赖于PC界面调试,没有在系统中集成人机界面,不满足在工作现场进行调试及使用时提出的易用性要求,增加了推广难度.文献[4]中设计了一种嵌入式终端,让视觉检测系统的调试、图像显示等不再依靠于PC系统,然而系统总体框架上只是采用嵌入式终端来代替PC系统,复杂的数据流转移增加了系统框架的复杂度,影响了系统运行的可靠性.因此文中针对无纺布成品表面检测设计了一种嵌入式机器视觉检测系统,该系统集成了图像采集、处理、人机界面、通信等功能,以满足系统可靠性、易用性、低成本、高集成度的需求.
机器视觉检测系统包括图像采集和图像处理两部分,图像采集由电荷耦合元件(CCD)传感器完成.CCD传感器从芯片结构上可分为面阵和线阵两种,面阵CCD传感器主要用于记录、存储,线阵CCD传感器主要用于产品外部尺寸的非接触检测、分类、表面质量评定、智能化测控及机器视觉中的精确定位等.线阵CCD传感器具有成像分辨率、像素灰度级和采样速度高及检测尺寸大等特点,可以实现高精度的检测[5].无纺布成品在生产过程中通常具有高速、宽幅面的特点,所以采用线阵CCD传感器更符合实际应用要求.
嵌入式机器视觉检测系统在采集图像时,可利用复杂可编程逻辑器件(CPLD)驱动线阵CCD传感器,并按照DSP数据总线的时序要求,实现图像数据的高速传输,这样不仅可以灵活设计和安装,而且可以保证数据传输的实时性和可靠性[6].另外,DSP提供了丰富的图像处理函数且有高速的数据处理能力,可以在短时间内完成图像处理算法,保证在线检测算法的实时性.CPLD的并行处理能力也为实现人机界面提供了便利.视觉检测系统的硬件设计框架如图1所示,系统在实际生产线上安装使用的装配图如图2所示.
图1 视觉检测系统的硬件设计框架图Fig.1 Design frame diagram of hardware of the vision detection system
图2 视觉检测系统安装图Fig.2 Installation diagram of the vision detection system
由图1可知,该视觉检测系统主要包括传感器处理电路、人机界面、图像存储与处理、输入输出(IO)系统.传感器处理电路由CCD驱动电路、专用图像信号处理器及外围电路构成,CPLD根据外部同步信号和触发信号驱动图像信号处理器采集原始图像数据.人机界面由CPLD进行显存管理及VGA输出管理,并由DSP生成用户菜单和响应手操板动作改变工作参数.CPLD产生符合DSP数据总线时序的信号,将图像数据写入到DSP数据总线的缓存中,并由DSP的DMA操作将缓存中的数据保存到同步动态随机存取器(SDRAM)中,完成图像的存储,最后由DSP完成图像处理,产生判断结果并输出脉冲.系统的IO接口信号包括系统的同步信号、外触发信号及次品剔除信号.同步信号来自生产线的伺服放大器脉冲,用于控制生产线的速度变化与线阵CCD传感器采样行频率之间的对应关系,避免生产线速度的变化导致采集的图像出现拉伸或压缩变形.外触发信号来自电子凸轮的输出,主要用于标识运动方向上不连续的检测区间;次品剔除信号传输给执行机构以剔除发现有缺陷的产品.
系统采集图像时所使用的线阵CCD传感器,其型号为东芝公司的 TCD1209D,有效像敏单元为2048 个,最大行频率为 10 kHz[7].由 CPLD 驱动线阵CCD传感器进行图像数据采集的信号如图3所示.
图3 图像数据采集信号Fig.3 Signal of image data acquisition
图3所示TCD1209D的输出通过VSP1021专用CCD传感器图像采集芯片完成模/数(A/D)转换,其支持双采样技术,内置输入钳位电路和可编程增益放大器[8].系统通过CPLD提供的SR、SV和ADCCLK时序信号,对双采样过程进行调节.DSP通过SPORT口提供的串行SCLK、SDIN和CS接口时序,配置VSP1021芯片上的寄存器和调节增益.VSP1021输出8位精度的原始图像数据,由CPLD进行逻辑处理后,按照DSP数据总线的写入时序及显存芯片的写入时序要求,写入到DSP内存和显存中,供后续处理.
视觉检测系统在调试时,一般需要采集实时图像并进行分析,以设置正确的工作参数.以PC为平台设计调试界面,不仅面临大批量数据传输的实时性问题,而且要将PC安装在生产线上,降低了系统的易用性,增加了推广难度.为此,文中设计的视觉检测系统集成了人机界面,通过其VGA接口,直接将界面显示在标准VGA显示器上,并以简易手操板来操作系统的界面,完成工作参数设置,这些工作参数保存在系统的外置EEPROM中,保证上电后自动加载参数.
人机界面有三方面功能:保存实时图像、生成系统菜单、VGA显示,实现这三方面功能的关键在于显存管理.设计系统时将SRAM静态存储器作为显存,型号为CY7C1049,其最快访问时间为12 ns,容量为512kB[9].CPLD 在获取 VSP1021 输出的图像数据后,在每个行同步周期内,将一次扫描的2048个有效数据写入DSP,同时以4∶1的采样比例将图像数据保存在显存中.系统界面采用VGA的标准640 ×480 分辨率,其行周期是 31.77 μs[10],每行的时序要求如图4所示.
图4 VGA同步时序Fig.4 VGA synchronous timing
CPLD采用20MHz作为驱动VGA时序的时钟频率,每个像素的扫描宽度为50 ns,由图4可知,每行总的像素单元数为 31.77 μs/50 ns=636,而有效像素单元数为 25.17 μs/50 ns=512.行分辨率采用标准的形式,每行总的像素单元数为524,有效行数为480.同时,为了防止对显存进行读写操作的数据之间发生冲突,要求在进行读操作时不能进行写操作,而且写操作完成后要使其数据引脚处于高阻.对SRAM的写操作时序如图5所示.
图5 SRAM写时序Fig.5 SRAM writing timing
系统菜单主要由DSP生成,因为CPLD需要用到一些工作参数(如外同步的分频比例),而DSP调节A/D的工作点时也需要获取经CPLD计算得到的线速度信息,因此设计系统时CPLD以寄存器操作的形式开放总线给DSP,DSP以其异步存储器总线对这些寄存器进行读写操作,实现DSP与CPLD之间的协调工作.CPLD先把DSP写入到其寄存器中的菜单数据值保存到显存中固定的地址单元,再通过读取显存中的数据进行VGA显示,实现菜单界面.DSP是基于μC/OS-II系统构架进行编程的,可以方便地实现多任务调度.另外,基于片上总线的数据操作,可以保证界面显示的实时性,克服基于PC界面进行调试的不方便.图6所示为实际工作时捕捉到的无纺布成品表面图像数据及菜单显示结果.
图6 系统的图形用户界面Fig.6 Graphic user interface of system
IO系统主要有两方面功能:图像采集控制及次品剔除控制.图像采集控制是通过外同步与外触发输入信号来实现的.视觉检测系统在运行过程中,线阵CCD传感器是连续扫描的,然而成品的生产是有间隔的,这样就要通过外触发信号在运动方向上正确标识出每个产品的起始位置,以通知CPLD将这部分图像数据写入到DSP中进行计算.外触发是将生产线上的编码器信号作为电子凸轮计数,通过电子凸轮的计数输出来实现的.另外,因为视觉检测系统采用线阵CCD传感器扫描图像,所以扫描的行频率需要与生产线的线速度相对应,以保证图像不会因为生产线速度的变化而变形,影响DSP的图像检测精度,也就是说采集图像时要同步.文中采用伺服放大器的伺服驱动信号作为同步信号基准,并以设置的分频比例来确定图像的采样频率.实时图像数据的采集过程如图7所示.
图7 图像数据采集过程Fig.7 Acquisition process of image data
CPLD在采集图像时,将获取的实时图像数据以4∶1的采样比保存在显存中.VGA界面显示的实时图像,会在界面的最左边一列用白色的竖线标识出触发区域内的图像,以区别非触发区域的图像,方便调试与监控.
次品剔除是当DSP进行图像运算后,发现有异常情况时,通过输出管脚上的脉冲信号通知CPLD,再由CPLD发出排片脉冲信号给生产线的执行机构来实现的.因为DSP是等待获取CPLD写入的图像数据并进行计算的,而产品的分界信号(即外触发信号)是接入到CPLD来控制图像采集的,也就是说DSP只要有数据就进行计算,而不管外部触发信号何时开始,但执行机构剔除的次品所在的位置与视觉检测系统安装的位置不在同一个地方,有可能相差几个产品的位置.当DSP发出异常脉冲给CPLD时,就意味着当前这个产品有问题,不过这个次品要在生产线上前移几个位置才能被执行机构剔除,因此剔除脉冲要延迟发出,这个延迟的单位就是若干次外触发的计数.CPLD根据界面上预先设置的延迟数,在接收到DSP发出的检测异常脉冲后,对随后的外触发进行计数,每次计数相当于走过一个产品位置,当计数值等于设置的延迟数时,就发出剔除脉冲给执行机构,从而完成次品的剔除.
视觉检测系统中的DSP不仅要完成系统菜单控制、输入输出事件响应、存储分配与管理等控制任务,还要完成图像数据的分析与运算,因此设计DSP时将ADI的BlackFin531作为核心处理器.BlackFin系列DSP体系结构是在ADI和Intel联合开发的微信号机构(MSA)的基础上实现的,不仅适用于数字信号处理,还提供了综合的控制能力,消除了多个不同处理器之间相联系的复杂性[11],简化了系统设计的结构,在一定程度上增加了系统的可靠性.Black-Fin531采用μC/OS-II构架进行编程,以方便多任务调度,工作的总线时钟频率由外部27 MHz晶振倍频得到,倍频系数是20,即DSP的总线时钟频率是540MHz.
CPLD将采集到的线阵CCD传感器数据,通过BlackFin531处理器的PPI接口写入到PPI接口缓存中,由 PPI结合 DMA技术进行数据传输[12].BlackFin531的PPI接口在进行DMA数据传输时,将两个8位的图像数据打包为16位的数据进行传输,可以提高存储空间的利用率及数据传送的速度.为了防止数据的破坏性写入,保证图像数据的完整性和有效性,系统在BlackFin531的外部SDRAM存储空间里开辟了8个缓冲区域,分别保存20×2048个像素的图像数据.其中20表示线阵CCD传感器扫描的20条线.每条线的图像数据为2048个像素.传输数据时系统采用BlackFin531的二维DMA描述符模式,用线性链表存储描述符数组,每个DMA描述符保存一个缓冲区域的地址及DMA传输模式配置信息.当CPLD完成一次20条线的图像数据写入后,产生PPI的帧同步信号,DSP响应这个信号启动DMA操作,自动加载线性链表中DMA描述符的配置信息,将图像数据保存到描述符指定的SDRAM目标地址空间中,从而完成图像数据的存储.
视觉检测系统在实际生产线上运行时,检测算法在保证检测精度的同时必须具有实时性.在检测精度的计算上,根据TCD1209D传感器的手册可知,传感器可以工作在20 MB的数据率下,其分辨率为2048像素[13],那么其最大行频率为10 kHz,即线阵CCD传感器以最快的行频率工作时,每扫描一次的时间是0.1ms.已知垂直运动方向安装的线阵CCD传感器分辨率为2 048像素,一般无纺布成品在30cm的宽度内,那么每毫米对应的有效像素为7个,因此垂直运动方向上的检测精度是可以保证的.而运动方向上的精度取决于线阵CCD传感器的扫描频率,当生产线在300m/min的线速度下运行,线阵CCD传感器也在最高频率下工作时,在一个扫描周期内生产线走过的距离为0.5mm,也就是在生产线走过1mm的时间内线阵CCD传感器可以完成两次扫描,因而系统可以保证在300 m/min的线速度下达到1mm2的检测精度.
由上述检测精度分析可知,为了保证检测的精度,线阵CCD传感器需要工作在10 kHz的行频率下,DSP只有在0.1 ms内完成一次扫描的2048个数据的处理,才能保证运算的实时性.由于图像存储时采用DMA通道进行数据传输,并使用了多个缓冲区域进行数据缓冲,因此数据的传输时间可以不考虑在算法时间以内.
针对检测精度要求,检测算法是从运动方向及垂直运动方向上考虑图像的特性来进行设计的.
首先,考虑运动方向上的问题.采用线阵CCD可以获取高速扫描的图像,然而无纺布成品的表面通常是不光滑的,如果以一次扫描的2048个数据进行检测,必然无法反映出图像的特征,容易造成误判断.所以在设计程序时,将20次扫描的数据拼在一起,构成一个局部范围内的面阵图像再进行检测,这样图像的特征信息更加丰富,从而在保证检测精度的同时,提高检测的可靠性.因此DSP的PPI接口DMA操作及SDRAM的内存分配是按照20条线来操作的,完成这20条线的数据处理时间要求在2ms内.
其次,考虑垂直运动方向上的问题.在安装系统时,机械安装的原因会导致CCD传感器左右两端光照不均匀,从而出现采集到的图像数据左右两端亮度不同的情况.若采用统一的阈值进行图像分割,则容易造成误判断.所以设计图像检测算法时需要考虑动态阈值,即对采集到的20条线的图像数据进行分块,并假设相邻两块区域的图像平均亮度相近,以前一个区域内正常像素的亮度平均值作为下一个区域图像分割的阈值.分块时以20×20区域为一个图像区域.
在无纺布产品生产线中,无纺布成品表面的污渍类型很多,污渍的面积有大有小.对于断续相连的丝状污渍,在20×20区域内,检测时所统计的污点面积不足以达到报警的阈值,因此需要将发现污点的区域进行标记,并对标记的相邻区域内的污点面积进行累加.
对每个20×20区域,将上一个区域内不包括缺陷像素在内的所有像素亮度的平均值作为该区域的分割阈值,统计该区域内不满足阈值分割的图像像素个数,将该统计值作为污渍的面积.如果20×20区域内污渍的面积大于预设的报警阈值,那么DSP在IO管脚上输出判断异常脉冲给CPLD.如果统计的污渍面积小于报警阈值,那么标记该区域及相邻的8个区域,并统计9个区域内污渍的面积,以这个面积之和作为断续相连丝状污渍的判断依据.算法在DSP上实现时,为了有更快的处理速度,保证运算的实时性,每个20×20区域数据的处理都是在BlackFin531的内部缓存中进行,并且在内部缓存中开辟了两个存储区,采用 BlackFin531的存储器DMA通道,将每个20×20区域数据以乒乓操作的形式从SDRAM搬移到DSP内部缓存,这样进行运算时可以忽略数据搬移的时间.图像处理流程如图8所示,在进行污渍判断之前,对图像进行了滤波处理,以减小噪点对污渍判断的影响.通过示波器查看BlackFin531的IO管脚上的跳变波形,发现该算法计算20×2048个像素所用时间小于2ms,而工作时考虑检测边界的设定,实际的检测范围每条线是小于2048像素的,所以算法在保证检测精度的同时具有实时性.
图8 图像处理流程图Fig.8 Flowchart of image processing
对于“统计值大于报警阈值”的判断,如果当前区域的统计像素个数小于设定阈值,则需要标记与当前20×20区域相邻的8个区域,如果9个区域内的统计值之和超出经验阈值,则认为此范围内存在丝状污渍,系统产生排片脉冲信号,执行机构接收到脉冲信号后将缺陷产品剔除,完成基于视觉的无纺布成品表面污渍检测.
文中针对无纺布成品表面污渍检测需要,设计了基于DSP/CPLD的嵌入式视觉检测系统.CPLD响应外部同步和触发信号获取的实时图像,在写入DSP的同时,也显示在标准VGA显示器上,从而实现了系统的人机界面,提高了系统的易用性.该系统依据μC/OS-II操作系统进行设计,可方便DSP进行多任务调度,实现手操板操作控制的用户菜单,完成图像存储和处理.根据实际需要设计的动态阈值污渍判断方法,不仅保证了检测的实时性和检测精度,而且降低了误判率,提高系统的可靠性.目前该嵌入式视觉检测系统已交付无纺布成品生产厂家使用,证明了其可用性.
[1] 周文晖,杜歆,叶秀清,等.基于FPGA的双目立体视觉系统 [J].中国图象图形学报,2005,10(9):1166-1170.Zhou Wen-hui,Du Xin,Ye Xiu-qing,et al.Binocular stereo vision system based on FPGA [J].Journal of Image and Graphics,2005,10(9):1166-1170.
[2] 邓集杰,刘铁根,杨永,等.基于机器视觉的嵌入式工业在线检测系统[J].计算机工程,2008,34(4):260-262,274.Deng Ji-jie,Liu Tie-gen,Yang Yong,et al.Embedded industry production-line image examination system based on machine visions [J].Computer Engineering,2008,34(4):260-262,274.
[3] 温振市,白瑞林,顾国庆,等.嵌入式机器视觉测控一体机的研究与开发[J].江南大学学报:自然科学版,2010,9(3):257-260.Wen Zhen-shi,Bai Rui-lin,Gu Guo-qing,et al.Research and development of the embedded machine vision integrator[J].Journal of Jiangnan University:Natural Science Edition,2010,9(3):257-260.
[4] 陈祎,白瑞林,冯伟,等.嵌入式机器视觉操作终端通信模块的设计与实现[J].计算机工程与科学,2011,33(5):127-130.Chen Yi,Bai Rui-lin,Feng Wei,et al.Design and imple-mentation of the communication module for embedded machine vision operating terminals[J].Computer Engineering & Science,2011,33(5):127-130.
[5] 李娜,徐志刚.基于线阵CCD的交通信息采集和检测系统设计与实现[J].现代电子技术,2009(13):159-161.Li Na,Xu Zhi-gang.Design and realization of traffic information collection and detectionsystem based on linear CCD [J].Modern Electronics Technique,2009(13):159-161.
[6] 裴志军,曹继华,张骥祥.嵌入式机器视觉中的智能相机技术[J].天津工程师范学院学报,2008,18(2):5-8.Pei Zhi-jun,Cao Ji-hua,Zhang Ji-xiang.Smart camera technique for embedded machine vision [J].Journal of Tianjin University of Technology and Education,2008,18(2):5-8.
[7] 付天舒,赵春晖.基于Verilog的线阵CCD驱动时序设计[J].光学技术,2010,36(5):741-743.Fu Tian-shu,Zhao Chun-hui.Design of linear CCD driving sequence based on verilog[J].Optical Technique,2010,36(5):741-743.
[8] Texas Instruments Inc.VSP1021 3-v,10-bit,25msps,lowpower area CCD analog front end [EB/OL].(2004-03-23).http:∥www.ti.com.
[9] 黄洁.基于 DSP与 PCI的视频采集卡设计与实现[J].计算机测量与控制,2010,18(1):226-229.Huang Jie.Design and implementation of video capture card based on DSP and PCI[J].Computer Measurement and Control,2010,18(1):226-229.
[10] 王亮,李正,宁婷婷,等.VGA汉字显示的FPGA设计与实现[J].计算机工程与设计,2009,30(2):275-277.Wang Liang,Li Zheng,Ning Ting-ting,et al.FPGA design and implementation of VGA character displaying[J].Computer Engineering and Design,2009,30(2):275-277.
[11] Analog Devices Inc.ADSP-BF533 Blackfin processor hardware reference(include ADSP-BF531 and ADSPBF532 Blackfin processors) [EB/OL].(2008-09-01).http:∥www.analog.com.
[12] 闫旭,黎福海,李程.基于DSP的高速图像数据处理机制的设计[J].计算机工程与科学,2009,31(10):33-35.Yan Xu,Li Fu-hai,Li Cheng.Design of a high-speed image data processing mechanism based on DSP [J].Computer Engineering and Science,2009,31(10):33-35.
[13] Toshiba Inc.Toshiba CCD linear image sensor CCD(charge coupled device)TCD1209D[EB/OL].(2001-10-15).http:∥www.datasheetcatalog.com.