收藏 分享(赏)

边干边学机器视觉 完整版.pdf

上传人:精品资料 文档编号:11142859 上传时间:2020-02-09 格式:PDF 页数:34 大小:2.24MB
下载 相关 举报
边干边学机器视觉 完整版.pdf_第1页
第1页 / 共34页
边干边学机器视觉 完整版.pdf_第2页
第2页 / 共34页
边干边学机器视觉 完整版.pdf_第3页
第3页 / 共34页
边干边学机器视觉 完整版.pdf_第4页
第4页 / 共34页
边干边学机器视觉 完整版.pdf_第5页
第5页 / 共34页
点击查看更多>>
资源描述

1、 i 目 录 第 1章 搭建机器视觉处理平台 1 1.1 选择相机 . 1 1.1.1 扫描类型(Scan type) 1 1.1.2 相机分辨率(Camera Resolution) . 2 1.1.3 相机的图像传输方式 . 3 1.2 选择图像采集板卡 . 5 1.3 选择软件处理平台 . 6 1.3.1 超高性价比的学习平台 . 7 1 第1 章 搭建机器视觉处理平台 1.1 选择相机 光源选择好了以后,下一步就是选择相机。通常,在工业相机的说明书上,会出现这样 的指标,如图 2.1 所示。 图 2.1 工业相机指标(来自 ) 下面本文将详述工业相机常见的指标,以帮助大家选择合适的相机

2、。 1.1.1 扫描类型(Scan type) 相机中的成像元件是 CCD芯片。如果 CCD芯片只有一行感光器件(如图 2.2 左所示), 换句话说,每次只能对物体的一条线进行成像,那么,这种扫描类型成为线扫描(line scan), 这样的相机称为线阵相机。如果 CCD芯片的感光区是个矩形阵面(如图 2.2 右所示),换句话 说,每次能对物体进行整体成像,那么,这种扫描类型成为面扫描(line scan),这样的相机 称为面阵相机。 图 2.2 面阵 CCD vs. 线阵 CCD 面阵相机的优点是价格便宜,处理方面,可以直接获得一幅完整的图像。线阵相机的优 点是速度快, 分辨率高, 可以实现

3、运动物体的连续检测, 比如传送带上的滤波等带状物体(这 种情况下,面阵相机很难检测);其缺点是需要拼接图像的后续处理。图 2.3 给出了线阵相 机的一个成像实例,以帮助大家更好的理解线阵相机的成像过程。 2图 2.3 线阵相机成像实例 按照扫描方式不同,面阵相机还可以分为隔行扫描(Interlaced scan)和逐行扫描 (Progressive Scan)。 隔行扫描方式下一幅完整图像分两次显示, 首先显示奇数场 (1、 3、 5) , 再显示偶数场(2、4、6) ,如图 2.4 所示。 + = 图 2.4 隔行扫描成像过程 隔行扫描相机的优点是价格便宜,但由于隔行扫描方式是先扫奇数场,再

4、扫偶数场,所 以隔行扫描相机在拍运动物体的时候容易出现锯齿状边缘或叠影。 逐行扫描相机则没有上述的缺点,由于所有行同时曝光,不会分先后,所以在拍摄运动 图像画面清晰,失真小。其余参数相似的情况下,逐行扫描相机要比隔行扫描相机贵。 1.1.2 相机分辨率(Camera Resolution) 分辨率是影响图像效果的重要因素, 我们一般用水平和垂直方向上所能显示的像素数来 表示分辨率,例如 640480。该值越大图形文件所占用的磁盘空间也就越多,从而图像的细 节表现得更充分。 与分辨率联系非常紧密的参数是视场(Field of View)和特征分辨率(Feature Resolution), 如图

5、 2.5 所示。视场是指能拍摄到的范围,特征分辨率是指能分辨的实际物理尺寸。 奇数场 偶数场 帧 3图 2.5 视场和特征分辨率 NI Vision Module中的图像算法要求,物体最小的特征需要两个像素来表示,根据视场 和相机分辨率,我们可以计算出特征分辨率。计算特征分辨率的公式为: 特征分辨率 = 视场/ 分辨 率 * 2 例如: 相机分辨率为 640 x 480, 横向的视场是 60mm, 那么在横向的特征分辨率为: 60/640*2 = 0.1875 mm。 1.1.3 相机的图像传输方式 按照不同的图像传输方式,相机可以大略的分为模拟相机和数字相机。 1 模拟相机 模拟相机以模拟电

