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

1.3 NI视觉平台简介及软件安装

机器视觉系统开发过程中,软件的开发最为关键,但耗时也最长。一套好的机器视觉软件开发平台可以有效提高机器视觉系统开发效率并增强系统的稳定性和可靠性。目前可供选择的机器视觉软件开发平台比较多,如德国MVTec软件公司的HALCON(国内由大恒图像代理)、Congex公司的Vision Pro以及开源的OpenCV等,这些产品都是十分优秀的机器视觉应用开发平台,但是,由于它们都要求基于传统的文本编程语言(C、C++、Basic等)进行开发,这就使得开发者很难快速为客户提供整套的自动化解决方案。

从大的类别上来看,机器视觉系统仍属于自动化智能控制系统,它通常会与其他类型的控制系统集成以构成完整的自动化系统来完成自动化任务。由于基于文本的编程语言通常针对通用软件的开发,面向多个行业,因此文本编程开发工具一般不提供针对自动化领域的规范开发库和仪器设备驱动集。市面上已有的开发库往往只局限在自动化系统的某个部分,如果要集成多种设备,则要将各种不同厂商的软件拼接在一起。

值得庆幸的是,经过多年积累,NI已经可以很好地为成套的自动化系统快速开发提供完整的解决方案。首先,NI提供各种自动化系统开发所需的硬件产品,从数据采集卡、图像采集卡、数字I/O卡、各种仪器控制卡到模块化仪器以及PXI、CompactRIO和CompactDAQ等硬件平台应有尽有。其次,NI专门针对自动化系统开发量身定做了可视化、跨平台(可在Windows、UNIX、Linux、Mac OS X上运行)并使用图标代替文本行(图形化设计语言)来创建应用程序的虚拟仪器开发平台LabVIEW。它不仅广泛支持多个厂商的硬件,还包含了大量内置和扩展的函数库(如数据采集、信号处理、数学计算、统计分析、图像处理、机器视觉、运动控制、数据通信、数据库、报表生成、移动开发、嵌入式开发等),这些函数都形象地表现为图形化编程语言函数,以方便开发者快速构建自动化系统。

利用LabVIEW既能集成数千款硬件设备,也能通过直接使用大量内置库实现高级分析和数据处理。这就使开发人员不必从头开发各种处理函数甚至不必关心处理函数内部的具体细节,从而大大缩减了系统开发时间,并使开发人员能专注于整个系统功能的研究而不在可重用的函数开发上浪费时间。此外,由于LabVIEW为编译型(并非解释型)开发工具,其生成的程序执行效率并不输于一般的文本编程开发工具,因此自1986年推出以来,它就被广泛地应用于数据采集、仪器控制、工业自动化、航空航天和科学研究等领域。

针对图像处理、分析和机器视觉,NI专门提供了可以基于LabVIEW与其他自动化设备无缝集成的机器视觉平台,以满足各种机器视觉应用软硬件需求。基于这一平台,开发人员可以更低的成本快速解决图像处理、分析和机器视觉领域的各种应用难题。图1-6显示了NI机器视觉平台的软硬件组成。

图1-6 NI机器视觉平台的软硬件组成

NI机器视觉平台中可供选择的硬件主要包括各种智能摄像头、各种小巧紧凑的嵌入式视觉系统以及用于开发基于PC或PXI机器视觉系统的各种图像采集卡。智能摄像头将图像传感器和处理器集成在一起,可用于创建小型、坚固、高性价比的机器视觉解决方案。各种小巧紧凑的嵌入式视觉系统把工业摄像头和各种I/O、通信模块集成在一起,构成一套紧凑、坚固并包含开放通信接口的小系统,这类小的系统常用于生产线或其他嵌入式解决方案中。基于PC和PXI的系统可以使用最新、最高性能的处理器,通常用于集成各种混合信号测量、处理功能,以构建机器视觉自动化系统。

软件方面,NI机器视觉平台除了包含支持上千种摄像头的视觉采集软件(NI Vision Acquisition Software),还包括一款基于配置方式的工业机器视觉应用软件——NI自动检测视觉生成器(NI Vision Builder AI(Automated Inspection))和一套功能强大的图像处理、分析和机器视觉应用开发函数库——NI视觉开发模块(NI Vision Development Module)。

NI视觉采集软件包括NI-IMAQ和NI-IMAQdx两部分,开发人员使用它们可以从不同的摄像头中采集图像、显示图像或保存图像。NI-IMAQ主要用于从模拟视频制式、并行数字信号制式、Camera Link制式摄像头或NI智能相机采集图像信号。NI-IMAQdx主要用于从GigE Vision(由机器视觉商业协会AIA创建的通过千兆网传输视频信号的标准)、IEEE 1394、IP (Ethernet), DirectShow(USB)等制式的摄像头采集图像。图1-7显示了NI视觉采集软件的构成。

