摘 要:本文在LabVIEW和NI-IMAQ Vision软件平台下,利用通用图像采集卡开发一种图像实时采集处理虚拟仪器系统。通过调用动态链接库驱动通用图像采集卡完成图像采集,采集图像的帧速率达到25帧每秒。利用NI-IMAQ Vision视频处理模块,进行图像处理,以完成光电探测器的标定。该系统具有灵活性强、可靠性高、性价比高等优点。
主题词:虚拟仪器;图像处理;LabVIEW;动态链接库
1.引言
美国国家仪器(NI)公司的虚拟仪器开发平台LabVIEW,使用图形化编程语言编程,界面友好,简单易学,配套的图像处理软件包能提供丰富的图像处理与分析算法函数,极大地方便了用户,使构建图像处理与分析系统容易、灵活、程序移植性好,大大缩短了系统开发周期。在推出应用软件的基础上,NI公司又推出了图像采集卡,对于NI公司的图像采集卡,可以直接使用采集卡自带的驱动以及LabVIEW中的DAQ库直接对端口进行操作。
但由于NI公司的图像采集卡成本很高,大多用户难以接受,因此硬件平台往往采用通用图像采集卡,软件方面的图像处理程序仍采用LabVIEW以及视频处理模块编写。本文正是基于这样的目的,提出了一种在LabVIEW环境下驱动通用图像采集卡的方案,在TDS642EVM高速DSP视频处理板卡的平台下,完成实时图像采集及处理。
在图象处理的工作中主要完成对CCD光电探测器的辐射标定。由于探测器在自然环境下获取图像时,会受到来自大气干扰,自身暗电流,热噪声等影响,使CCD像元所输出信号的数值量化值与实际探测目标辐射亮度之间存在差异,所以要得到目标的精确图像就必须对探测器进行辐射标定。
2.图像采集卡简介
闻亭公司TDS642EVM(简称642)多路实时视频处理板卡是基于DSP TMS320DM642芯片设计的评估开发板。计算能力可达到4Gips,板上的视频接口和视频编解码芯片Philips SAA7115H相连,实现实时多路视频图像采集功能,支持多种PAL,NTSC和SECAM视频标准。本系统通过642的PCI接口与主机进行数据交换。PCI支持“即插即用(PnP)”自动配置功能,使图像采集板的配置变得更加方便,其一切资源需求的设置工作在系统初启时交由BIOS处理, 无需用户进行繁琐的开关与跳线操作。PCI接口的海量数据吞吐,为其完成实时图像采集和处理提供保证。
3.系统组成及工作原理
图1. 图像采集及实时处理系统框图
图像采集的过程也就是图像采集板卡对来自CCD的标准视频信号(PAL制式)进行模数转换的过程,将量化后的数据通过PCI总线传入计算机内存,然后通过编制的应用程序读取显示。
如图1所示, 彩色CCD相机输出的视频模拟信号经解码器SAA7115转换为数字信号并输入到642芯片中, 642将处理好的实时数字图像信号输出到编码器, 由编码器将数字信号转化为标准的PAL制式YCbCr视频信号输出到LCD上, 与此同时, 输出的Y-Cb-Cr格式数字视频信号经过视频端口的内部FIFO缓冲后,由642通过EDMA将数据传送到片外同步动态存储器芯片SDRAM中,其中包括四组数据,分别是Sem_标志变量(8bit);Y: Cb: Cr(4:1:1)图像信号:Y(720*574*8bit)数组,Cb(360*287*8bit)数组,Cr(360*287*8bit)数组,分别存储在SDRAM中的0x80003804,0x8102E000,0x81092E80,0x810AC280地址,以供应用程序使用。
视频采集应用程序由LabVIEW编制完成。在需要进行图像采集时,LabVIEW发送读取SDRAM中存储的YCbCr格式图像数据的请求,642获得请求后,开始采集图像并将采集到的YCbCr数值存储到相应的内存地址,在642完成整一帧的图像采集之后,将SDRAM中的标志变量Sem设定为0,LabVIEW在这个过程中循环读取标志变量的值,当为0时,则从SDRAM中获得图像数据,也就是Y, Cb, Cr三个数组的数据,然后将其转化为LabVIEW能够显示的标准RGB格式输出该图像。
4.图像采集及图像处理
4.1调用动态链接库驱动图像采集卡
NI公司针对自己生产的图像采集卡附带有卡的驱动和管理程序,对于普通的I/O卡,还不能直接被LabVIEW所应用,必须采取其他方法。LabVIEW提供了4种调用外部程序代码的途径:端口直接操作、调用库函数节点(Call Library Function Node即CLFN)调用DLL(Dynamic Link Library动态连接库)、使用CIN(Code Interface Node,外部代码节点),调用Active X控件。其中端口直接操作,利用PortIn.Vi和PortOut.vi功能,此法应用简单,但无法实现较复杂的接口功能。而采用动态链接库,可以根据具体需要编写适当的程序,灵活利用LabVIEW的各项功能。较其余三种具有明显的优势。用户可以调用Windows标准的动态连接库(DLL),也可以调用用户自己编制的DLL,实现LabVIEW与硬件的连接。
建立一个DLL需要的文件有:①h函数声明文件(可选,可包含在c源文件里);②c源文件(必需);③def模块定义文件(如果是使用标准调用或函数输出必需添加关键字__declspec (dllexport) 函数名)。H文件的作用是声明DLL要实现的函数原型,供DLL编译使用,同时还提供应用程序编译使用。C文件是实现具体文件的源文件,它有一个入口点函数,在DLL被初次调用的运行,做一些初始化工作。一般情况下,用户无须做什么初始化工作,只需保留入口点函数框架即可。def文件是DLL项目中比较特殊的文件,它用来定义该DLL项目将输出哪些函数,只有该文件列出的函数才能被应用函数调用。要输出的函数名列在该文件EXPORTS关键字下面。
本系统在LabVIEW平台下调用动态链接库实现图像数据的采集主要分为五步:1.初始化并打开设备(DM642图像采集卡); 2.读取标志信号位,看是否初始化为默认值3.写入标志信号位,进行图像数据采集;4.对SDRAM中所存储的图像数据进行读取;5.关闭句柄并释放端口资源。主要调用动态链接库sd_pci64.dll的目标函数有PCI64_Open,PCI64_MemRead32和PCI64_Close,函数功能如下表所示:
函数的具体参数如下:
①PCI64_API INT32 PCI64_Open( int BoardNum, PCI64_HANDLE * pHndl );
BoardNum板口号(0-3),* pHndl 返回句柄的无符号指针,当返回值为0时,表示打开端口成功,非0时,表示失败。
②PCI64_API INT32 PCI64_MemRead32( PCI64_HANDLE Hndl, UINT32 Taddr, UINT32 Count , UINT32 * pData );
获取由PCI64_Open传递的句柄指针,对目标地址存储的数据进行读取,需注意的是目标地址的寻址空间在4M之内,必须初始化一个所需目标数据大小的无符号32位数组空间。同样返回值为0时,表示成功,非0表示失败。
③PCI64_API INT32 PCI64_Close( PCI64_HANDLE Hndl );
需要注意的是,在每次调用PCI64_MemRead32完成读取后,都要将端口关闭,释放地址空间。
具体的调用过程如下:首先在新建的VI的Block Diagram中,Function> Advanced子菜单中添加Call Library Function Node控件,然后对其进行配置,添加该节点后进行配置的对话框如下图2所示:
图2调用CLFN配置框图
分别对DLLs文件名称及存放路径,函数调用方式,需要调用的目标函数的名称,参数个数,每个参数的类型,数据类型及返回值类型进行设置。设置完成后单击“OK”返回LabVIEW 的设计面板(diagram)中。此时,Call Library Function已经根据刚才配置好的参数个数和类型设置好了输人输出端口,和其它的LabVIEW节点图标一样,只需要将其对应的参数连线即可。
程序调用sd_pci64.dll的目标函数PCI64_Open,PCI64_MemRead32和PCI64_Close完成对指定地址空间0x8102E000化为十进制2164449280,103320大小的数据读取,最后将读取的数据存储在无符号32位pData数组里面。
在LabVIEW中利用CLFN节点可以较容易地实现访问动态连接库(DLL)。由于DLL是一个外部模块,提高了程序的开发效率,而且在购买普通数据采集卡的时候,厂商一般会给用户提供动态连接库(DLL),所以研究在LabVIEW平台下通过调用动态链接库功能来驱动普通图像采集卡实现图像采集的方法,成为值得推广的方法,具有重要意义。
4.2 CCD图象标定
完成CCD图像数据的标定,数字图象处理是该标定过程的关键,NI公司提供的图象处理模块IMAQ Vision为LabVIEW平台提供了完整的图像处理函数库,如各类边缘检测算子、自动阈值处理、各种形态学算法、滤波器、FFT等,该库包含大量当前证明成功的理论算法,使用户无需专业编程经验,即可迅速开发完成优秀的、适合本专业的图像处理与分析系统。
在本系统中,对CCD光电探测器相对辐射定标的步骤如下:分别在标准光源照射和普通定标环境下各采集10幅图像,经过自动阈值处理和二值化,消除暗电流热噪声等因素的影响,取处理完得到的10幅图像的均值作为主标准图像和主参考图像。对图像上每个像素的灰度值,通过比对校正,完成CCD像元的不均匀响应校正,求出各自的标定系数,绘出灰度直方图。具体程序的前面板如图3所示:
图3 程序前面板
5.结论
本文使用TDS642EVM图像采集卡在LabVIEW平台上开发出一个稳定可靠、经济灵活的实时图像采集及处理系统。通过调用动态链接库,驱动图像采集卡完成图像采集;利用NI-IMAQ Vision提供的强大的图像处理功能通过实时图像处理完成对CCD光电探测器的辐射标定。LabVIEW的开放性,高度的编程灵活性和良好的界面,使高级复杂的应用开发变得简单;动态链接库机制使LabVIEW在对通用图像采集卡的支持上有了一个通用可行的途径。
本文作者创新点:设计一种在LabVIEW平台完成对普通图像采集卡的实时图像采集及光电探测器的辐射标定系统。
参考文献:
[1] National Instruments, 《IMAQ Vision User‘s Manual》,1999
[2] K.R.Castleman,《数字图像处理》,电子工业出版社,1998.9
[3] National Instruments, 《LabVIEW User‘s Manual》,2003
[4] 杨乐平,李海涛,等.LabVIEW高级程序设计【M】.北京:清华大学出版社,2003.
[5] 谢其德,张云云。 动态链接库在LabVIEW中的高级应用 【J】.微计算机信息,2004,20(10):45-46
[6] 李天刚,黄考利,刘于端.基于VXI总线和虚拟仪器的专家测试系统【J】.微计算机信息 2005,2:129-130