6、平的方式表达视频信号, 如图 2.6 所示。 模拟相机现在使用非常广泛, 其优点是技术成熟、成本低廉、对应的图像采集卡价格也比较低。8-bit 的图像采集卡可以 提供 256 级的灰度,对于大部分的图像应用已经足够了。 图 2.6 模拟视频信号 模拟相机有四个非常成熟的标准: PA L、NTSC、CCIR 和 RS-170,如表 2.1 所示。里面 需要关注的参数有帧率、彩色/黑白、分辨率。 表 2.1 模拟相机标准 标准 使用地 帧率 帧/秒 彩色/黑白 分辨率 PA L 欧洲 25 彩色 768676 NTSC 美国、日本 30 彩色 640480 CCIR 欧洲 25 黑白 768676

7、 RS-170 美国、日本 30 黑白 640480 4 由表 2.1 可以用看出, 不同的标准对应不同的参数, 这些参数必须正确告知图像采集卡, 才能获得准确的图像。在 NI Measurement & Automation 中,可以根据 相机模拟图像的输出格式来配置图像采集卡,如图 2.7 所示。 图 2.7 配置图像采集卡 模拟相机也有一些缺点,比如帧率不高,分辨率不高等等。在高速、高精度机器视觉应 用中,一般都会考虑数字相机。 2 数字相机 数字相机先把图像信号数字化后通过数字接口传到电脑中。常见的数字相机接口有 Firewire、CameraLink、GigE和 USB。 Camer

8、a Link是一个工业高速串口数据连接标准,它是由 National Instruments、摄像头 供应商和其他图像采集公司在 2000 年 10 月联合推出的,它在一开始就对接线、数据格式、 触发、相机控制等做了考虑,所以非常方便机器视觉应用。Camera Link 的数据传输率可达 1Gbits/s,可提供高速率、高分辨率和高数字化率,信噪比也大大改善。Camera Link 的标准 数据线长 3米, 最长可达 10 米。 如果您是高速或高分辨率的应用, Camera Link 肯定是首选。 Firewire 即 IEEE1394,开始是为数字相机和 PC 连接设计的,它的特点是速度快

9、(400Mbits/s),通过总线供电和支持热插拔。另外值得一提的是,如果 PC 上自带 Firewire 接 口,那么不需要为相机额外购买一块图像采集卡了,这在成本上也是一种优势。 GigE,即千兆以太网接口,它似乎综合了高速数据传输和远距离的特点,而且电缆便 宜(网线)。缺点是支持这种接口的相机型号比较少,选择有限。 USB 相机较多的用在娱乐上,比如 USB 摄像头,USB 工业相机型号也比较少,在工业 中的使用程度不高。但正是因为 USB 摄像头超级低廉(不到 100 元人民币) ,所以本文把 USB 摄像头作为机器视觉学习的硬件平台,这样可以方便大家以低廉的成本进入机器视觉 5 领域

10、。 1.2 选择图像采集板卡 一般来说,选好相机后,图像处理板卡也就确定了。生产图像处理板卡的厂家非常多, 如果您的应用除了单纯的图像处理外, 还包括数据采集、 运动控制等要求的话, 选择 National Instruments公司的图像处理板卡是一个不错的选择。 因为所有功能都可以在一个统一的软件 平台(LabVIEW)和硬件平台(PXI)上完成,方便系统集成。 在 上提供一个相机选择助手,如图 2.8 所示。 图 2.8 相机选择助手 在相机选择助手选择相应的参数,如供应商、扫描模式、接口类型、分辨率等,就可以 查到到相应的应用比较成熟的相机,并且还可以比较同类型的相机。 点击到感兴趣

11、的相机页面,不仅可以获得相机相关的信息,还可以得到图像采集卡的推 荐,如图 2.9 所示。推荐的图像采集卡都是经过 NI 公司验证过的,所以可以把兼容性问题 降到最低。 6图 2.9 相机信息页面 1.3 选择软件处理平台 机器视觉处理软件有很多种,比如源代码开放的 OpenCV,Mathworks 公司的图像处理 工具包,Matrox 公司的 Imaging Library,National Instruments公司的 LabVIEW 等等。 如果目标是机器视觉算法研究,需要考虑软件的源代码是否开放。 如果目标是机器视觉系统的开发,需要考虑的因素有:图像处理函数库是否完备;发布 费用是否高

12、昂;使用是否方便;开发平台是否统一;与硬件结合是否容易;公司的售后服务 及技术支持是否到位等等。 机器视觉系统开发带有很强的试验性质, 通常需要多种处理算法混合在一起才能取得目 标效果,需要一边尝试一边开发。如果图像处理函数库不够完备,那么开发起来,处理过程 将受到很多限制。 商业的软件平台通常会收取发布费用,如果产品比较低端,那昂贵的发布费用将占去大 部分利润。 对于系统开发来说,商品的上市时间是一个重要的因素,大量的时间花在源代码的调试 上是一件得不偿失的事情,所以软件的易用程度和学习曲线将是一个重要的考虑因素。 7 机器视觉系统是一个涵盖机械、图像处理、数据采集和运动控制等的复杂系统,如

