计算机视觉
图像处理

机器视觉系列—Vision 基础知识下集

第1章节(下)
在上回我们逐一介绍与机器视觉相关的专有名词与周边光学设备,在本回要开始来说明如何使用LabVIEW来截取相机的影像,并正确的显示在人机介面上﹔另外也针对NI Vision所提供的影像校正模式进行说明,以及如何利用软体方式来设定相机的属性与触发取像模式。

1.2 软体截取与显像
1.2.1 NI MAX影像装置确认
在前面一小节介绍了架设整个影像系统所需要的硬体相关设备,现在要来说明如何在NI MAX找到已安装的相机,并且从相机中取得影像。

当我们打开NI MAX,在「My System–》Devices and Interfaces–》NI-IMAQdx Devices」下,可找寻已安装成功的相机,点选相机后,按下右边画面的上方「Grab」键可进行连续取像,另外红色框选处可以找到一些关于相机的规格与内部参数设定,画面下方有显示影像的基本参数,包括目前影像大小、缩放比例与像素的颜色值,另外下方的tab表单处可以找到一些关于相机的规格与内部参数设定。
图1.26- 在NI MAX下进行取像作业

1.2.2 IMAQ影像截取模式
现在要来练习如何使用LabVIEW来取得相机的影像。如果您过去曾经使用LabVIEW来开发NI相关产品,如DAQ设备等,不难发现LabVIEW在相关套件中都会提供两种开发模式:1. 高阶元件(HL);2. 低阶元件(LL) ,同样地在IMAQ套件裡也存在这两种开发模式。
高低阶模式并不是将元件区分为高低等级,所谓的高阶元件主要是将资源开启、撷取、关闭全包装成一个Express VI,可以帮助使用者快速地完成取像相关的程式设定,就能直接将影像输出到LabVIEW上;而低阶取像元件将功能切割为数个VI,需由使用者自行设定元件才能完成取像动作,好处在于能够让使用者更有弹性的唿叫参数设定,而另一个优点在于,与高阶元件相比,少了反覆建立与关闭资源的动作,可以有效降低系统资源浪费。

高阶(HL)取像元件使用步骤
安装完LabVIEW的IMAQ套件后,可在Block Diagram(简称BD)下,按下右键跳出Function Template后依序往下搜寻「Function Template –》 Vision and Motion –》 Vision Express –》 Vision Acquisition」(图1.27),将「Vision Acquisition」元件拉到BD上,会自动启动设定画面。
图1.27- Vision Acquisition元件位置

A. 设定的取像来源(Select Acquisition Source)
左侧「Acquisition Sources for Localhost」可以检视目前安装在电脑上所有相机名称,选择位于「NI-IMAQdx Devices」的相机「cam0: Balsler …」,为本次取像用的相机,接着可以按下右方连续取像按键,测试相机是否有正常被Initialize并取到像;右下角有提供一些关于相机的基础数值(参考图1.2.2)。
图1.28- 设定的取像来源

B. 设定撷取影像操作方式(Select Acquisition Type)
共分成4种类型:

  • 取单张影像(Single Acquisition with processing)
  • 连续取像(Continuous Acquisition with inline process)
  • 一次取固定张数影像,边取像边做处理(Finite Acquisition with inline processing)
  • 一次取固定张数影像,当所有影像取得完毕后再做处理(Finite Acquisition with post processing)

图1.29- 设定撷取影像操作方式
这个项目我们先选择「连续取像」模式,继续往下设定。

C. 设定取像参数「Configure Acquisition Settings」
可依据环境因素来调整相机的参数达到最佳化,如增益值(Gain)、Gamma、取像模式等,设定过程可以同时按下右上方的「Test」键来观察设定结果,这边我们暂时不做任何需要设定,直接往下一步。
图1.30- 设定取像参数

D. 设定是否将影像储存到硬碟(Configure Image Logging Settings)
若将「Enable Image Logging」勾选,表示将撷取到的影像储存到下方指定的资料夹位置,并可设定储存的影像格式,值得注意的是,若开启此功能可能因为硬碟存取速度的关係,使得最大取像速度降低。
图1.31- 设定是否将影像储存到硬碟

