王 爽 , 胡炳樑 , 刘彩芳 ,2, 王彩玲 , 钱情明 ,2
(1.中国科学院西安光学精密机械研究所 陕西 西安 710119;2.中国科学院研究所院 北京 100084;3.西安石油大学 计算机学院,陕西 西安 710065)
基于Matrox Meteor-II/Digital的图像采集系统研究
王 爽1, 胡炳樑1, 刘彩芳1,2, 王彩玲3, 钱情明1,2
(1.中国科学院西安光学精密机械研究所 陕西 西安 710119;2.中国科学院研究所院 北京 100084;3.西安石油大学 计算机学院,陕西 西安 710065)
针对Matrox Meteor-II/Digital图像采集卡配套软件不具有实时数据处理功能的问题,根据项目需要提出了一个基于Matrox Meteor-II/Digital图像采集卡的图像采集系统,并完成了系统搭建及软件设计。该系统的硬件平台由CCD、Matrox Meteor-II/Digital图像采集卡及计算机组成;软件部分基于Matrox图像采集卡的模式识别库函数(Matrox Imaging Library),用VC++多线程编程来实现连续图像采集和单帧存储及实时处理等功能。试验表明,该系统操作简单、方便,且已经在实验室正常运行。
图像采集卡;连续图像采集;单帧存储;采集处理系统;多线程编程
简单的计算机图像处理系统由摄像头、微机及图像采集卡构成,其结构简单,应用广泛。与传统的图像显示、处理比较,利用图像采集卡软件基本控制库对摄像机摄取的模拟图像信号进行数字转化,提供计算机处理所需的数字图像信号,对现有的图像文件的读取、处理,都具有实现简单、原理清晰、通用性好的优点。
在众多的图像采集产品中,加拿大Matrox公司的图像采集卡,别具特色。它用RS-422或LVDS差分信号标准,采集黑白/分量 RGB,面阵/线阵信号,是一种 PCI或 PC/104-Plus格式视频采集卡。并且将极具价值且功能强大的函数扩展性能集成到了采集卡上,可以实时采集且将采集到的图像传输到系统内存进行处理或显存以实时活动视频窗口进行显示,速率可达130 MB/s。
正因为如此,使得Matrox Meteor-II/Digital图像采集卡[1]脱颖而出。但是,由于其连续图像采集不能实现实时存储的功能,所以就对研究连续图像的变化、图像实时处理和分析带来了极大的不便。于是,根据项目需要,文中提出了基于Matrox Meteor-II/Digital图像采集卡的硬件平台以及其图像识别库函数(MIL)的图像采集系统[2-3],主要是在CCD摄像机的采集速率比较低 (例如:在图片大小为1 024×1 024像素下,采集速率为4帧/秒)的情况下,调用MIL函数库里的单帧采集函数来实现连续图像实时采集、显示及处理,并且把实时采集到的每帧图像及处理结果都分别存储。
针对实验室中某航天项目中需要进行图像实时采集处理的需求,结合Matrox Meteor-II/Digital图像采集卡的硬件平台以及其图像识别库函数(MIL),经过分析得到需要设计的系统如图1所示:CCD捕捉外界的光信息并转换为电信号,该电信号经传输到图像采集卡采集,然后通过图像采集卡的PCI借口将采集到的图像数据传送到计算机,在计算机中内存中进行实时处理及存贮,并同时显示。
图1 系统总体结构图Fig.1 Structure diagram of the power control unit test system
要想完如上功能,必须做好如下事情。图像采集卡要开辟卡上临时存贮单元,以完成图像数据的临时存贮及处理;CCD采集速率不能太高,需要满足下一幅图像信息到来之前,本副图像数据已经完成处理及存贮,这里选择CCD采集速率为4帧/秒,符合试验要求;在计算机种开辟内存,编写相应的图像处理程序。
该采集系统采用的CCD为非标准单色相机,实验室自行购置并经过改进,采集速率为4帧/秒,每帧图片大小为1024×1024像素。计算机为Windows XP系统平台,1 G内存,160 G硬盘,CPU频率为2.7 GHz。
图像采集卡为Matrox Meteor-II/Digital图像采集卡,该卡的主要特点[1]如下:
a.采集数字面阵/线阵信号,包括多抽头配置
b.32-bit宽 RS-422 或 LVDS 接口 (可配置 4×8-bit,2×16-bit,1×32bit)
c.采样率RS-422下达到25MHz,LVDS下达到 40 MHz
d.可配置 LUT(4 个 256×8-bit或 2 个 4 k×16-bit)
e.触发输入,时钟输出(分离的RS-422/LVDS像素时钟(入和出),行/场同步(入和出),有效输出和两路计时器(曝光)输出)
f.PCI总线主模式32-bit/33 MHz
g.实时传输到系统或显卡
h.扩展板上缓存,确保采集
i.RS-232串口
j.软件包括 Matrox Imaging Library(MIL)/ActiveMIL,MILLite/ActiveMIL-Lite和Matrox Inspector
Matrox公司图像采集卡带有丰富的程序库—MIL-LITE(基本控制库)和 MIL(Matrox Imaging Library 模式识别库)[1],具有易于使用的特点。它通过引入“函数驱动层”,使源代码具有硬件无关性,可实现对Matrox不同图像采集卡以及不同CCD配置的操作和使用。在VC中调用图像采集卡的图像采集处理函数,就可以做到集成性好,信息获取直观,编程方便,实现图像采集任意存储的目的。故软件系统采用Windows XP操作系统作为系统软件运行平台,在Windows XP下,利用VC++语言编程[4-5]通过调用MIL库函数实现图像采集。
利用MIL库首先必须分配一个应用对象,相当于创建一个图像处理的控制和执行环境,在应用对象下可以建立多个系统,一个系统下可以建立多个数据缓存、数字转换器和数据显示,将图像文件读入数据缓存,将缓存内容放到指定的文件,这样就可以实现图像的任意存储和显示。其软件组织结构和流程图如图2所示。
图2 系统软件组织结构图Fig.2 Structure diagram of the software system
在建立程序框架之前,需要将图像采集卡自带的安装程序解压,再利用VC++的MFC应用程序向导生成多文档用户操作界面[6],命名该工程为My。再将图像采集卡文件夹里面的后缀名为.lib和.dll文件都复制到工程目录下面,这里用添加静态链接库的方法调用MIL库函数来实现的。用VC++6.0打开工程,在CMy.h中添加所需要的所有的头文件,在Project->Settings->Link目录下面的Category下面选择Input选项,然后将所有的.lib文件完全名称写入Object/Library Modules下面的编辑框中,再在下面的Additional Library Path中输入..lib,点击“OK”。这样,才可以正确调用MIL库函数。
在CMy.h头文件中添加定义:
在CMy.cpp源文件中对系统进行初始化:
在CMy.doc文件中的对MilImage进行初始化:
图3 软件设计流程图Fig.3 Flow chart of the software design
这里采用多线程编程[7]的方法通过外部的按钮控制图像采集的中断与继续。首先定义全局函数MilCreat来实现图像采集中的临时存放 buffer(MilImageContinuous[0],[1])的初始化。定义全局变量stop,初值为false(stop用来控制图像的采集与停止,stop的初始值为true,若stop为false表示开始采集,stop为true表示停止采集)。设置图像存储路径及名称后,调用如下线程:
线程函数的核心实现是通过一个for循环来实现,定义for(;;),循环结束事件为 stop=true。 实现如下:
这样就可以实现图像的实时显示与存储。根据不同的要求,也可以调用 Mil库中的 MbufExportSequence()函数将连续采集中的图像存储到一个文件中形成AVI视频流文件的格式,也可以存储成.raw格式。采集到的图像暂时存放在自己定义的buffer中,在保存到本地磁盘之前可以进行实时图像处理,也可以根据要求设置采集的时间和采集的帧数。
该测试系统用于某型航天项目实验室研制中的图像采集处理应用。使用时,首先运行该测试应用软件,初始化相关板卡后,然后通过点击主程序界面的相应的菜单测试按钮进行相应的图像采集处理功能。其中图像实时实现部分在程序启动后中间空白部分就一直显示CCD捕捉到的信息,但点击实时存贮时,图像会存贮在预先设定的计算机中的相应的目录下面;点击实时处理,可以调节图像的开窗大小等。程序面板的部分界面如图4所示。通过实验室应用发现,该测试系统测试结果准确、稳定可靠。
图4 软件界面图Fig.4 Interface chart of the software
该采集系统采用Matrox Meteor-II/Digital图像采集卡与计算机为硬件平台,软件设计采用VC++软件设计思想,提高了系统的可靠性和维护性。该测试系统已用于某航天项目实验室图像采集,实际应用表明该测试系统具有测试准确、稳定可靠、人机界面友好等特点,达到了设计要求。
[1]Matrox Electronic Systems Ltd.Matrox Meteor-II/Digital installation and hardware reference[S].CANADA,2002.
[2]吉志宏,刘晓平.基于图像卡的图像采集处理系统开发[J].仪表技术,2008(1):32-33,56.
JI Zhi-hong,LIU Xiao-ping.Development of image processing system based on image card[J].Instrumentation Technology,2008(1):32-33,56.
[3]关萍萍,翟正军,姜红梅,等.基于LabWindows/CVI测控系统通用报表的设计与实现 [J].计算机工程与设计,2010,31(1):203-205.
GUAN Ping-ping,ZHAI Zheng-jun,JIANG Hong-mei,et al.Design and implementation of universal control system report based on Labwindows/CVI[J].Computer Engineering and Design,2010,31(1):203-205.
[4]郑莉,董源.C++语言程序设计[M].北京:清华大学出版社,2001.
[5]李雁妮,陈平,王献青.C++程序设计语言[M].西安:西安电子科技大学出版社,2009
[6]黄维通.Visual C++面向对象与可视化程序设计[M].北京:清华大学出版社,2002.
[7]英特尔软件学院教材编写组.多核多线程技术 [M].上海:上海交通大学出版社,2011.
The research on real-time image grabbing and processing system of matrox Meteor-Ⅱ/Digital image grabbing board
WANG Shuang1, HU Bing-liang1, LIU Cai-fang1,2, WANG Cai-ling3, QIAN Qing-ming1,2
(1.Xi’an Institute of Optics and Precision Mechanics of CAS,Xi’an710119,China;2.Graduate University of Chinese Academy of Sciences,Beijing100084,China;3.School of Computer Science,Xi’an Shiyou University,Xi’an710065,China)
In order to solve the problem that real-time image process can’t be done with Matrox Meteor-II/Digital Image Grabbing,an real-time image grab and process system based on the image grabbing board has been proposed.The design of the system and software have been finished.The hardware platform of the system is consisted of CCD,Matrox Meteor-II/Digital Image Grabbing board and computer.The software has been developed with multi-thread program of VC++based on Matrox Imaging Library to realize the function of real-time continuous image grabbing,each frame storing theory and real-time image processing.It has been proved that this system performs and runs well in laboratory.
image grabbing board;continuous image grabbing;each frame storing;grabandprocesssystem;multi-thread program
TP302
A
1674-6236(2012)03-0071-04
2011-12-13 稿件编号:201112072
王 爽(1980—),男,陕西西安人,博士研究生,实习研究员。研究方向:信号与信息处理、光谱图像处理。