13、果开 发平台统一,容易集成诸如数据采集和运动控制等功能的话,那比较容易开发出功能更加复 杂、附加值更加高的产品。笔者在学生期间曾经做过一套系统,在 VC 下进行图像采集与处 理,用单片机系统实现数据采集,用 PLC 进行电机控制,然后用 RS485 进行通信。在这个 工程项目中,必须学习 VC,Keil C和 GXDeveloper 三种开发平台,且不说各模块功能的实 现,单是设计和开发通讯协议,就在三个平台间辗转反侧,花了很多精力和时间。 另外, 如果供应商的技术支持很好, 比如有免费 800 电话, 工程师现场支持等服务的话, 会非常有助于项目的开发。笔者在项目开发时,遇到问题的主要解决途

14、径就是 Google 和论 坛。 本文将介绍 National Instruments公司的 LabVIEW开发平台,在这个平台不仅可以学习 图像采集、图像处理及机器视觉,学完后还能将所学到的知识和技能直接用于机器视觉系统 的开发。 1.3.1 超高性价比的学习平台 前文中提到,USB 摄像头常用于家庭娱乐,但由于其价格低廉,非常适合做学习机器 视觉的入门级硬件。本节将介绍 LabVIEW 平台下,如何利用 USB 摄像头学习机器视觉的 方法。 1. 买一个支持 DirectShow的 USB 摄像头,就是 QQ 聊天的那种,免驱的。我买的是剑桥 A36 Pro,不到 100 元 RMB。 2

15、. 安装 LabVIEW7.1 以上的版本,参加任何的 NI 研讨会都可以拿到 LabVIEW 的试用光 盘,也可以到 http:/ 3. 安装 NI Vision Development Module,参加 NI 机器视觉研讨会就可以拿到 Vision Development Module的试用光盘, 或者到网上去下载, 需要注意的是 Vision Development Module 的版本号要和 LabVIEW 对应,比如 LabVIEW 使用的是 8.2,那么 Vision Development Module也要使用 8.2。 4. 到 http:/ NI-IMAQ for USB

16、Cameras,这是 在 LabVIEW下,支持 DirectShow的 USB Camera 的驱动并安装。 5. 如果您用的是中文WinXP SP2 操作系统,还需要到 http:/ g&page=5 去下载一个 dll 文件(ImaqDirectShowDll),并用该文件覆盖 system32 文件夹 下的同名文件。 上述系统的总花费就是一个可以用于 QQ 聊天的 USB 摄像头。 当系统配置好后,可以到 C:Program FilesNational InstrumentsLabVIEW 8.5examplesIMAQ文件夹下,双击 imaqUSB examples.llb 文件,打

17、开 Grab.vi,然后运行。 如果运行成功,则可以获得图像,如图 2.10 所示。 如果不成功,可以到 http:/ 版上有很多热心的工程师,会帮您解决问题。 8图 2.10 USB Camera Grab.vi i 目 录 第 1 章 搭建机器视觉处理平台 1 1.1 选择光源 . 1 1.1.1 常见的光源类型 . 1 1.1.2 照明效果的优化 . 5 1.1.3 光源评估服务 . 7 1 第1 章 搭建机器视觉处理平台 通常,典型的机器视觉系统由以下四个部分光源、相机、图像采集卡和图像处理软 件组成,如图 1.1 所示。 图 1.1 典型的 机器视觉系统 作为机器视觉系统开发工程师,

18、我们必须根据实际需要选择好光源,相机,图像采集卡和图 像处理软件。下面本文将依次介绍如何选择光源,相机,图像采集卡和图像处理软件,并介 绍一种对初学者来说性价比非常高的学习方案。 1.1 选择光源 刚接触机器视觉系统时可能无法意识到光源选择恰当与否直接关系到系统的成败。例 如,把 10 斤红豆(待观察的对象特征)、10 斤绿豆(不需要关注的物体)和 10 斤沙子(噪声)混 合在一起让你在三分钟内把 10 斤红豆筛选出来和把 10 斤红豆、1 斤绿豆、1 斤沙子混合在 一起让你在三分钟内把 10 斤红豆筛选出来,谁更容易些?显然干扰少(绿豆),噪声低(沙子) 的工作才能干的又快又好! 选择光源的

