LabVIEW应用于实时图像采集及处理系统
2008-7-29 9:35:00
于子江 娄洪伟 于晓 闫丰 隋永新 杨怀江 供稿
摘 要:本文在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
中的
0x
80003804,0x8102E000,0x81092E80,0x810AC280
地址,以供应用程序½用。
视频采集应用程序由
LabVIEW
编制完成。在需要进行图像采集时,LabVIEW 发送读取
SDRAM
中存储的
YCbCr
格式图像数据的请求,642 获得请求后,开始采集图像并将采集到的
YCbCr
数值存储到相应的内存地址,在
642
完成整
一帧的图像采集之后,将
SDRAM
中的标志变量
Sem
设定为
0,LabVIEW
在这个过程中循环读取标志变量的值,½为
0
时,则从
SDRAM
中获得图像数据,也就是
Y, Cb, Cr
三个数组的数据,然后将其½化为
LabVIEW
½够显示的标准
R
GB
格式输出该图像。
4.图像采集及图像处理
4.1
调用动态链接库驱动图像采集卡
NI
公司针对自己生产的图像采集卡附带有卡的驱动和管理程序,
对于普通的
I/O
卡,
还不½直接被
LabVIEW
所应用,
必须采取其他方法。LabVIEW 提供了
4
种调用外部程序代码的途径:端口直接操½、调用库½数节点(Call
Library Fu
nction Node
即
CLFN)调用 DLL(Dynamic Link Library
动态连接库)、½用
CIN(Code Interface Node,外部代
码节点),调用
Active X
控件。其中端口直接操½,利用
PortIn.Vi
和
PortOut.vi
功½,此法应用简单,½无法实现较
复杂的接口功½。而采用动态链接库,可以根据具½需要编写适½的程序,灵活利用
LabVIEW
的各项功½。较其½三种
具有明显的优势。用户可以调用
Windows
标准的动态连接库(DLL),也可以调用用户自己编制的
DLL,实现 LabVIE
W
与硬件的连接。
建立一个
DLL
需要的文件有:①h ½数声明文件(可选,可包含在
c
源文件里);②c 源文件(必需);③def 模块定
义文件(如果是½用标准调用或½数输出必需添加关键字__declspec (dllexport) ½数名)。H 文件的½用是声明
DL
L
要实现的½数原型,供
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 , UINT3
(
2
*
pData
);
获取由
PCI64_Open
传递的句柄指针,对目标地址存储的数据进行读取,需注意的是目标地址的寻址空间在
4M
之
内,必须初始化一个所需目标数据大小的无符号
32
½数组空间。同样返回值为
0
时,表示成功,非
0
表示失败。
③PCI64_API
INT32 PCI64_Close( PCI64_HANDLE Hndl
);
需要注意的是,在每次调用
PCI64_MemRead32
完成读取后,½要将端口关闭,释放地址空间。
具½的调用过程如下:
首先在新建的
VI
的
Block Diagram
中,
Function> Advanced
子菜单中添加
Call Library F
unction Node
控件,然后对其进行配½,添加该节点后进行配½的对话框如下图
2
所示:
图
2
调用
CLFN
配½框图
分别对
DLLs
文件名称及存放路径,½数调用方式,需要调用的目标½数的名称,参数个数,每个参数的类型,数据
类型及返回值类型进行设½。设½完成后单击“OK”返回
LabVIEW
的设计面板(diagram)中。此时,Call
Library Fu
nction
已经根据刚才配½½的参数个数和类型设½½了输人输出端口,和其它的
LabVIEW
节点图标一样,只需要将其对
应的参数连线即可。
程序调用
sd_pci64.dll
的目标½数
PCI64_Open,
PCI64_MemRead32
和
PCI64_Close
完成对指定地址空间
0x
8102E000
化为十进制
2164449280,103320
大小的数据读取,最后将读取的数据存储在无符号
32
½
pData
数组里
面。
在
LabVIEW
中利用
CLFN
节点可以较容易地实现访问动态连接库(DLL)。由于
DLL
是一个外部模块,提高了程序
的开发效率,而且在购买普通数据采集卡的时候,厂商一般会给用户提供动态连接库(DLL),所以研究在
LabVIEW
平
台下通过调用动态链接库功½来驱动普通图像采集卡实现图像采集的方法,成为值得推广的方法,具有重要意义。
4.2 CCD
图象标定
完成
CCD
图像数据的标定,数字图象处理是该标定过程的关键,NI 公司提供的图象处理模块
IMAQ Vision
为
LabV
IEW
平台提供了完整的图像处理½数库,如各类边缘检测算子、自动阈值处理、各种½态学算法、滤波器、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
评论