基于LabVIEW图像匹配系统设计
2021-11-19张伟岗
张伟岗
(西安明德理工学院,陕西西安,710124)
0 引言
目前国内视频图像采集、图像匹配技术主要局限于视频监控领域,缺乏图像匹配处理功能,图像采集与匹配处理系统普遍存在开发周期长、通用性不佳、图像采集质量低难以辨认等问题,对图像采集与匹配处理系统进行设计和优化,使其具备较高的性价比及通用性,实现视频图像的较高质量和效率的采集具有重要的现实意义。LabVIEW作为通用性较高的编程系统(附带扩展库函数),可同多种软件交互调用,能够提供广泛的接口,并对专业数据采集和匹配处理扩展库进行调用,将其应用到图像采集系统,能够有效解决采集图片使用普通摄像机时存在画面不清晰难以辨认等问题。
1 系统总体架构
系统主要由上位机即测试用台式工控机和下位机即外置USB 摄像头的工控机,内置LabVIEW开发系统软件的上位机功能在于显示、拍照、视频录制、图像匹配处理及保存等,下位机的功能在于实时采集现场场景等,系统总体架构如图1所示。本文在设计图像采集系统时,系统功能的编写通过使用LabVIEW图形化编程语言完成,视频图像的实时采集与录制则通过使用USB摄像头、NI-IMAQ及NI-IMAQdx完成,对实时视频图像进行匹配处理时通过动态链接库的调用完成,实时图像的增强处理则通过MATLAB图像匹配处理算法的调用完成。
图1 系统总体架构图
2 图像采集过程的实现
2.1 实时图像采集及拍照
该部分的实现步骤如下:(1)采集视频图像:程序指定了所有USB摄像头的字符串数组,系统默认测试用USB摄像头使用数组首个元素,通过IMAQdx Open Camera.vi 在函数面板中对Cam0进行连接及打开,在完成摄像头配置文件的加载,接下来的配置并开始采集图像借助IMAQdxCongigure Grab.vi实现,具体图像采集过程中,输出图像当前帧使用IMAQdx Grab.vi获取,然后对获取图像的子VI进行缓存空间设置,再对图像所占的缓存空间进行释放,完成采集后关闭USB摄像头停止图像获取,最终通过Image Display控件将视频图像在前面板上展现。(2)拍照,通过IMAQ Write File.vi将视频图像按照选定格式写入,本文选用 BMP类型的图片格式,在File Path处完成路径创建,实现按照指定的路径通过IMAQ Write File.vi对所拍图像进行保存,拍照具体可分为连续和断续两种方式,将一个加1加法器设置于条件结构内结合While循环形成移位寄存器,从而实现连续拍照,并对其进行有序保存;设置File Dialog的类型端口和提示端口,分别连接IMAQ Write File.vi的对应端口,在此基础上置于事件结构中即可实现断续拍照,可自定义保存路径及图像名称。
2.2 实时视频录制的实现
为对需要存储的视频文件进行保存,需先选择Vision Utilities/File/AVI /IMAQ AVI Create.vi,在条件结构内完成 *.avi文件的创建,接下来以每秒设定帧数通过IMAQAVI Write Frame.vi对图片记录到AVI 引用句柄指定文件中,最终通过AVIclose.vi对AVI保存进行关闭处理,从而完成录制实时视频过程。对抓取到的图像进行添加时间文本操作,完成记录视频拍摄的时间,再通过IMAQ Draw Text.vi在图像上添加获取的时间。
2.3 实时视频抓拍截图的实现
(1)截图通过相关子VI程序的调用完成(具体通过截图按钮事件触发置于事件结构中的子VI程序实现),动态链接库作为程序模块的一种,其所封装的例程和资源能够被其它应用程序共享,系统通过调用动态链接库对截图子VI功能进行编写:先完成CameraDll.dll的下载,选用库与可执行程序,在函数面板中拖入调用库函数节点进行配置,通过试验确定截图的入口函数,接下来设置该链接库的参数。
(2)截图过程判断流程:设置截图函数返回值为int型,将比较器添加于条件结构外,触发条件结构程序时截图动作完毕返回1,放弃截图动作则返回0,截图在前面板显示,在函数面板中创建调用节点后右击选择剪切板中的获取图像,将其元素同按照名称捆绑相连,视频截图效果如图2所示。
图2 实时视频抓拍截图前面板效果图
3 实时图像增强处理的实现
由于LabVIEW工具箱处理图像的算法存在局限性,为进一步提高图像采集质量,本文对采集到的图片使用混合编程方法,通过LabVIEW和MATLAB进行图像增强处理,通过MATLAB Script节点实现MATLAB的调用并对图像进行处理的具体操作步骤为:选择功能函数/数学/脚本与公式/MATLAB Script,在框图程序窗口中打开MATLAB Script节点后,其参数传递通过对输入输出进行添加实现,本文将输入变量类型定义为path,输入量设置为原图像路。
通过使用Read JPEGFile.vi对现场采集到的彩图进行读取,并经由其路径端口完成图像输出过程,图像路径变量赋值给a,再经由Input节点完成到MATLAB Script 节点的传输,对图像进行灰度变换处理,实现彩色图像分别到R、G、B 3个灰度图的分解,对R、G、B灰度图分别进行增强处理使图像色彩更加饱和且真实的表现出来,接下来通过cat函数整合处理过后的R、G、B灰度图分量为彩色图,通过MATLAB显示函数对彩色均衡后的图像进行图像输出;为使采集到的不同大小的原彩图实现自适应系统窗口大小,按名称将图像数据在图像数据端解除捆绑,实现图像表示大小的4个基本簇元素的输出,通过数学运算方法对4 个簇元素的输出做进一步处理后,再将重新设置图像高度和宽度输出至图像绘图区域大小属性,从而完成原彩图宽度和高度的修改,系统在LabVIEW的前面板上通过平化像素图的绘制实现显示过程,实现基于混合编程的彩图增强处理过程。
4 结束语
为解决采集图片使用普通摄像机时存在画面不清晰难以辨认等劣势,本文结合使用结合使用MATLAB软件平台、USB 摄像头、动态链接库等对图像采集系统进行优化,对现场连续采集的视频和图像通过使用NI-IMAQ Vision视频处理模块进行处理,通过MATLAB的调用LabVIEW实现增强处理保存的真彩图片,提高了视频图像采集速率及彩图质量,丰富了图像采集与匹配处理功能。