19、目标就是:1、增强待处理的物体特征; 2、减弱不需要关注的物体和噪声的干扰; 3、不会引入额外的干扰。 以获取高品质、高对比度的图像。 按照明方式的不同,光源可以分为:直接照明光源、散射照明光源、背光照明光源、同 轴照明光源和特殊照明光源。下面,本文将依次介绍各种不同的光源。 1.1.1 常 见 的 光源类 型 1 直接照明光源 直接照明光源就是光源直接照射到被检测物体上,它的特点是照射局域集中、亮度高和 安装方便,可以得到清楚的影像。常见的直接照明方式有沐光方式、低角度方式、条形方式 和聚光方式。 沐光方式 沐光方式常用的是 LED环形光源,如图 2.1 所示。高密度的 LED 阵列排列在伞

20、状结构 中,可以在照明区域产生集中的强光。 图 2.1 的右方部分是 LED环形光源的安装部分,其中被检测的物体应该在图中的 Work 区域。 2图 2.1 LED 环 形光源, 沐光方式( 引自 www.ccs-inc.co.jp) 该种照明方式的优点是亮度大、灵活、容易适应包装要求;缺点是:阴影和反光;常见的应 用是:检测平面和有纹理的表面。其照明效果如图 2.2 所示,左边是实物图,右边是照明效 果图,可以看到,在沐光方式下,芯片表面的字迹显示的非常清晰。 图 2.2 沐光方 式照明效果( 引自 www.ccs-inc.co.jp) 低角度方式 低角度方式常用的也是 LED 环形光源,如

21、图 2.3 所示。与沐光方式用的环形光源不同 的是,它更大,安装的角度更低,接近 180 度。 图 2.3 低角度 方式( 引自 www.ccs-inc.co.jp) 低角度方式下, 光源以接近 180 度角照明物体, 容易突出被检测物理的边缘和高度变化。 该种照明方式的优点是凸显表面结构,增强图像的拓扑结构;缺点是:热点和极度阴影;常 见的应用是:检测平面和有纹理的表面。其照明效果如图 2.4 所示,左边是实物图,右边是 照明效果图可以看到,在低角度方式下,硬币的边缘及字迹的边缘显示的非常清晰。 3图 2.4 低角度 方式照明效果( 引自 www.ccs-inc.co.jp) 条形方式 条形

22、方式常用的是 LED条形光源,如图 2.5 所示。条形方式除具备沐光方式的优点外, 其安装角度还可以按照需要进行调节。通过调节光线的角度和方向,可以检测到被测物体表 面是否有光泽,是否有纹路,也可以检测到表面特征。 图 2.5 条形方式( 引自 www.ccs-inc.co.jp) 聚光方式 聚光方式主要是在条形光源上加入一个柱型透镜,把光线汇聚成一条直线,以产生高亮 度线光源,如图 2.6 所示。线性聚光方式常常配合线阵相机获得高质量的图像。 图 2.6 聚光方式( 引自 www.ccs-inc.co.jp) 2 散射照明光源 对于表面平整光洁的高反射物体,直接照明方式容易产生强反光。散射照

23、明先把光投射 到粗糙的遮盖物上(比如漫射板),产生无方向、柔和的光,然后再投射到被检测物体上,如 图 2.7 所示。这种光最适合高反射物体。 4图 2.7 散射圆 顶照明 低角度方式 与前述直接照明的低角度方式不同, 散射方式的光源先经过内壁散射之后再均匀的照射 到物体上,在提供均匀照明的同时,有效的消除了边缘的反射,如所示。 图 2.8 散射照 明中的低角度方式( 引自 www.ccs-inc.co.jp) 上述的照明方式常用于 BGA焊点检测,芯片管教检测等应用,图 2.9 是 BGA焊点的成 像实例,在图中可见,在低角度散射照明下,BGA的焊点清晰且没有反光。 图 2.9 BGA 焊 点

24、的成像实例( 引自 www.ccs-inc.co.jp) 扁平环状方式 扁平环状方式是在光源前面加了一块漫反射板,光源经过反射后再经过漫反射板,可以 形成均匀漫射的顶光,避免了眩目光和阴影,如图 2.10 所示。 图 2.10 扁平环 状方式 5 圆顶方式 圆顶方式如 图 2.11 所示,最适合表面有起伏、光泽的被测物体的文字检查。 图 2.11 圆顶方 式 3 背光照明光源 背光照明方式下,光源均匀的从被检测物体的背面,可以获得高清晰的轮廓,常用于物 体外形检测、尺寸检测等等,如图 2.12 所示。 图 2.12 背光照 明方式及其成像实例 4 同轴照明光源 LED 的高强度均匀光线通过半镜

