基于LabVIEW的图像采集系统设计_何志杰

时间:2022-11-08 15:27:14  热度:0°C
收稿日期 2009 05 06 作者简介 何志杰 1982 男 福建福清人 硕士 福建师范大学物理与光电信息科技学院助教 基金项目 国家自然科学基金项目 编号 10575022 摘要 本文介绍了在 LabVIEW 软件平台下 利用具有通用 USB 接口的***头开发图像实时采集与处 理的虚拟仪器系统 在 LabVIEW 软件平台下 通过调用动态链接库驱动通用***头完成图像采集 同时 利 用 LabVIEW 在 PC 机上进行图像处理和显示 该系统具有灵活性强 可靠性高 性价比高等优点 关键词 LabVIEW 虚拟仪器 动态链接库 视频捕获 中图分类号 TN911 73文献标识码 A文章编号 1008 3421 2009 05 0012 06 基于 LabVIEW 的图像采集系统设计 何志杰 1 乐仁昌1 陈健俤1 陈清华2 1 福建师范大学物理与光电信息科技学院 福建福州350108 2 福建师范大学协和学院 福建福州350108 1引言 图像是人类通过视觉来感知外界事物 在人脑意识中形成的客观存在 是人类获取外部信息 的重要来源 随着科学技术的迅猛发展和生产力水平的大幅度提高 图像的采集和处理的应用领 域扩展到了人类生活和工作的方方面面 对于图像采集 NI 公司提供的图像处理工具包 IMAQ 具有强大的图像处理功能 在它的基础 上开发的虚拟仪器具有快捷 高效的特点 但是必须先安装 NI 公司配套的图像采集卡 LabVIEW 仪器驱动程序可以使用户不必学习各种仪器的低级编程协议 从而简化了仪器的控制 缩短了测 试开发时间 NI 公司的 IMAQ 产品为图像采集分析系统提供了完整的解决方案 然而 LabVIEW 配 套的图像采集卡成本较高 很多用户使用的并不是 NI 公司的图像采集卡甚至是自行研制的专用 图像采集卡 由于这些图像采集卡一般并不提供直接面向 LabVIEW 的驱动程序软件 而通常提供 面向许多常用的编程语言 如 Visual C Borland C 及 Visual Basic 的驱动程序软件 如果想利 用 LabVIEW 来开发基于非 NI 设备的应用程序 LabVIEW 与硬件设备的通讯的最佳方案就是采用 LabVIEW 中提供的动态链接库机制来实现 本系***立于 NI 公司昂贵的图像采集卡 采用通用的 USB ***头采集设备 应用 LabVIEW 平台开发图像采集系统 是一个崭新的尝试 扩展了虚拟仪器的应用范围 2系统总体设计 首先在 Visual C 6 0 软件开发平台下 根据视频捕获 Video For Windows 的相关知识 采用 动态链接库技术开发能够与通用 USB ***头采集设备通信的 DLL 文件 紧接着 在虚拟仪器 LabVIEW 8 0 平台下根据 CLF 调用编译生成的 DLL 文件 开发出具备设备连接 设备信息查询 图 像采集 显示等功能的模块 并利用这些模块实现 LabVIEW 平台上的图像驱动和采集功能 系统 结构框图如图 1 所示 福建师范大学福清分校学报 JOURNAL OF FUQING BRANCH OF FUJIAN NORMAL UNIVERSITY 2009 年第 5 期 总第 94 期Sum No 94 第 5 期 动态链接库 V F H H 通用 U S B***头L a b V I E W图像采集系统 图 1 系统结构框图 2 1VFW 简介 随着社会的发展 人们对多媒体技术的需求也越来越高 已经不满足单一的通信功能 要求影 像与声音的同步服务 如可视电话 视频会议 各种实时监控系统 报警系统等 而数字视频技术则 是多媒体技术的核心之一 微软推出的数字视频处理软件开发包 Video for Windows 大大简化了数 字视频捕获这一原本很复杂的工作 利用它可以很方便的将模拟视频信号数字化 并支持进一步 处理和播放 为开发实时视频应用程序开辟了道路 1 目前 Video For Windows 已经集成于 Windows 操作系统中 可以利用一些 API 函数来访问视 频设备 但必须在程序中连接头文件 vfw h 并且将 vfw32 lib 与应用程序相连 VFW 以消息驱动方式对视频设备进行存取 可以很方便地控制设备数据流的工作过程 目前 大多数的视频采集卡驱动程序都支持 VFW 接口 它主要包括多个动态连接库 通过这些组件间的 协调合作 来完成视频的捕获 视频压缩及播放功能 VFW 主要由以下 6 个模块组成 1 AVICAP DLL 主要实现视频捕获功能 包含了用于视频捕获的函数 为音像交错 AVI Audio video interleaved 格式文件和视频 音频设备程序提供一个高级接口 2 MSVIDEO DLL 能够将视频捕获窗口与获驱动设备连接起来 支持 ICM 视频编码服务 3 MCIAVI DRV 包含 MCI Media control interface 命令解释器 实现回放功能 4 AVIFILE DLL 提供对 AVI 文件的读写操作等文件管理功能 5 ICM Installable compression manager 即压缩管理器 提供对存储在 AVI 文件中视频图像数 据的压缩 解压缩服务 6 ACM Audio Compression Manager 即音频压缩管理器 提供实时音频压缩及解压缩功能 协调这 6 大模块之间的工作 可以完成视频图像的捕获 播放 编辑 文件管理等功能 2 2 2VC 6 0 下视频捕获动态链接库 DLL 的编写 DLL 是包含若干个函数的库文件 应用程序使用 DLL 中的函数之前 应该先导出这些函数 以 便供给应用程序使用 要导出这些函数有两种方法 一是在定义函数时使用导出关键字 declspec dllexport 微软在 32 位的 Visual C 上用 declspec dllexport 取代了原本 16 位版本上的 export 关键字 使用 declspec dllexport 关键字可以确定函数是否存在于 DLL 中 以便编译器可以生成跳 过间接寻址级别的 经常出现在跨 DLL 边界的函数调用中的代码 为方便使用 我们经常库文件中 进行宏定义 define EXPORT declspec dllexport 另外一种方法是在创建 DLL 文件时使用模块定 义文件 Def 3 4 本系统在 VC 6 0 编译环境下开发了 DLL 作为 LabVIEW 上位机与捕获设备驱动程序的通 信接口 实现了对图像的实时采集 以下描述了动态链接库中几个重要的功能模块 2 2 1初始化程序模块 初始化模块完成创建捕获句柄 连接设备 获取设备性能等一系列功能 部分源代码说明如 何志杰 基于 LabVIEW 的图像采集系统设计 13 福建师范大学福清分校学报2009 年 9 月 下 1 创建捕获窗口句柄 HWND hWndC NULL 捕获窗口句柄 hWndC capCreateCaptureWindow Webcam Capture Window WS CHILD WS VISIBLE 0 0 1 1 GetDesktopWindow 获取桌面窗口句柄作为捕获窗 口的父窗口 DeviceID 捕获设备序号 0 9 2 连接捕获设备 if capDriverConnect hWndC DeviceID DestroyWindow hWndC 销毁句柄 returnDriverConFail 连接设备失败 3 设置显示模式及速率 capPreviewRate hWndC CapRate 设置捕获速度 if capPreview hWndC TRUE capDriverDisconnect hWndC 断开连接 DestroyWindow hWndC 销毁句柄 return PreviewFail 预览失败 2 2 2获取捕获设备名称及版本信息 capGetDriverDescription DeviceID TempName sizeof TempName TempVersion sizeof Tem pVersion 2 2 3采集 保存当前帧图像信息 pImage VideoData lpData dwSize VideoData dwBytesUsed for i dwSize 1 i 2 i 3 RGB j pImage i RGB j pImage i 1 RGB j pImage i 2 2 2 4保存视频数据 capFileSetCaptureFile hWndC AVINAME 设置保存文件的文件名 capCaptureSequence hWndC 开始进行视频图象的捕获 2 3图像采集在 LabVIEW 上的实现 14 第 5 期 目前流行的虚拟仪器软件开发工具有两类 文本式编程语言有 C C VB LabWindows CVI 等 图形化编程语言有 LabVIEW AgilentVEE 等 其中 LabVIEW 最流行 是目前应用最广 发展最 快 功能最强的图形化软件 5 LabVIEW 是一个***性的图形化编程平台 它在数据采集 data acquisition 简称 DAQ 虚拟 仪器软件框架 virtual instrument software architecture 简称 VISA 通用接口总线 general purpose interface bus 简称 GPIB 及串口仪器控制 图像处理 运动控制 motion control 数据分析和图表显 示方面都具有强大的优势 2 3 1LabVIEW 对动态链接库的调用 在 LabVIEW 中开发设备驱动程序有 3 种方法 直接对端口进行读写 通过 CLF Call Library Function 节点调用 DLL 函数以及通过代码接口节点 CIN 调用由 C 语言编写的程序 6 使用代码接口节点时 LabVIEW 将其装载到主要应用程序相同的存储空间中 所以通过外部 的编译软件编译的 C 语言代码应当具有重定位性 这使得对 C 代码的编译环境有了一定的*** 当用户已经有了现成的 DLL 或自己有能力开发 DLL 文件时 可以采集动态链接库机制 它具 有增强 LabVIEW 程序接口驱动能力 模块化设计 升级维护方便和节省内存空间等优点 Lab VIEW 中调用 DLL 步骤如下 1 将经 Visual C 6 0 环境编译完成的动态链接库 VIDEO DLL 存入预定目录 2 在 LabVIEW 8 0 的流程图设计窗口中 选择功能模板中 Advance 子模板下的 Call Library Fun tion 节点 放置于流程图窗口中 其端口如图 2 所示 图 2Call Library Function 函数 3 双击 Call Library Funtion 函数模块 弹出对话框 正确填写 配置各参数 4 配置完毕之后 单击 OK 键 退出对话框 这样就成功调用了一个 DLL 文件 2 3 2LabVIEW 程序的编写 1 初始化模块 通过调用动态链接库中的初始化函数 Initi 在 LabVIEW 中实现系统的初始化工作 该函数 通过返回值来判断初始化工作状态 并在 LabVIEW 程序中通过对话框的形式告知用户 其部分 代码如图 3 所示 图 3系统初始化模块部分源代码 何志杰 基于 LabVIEW 的图像采集系统设计 15 福建师范大学福清分校学报2009 年 9 月 2 图像采集模块 通过调用 DLL 文件中的 GetCapInfo 函数 实现对当前帧图像数据的采集 传输 该函数以 一预定大小的 初始值为零的数组作为参数 通过 LabVIEW 界面前面板的指示灯来判断状态 该 模块部分源代码如图 4 所示 图4系统图像采集 传输模块 2 3 3系统运行结果 首先 接好通用 USB ***头 接着 在 LabVIEW 环境中 打开主程序 运行主界面如图 5 所示 图 5LabVIEW 运行主程序界面 3结束语 本文采用动态链接库机制在 Visual C 6 0 环境中编译生成了包括实现设备信息查询 连接 等功能的导出函数的 DLL 文件 经 LabVIEW 8 0 编译环境调试 成功实现了查询设备信息 连接设 备等功能 经实验证明 该部分功能函数在其它开发平台下 如 VB DEPHI 也可正常调用 同时 在上述开发成果的基础上 以通用 USB ***头采集图像为主要目的 在原先 DLL 文件的基础上添 加系统初始化 图像采集 图像传输 图像处理等功能函数 成功完成了基于 LabVIEW 的图像驱动 与采集系统 系统实现了图像的正常采集与处理功能 表明 DLL 在 LabVIEW 开发平台的重要性 总之 本系统已实现了图像采集 处理功能 对虚拟仪器来说 是一个崭新的尝试 扩展了虚拟仪器 的应用范围 同时 该系统具有灵活性强 可靠性高 性价比高等优点 参考文献 1 吴志军 马兰 沈笑云 Visual C 视频会议开发技术与实例 M 北京 人民邮电出版社 2006 297 306 16 第 5 期 2 郑东 陈淑珍 Windows 下的视频应用程序开发 J 数字化期刊 2000 17 3 98 100 3 孙济宇 张秀彬 江凌云 Windows 下实时图像捕获的两种方法 J 数字化期刊 2000 16 5 40 43 4 石峻 余松煜 Windows 环境下的实时视频捕获技术 J 数字化期刊 1999 25 8 5 杨乐平 李海涛 杨磊 LabVIEW 程序设计与应用 第 2 版 M 北京 电子工业出版社 2005 1 6 吴苗 许江宁 缪绣华 纪兵 基于 LabVIEW 的设备驱动程序开发技术研究 J 微计算机信息 测控自动化 2006 22 154 The Design of LabVIEW based Image Acquisition System HE Zhijie1 LE Renchang1 CHEN Jiandi1 CHEN Qinghua2 1 School of Physics and Opto electronic Technology Fujian Normal University Fu

郑重声明:
1. 《基于LabVIEW的图像采集系统设计_何志杰》内容来源于互联网,版权归原著者或相关公司所有。
2. 若《86561825文库网》收录的文本内容侵犯了您的权益或隐私,请立即通知我们删除。