E. 设定影像参数输入与输出「Select Controls/Indicators」
可依据应用,开放影像参数供外部控制元件(Control)设定,让该取像用的Express VI获得输入与输出的功能,在此我们勾选显示元件(Indicator)中的「Image Number」与「Frame Rate」,最后按下「Finish」键完成设定。
图1.32- 设定影像参数输入与输出
图1.33- HL取像元件自动产生的程式码
图1.34- HL取像元件自动产生的人机介面

低阶(LL)取像元件使用步骤
操作之前我们先来了解「NI-IMAQ」与「NI-IMAQdx」两者的差异;「NI-IMAQ」一般只能用于NI的影像撷取卡或相机,而「NI-IMAQdx」是可驱动第叁方的相机,如Basler的USB3.0相机,凡是通过影像传输介面协定联盟(如GigE、Camera Link或USB3.0)认证的相机,都可使用「NI-IMAQdx」来驱动。

使用低阶取像元件来驱动第叁方相机时,需同时使用到「NI-IMAQdx」与「NI-IMAQ」影像模组;主要是利用「IMAQdx」来撷取相机的影像,然后再利用「IMAQ」创立的影像空间来储存影像,「IMAQ」同时还提供影像处理工具及机器视觉工具,可依据使用者需求来做应用开发。
利用LL元件来完成连续取像的功能,操作流程图如下:
图1.35- 使用IMAQdx与IMAQ取像流程图

先在Front Panel建立一个「IMAQdx Session」与「Image Display」,物件分别位于「Control Template –》 Modern –》 I/O –》 IMAQdx Session」与「Controls Template –》 Vision –》 Image Display」,最后再放置一个Boolean,名称设为「Stop」。
图1.36- Image Display物件放置区域

跳到Block Diagram,分别在「Function Template –》 Vision and Motion –》 NI-IMAQdx –》 Low-Level」与「Function Template –》 Vision and Motion –》 Vision Utilities –》 Image Management」找到以下几个功能VI:
图1.37- IMAQ Create与Dispose物件

图1.38- IMAQdx的设定取像物件

将这几个功能VI依照操作流程步骤完成,程式码如下:
图1.39- Low Level取像元件程式码

步骤说明:
1. 指定开启相机名称,从「IMAQ Session」中选择对应的相机名称
2. 设定相机取像模式为「连续」,Image Buffer设为「3」
3. 开始取像
4. 任何由外部取得的影像,都需透过IMAQ建立一组记忆体空间来储存,由于取像来源是彩色相机,每一张彩色(RGB)影像需要3*8bit的空间来储存,所以「Image Type」要选择「RGB U32」
5. 进入While迴圈后,会不断将影像覆盖到记忆体区内,此时将影像接到Display Image即可在人机介面观察到影像,直到按下「Stop」或Error产生时才会跳出迴圈
6. 停止取像
7. 解除相机设定
8. 结束指定名称的相机作业
9. 清空储存影像的记忆体空间

最后再转换画面到FP,启动程式后就会开始连续取像,直到有人按下人机上的「Stop」键,停止取像。
使用上述两种开发模式都可以成功将相机的影像撷取到LabVIEW,有了这些影像来源(Image Source)后,就可以再继续往下做影像后处理(Image Process)与机器视觉(Machine Vision)的应用了。

1.2.3 影像软体校正
确认影像系统能正常取像后,首先要做的是对整个影像系统做校正,为何还要多此一举呢?主要塬因有两点:
1. 真实世界描述物体的单位可能是吋(inch)或公厘(mm),但在影像系统裡,描述影像的是像素(pixel),这两者之间必须存在一单位转换公式,影像才有办法转换成真实比例,对于尺寸量测或视觉对位类型的应用特别重要。

2. 前面章节曾提到视觉系统可能因为镜头的失真(Distortion),或者因为相机投射方向与检测物表面非完全垂直,这两种情况都会造成影像变形,需透过影像校正来修正这些变形量。
在NI VISION(IMAQ)有提供以下几种校正模型,主要目的在于单位转换与修正变形量:
图1.40- NI VISON提供的校正模型