25、面后成为与镜头同轴的光,如所示。具有特殊涂层的 半镜面可以抑制反光和消除图像中的重影,特别适合检测镜面物体上的划痕。 图 2.13 同轴照 明光源 5 特殊照明光源 特殊照明光源包括平行光光学单元、 显微镜专用照明系统和按照客户要求定制的光源等 等。 1.1.2 照 明 效 果的优 化 当选择好一款光源类型后,还可以利用很多技术来最优化检测结果。 6 1 颜色 对于不发光体来说又可分为透明体和不透明体两种,大部分是不透明体。不透明体都 具有反射或吸收不同波长的色光的能力,被吸收掉的色光我们是看不见的。只有反射回来的 色光才直接作用于我们的眼睛, 所以我们看到的不透明体的颜色是反射光的颜色, 这

26、就是 “反 射色” 。如果用红光照射红色的物体,能得到最高的亮度;若用红色光照射绿色物体,可以 得到最低的亮度,或者说图像几乎是黑色的,因为绿色物体基本不反射红色光。在图 2.14 所示彩色轮展示了色彩之间的对应情况。用一种颜色照射它相对的颜色,基本是黑色;照射 其它颜色,物体亮度依次增加;照射同样的颜色,可以得到最大的亮度。 图 2.14 彩色轮 所以,适当的选择光源颜色,可以增强图像的对比度。图 2.15 展示了 BGA 焊点分别 在红色光和蓝色光下的成像实例;在红色光下,芯片中央的条纹依然清晰可见(图中),这为 引脚检测引入了一些干扰;在蓝色光下,芯片中央的条纹基本看不见了,仅留下 BG

27、A焊点 的影像,便于后续检测。 图 2.15 BGA 引脚分别在红色光和蓝色光下的成像实例 2 滤光镜 消除不必要的数据和噪声可以加快有用信息的处理速度。 滤光镜是一个简单的限制进入 相机光线的技术。常见的滤光镜有偏光镜、波通镜和阻隔镜。它们的作用类似滤波器,滤掉 符合一定条件的信号。 图 2.16 展示了偏光镜消除眩光的一个成像实例。在相机镜头前添加偏光镜,旋转偏光 镜到眩光最小的地方;如果眩光还影响检测,则可以再加一个偏光镜知道图像清晰为止。 7 图 2.16 偏光镜 消除眩光的成像实例 1.1.3 光源评估 服 务 在选择光源的时候,如果感觉拿不准,可以把样品提供给光源提供商,光源提供商

28、会在 光源实验室里面为大家选择合适的光源。 i 目 录 第 3 章 图像采集 1 3.1 采集单 幅图 像 1 3.1.1 基于图 像采 集卡 的 Snap 操作 1 3.1.2 基于 USB 摄 像头 的 Snap 操作 3 3.1.3 使用 Snap.vi 进行 连续 图像 采集的 速度 问题 4 3.2 采集连 续图 像 5 3.2.1 基于图 像采 集卡 的 Grab 操作 6 3.2.2 基于 USB 摄 像头 的 Grab 操作 7 3.3 多缓冲 区采 集方 式 8 3.3.1 Sequence 图 象采 集方 式 . 9 3.3.2 Ring 图象 采 集方 式 . 10 3.

29、4 触发 11 3.4.1 触发信 号类 型 . 11 3.4.2 触发方 式图 象采 集的 实现 . 12 3.5 图像保 存与 读取 14 3.5.1 图像文 件格 式简 介 . 14 3.5.2 保存图 像 . 15 3.5.3 读取图 像 . 16 1 第3 章 图像采集 当选定好机器 视觉的软硬 件平台后,下 一步就是图 像采集。 本章 将详细讨论 基于 USB 摄像头 的图 像采 集和 工业 相机的 图像 采集 , 大家 可以 根据手 中硬 件的 不同 而选 读不同 的部 分 。 从软件 的视 角来 看, 尽管 硬件不 同, 但编 程的 思路 和模式 是基 本一 致的 。 本文使

30、用的 工业 相机 是 Panasonic 的 BP330 ,它 是一 款遵循 CCIR 标准的 黑白 相机,图 像采集 卡是 NI 公司 的 PCI-1407( 任何标 准制 式的 黑白 模拟相 机都 可以 接到 PCI-1407) 。 把相 机连接 到 PCI-1407 后,即 可在 MAX 下找到 PCI-1407 ,点击 Grab 按 钮, 还可 以采集 到图 像,如 图 3.1 所 示。 图 3.1 在 MAX 里面采集图像 如果你 使用 的 是 USB 摄 像 头,那 么请 参 考 Error! Reference source not found.Error! Reference

