基于CCD的实时成像与微小尺寸测量系统的设计
2017-12-19崔荣丽王连明
崔荣丽,王连明
(东北师范大学物理学院,吉林 长春 130024)
基于CCD的实时成像与微小尺寸测量系统的设计
崔荣丽,王连明
(东北师范大学物理学院,吉林 长春 130024)
设计了一种基于CCD的实时成像与微小尺寸测量系统,该系统由CCD摄像头、视频解码芯片、FPGA、USB芯片和上位机组成.用FPGA控制视频解码芯片获取CCD摄像头采集的光学信号,通过USB传给上位机,利用多线程技术实现控制命令的发送、图像数据的接收、处理和显示,以及微小尺寸的测量.结果表明:经过多次测量实验得到系统误差不超过3 μm,满足测量精度要求;通过选用不同分辨率的CCD,可以实现不同精度的微小尺寸测量.此外还对双棱镜干涉实验所形成的干涉条纹间距进行了测量,验证了系统的功能.
CCD;FPGA;TVP5150;USB;实时成像; 微小尺寸测量
随着科学技术的发展和社会的需求变化,零件生产领域对产品测量方面提出了更高的要求.传统的测量中,大多测量人员是通过调节测微目镜,利用人眼判读干涉条纹间距,这种测量方法不仅效率低、费时、受人为因素影响大,且在低照度环境下测量,对人眼伤害极大,如全息干涉法[1-2]、散斑剪切干涉法[3]等.文献[4]基于图像处理的方法对精密零件尺寸的检测进行了研究,检测精度达到了0.1 μm,可以满足检测要求,但是计算速度相对比较慢;文献[5]设计了基于机器视觉的螺纹参数检测系统,该系统操作简单,但是检测精度不高;文献[6]展开了对衔铁零件相关参数的尺寸检测研究,并取得了一定的成果,但是由于边缘检测和尺寸计算算法不是很完美,系统运行的速度不高.
为了满足在低光照环境下进行实时成像采集的要求,本文采用具有集成度高、体积小、功耗低、分辨率高、可靠性高、图像畸变小、尺寸重现性好、照度低等优点[7]的CCD(Charge-coupled Device)摄像机,设计了一种实时成像与微小尺寸测量系统,该系统具有实时成像、非接触测量、测量范围广、测量精度高等优点,可以广泛地应用于多种微小尺寸的精密测量场合,如生丝细度的测量[8]、零件尺寸的测量[9]、钢板几何尺寸的测量[10]、干涉条纹间距的测量[11]等,具有很高的应用价值.
1 系统框架与硬件结构
实时成像与微小尺寸测量系统主要由CCD摄像头、视频解码芯片、FPGA(Field-Programmable Gate Array)、USB(Universal Serial Bus)芯片和上位机软件等5部分组成,如图1所示.其中FPGA通过I2C总线(scl时钟线,sda数据线)进行TVP5150芯片的配置,上位机通过USB向FPGA发送控制命令.光学系统产生的光学信号由于光强分布的不同,在CCD上呈现一幅与入射光强分布成正比的图像,信号经过视频解码芯片TVP5150解码后,以SCLK设定的频率将图像数据发送到FPGA,FPGA对数据进行处理后通过USB将处理后的CCD图像数据实时传输到上位机.
系统整体工作分为控制命令发送过程、成像数据采集过程和测量过程.控制命令发送过程:用户通过上位机软件将采集图像数量和类别的控制命令通过USB发送给FPGA,FPGA接收并保存控制命令.然后,通过点击上位机的“开始预览”按钮启动成像数据采集过程;FPGA将控制命令处理后的图像数据通过USB发送给上位机,上位机实时处理接收到的数据并显示,将其保存为BMP图像;将存储的图像显示在图像显示区,用户任意选取图像上的两点,系统会根据该位置的坐标和CCD水平、垂直方向上的标定系数分别计算出两点在水平、垂直方向上距离.
图1 系统框架与硬件连接框图
本文系统的摄像头由0.85 cm的PAL制式CCD图像传感器芯片ICX673AK组成,其有效像素为976像素×582像素,具有照度低、灵敏度高、信号饱和度高、分辨率高、反曝光好等优点.[12-13]
视频解码芯片选用TI公司的TVP5150芯片,该芯片拥有8位数据总线,分别为8位4∶2∶2格式和8位4∶2∶2 ITU-R BT.656(同步嵌入数据头)输出格式,具有13.5和27 MHz频率数据输出.它将CCD摄像头输出的模拟视频信号转换成数字信号后传给主控制器FPGA进行处理,支持PAL、NTSC、SECAM 3种格式的模拟信号解码,具有操作简易、功耗超低、封装尺寸小的特点.[14-15]这些特点满足了系统低功耗、小型化和集成化的要求.
为了实现快速数据传输,采用USB接口进行上位机和下位机的数据传输.系统选用Cypress公司的EZ-USB FX2系列的CY7C68013A芯片作为FPGA与上位机的接口芯片.该芯片有端口、GPIF和SLAVE FIFO接口方式,最高数据传输率可以达到480 MB/s,完全满足视频采集的速度要求.[16-18]系统设置USB在同步SLAVE FIFO模式下工作.
FPGA是下位机的控制核心,主要通过I2C总线配置TVP5150、视频数据采集与处理、读写USB 3种功能实现.
2 下位机功能实现
2.1 TVP5150模块的配置
TVP5150的配置是通过I2C(芯片间总线)接口实现的.I2C总线采用两线制,由一根数据线sda和一根时钟线scl实现全双工同步的数据传输.数据通过数据线sda发送,sda数据线上的值在scl时钟线为低电平时改变,在scl时钟线为高电平时保持不变.本文实现了I2C控制器的构建,并通过I2C总线实现FPGA对 TVP5150的相关寄存器进行配置.具体步骤:(1)主机发送I2C的开始信号;(2)主机发送芯片地址0xBA;(3)从机应答;(4)主机发送TVP5150内部寄存器地址0x03;(5)从机应答;(6)主机向TVP5150内部0x03寄存器写0x09;(7)从机应答;(8)主机I2C发送停止信号.
用Signal Tap Ⅱ抓取的FPGA配置TVP5150的I2C时序图如图2所示.配置完成后,数据以27 MHz 频率按符合ITU-R BT.656标准8位4∶2∶2 YCbCr格式[18]串行输出,且同步信号内嵌于数据流中.同时,FPGA以27 MB/s的速度采集视频数据.
图2 FPGA配置TVP5150 的I2C时序图
2.2 视频数据采集与处理模块实现
根据上位机的控制命令和视频数据的输出格式,FPGA对视频数据进行转换和选择性处理.视频转换的实现方式:采用一个16位的寄存器data_8_16,连续2次读取视频数据并输入引脚data_out_5150[7∶0]的值,将得到的数据分别输入到寄存器data_8_16的低8位和高8位上,并将寄存器data_8_16的值赋给FPGA的视频数据输出引脚data_inout[15∶0],最后数据经过USB传送到上位机.根据功能要求,系统可选择显示和保存彩色、灰度或者黑白图像.为了节约资源,提高传输效率,FPGA会根据控制命令选择性的发送视频数据.若控制命令为显示和保存彩色图像,则直接通过USB发送给上位机;若控制命令为显示和保存灰度或黑白图像,则经转换后视频数据进行选择处理,即不发送Cb和Cr数据,而只将Y数据上传.
2.3 读写USB模块实现
FPGA通过状态机和辅助使能信号完成USB的读写工作.FPGA 读写USB的状态图如图3所示.系统通过设置寄存器rd_or_wr_en来控制读写USB,若寄存器rd_or_wr_en为“0”,表示使能FPGA读取USB FIFO内来自上位机的数据,具体过程由State1至State4完成;反之,表示使能FPGA向USB FIFO中写入需要上位机接收的数据,具体过程由State5至State8完成.
图3 FPGA读写USB状态图
系统复位后,程序将寄存器rd_or_wr_en 赋值为“0”,进入状态Idle并启动读事件.在State1下,FPGA将输出引脚u_addr0,u_addr1均赋值为“0”,使FIFOADR[1∶0]指向USB的FIFO输出缓冲区,然后进入State2.在State2下,将输出引脚u_sloe赋值为“0”,使SLOE有效并通过检测引脚u_flagc的值来判断USB的FIFO输出缓冲区是否为空(即EMPTY).若为“0”,则在State2等待,否则跳转到State3.在State3下,将输出引脚u_slrd赋值为“0”,使SLRD有效,持续一个IFCLK周期以递增FIFO读指针,读取到上位机发送来的数据后进入状态State4,判断是否为控制命令数据,若是控制命令数据则将寄存器rd_or_wr_en赋值为“1”,然后进入状态Idle并启动写事件,否则回到State2继续读取数据.
启动写事件后程序跳转到State5,在State5下,将u_addr0赋值为“0”,u_addr1赋值为“1”使FIFOADR[1∶0]指向USB的FIFO输入缓冲区,然后跳转到State6.在State6下,通过检测引脚u_flagb的值判断USB的FIFO输入缓冲区是否为满(FULL).若为“0”,则在该状态等待,否则进入State7.在State7下,驱动数据到数据线上并将u_slwr赋值为“0”,使SLWR有效,持续一个IFCLK周期后进入State8.如果需要传输更多的数据,则进入State6,否则进入End.
3 上位机软件设计
上位机是系统和用户之间的桥梁,主要负责控制参数的配置、图像采集的开始与结束、图片的保存以及尺寸的测量.本文采用C++语言进行编写上位机程序,使用Microsoft Visual C++作为软件开发平台,通过多线程调用的方式,实现了控制命令的发送、图像数据的接收、图像数据的处理和显示以及微小尺寸测量.
在上位机软件的设计中,共设置1个线程和3个辅助线程.1个主线程负责用户界面,处于中枢地位,其生存周期是整个用户程序的生存期.3个辅助线程的功能为:WriteThread线程负责配置数据的发送,ReadThread线程负责图像数据的采集,DataThread线程负责数据的处理和显示.辅助线程是在主线程运行过程中产生的,它的生存期就是线程函数本身,函数一旦return,线程结束.主机通过在bOpenDriver函数中调用CreateFile函数获得USB设备的控制句柄并打开USB设备,hDevice为得到的设备句柄,程序退出时,需要调用CloseHandle(hDevice)函数释放USB设备句柄.得到的设备句柄后调用DeviceIoControl函数实现对USB设备的读写数据操作.DataThread线程处理程序包括将YCbCr格式数据转换成RGB格式,将转换后的数据显示在图像显示区,存储为BMP图像,自动计算阈值实现图像二值化.尺寸测量是在实时数据采集结束后,在存储图像路径下,选取合适的图像显示在图像显示区,并在显示区域中利用鼠标先后按下两点,进行间距测量.测量两点间的水平所占像素数和垂直所占像素数,最后转换成距离.
4 系统测试
4.1 速度测试
图4 标定图测试结果
视频解码芯片输出的一帧图像大小为864像素×625像素,其中一个像素代表2个字节,一帧图像的大小为1.08 MB, TVP5150的数据传输速率为27 MB/s.该系统将USB设置为高速传输模式,采用13.5 MHz外部时钟,具有16位数据线.经过测试,系统每秒钟传输25幅图像,满足实时成像采集速度要求.
4.2 系统标定
标定是指使用标准的计量仪器确定其准确度.本文选择图案尺寸6 mm×6 mm,方格尺寸0.25 mm 的棋盘格标定校准板进行系统标定,计算得出水平方向标定系数为6.55,垂直方向上标定系数为6.10.标定过程如图4所示.经过多次测量实验,得出系统测量误差小于3 μm.
4.3 功能验证
为验证系统功能,本文系统对双棱镜形成干涉图像的条纹间距进行实时测量,系统采集到的干涉条纹的彩色、灰度和黑白图像见图5.
图5 系统采集的彩色、灰度和黑白图像
条纹间距测量方法:通过鼠标选取图像中水平方向比较清晰的2个条纹(选条纹中心),并通过图像处理方法计算水平方向上2个条纹之间的间距个数Nh以及Nh个条纹间距所占的总像素数Mh.已知CCD的水平方向的标定系数Rh,根据
Sh=Rh*Mh
(1)
求出Nh个条纹间距对应的实际距离Sh.根据
Lh=Sh/Nh
(2)
图6 测试图像
求出水平方向上的平均条纹间距Lh.
对干涉图像进行条纹间距测量的实验结果如图6所示.通过图像处理可获得水平方向10个条纹间距,即Nh=10,所占像素数为377,即Mh=377.已知CCD的水平方向的标定系数Rh为6.55,由公式(1)得出Sh=2 469.4 μm,由公式(2)得到Lh=246.9 μm.垂直方向的距离计算方法与水平方向的距离计算方法相同.
5 总结
本文设计并实现了基于CCD的实时成像与微小尺寸测量系统,充分利用FPGA速度快、用户定制电路配置灵活等优势,搭配USB的高速数据传输模式实现了图像数据的实时成像采集,传输速度可以达到25帧/s.通过对YCbCr格式图像进行处理,实现了灰度、彩色、黑白的选择性显示或存储,增加了系统的灵活性.系统实现了低照度环境下的光学信号采集和实时成像,并且根据标定得出的标定系数和待测微小尺寸所占像素个数,计算出待测微小尺寸的距离.该系统具有采集速度快、测量精度高、测量范围广、成本低且实用性强的优点,在光电测量领域具有非常广阔的应用前景.
在系统测量微小距离过程,由于CCD成像畸变引起的系统误差和手动选取测量点产生的人为误差,使系统未能达到最佳精度.因此,使用图像处理方法矫正畸变图像,选取最优测量范围并实现自动测距来提高系统精度是下一步的研究工作.
[1] 周灿林,亢一澜.数字全息干涉法用于变形测量[J].光子学报,2004,33(2):171-173.
[2] 赵建林,谭海蕴.电子学全息干涉术用于温度场测量[J].光学学报,2002,22(12):1447-1451.
[3] 朱中儒,张国平.数字散斑剪切干涉光学测距[J].华中师范大学学报(自然科学版),2001,35(3): 287-290.
[4] 杨光.基于机器视觉的精密零件尺寸检测关键技术研究[D].沈阳:沈阳理工大学,2013.
[5] 杨益.基于图像处理的机械零件几何尺寸检测方法研究[D].成都:西华大学,2011.
[6] 陈虹吉.基于图像处理的机械零件尺寸检测软件设计[D].成都:电子科技大学,2013.
[7] 王忠立,刘佳音,贾云得.基于CCD与CMOS的图像传感技术[J].光学技术,2003,29(3):361-364.
[8] 刘凤娇,周望.生丝细度测量光学成像系统设计[J].激光杂志,2012,33(2):41-43.
[9] 苗世迪.基于计算机视觉的机械零件尺寸测量研究[D].哈尔滨:哈尔滨理工大学,2006.
[10] 郭伟.基于面阵CCD的钢板几何尺寸测量系统的研究[D].太原:太原科技大学,2013.
[11] 葛爱明,陈进榜,陈磊,等.量块中心长度绝对测量中干涉条纹的自动判读[J].南京理工大学学报, 2000,24(3):228-231.
[12] 吴福田,冯书文.CCD尺寸测量光学系统设计原理[J].应用光学,1994(5):20-24.
[13] 陈大勇.基于CCD的光学图像采集处理研究[D].成都:电子科技大学,2010.
[14] 张新,张雯,贺云璐,等.TVP5150AM1芯片在视频采集系统中的应用[J].西安邮电大学学报,2013, 18(4):51-54.
[15] TI TVP5150PBS.Ultralow-power NTSC/PAL encoder data manual [EB/OL].[2016-05-19].http://focus.ti.com/lit/ds/symlink/tvp5150.pdf.
[16] 马俊涛,李振宇.Slave FIFO模式下CY7C68013和FPGA的数据通信[J].中国传媒大学学报(自然科学版),2009,16(2):38-44.
[17] 吴磊,郭超平,申世涛.基于CY7C68013与FPGA的便携式数据采集系统[J].计算机应用,2012,32(a01): 164-166.
[18] 孙军文,肖金明,王中训.基于FPGA的实时视频信号处理平台的设计[J].电子设计工程,2012,20(14): 163-165.
Designofreal-timeimagingandmicromagnitudemeasurementsystembasedonCCD
CUI Rong-li,WANG Lian-ming
(School of Physics,Northeast Normal University,Changchun 130024,China)
A real-time imaging acquisition and micromagnitude measurement system based on CCD is proposed in this paper.The system is composed of a CCD camera,a video decoder chip,a FPGA,a USB chip and a host computer.FPGA first controls video decoder chip to obtain the optical signal acquired by the CCD camera,and then sends it to the host computer through USB interface.By using multithread technology,the host computer achieves the transmission of control commands,the processing and display of the image data and the measurement of microstructures.The results show that the system error is no more than 3 μm after repeated measuring experiments.Moreover,the system can achieve micromagnitude measurement with different accuracy by using different CCD.Finally,by measuring the distance between interference fringes formed by double-prism interference,the function of the system is testified.
CCD;FPGA;TVP5150;USB;real-time imaging;micromagnitude measurement
1000-1832(2017)04-0049-05
10.16163/j.cnki.22-1123/n.2017.04.010
2016-05-19
国家自然科学基金资助项目(21227008);吉林省科技发展计划项目(20130102028JC).
崔荣丽(1990—),女,硕士研究生;通信作者:王连明(1972—),男,博士,教授,主要从事智能信息处理及嵌入式系统领域研究.
TP 274.2学科代码510·40
A
(责任编辑:石绍庆)