图1-7 NI视觉采集软件结构

使用Vision Builder AI,用户无须编程,仅通过简单的配置,即可解决诸多机器视觉上的应用难题。Vision Builder AI包含NI图像采集软件和各种板卡驱动程序及工具,因此不仅可以采集、显示并储存任何来自于NI图像采集设备、GigE Vision相机或IEEE 1394相机的图像,还提供了数字I/O、串口控制和以太网通信等工具,方便用户将检测结果或触发信号直接传送至其他自动化设备。

使用NI Vision Builder AI,用户可以在菜单驱动的交互式环境下对100余种功能强大的机器视觉工具(如几何匹配、OCR和颗粒分析等)进行配置及组合,来快速实现机器视觉系统的配置、校准,实现诸如分类、条码读取、元器件检测、计量和精确对齐等视觉应用。通过配置或组合机器视觉工具创建的应用,可以脚本的形式保存,而且不需要在目标机器上额外安装NI Runtime Engine即可运行,因而方便了系统的部署。NI Vision Builder AI简化了机器视觉系统的开发和维护,降低了视觉系统开发的复杂度,同时还可以保留较完整的系统功能和较高的性能。此外,由于不需编程就可以快速完成机器视觉算法,因此还可以使用NI Vision Builder AI对部分机器视觉算法雏形进行仿真验证。

NI Vision Development Module是结合了数百种科学成像和机器视觉函数的综合机器视觉开发库,它几乎覆盖了机器视觉应用开发的各个方面。使用它既可开发支持多种摄像头的图像采集应用,也可开发各种图像处理、图像分析以及特征匹配、物体测量、目标检测、目标分类等完整的机器视觉应用。NI视觉开发模块还包含一个称为NI视觉助手(NI Vision Assistant)的软件,开发人员可以使用它构建机器视觉系统的原型,对一些初步的算法构想进行快速验证,并能用它自动生成代码。

NI早期的视觉软件产品与目前最新版本稍有不同。早期的视觉软件产品中,视觉采集软件并不包括NI-IMAQdx,而是包含NI-IMAQ和NI-IMAQ 1394、NI-IMAQ for USB等独立驱动,后来,随着网络等技术的发展,NI将视觉采集软件整合为NI-IMAQ和NI-IMAQdx两个软件包。早期的视觉开发模块包括IMAQ Vision Builder和IMAQ Vision库函数两部分。从7.0版本开始,NI用Vision Assistant 7.0取代了Vision Builder 6.1及其前期版本,并开始创建专门针对自动检测的NI Vision Builder AI。NI Vision Builder AI界面和NI Vision Assistant类似,并可以脱离NI Runtime Engine独立在目标机器上运行。IMAQ Vision函数库则在升级后与NI Vision Asistant共同组成NI Vision Development Module软件,并不断进行完善。

NI Vision Development Module支持多种编程语言,开发人员既可以在NI LabVIEW平台上使用图形化的编程语言进行开发,也可以在NI LabWindows CVI、Visual C/C++或Visual Basic、.NET等基于文本编程语言的开发平台上工作。虽然NI视觉开发模块为开发人员选择开发工具提供了极大的灵活性,但是不难看出,在开发完整的机器视觉系统或自动化系统时,将NI视觉开发模块和LabVIEW结合使用具有较多优点,主要列举如下。

(1)开发周期短,维护成本低。

NI视觉采集软件和NI Vision Acquisition Software中的机器视觉算法函数库已经过严格的功能和性能测试,开发人员可以直接拿来放心使用,而不用再担心这些函数内部的缺陷。LabVIEW图形化的编程环境可以帮助自动化领域的开发人员快速完成应用开发。此外,NI视觉采集软件支持多种不同类型的摄像头及硬件,这极大地缩短了机器视觉系统的图像采集模块的开发时间,降低了代码的维护成本,并且增强了系统对各种硬件的适应性。

(2)兼容性广,易于构建更为完整的自动化系统。

机器视觉系统是自动化系统的一种,很多时候它必须与其他自动化系统集成统一工作,因此在选择机器视觉开发平台时,通常需要考虑将来系统与其他自动化系统集成的难易程度。NI视觉采集软件包为行业标准摄像头接口提供了优化的驱动程序,借助于针对特殊摄像头的LabVIEW驱动,开发人员可以整合传统的区域扫描、线扫描、耐热摄像头以及3D摄像头、激光、网络摄像头等。

LabVIEW是专门针对自动化领域的开发平台,使用它不仅可以多种方式集成PLC和HMI,引导工业机器人,关联传感器数据,管理复杂的摄像头触发信号,并驱动激励器来控制传送带和分类执行机构,还可以支持串行和以太网协议(RS232、Modbus协议、Modbus/TCP、以太网/IP、TCP/IP、EtherCAT)、数字I/O(TTL、光电隔离,带有可重配置选项)和OPC服务器,以及其他工业通信标准(Profibus、CAN、特定的工业机器人)。因此基于NI视觉开发模块和LabVIEW平台开发机器视觉应用时,可以在图形化编程环境中无缝集成各种自动化系统,而不需要东拼西凑,从而提高系统的可维护性。