31、source not found. , 运 行 imaqUSB examples.llb 中的 Grab.vi 。 在软 硬件 正常工 作的 情况下 , 可 以看 到从 USB 摄像头 中传 出的 图像 , 如 Error! Reference source not found. 所示 。 在进行 机器 视觉 系统 开发 前, 我 们通 常都 会如 上所 示先验 证软 硬件 是否 能正 常工作,以 便后续 开发 。 3.1 采 集单 幅图像 3.1.1 基于图像采集卡的 Snap 操作 采集单 幅图 像是 基本 的图 像采集 操作 之一 , 对 应的 动作 叫 Snap 。 每次 Snap 时

32、, 图 像数 据先从 相机 传到 图像 采集 卡,然 后再 传到 计算 机的 内存( 图 像处 理缓 冲区) 中去 ,如 图 3.2 所 示。 2 图 3.2 Snap 方式采集图像过程 Snap 方式 的图 像采 集程 序 如 图 3.3 所 示: 第 1 步 :调 用 IMAQ Init.vi 完成图 像采 集板 卡的 初始 化工作 。 第 2 步 :调 用 IMAQ Create.vi 为图像数 据创 建一 个 数据缓 冲区 。 第 3 步 :调 用 IMAQ Snap.vi 从图像采 集板 卡中读 入 一帧图 像数 据, 并把 它放 入先前 创 建的数 据缓 冲区 中, 并放 入 Im

33、age 中显 示。 第 4 步: 当图 像数据 缓冲 区被释 放后 , 我们在 前面 板上将 看不 到采 集的 图像 了, 所以 特 地添加 一个 人为 的延 时程 序,等 待用 户停 止。 第 5 步 :调 用 IMAQ Close.vi ,释放占有 的图 像采 集 板卡。 第 6 步 :调 用 IMAQ Dispose.vi ,释放占 有的 图像 数 据缓冲 区 。 图 3.3 Snap 范例程序 单幅图 像采 集的 运行 结果 ,如 图 3.4 所示 。 图 3.4 单幅图像采集 3 读到这 里 , 大 家可能 跟我 一样都 有一 个疑 问, 为什 么必须 有第 二步 和第 六步 , 即

34、 创建 图 像数据 缓冲 区和 释放 图像 数据缓 冲区 。 这 是因 为每 帧图像 的数 据量 都特 别大 , 如果 在处 理图 像的过 程中 直接 传递 图像 数据, 则非 常耗 时。 最 好的 方式是 仅仅 传递 指向 该数 据缓冲 区的 引 用 。 IMAQ Create.vi 完成的 就是创 建图 像数 据缓 冲区 并返回 指向 该数 据缓 冲区 的引用 的 过 程 。 3.1.2 基于 USB 摄像头 的 Snap 操作 USB 摄 像头的 Snap 操作 的程序 实现 与上 面的 基本 相同 , 只需 要用 IMAQ USB 函 数选 板中的 函数 替代 相应 步骤 即可, 如

35、图 3.5 所示 。 图 3.5 USB 摄像 头 Snap 范例 程序 USB 设备 在 正常 工作 以前, 第一 件要 做的 事就 是枚 举 ,所 以 USB 摄像 头在 进 行初始 化 前,需 要先 执行 第 0 步, 枚举系 统中 的 USB 摄 像设 备,接 着: 第 1 步 :调 用 IMAQ USB Init.vi 完成 USB 摄 像设 备 的初始 化工 作。 第 2 步 :调 用 IMAQ Create.vi 为图像数 据创 建一 个 数据缓 冲区 。 第 3 步 :调 用 IMAQ USB Snap.vi 从 USB 摄像 设备 中读入 一帧 图像 数据 ,并 把它放 入

36、先前创 建的 数据 缓冲 区中 ,并放 入 Image 中显示 。 第 4 步 : 当图 像数据 缓冲 区被释 放后 , 我们在 前面 板上将 看不 到采 集的 图像 了, 所以 特 地添加 一个 人为 的延 时程 序,等 待用 户停 止。 第 5 步 :调 用 IMAQ USB Close.vi ,释放 占有 的 USB 摄 像设 备。 第 6 步 :调 用 IMAQ Dispose.vi ,释放占 有的 图像 数 据缓冲 区。 USB 摄像 头 Snap 范 例程 序运行 结果 如 图 3.6 所示 。 4 图 3.6 USB 摄像 头 Snap 范例 程序运行结果 3.1.3 使用 Sn

