基于LabVIEW平台的实时图像采集与处理系统的应用
2016-10-14杨文祥杜昭平庄肖波
杨文祥,杜昭平,庄肖波
(1.江苏科技大学电子信息学院,江苏镇江212003;2.镇江比太系统工程有限公司江苏镇江212009)
基于LabVIEW平台的实时图像采集与处理系统的应用
杨文祥1,杜昭平1,庄肖波2
(1.江苏科技大学电子信息学院,江苏镇江212003;2.镇江比太系统工程有限公司江苏镇江212009)
针对工业领域里普通摄像机采集图片模糊不清、无法辨认等问题,提出了在LabVIEW、MATLAB和NI-IMAQ Vision软件平台下,利用USB摄像头、动态链接库以及NI-IMAQ Vision视频处理模块开发了一种实时图像采集处理虚拟仪器系统。系统对现场连续采集的视频和图像进行处理,包括对实时视频进行录制保存、拍照保存、抓拍截图保存以及LabVIEW调用MATLAB对保存的真彩图片进行增强处理。彩图增强方法是将彩色图像分解到R、G、B 3个灰度图,分别对3个灰度图分量进行增强处理,最后使用MATLAB的cat函数将R、G、B三分量整合成彩色图。实验结果表明,该系统采集图片快捷,能够改进彩图质量,提高肉眼对彩图的可视性。
LabVIEW;USB摄像头;动态链接库;MATLAB;增强
目前虽然国内视频采集技术已经相当成熟,但主要局限于视频监控这一领域,内嵌具有图像处理功能的配套系统却少之又少,加之图像采集与处理系统存在诸多弊端,例如:开发周期长、通用性差、成本高、采集到的图像模糊不清、无法辨认等问题。所以设计一款价美物廉、通用性强、性能稳定的图像采集与处理系统就显的尤为重要。
LabVIEW是通用的编程系统,使用图形化编程语言,用它开发的软件亦称虚拟仪器[1],能够提供广泛的接口,可以与DLL、MATLAB、Visual Basic等多种软件交互调用。LabVIEW同时附带扩展库函数,在自身配备的工具不能完成一些任务时,就可以调用专业的数据采集和处理工具包扩展库,进行强大的专业数学分析等。
为了满足工程需求,鉴于LabVIEW诸多功能优点,本系统采用美国国家仪器(NI)公司的虚拟仪器开发平台LabVIEW作为软件编程平台,采用NI-IMAQ Vision中的NIIMAQ模块、NI-IMAQdx模块以及普通的USB摄像头来实现视频图像的采集,通过调用动态链接库CameraDLL.dll以此实现对实时视频或图像进行抓拍截图保存功能,借助LabVIEW脚本与公式模块,采用MATLAB Script节点调用MATLAB图像处理算法以此实现对采集的图像进行增强处理[2],该系统具有操作简单、编程容易、易于开发等优点。
1 系统总体架构
使用LabVIEW图形化编程语言编写系统功能,使用NIIMAQ Vision中的NI-IMAQ模块、NI-IMAQdx模块以及普通的USB摄像头进行视频图像的实时采集与录制;通过调用动态链接库CameraDLL.dll对实时视频图像进行抓拍截图保存;借助LabVIEW脚本与公式模块中的MATLAB Script节点来调用MATLAB图像处理算法对实时图像进行增强处理。该系统可以分为两部分实现,一部分为上位机即测试用台式工控机,并且内置NI公司的LabVIEW专业版开发系统软件,主要完成视频图像的显示、拍照保存、视频录制保存、视频图像的截图抓拍保存与图像增强处理等任务;另一部分为下位机即工控机外置普通USB摄像头,主要完成对现场场景的实时采集等任务。其系统总体架构如图1所示。
图1 系统总体架构图
2 视频图像采集过程
视频图像采集、录制、抓拍截图等功能的实现需要使用到NI-IMAQdx模块和NI-IMAQ模块,这就要求用户软件平台安装NI公司的Vision Acquisition Software模块与Vision Development Module模块[3]。
2.1实时视频采集及拍照
实时视频图像采集及拍照局部框图程序如图2所示。其实现步骤如下:
视频采集:程序中Session In首先指定了包含连接于PC机全部的USB摄像头的字符串数组。系统默认选择数组的第一个元素即前面板Cam0为测试用USB摄像头。函数面板中使用IMAQdx Open Camera.vi连接并打开前面板选定的Cam0摄像头,加载摄像头的配置文件,继而使用IMAQdx Congigure Grab.vi来配置并开始采集图像。采集过程中通过IMAQdx Grab.vi获取输出图像的当前帧,IMAQ Create.vi对获取图像的子VI设置缓存空间。最后IMAQ Dispose.vi释放图像所占的缓存空间。视频图像采集完之后,使用IMAQdx Close Camera.vi停止获取图像并关闭USB摄像头。视频图像通过LabVIEW中的Image Display控件呈现在前面板上。
图2 实时视频采集及拍照框图程序
拍照:将IMAQ Create.vi缓存空间中的视频图像经由IMAQ Write File.vi按照选定的文件格式写入,图像格式有BMP、JPEG、PNG和TIFF等,在这里图片格式选择BMP类型[4]。在IMAQ Write File.vi的输入端口File Path处创建路径,即可在事件结构中将拍到的图像通过IMAQ Write File.vi按照指定的路径保存起来。拍照方式分为连续拍照和断续拍照两种方式。连续拍照:将IMAQ Write File.vi放置于事件结构中,在条件结构内设置一个加1加法器与事件结构外围的While循环构成移位寄存器,能够实现连续拍照,有序保存。断续拍照:将File Dialog设置好类型端口和提示端口后与IMAQ Write File.vi对应端口相连,置于事件结构中,即可实现按照自己设定的路径和图像名称来保存。
2.2实时视频录制
视频录制:首先用Vision Utilities中File下AVI里的IMAQ AVI Create.vi在条件结构内创建一个*.avi文件,用来保存将要存储的视频文件,然后经由While循环内的IMAQ AVI Write Frame.vi以每秒设定帧数将图片记录下来,写入到AVI引用句柄指定的AVI文件中,最后用条件结构内的AVI close.vi关闭AVI保存,即完成了实时视频的录制工作。为了使保存的视频或图片能够记录视频拍摄的时间,对于抓取到的图像添加时间文本[5]。程序中使用IMAQ Draw Text.vi将获取的时间添加至图像上,如图3所示。
图3 添加时间至图像上
2.3实时视频抓拍截图
系统通过调用相关子VI程序来实现截图,将子VI程序放入事件结构中,通过大循环外的截图按钮事件触发子VI程序实现截图[6]。动态链接库是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。关于截图子VI功能的编写,系统中使用的是调用动态链接库的方法。调用动态链接库方法:首先需要下载截图链接库CameraDll.dll,选择函数选板互连接口中的库与可执行程序,拖放调用库函数节点至函数面板中,右击库函数节点进行配置。经过试验发现链接库中CameraSubArea函数是截图的入口函数,继而对该链接库进行参数设置,设置函数的返回类型为整形,数据类型为有符号32位整形。截图过程判断:动态链接库中的截图函数的返回值设置为int型,该条件结构外添加了一个比较器,当截图动作完毕返回1,输出结果为真,触发条件结构程序;放弃截图动作则返回0,输出结果为假。
截图显示于前面板:首先创建一个调用节点于函数面板中,右击该调用节点选择剪切板中的获取图像,然后根据调用节点的剪切板中的获取图像的元素与按照名称捆绑相连,继而创建绘制平化像素图和二维图片控件,视频截图效果图,如图4所示。其中绘制平滑像素图是用来将剪切板上的图像数据绘制到二维图片控件上去。
图4 实时视频抓拍截图前面板效果图
3 实时图像增强处理的实现
为了弥补LabVIEW工具箱内图像处理算法的局限性,采用了LabVIEW和MATLAB混合编程[7]的方法,对采集到的图片进行增强处理。在LabVIEW中利用MATLAB Script节点调用MATLAB进行图像处理[8]的过程:在框图程序窗口中通过功能函数-数学-脚本与公式-MATLAB Script,打开MATLAB Script节点,通过添加输入输出完成MATLAB Script节点的参数传递,在节点边框上鼠标右击选择“添加输入”或“添加输出”,在此我们直接定义输入变量类型为path,设置原图像路径为输入量。
图5 LabVIEW与MATLAB混合编程图像处理前面板效果图
在系统程序框图中,现场采集到的彩图通过Read JPEG File.vi读入,经由Read JPEG File.vi的路径端口输出,通过一个Input节点传至MATLAB Script节点中,图像路径变量赋值给a,执行图像灰度变换,将彩色图像分解到R、G、B 3个灰度图,分别对3个灰度图分量进行增强处理[9],最后使用MATLAB程序中的cat函数将R、G、B三分量整合成彩色图,彩色灰度直方图均衡后的图像经由MATLAB显示函数输出图像[10]。Read JPEG File.vi的另一输出端为图像数据端,系统为了让原彩图能够实现窗口自适应大小,在图像数据端将图像数据按名称解除捆绑输出图像的4个簇元素:left,top,right,bottom。4个簇元素的输出经过数学运算处理后对图像高度和宽度进行了设置,最终将高度与宽度输出至图像的绘图区域大小属性,改变彩图的宽度和高度。图像显示是通过绘制平化像素图显示在LabVIEW的前面板上,从而完成MATLAB与LabVIEW的混合编程,实现彩图增强处理[11],其效果图如图5所示。
LabVIEW与MATLAB混合编程中MATLAB Script节点导入的MATLAB图像增强处理源程序分析[12]步骤如下:
第一步:在MATLAB Script上定义原彩色图像为路径变量a;
第二步:读取原彩色图像相关信息、测量原图像尺寸参数及显示原图像;
第三步:将彩色图像分解到R、G、B 3个灰度图[13],并分别对3个灰度图分量进行增强处理,以分量R灰度图增强为例。首先将原彩图图片转为灰度图,并将数据存入数组中,计算各灰度出现的概率,然后计算每级灰度出现的频率,将其存入gp中相应位置,随后计算新的各灰度出现的概率,最后计算Sk值,将Sk规划到最近的灰度,填充各像素点新的灰度值,最终将各个像素归一化后的灰度值赋给当前像素[14];
第四步:在图像处理中,使用MATLAB程序中的cat函数将R、G、B三分量整合成彩色图[15],并经由MATLAB显示函数输出图像。
4 结论
本文在LabVIEW、MATLAB和NI-IMAQ Vision软件平台下,使用USB摄像头、动态链接库函数以及NI-IMAQ Vision视频处理模块开发了一种实时图像采集处理虚拟仪器系统。通过NI-IMAQ Vision中的NI-IMAQ模块、NI-IMAQdx模块以及普通的USB摄像头完成了视频图像的采集、拍照及录制;通过调用动态链接库CameraDLL.dll实现了实时视频图像的抓拍截图保存;借助LabVIEW脚本与公式模块中MATLAB Script节点来调用MATLAB图像处理算法实现了彩图增强处理的目的。该系统提高了视频图像采集速率,丰富了图像采集与处理的功能,突破了常规视频监控模式,增添了图像增强处理功能,解决了工业领域普通摄像头采集图片模糊不清的问题,系统能够很好的应用到工业领域和日常生活中。
[1]郑对元.精通LabVIEW虚拟仪器程序设计[M].北京:清华大学出版社,2012.
[2]宋广东,王昌,王金玉,等.基于DLL技术和COM组件技术实现LabVIEW和MATLAB混合编程[J].计算机应用与软件,2013,30(1):287-289.
[3]郭漭,祝连庆,韩晓泉,等.基于LABVIEW的CMOS相机图像采集系统设计[J].自动化应用,2014(3):15-17.
[4]阚钰淇,张宁,徐熙平.LabVIEW平台下USB图像采集与处理系统设计[J].工业仪表与自动化装置,2013(6):80-83.
[5]吴仁涛,姜云海,左建勇.基于LabVIEW平台的USB视频采集方法与应用[J].工业仪表与自动化装置,2011(3):80-82.
[6]阚钰淇,徐熙平.基于LabVIEW的截图保存系统设计[J].设计与研发,2013(18):9-10.
[7]曲丽蓉,胡容,范寿康.LabVIEW、MATLAB及其混合编程技术[M].北京:机械工业出版社,2011.
[8]袁培铎.基于LabVIEW与MATLAB混合编程的应用研究[J].机械制造与自动化,2007(6):129-211.
[9]林振衡,宋骆林,黄元庆.基于LabVIEW的电子散斑干涉图像处理系统[J].厦门大学学报:自然科学版,2013,52(1): 43-47.
[10]陈霞,卫静婷.基于MATLAB的图像增强处理与应用[J].科技广场,2013(3):73-76.
[11]武剑,杜云刚,甘世明.MATLAB在虚拟仪器平台LabVIEW中的调用研究[J].科技信息,2011(21):523-524.
[12]宋玉婷.基于三维彩色直方图均衡化的彩色图像增强算法研究[D].山东:山东财经大学,2013.
[13]杨丹,赵海滨,龙哲,等.MATLAB图像处理实例详解[M].北京:清华大学出版社,2013.
[14]张涛,齐永奇.MATLAB图像处理编程与应用[M].北京:机械工业出版社,2014.
[15]任杰.彩色图像增强算法的研究与实现[D].武汉:武汉理工大学,2013.
Application of real-time image acquisition and processing system based on LabVIEW platform
YANG Wen-xiang1,DU Zhao-ping1,ZHUANG Xiao-bo2
(1.School of Electronic and Information,Jiangsu University of Science and Technology,Zhenjiang 212003,China;2.Zhenjiang Bittek System Engineering Co.,LTD,Zhenjiang 212009,China)
Focused on the issue that images collected by ordinary camera are blurred and unrecognizable in industrial field,a virtual instrumentation system is presented which uses USB camera,dynamic link library and NI-IMAQ Vision video processing module to complete real-time image collection and processing under LabVIEW,MATLAB and NI-IMAQ Vision software platform.The system deals with continuous collecting video and images on the spot,including real-time video recording preservation,camera preservation,capture screenshot preservation and the LabVIEW calling MATLAB to enhance the preserved true color images.Image enhancement method is to decompose color images to R,G,B three grayscales,respectively,to enhance three grayscale weight,finally use cat function of MATLAB to integrate R,G,B three components into color maps.The simulation results show that the system quickly collects color images and improves quality and visibility of color maps to naked eye.
LabVIEW;USB camera;dynamic link library;MATLAB;enhance
TN911.73
A
1674-6236(2016)12-0159-03
2015-12-06稿件编号:201512063
国家自然科学基金资助项目(61304249,61374063)
杨文祥(1990—),男,江苏盐城人,硕士研究生。研究方向:光电测控技术与仪器、虚拟仪器等。