(3)可快速构建原型或对算法进行验证。

NI Vision Builder AI和NI Vision Assistant是两款不须编程,仅通过简单配置和组合就可以实现机器视觉应用或算法的工具。NI Vision Builder AI是相对独立的软件(图1-8),使用它可以快速实现从图像采集、分析、处理到分类、决策等完整的机器视觉系统。NI Vision Builder AI还包含有可以控制并与外部执行机构通信的函数。

图1-8 NI Vision Builder AI界面

NI Vision Assistant(图1-9)与NI Vision Builder AI极为相似,它是NI视觉开发模块的一部分,但是它主要用于图像分析,或快速构建机器视觉系统的原型,验证或测试方案或算法的可行性。基于验证过的模型,NI Vision Assistant可以自动生成基于LabVIEW、C或.NET各种平台的代码。开发人员既可以借助这两个工具搭建完整的机器视觉系统,也可以在正式进行代码编写前对一些原型进行快速验证,以免走弯路。

图1-9 NI Vision Assistant界面

NI视觉平台软件可以从NI销售部门或分销商处购买获得。当然在正式购买之前也可以从NI网站(www.ni.com/download)上下载评估版试用,一般试用期为1个月。如果购买了NI视觉平台软件或NI开发者套件——NI Developer Suite(其中包含LabVIEW、LabWindows/CVI以及各种可以与这两个工具成集的开发模块,也包括NI视觉平台所有软件),就可以同时安装NI Vision Builder AI和NI Vision Development Module。NI视觉采集软件(包括NI-IMAQ和NI-IMAQdx)也可以从NI Device Driver软件包中找到。

若要将LabVIEW和NI视觉平台软件结合进行机器视觉应用开发,则通常需要先安装NI LabVIEW。这样在此后安装NI视觉平台软件时,就可以自动对LabVIEW进行视觉平台软件的相关配置。当然,在某些情况下,如果必须使用Visual Studio或NI LabWindows/CVI进行开发,则最好先安装这些软件,再安装NI视觉平台软件。

在选择安装NI视觉平台软件和LabVIEW或LabWindows/CVI的不同版本时,要特别注意版本之间的兼容性。安装互不兼容的版本容易造成程序开发或运行过程中不可预见的错误。图1-10显示了NI视觉开发软件与LabVIEW、LabWindows/CVI各个版本之间的兼容情况,其中阴影部分代表相互兼容。

图1-10 NI视觉开发软件与LabVIEW、LabWindows/CVI的兼容性

NI视觉平台软件可以在Windows、Linux和Mac等多种操作系统上进行安装,在Windows平台上的安装方法和其他商用软件安装方法类似(在其他平台上的安装方法请查阅相关手册)。图1-11显示了从NI Device Drivers光盘安装NI Vision Acquisition Software的某一步骤。

图1-11 从NI Device Drivers盘安装NI视觉采集软件

图1-12显示了从NI Developer Suite安装NI Vision Builder AI 2012和NI Vision Development Module软件包的某一步骤。

图1-12 从NI Developer Suite安装NI视觉软件

值得一提的是,目前很多开发人员使用网络上的破解包对NI的软件进行破解,虽然破解后的软件功能可以完全正常使用,但这毫无疑问是侵犯知识产权的行为,而且通过这种方式使用软件,不会得到NI的售后服务支持,建议广大读者购买正式商用软件进行开发。

安装完成LabVIEW和NI视觉平台软件后,机器视觉软件的开发环境就基本构建完成,主要包括以下部分:

(1)NI视觉采集软件中所包含的支持各种类型摄像头的设备驱动程序。

(2)NI Vision Builder AI软件。

(3)NI Vision Assistant软件,是NI Vision Development Module的一部分。

(4)各种NI Vision Development Module中用于机器视觉应用开发的工具。

(5)各种机器视觉开发控件及库函数(参见图1-13,以LabVIEW开发工具为例)。

图1-13 LabVIEW前后面板中的视觉控件和函数

NI Vision Development Module包含的机器视觉函数非常丰富,几乎涉及机器视觉开发的各个方面,本书后续章节除了介绍机器视觉系统的硬件选型相关知识外,还将按照机器视觉系统开发的逻辑陆续介绍这些函数的使用。

在介绍这些知识时,还会结合部分代码(见本书配套电子资源)进行讲解,这些代码是在表1-1中软件所搭建的环境中开发调试完成的。在开始阅读本书前,读者可以使用相同版本(或更高的兼容版本)的软件搭建开发平台进行学习。

表1-1 本书所附代码的运行平台