37、ap.vi 进行 连续图像采集的速度问题 在 实际 工程 应用 中, 连续 图像采集 的 应用 占绝 大多 数。当 我们 会使 用 Snap.vi 后,很 自 然的想 到最 简单 的连 续采 集图像 实现 方式 是 把 Snap.vi 放到 While 循环 中, 如 图 3.7 所示 。 图 3.7 使用 Snap 进行连续图 像采集 在 While 循 环中 ,加 入 可以计算 每次 循环 消耗 的时 间。 运 行上 述程 序, 可以看 到使 用 Snap 进行 连 续图像 采集 时 , 获 得每 帧 图像所 消耗 的时 间高 达 120ms( 不同的系 统,时 间略 有不 同),如图 3

38、.8 所 示。 换句 话说 , 在这种 方式 下, 每秒 钟只 能获得 大约 8 帧 图像, 这种 速度 在大 多数 实际应 用中 是不 能容 忍的 。 5 图 3.8 120ms 采集一帧图像 为实现 高速 的连 续图像 采 集,NI Vision Module 提 供了一 个专 用于 连续 图像 采集 的 VI , IMAQ Grab Acquire.vi , 。下节本 文将 详述 如何 进行 连续图 像采 集 。 3.2 采 集连 续图像 IMAQ Snap.vi 运行速 度之 所以会 慢, 是因 为 IMAQ Snap.vi 除了实 现图 像数 据 采集的 操 作外, 还实 现了 许多

39、 初始 化和资 源释 放的 操作 ,大 家可以 双击 IMAQ Snap.vi ,看看 IMAQ Snap.vi 的实 现过 程, 如 图 3.9 所 示。 图 3.9 IMAQ Snap.vi PS. 看 NI 提供的 VI 的内部实现方式是一种很好的学习方式。 代码阅读 了解了 速度 慢的 原因 后, 很自然 的想 到 , 既然 是连 续采集 , 何不 把许多 雷同 的初始 化 操 6 作提取 出去 , 在每 次连 续采 集开始 时 , 仅 做一 次初 始化 就可以 。 为实 现快 速的 连续 图像采 集, NI Vision Module 提 供 了 两 个 VI,一个是 IMAQ Gr

40、ab Setup.vi ,另一个是 IMAQ Grab Acquire.vi 。 IMAQ Grab Setup.vi 负责每次 连续 采集 前的初 始化 ,IMAQ Grab Acquire.vi 专 注于图 像采 集。 3.2.1 基于图像采集卡的 Grab 操作 基于图 像采 集卡 的 连 续图 像采集 的实 现代 码如 图 3.10 所示 。 图 3.10 连续图像数据采集 第 1 步 :调 用 IMAQ Init.vi 完成图 像采 集板 卡的 初始 化工作 。 第 2 步 :调 用 IMAQ Grab Setup.vi 初始化 Grab 过程。 第 3 步 :调 用 IMAQ Cr

41、eate.vi 创建图像 数据 缓冲 区 。 第 4 步 :调 用 IMAQ Grab Acquire.vi 快速 采集 图像 数 据。 第 5 步 :调 用 IMAQ Close.vi ,释放占有 的图 像采 集 板卡。 第 6 步 :调 用 IMAQ Dispose.vi ,释放占 有的 图像 数 据缓冲 区。 使用 IMAQ Grab Acquire.vi ,采集 每帧 图像 的时 间从 120ms 降到了 40ms ,如 图 3.11 所 示。 7 图 3.11 IMAQ Grab Acquire 运 行结果 3.2.2 基于 USB 摄像头的 Grab 操作 同上 ,USB 摄 像头

42、 的 Grab 操作的 程序 也与 基于 图像 采集卡 的实 现过 程基 本相 同,如 图 3.12 所示 : 第 0 步 :调 用 IMAQ USB Enumerate Camera.vi 枚举 USB 摄 像头 。 第 1 步 :调 用 IMAQ USB Init.vi 完成 USB 摄 像头 的 初始化 工作 。 第 2 步 :调 用 IMAQ USB Grab Setup.vi 初始 化 Grab 过程。 第 3 步 :调 用 IMAQ Create.vi 创建图像 数据 缓冲 区 。 第 4 步 :调 用 IMAQ USB Grab Acquire.vi 快速 采集 图 像数据 。

43、第 5 步 :调 用 IMAQ USB Close.vi ,释放 占有 的 USB 摄 像头 。 第 6 步 :调 用 IMAQ Dispose.vi ,释放占 有的 图像 数 据缓冲 区。 8 图 3.12 USB 摄像头的连续图 像采集过程 使用 IMAQ USB Grab Acquire.vi 实现连续 图像 采集 后,采 集每 帧图 像的 时间 下降到 了 35ms 毫秒左右 ,如 图 3.13 所示。 图 3.13 USB 摄像头连续图像 采集结果 3.3 多 缓冲 区采集 方式 从前面 的章 节中 , 我 们学 会了如 何采 集图 象。 在高 速图象 采集 应用 中, 我们 会发现