1. Point Distance Calibration:在影像变形量轻微且忽略不计下,利用真实世界两点距离与像素之间做单位转换
2. Point Coordinates Calibration:已知真实世界点位置座标与影像中的像素座标做对应,用来修正非垂直透视投影所产生的变形
3. Distortion Model (Grid):利用相机拍摄一张格点校正片的影像,可同时修正镜头失真与非垂直透视投影所造成的失真
4. Camera Model (Grid):利用多张格点影像进行相机模型校正,包括焦距、影中心点与影像失真,一般常用于机械手臂定位应用
5. Microplanes (Grid):修正在非平整的工作表面所造成的影像失真

1.3 相机的属性与触发模式设定
1.3.1 相机属性说明
了解如何透过LabVIEW来取得影像后,另外可针对相机的部分属性进行参数的微调,一些常用的参数有:
1. Analog Controls
• Gain Auto:可设定自动或手动增益
• Gain(Raw):设定增益值,会直接影响黑跟白的对比,调高Gain值,不仅会强化影像的对比强度,同时也会将杂讯的放大

2. Image Format Controls
• Image Format Controls:若使用的是彩色相机,可将影像设为灰阶(Mono)或彩色格式(Color)﹔若使用的是黑白相机,则只能设定灰阶影像输出

3. Acquisition Controls
• Trigger Mode:开启或关闭触发功能
• Trigger Source:可选择软体触发(Software)或者硬体触发(Line)
• Generate Software Trigger:当触发模式设定为Software时,执行相机后,每按一下取一张影像
• Exposure Auto:开启/关闭自动曝光,一般都设定为关闭
• Exposure Mode:可设定固定曝光时间(Timed)模式,或者是脉衝宽度(Trigger Width)模式,由触发讯号的脉衝持续时间的来决定曝光时间
• Exposure Time:设定固定曝光时间,曝光时间越长,画面亮度会有所提升,曝光时间如果拉得太长会产生过曝,如果遇到晃动也容易产生残影

1.3.2 触发模式说明
硬体触发(Line):
一般工业相机都会提供数组硬体触发讯号(Line),可以接收来自外部IO卡的讯号,当相机收到触发后,立即撷取一张影像,常使用在高速影像撷取或Line Scan的应用。
以Line Scan为例,利用运动装置逐行对待测物进行线扫描,每一条影像间距需相同,否则会产生影像变形。利用运动装置的编码器与相机的硬体触发做结合,设定编码器的光学尺每移动固定距离就发送一组讯号,当运动装置移动一段距离,相机会立即收到一组触发讯号,接着完成取像动作,这样做法可确保取到的影像间距都相同。
图1.41- Line Scan的示意图

软体触发(Software):
在无硬体触发情况下,还是可以利用软体方式模拟触发讯号,例如可在人机介面上设立一颗Boolean按键,若按键的机械模式为「Latch when Release」,当按键按下后放开,正缘触发(Positive Edge)成立,立即透过软体方式告诉相机撷取一张影像,这种触发方式适用于大部分视觉应用。
除了在NI MAX下的「NI-IMAQdx èCamera Attributes」可做参数设定外﹔若使用HL开发方式,可在「Express VI èVision Acquisition」的「Configure Acquisition Settings」选项中做设定;而使用LL元件开发,需先利用「NI-IMAQdx èEnumerate Attributes」来读取目前使用相机所有可以设定的参数名称(Attribute Name),再将参数名称输入到Property Node的「Active Attribute」功能,并且指定对应的资料格式来完成参数写入。
图1.42- NI MAX下的属性设定

图1.43- 使用NI-IMAQ Express VI属性设定画面
图1.44- 使用LL取像元件的属性设定方式

转载请注明来源:CV视觉网 » 机器视觉系列—Vision 基础知识下集

分享到:更多 ()

相关文章

  • 暂无文章
扫描二维码,给作者 打赏
pay_weixinpay_weixin

请选择你看完该文章的感受:

0不错 2超赞 0无聊 0扯淡 0不解 0路过

评论 抢沙发

评论前必须登录!