图像处理、分析与机器视觉
上QQ阅读APP看书,第一时间看更新

3.2 NI-MAX与相机驱动

图像数字化设备完成对图像的数字化后,就将图像以数据流的方式通过总线传送给计算机。随后,在驱动软件的支持下,开发人员就可以从源源不断传来的数据中“抓取”一帧一帧的图像放至事先分配好的内存中,进行与机器视觉相关的分析处理。

从软件开发的角度来看,为了能获取图像数据,需要先建立与硬件的连接。这可以通过“打开”并配置图像采集设备来完成。硬件的配置信息可以使驱动软件控制硬件,并正确解析传送至计算机的数据。配置信息通常保存在配置文件中,内容包括获取数据的硬件通道或端口、图像的大小、像素位深度、抓取速率和抓取方式等。它也决定了可以对打开设备所返回图像数据的操作,例如,若打开设备返回的是RGB彩色图像,就不能直接对图像进行某些灰度运算。一旦建立了与硬件的连接,就可以抓取图像数据至事先分配好的图像缓冲区中,使用机器视觉或图像处理分析函数对其进行分析处理。如果不再需要采集图像,就可以释放事先分配的缓冲区,并关闭已经打开的设备。

基于LabVIEW开发机器视觉应用时,需要使用NI视觉软件。NI视觉软件包括NI视觉采集软件NI Vision Acquisition Software、NI自动化和测量设备管理器NI Measurement & Automation Explorer(简称NI MAX)、NI视觉开发模块NI Vision Development Module和NI自动检测视觉生成器NI Vision Builder AI。这些软件分别从不同的层面支持机器视觉应用的开发,图3-6显示了NI视觉软件的逻辑层次结构。

NI MAX和NI视觉软件采集软件直接与图像采集硬件设备接口。NI视觉采集软件包括了上千种图像采集设备的驱动,NI MAX则用于配合它对图像采集硬件设备进行配置、诊断和管理。它们共同在图像采集硬件设备与NI视觉高层应用软件NI Vision Development Module和NI Vision Builder AI之间架起了桥梁。NI视觉软件采集软件包括NI-IMAQ和NI-IMAQdx两部分,开发人员使用它们可以从不同相机获取图像。NI-IMAQ主要用于从模拟相机、并行数字相机、Camera Link或NI智能相机采集图像,而NI-IMAQdx则主要用于从GigE、IEEE 1394、DirectShow(USB)以及IP(Ethernet)相机采集图像。

图3-6 NI视觉软件的逻辑层次结构

一般在获得图像采集硬件设备后,第一步要做的就是安装NI视觉采集软件和NI MAX,以便图像采集硬件设备可以被驱动和配置、诊断。建议安装软件前,先不要将硬件连接到计算机,否则容易造成在系统中找不到硬件设备的情况。安装完成后,只要将硬件设备连接到计算机,就可以在NI MAX中找到该设备,对其进行配置。在MAX中对图像采集设备的每种不同配置都会与一个独特的名字关联,称为接口。与接口关联的配置信息通常被保存在一个与接口同名、后缀为“.iid”的接口文件(interface file)中。默认情况下,接口文件会以imgn.iid形式来命名,其中n为该采集设备在系统中序号,如img0.iid、img1.iid等。当程序需要从采集设备获取数据时,就可以根据某一接口对应的配置打开设备,建立到设备的连接并获取数据。这种方案不仅允许事先对同一图像采集设备进行多种不同的配置,还方便了应用程序在同种硬件配置环境下的可移植性。

实际工作中用到的很多图像采集设备都有不止一个通道,各个通道上连接的相机类型、特性、工作状态和返回的数据格式可能完全不同。那么驱动为什么能保证程序通过同一个采集设备的“接口”,顺利地从各个通道上所连接的不同相机获取图像数据呢?这是因为接口文件除了包含设备的基本配置信息外,还包含了与各通道对应的“相机文件(camera file)”位置信息。“相机文件”也称为界面控制文件(interface control document,后缀名为“.icd”),其中包含的某个型号相机的类型参数规定了NI视觉采集软件如何解析从相机收到的数据。根据所选用的相机不同,它也可能包含控制、操作相机的指令等内容。在NI MAX中对图像采集设备进行配置时,可以从配置树中选择NI-IMAQ Devices,并右击要配置的设备的各个通道,选择Camera菜单,为各个通道所连接的不同相机指定具体的相机文件。一旦完成这一步配置,与采集设备关联的接口文件中就会记录各个通道所对应的相机文件保存路径(通常与接口文件放置在同一目录),如图3-7所示。正是因为可以通过接口文件找到与各个通道所连接相机对应的相机文件,所以驱动才可以正常解析各个通道所返回的数据。