44、 前 面 的 Grab 方式 会存 在一 个问 题, 即 当图 象采 集速 度非 常高时 ,处 理程 序还 来不 及处理 当前 的 图象, 图象 缓冲 区里 面的 数据已 经被 新的 图象 数据 所覆盖 了。 9 为了解 决采 集缓 冲区 不足 的问题 , 我们 很自 然的 想到 一个解 决方 案 增 加图 象采集 缓 冲区。 NI-IMAQ 提供 了两 种多 缓 冲区的 方式 ,一 种是 Sequence , 另一 种是 Ring ,如 图 3.14 所示。 图 3.14 多缓冲区图象采集方 式 Sequence 和 Ring 都是 多 缓冲区 图象 采集 方式 ,它 们的区 别是 ,Seq

45、uence 是 单次采 集, 而 Ring 是 连续 采集 ,类 似 Snap 和 Grab。 在 Ring 方 式下 , 当 一个 buffer 中的数 据正 在被 处理 时,新 采集 到的 图象 数据 会更新 到 另外 的 Buffer 中 去。 下面本 文将 依次 介 绍 Sequence 和 Ring 的实 现方 式。 3.3.1 Sequence 图象采集 方式 Sequence 图 象采 集方 式由 IMAQ Sequence.vi 实现, 如 图 3.15 所 示。 图 3.15 IMAQ Sequence.vi IMAQ Sequence.vi 最重要 的参数 是 Images

46、 In,如 图 3.16 所示。Images In 是一个图象 数 据缓冲 区引 用数 组, 里面 包含了 多个 由 IMAQ Create.vi 创建的图 象数 据缓 冲 区的引 用。 只 有知道 多个 图象 数据 缓冲 区在哪 里,IMAQ Sequence.vi 才能完成 多缓 冲区 模 式的图 象采 集 。 10 图 3.16 IMAQ Sequence.vi 参数 Sequence 图 象采 集方 式的 完整实 现 , 大 家可 以参考 范例程 序中 的 HL Sequence.vi,如 图 3.17 所 示。 第 1, 4, 5 步 是大 家熟 悉 的初始 化图 象采 集卡 , 释

47、 放图象 采集 卡和 释放 图象 缓冲区 的程 序。 第 2 步是 调用 IMAQ Create.vi 创建多个图 象数 据缓 冲区, 需要 注意 的是 ,多 个图象 数 据缓冲 区的 名字 必须 不一 样。 第 3 步是调用 IMAQ Sequence.vi 采集多帧 图象 数据 ,当指 定数 量的 图象 采集 完毕后 , IMAQ Sequence.vi 会返回 并结 束 Sequence 采集 过程 。 图 3.17 HL Sequence.vi 3.3.2 Ring 图象采集方式 Ring 图象采集方式需要由三个 VI 来 实 现 , 它 们 分 别 是 : , 和 。 IMAQ Co

48、nfigure List.vi 完成缓冲 区列 表的 配置 , 告 诉驱动 程序 缓冲 区的 数量(Number of buffers) , 以 连 续 还 是 单 次 的 方 式 进 行 图 象 采 集(Continuous?) 以 及 缓 冲 区 的 位 置(Memory Location) 。 IMAQ Configure Buffer.vi 把创建 好的 图象 缓冲 区分 配到缓 冲区 列表 的对 应位 置上。 11 IMAQ Extract Buffer.vi 把采集到 的图 象从 缓冲 区中 提取 出来 ,为 后续 图象 处理 做 准备 。 与上节 思路 相同 ,我 们打 开范例

49、程序 中 的 LL Ring.vi ,学习 Ring 图 象采 集方 式的实 现 方法, 如 图 3.18 所示( 由于 文档宽 度的 关系 ,仅 把关 键部分 代码 进行 截图 分析 ,以下 同) 。 图 3.18 LL Ring.vi 第一步 ,调 用 IMAQ Configure List.vi 告诉驱动程 序 是以 Continuous 的 方式 进 行图象 采 集,缓 冲区 的位 置 在 System 就是开 发应 用程 序 的主机 上。 第二步 ,调 用 IMAQ Configure Buffer.vi 把创建好 的 图象缓 冲区 关联 到缓 冲区 列表的 对 应位置 上 。 第三步 ,调 用 IMAQ Start.vi 开启一个图象 采集 的过 程,需 要注 意的 是, 在调 用 IMA

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报