LabVIEW Vision机器视觉图像处理环境基础介绍
LabVIEW编程平台下开发机器视觉图像处理应用,一般需要考虑4个NI的软件、模块、驱动和应用软件:LabVIEW(LV编程平台:开发应用的基础环境)、Vision Development Module(VDM视觉开发模块:NI视觉所有图像处理函数以及视觉助手)、Vision Acquisition Software(VAS视觉采集软件:相机驱动函数)和Vision Builder for Automated Inspection(VBAI自动化视觉生成器:NI根据VDD开发的标准应用软件,可脱离VDM和LV独立运行)。
LabVIEW编程平台
使用LabVIEW编程,那么LabVIEW的安装是必不可少的。当然,如果您使用的是其他编程平台,如C、C++等,也是可以使用NI视觉的,NI视觉对于这些文本编程语言平台,也有相应的支持,可以参考官方的帮助文档了解更多。这里仅介绍一下LabVIEW环境下的。
LabVIEW编程环境视觉相关的内容
VDM是整个NI视觉的核心内容,所有NI视觉支持的图像处理函数,都包含在这个模块中。如模式匹配、查找直边、OCR、阈值、颜色测量等等。就算是VBAI软件,也是NI基于VDM中的函数开发的一款应用软件。
如上图所示的程序框图的右键选板中的视觉与运动(仅包含视觉,未包含运动控制),这里有8个子选板,其中图像采集(IMAQ)、图像采集dx(IMAQdx)、视觉RIO(Vision RIO)以及视觉快速函数中的视觉采集(Vision Acquisition)函数,是属于VAS软件的。视觉工具(Vision Utilities)、图像处理(Image Processing)和机器视觉(Machine Vision)以及视觉快速函数中的视觉助手(Vision Assistant)则是属于VDM模块。自动化视觉生成器(Vision Builder AI-VBAI Interface)则是VBAI软件生成的API。
VDM中的函数(机器视觉子选板中的内容)
VDM在安装时,默认会安装Vision Assistant视觉助手。视觉助手是一个辅助工具,选择安装时,在视觉快速函数中会生成一个视觉助手的快速VI:
LabVIEW环境中的视觉助手
另外在NI安装目录下,也会生成一个独立的视觉助手应用程序:
独立的视觉助手应用程序-欢迎界面
视觉助手也是基于VDM开发的一款辅助工具,里面集成了VDM中的大部分测试测量函数。可以处理大部分的NI视觉能处理的视觉项目,但是并没有包含所有VDM中的函数,一些不是太重要或不是太好实现的,则没有在视觉助手中集成。视觉助手是一款配方式柔性辅助工具,开发机器视觉项目时配置脚本设置参数后,可直接导出到LabVIEW中生成VI,或直接在LabVIEW中使用视觉助手快速VI,可以为初学者节约很多时间。当然,视觉助手本身有一定的局限性,只是一个辅助工具,可以用于一些验证测试,本身并不能实时的完成图像采集、图像处理、规格判断、保存结果数据、保存结果图像、输出OK/NG信号这样的过程。真正要应用到实际项目中,还是需要有LabVIEW这样的编程平台集成后才可以。
视觉助手配置界面
VBAI欢迎界面
VBAI配置界面
VBAI的配置界面和视觉助手的非常类似,但是VBAI的功能要比视觉助手强大很多。VBAI同样是NI基于VDM开发的一款标准应用软件。配方式柔性可配置脚本,适应性强,可用于很多简单的机器视觉图像处理项目中的。配合VAS安装相机驱动程序后,可以直接在VBAI中实时采集图像并处理图像、判断规格、保存结果数据、保存结果图像输出信号等过程均可实现。VBAI系统中包含了变量管理、循环控制、数组操作等,真正的功能要远强于视觉助手。但是也有其局部限,VBAI和视觉助手中的脚本都是顺序结构,只能串行的执行脚本中的函数。一般比较适用于单相机的项目中。如果多个项目,仍然需要串行多相机的检测脚本,效率相对比较低,而且不太容易和运动控制集成,对于有运动或需要传递数据的项目,处理起来就比较费力一些。
视觉采集软件VAS,主要作用就是驱动相机采集图像。LabVIEW中常用的是IMAQdx中的函数,可以驱动市面上常见的兼容USB3-Vision、GigE-Vision等标准视觉协议的工业相机。如果使用的是NI的图像采集卡,那么需要使用IMAQ来驱动。而使用了NI的视觉控制器,可以考虑IMAQ RIO。
NI IMAQdx用于驱动支持标准视觉协议的工业相机采集图像
安装了VAS后,配置了操作系统中网卡、防火墙等参数后,在NI的视觉助手、VBAI、MAX等环境中,都是可以从工业相机实时采集图像的。而如果不安装VAS,则视觉助手、VBAI中则只能读取图像,而不能从相机采集图像。MAX中也不能枚举相机,无法从相机采集图像。
VBAI中实时采集图像
视觉助手中实时采集图像
MAX中枚举工业相机并实时采集图像
上面的这些内容就是LabVIEW环境中使用NI视觉开发图像处理程序需要的一些模块、驱动和应用软件。当然,如果NI视觉无法满足要求时,也可以使用其他的库,如OpenCV/Halcoln/VisionPro等。OpenCV的库,在LabVIEW2016版中发布了一个插件,可以通过VIPM中搜索相关的库来安装,不过这个库后面基本废了,没有什么深入的开发。Halcon库的调用,则可以通过.NET的方式来实现。可以参考作者的《LabVIEW Halcon图像处理入门教程》。VisionPro的也可以实现,但是作用没有研究这一块的,如果有兴趣,可自行研究。
下面再来看一下安装LV、VDM、VBAI、VAS的版本要求。在石鑫华视觉论坛中,有一个帖子NI机器视觉图像处理开发软件LV、VDM、VBAI、VAS历年版本下载7.1~2023Q1 LabVIEW/Vision Development Module/Vision Builder for Automated Inspection/Vision Acquisition Software,http://visionbbs.cn/thread-22861-1-1.html,专门介绍了各个年代版本的LabVIEW可兼容的VDM、VAS、VBAI等。NI视觉在2022Q1或者说是2024Q1版之前,都有比较严格的版本限制。VDM、VBAI、VAS都是向前兼容4个年代的LabVIEW环境,例如说VDM2020,则可支持LabVIEW2020~LabVIEW2017四年的版本(包含其中可能存在的SP版和fx Patch补丁版)。
自LabVIEW 2022 Q3版开始,创建了一个LVAddons的共享目录,支持独立于LabVIEW版本的驱动程序/工具包安装在这个目录中,这样相应的驱动、工具包可以不升级新版本,也可以应用于新版的LabVIEW环境中。但是这个共享目录并不是所有的驱动、工具包都有。2022Q3版中的VDM、VAS均未安装在此共享目录中;2023Q1版的VDM部分内容安装在此目录中,部分内容安装在LabVIEW的版本安装目录下;2023Q1版的VAS则安装在此目录下;VBAI2023Q3的API也安装在此共享目录下。关于LVAddons共享目录,可参考另一主题:NI LVAddons目录对LabVIEW模块工具包驱动应用软件版本的作用-不再限制LabVIEW版本http://visionbbs.cn/thread-31191-1-1.html。
关于32位/64位和英文/中文版本的问题。LabVIEW的64位版本,目前为止仍然只有英文版。而32位版本,则包含了英文、法语、德语、日语、韩语和中文版等6个语言版本。同一操作系统中,可以同时安装不同年代的LabVIEW,也可以安装不同位数的LabVIEW,但是不能同时安装同一年代同一位数的不同语言的版本。这是因为32位的软件是安装在Program Files (x86)目录下的,而64位的软件则是安装在Program Files目录下。而不同年代的LabVIEW会使用年代编号在目录中生成不同的目录。例如电脑中可以安装LV2020 32位中文+LV2020 64英文+LV2019 32位中文+LV2019 64位英文……一直到系统支持所有年代版本的LabVIEW均可安装。但是不能同时安装LabVIEW2020 32位中文+LabVIEW2020 32位英文。LabVIEW年代版本的SP或fx Patch版本,将会覆盖原来安装的年代版本,这个是升级过程,不会同时保留多个小版本。
VDM、VAS和VBAI,目前都只包含了英文版,没有中文版(作者有出部分汉化的资源包LabVIEW Vision视觉模块图像处理库函数和选板汉化版,NI视觉中文版2016~2023Q3版LV+VDM+VAS+VBAI,http://visionbbs.cn/thread-27695-1-1)。目前主流的年代版本,同一安装包均同时支持32/64位版本,在2024Q1之前的版本,请先安装LabVIEW,再安装VDM、VAS和VBAI,因为在安装时要选择具体支持的LabVIEW版本。LV2024Q1之后,已经将VDM、VAS、VBAI都迁移到了LVAddons目录下了,后面再安装新的LabVIEW也可以仍然使用之前的VDM、VAS、VBAI。
操作系统的兼容性,NI软件自2021年后放弃了Windows 7系统的支持,也就是2021年后出的软件,均不再支持WIN7,只支持Win10;自LV2022Q3版开始,明确支持Win11操作系统。Linux系统下目前最新的版本更新到2024Q1;MAC系统则只更新到2023Q3版本,NI已经明确表示,不再更新MAC系统下的LabVIEW。不过作者都不是很建议使用Linux和MAC,因为这两个系统下基本上只有LabVEIW环境,驱动都少的可怜;也没有什么模块工具包;NI的应用软件就更少了。