图3-7 接口文件中记录了相机文件的保存路径

只有为各通道所连接的相机选择了与之匹配的相机文件后,才能在NI MAX中对图像采集设备做进一步诊断和配置,如进行自检或设置采集图像的大小、位深度、颜色、亮度、饱和度等。图3-8显示了相机文件、接口文件和相机之间的关系。若需要使用某个通道上的相机,就可以在LabVIEW程序中为采集设备初始化函数指定相应的接口和通道号,打开设备。通常用Interface︰︰Channel的形式表示某个采集设备的接口和通道,例如img0︰︰1就表示系统中第一个采集设备(编号为0)的第2个通道(编号为1)。如果Channel被省略,则代表第一个通道,如“Img1”就代表系统中第二个接口设备的第一个通道。由于接口所对应的接口文件中已经包含了与该通道所关联的特定相机文件的位置信息,因此打开设备的函数就会寻找该特定相机文件,根据其中的配置来建立到采集设备的连接。如果不能找到接口文件中指定的相机文件,则驱动会寻找兼容的通用相机文件。若最终未找到任何可以用于解析数据的相机文件,则驱动会报错。

图3-8 相机与相机文件和接口文件的关系

接口文件和相机文件保存的位置根据所安装的视觉采集软件版本不同而不同:

(1)若安装的是8.2.3版本以前的NI视觉采集软件,则文件保存在下面的文件夹中:<National Instruments>\NI-IMAQ\Data。

(2)若安装的是8.2.3或之后版本的NI视觉采集软件,则文件保存路径还依赖于操作系统。Windows XP系统保存在文件夹C:\Documents and Settings\All Users\Shared Documents\National Instruments\NI-IMAQ\Data中,Windows Vista或Windows 7操作系统则将它们保存在文件夹C:\Users\Public\Public Documents\National Instruments\NI-IMAQ\Data中。

由于模拟相机一般并不允许通过编程来改变相机的参数,因此常为它们指定支持NTSC、PAL、RS-170或者CCIR等视频标准的通用相机文件。并行数字相机和Camera Link相机可以根据发给它们的指令来改变参数,且不同的相机可识别的命令集不同,因此这些相机通常需要特定的相机文件才能正常工作。这些相机文件一般和对应的相机同名,包括制造商和机型编号等,如Dalsa HS-8040 MHz Full Config.icd。IEEE 1394相机和GigE相机通常将所有的相机特定的信息保存在相机内部,因此无须为其指定相机文件。

如果安装了视觉采集软件后却找不到某一相机的相机文件,可使用www.ni.com/cameras页面下的Industrial Camera Advisor工具或登录ftp://ftp.ni.com/support/imaq/camera_support/camera_files查找。如果这些地方仍找不到某一并行数字相机或Camera Link接口相机的相机文件,则可以使用免费的NI相机文件生成器NI Camera File Generator(下载地址http://sine.ni.com/nips/cds/view/p/lang/en/nid/14207)生成相机文件。NI相机文件生成器也可以用于对相机文件进行更新,图3-9显示了其工作界面。

图3-9 NI相机文件生成器

值得一提的是,所有在NI MAX中对硬件设备的配置操作都可以利用系统配置API在LabVIEW程序中通过代码实现。系统配置API包含用于保存系统配置和创建系统配置报表的VI和函数以及用于查找系统中设备的VI和函数。该API包含的VI也可在远程系统上发现、配置和安装软件。这意味着程序设计人员可以通过代码对硬件进行自动配置和诊断、检测等,以省去在NI MAX中的手动配置工作。图3-10显示了LabVIEW中的系统配置API函数,这些函数位于函数选项的Measurement I/O>System Configuration子选项中,相关帮助可以在LabVIEW的安装目录下的help/nisyscfg.chm处找到。

图3-10 系统配置API