硬件和软件设置
为了从GigE Vision相机获取图像,首先需要确保您拥有所有正确的硬件和软件。以下是要求列表。
硬件
- GigE Vision相机:该相机必须符合GigE Vision标准。如果您的摄像机具有千兆以太网端口,但不兼容GigE Vision,则无法使用Vision Acquisition Software捕获图像。您应该在相机的用户手册或市场营销文献中找到GigE Vision徽标。
- 千兆以太网端口:虽然可以使用分别支持10 MB/s和100 MB/s的以太网和快速以太网端口来获取图像,但这仅适用于非常慢的帧速率和小分辨率。强烈建议您使用千兆以太网网络接口控制器(NIC)。
软件
- 视觉采集软件:您将需要视觉采集软件8.2.1或更高版本,它将安装NI-IMAQdx 3.0或更高版本。 NI-IMAQdx是该驱动程序,具有从USB3 Vision,GigE Vision和IEEE 1394摄像机获取图像的功能。
- 应用程序开发接口(ADE) :您可以使用LabVIEW,LabWindows / CVI,Visual Studio 6.0或任何ANSI C编译器来获取图像。
网络配置
正确安装硬件和软件后,还必须配置网络。如第一部分所述,GigE Vision摄像机可以从DHCP服务器获取IP地址,也可以使用链接本地寻址(LLA)为自己选择一个IP地址。如果使用DHCP服务器将摄像机连接到千兆位以太网,则会自动检测到摄像机。如果摄像机直接连接到计算机(使用常规电缆或交叉电缆),则您需要等待一分钟左右,以使DHCP在DHCP请求上超时并使用LLA。 Windows操作系统可能会显示警告,指出网卡只能进行有限的操作。您可以忽略此警告。注意:该延迟仅适用于Windows XP和2000,不适用于Windows Vista操作系统。
图1 。直接连接相机时Windows显示警告
巨型数据包
通常,网络驱动程序会将大于1500字节的任何数据拆分为多个数据包。但是,GigE Vision标准允许最大9014字节的数据包大小。这些大数据包(也称为巨型数据包)使摄像机可以更有效地在网络上传输数据。通过右键单击网卡并选择属性,可以从Windows设备管理器中启用许多网卡中的巨型数据包。
图2 . 在Intel PRO / 1000适配器上设置巨型数据包的示例
网络防火墙
当摄像机获取图像时,它将立即将这些数据包流式传输到主机。但是,网络防火墙将不允许数据包到达其目的地,因为防火墙通常会阻止未发起的传入流量。因此,您需要禁用防火墙才能从GigE Vision摄像机获取图像。您可以从控制面板(开始»控制面板)禁用Windows防火墙。但是,如果您的网卡带有Intel PRO / 1000芯片组并且正在使用高性能驱动程序,则无需禁用防火墙。由于高性能驱动程序会在传入的GigE Vision数据包到达防火墙之前将其重定向到NI-IMAQdx内核驱动程序,因此防火墙设置不会影响图像的获取。
在MAX中获取图像
Measurement and Automation Explorer(MAX)用于验证您已发现相机并可以获取图像。由于NI-IMAQdx驱动程序支持即插即用(PnP),与主机位于同一子网中的所有GigE Vision摄像机应自动出现在设备和接口子树中。 GigE Vision摄像机枚举在NI-IMAQdx子树下,并通过特殊图标标识。如果您使用的是NI IMAQdx 4.3.5或更高版本,则GigE Vision摄像机将出现在网络设备子树中。
图3 。 MAX在同一子网中自动检测到任何GigE Vision摄像机
MAX将在与主机相同的子网上显示任何GigE Vision摄像机。但是,NI-IMAQdx也允许您从远程子网中的摄像机获取图像。您可以通过调用NI-IMAQdx API中的相应函数来发现远程子网中的摄像机。例如: C函数IMAQdxDiscoverEthernetCamera() 具有用于指定要在其上发现摄像机的子网的参数。
一旦能够在MAX中发现相机,下一步就是从相机中获取图像。从子树中选择摄像机以在主窗口中将其打开。以下是获取标签的各个部分及其说明.
图4 . 采集属性页面
- 视频模式:此属性仅对IEEE 1394摄像机有效。 GigE Vision相机为灰色。
- 像素格式:显示可用像素格式的列表。典型格式是Mono8,Mono16和YUV422Packed。
- 感兴趣区域:指定采集窗口的左右偏移量以及宽度和高度。
- 超时:设置驱动程序等待超时完成之前返回超时错误的毫秒数。
- 数据包大小:指定每个数据包中传输的字节数。此数字必须小于网卡允许的最大数据包大小(如果禁用了巨型数据包,则为1500;如果启用了巨型数据包,则为9014)。
正确设置采集参数后,单击捕捉以采集一幅图像,或单击抓取以连续采集图像。
在LabVIEW中获取图像
NI-IMAQdx提供了一个统一的API,可从IEEE 1394,USB3 Vision和GigE Vision摄像机获取图像。虽然某些功能特定于一种类型的总线,但是大多数功能和VI均可用于两种类型的摄像机。这使得更多的总线不可知论的发展为图像采集。您可以用GigE Vision摄像机替换IEEE 1394摄像机,反之亦然,而无需更改代码。
NI-IMAQdx LabVIEW API分为高级VI和低级VI。使用高级VI,可以对简单的捕捉,抓取或序列操作进行编程。使用低级VI可以执行与高级VI相同的任务,但可以更好地控制执行细节。查看LabVIEW附带的示例,以了解如何使用NI-IMAQdx对图像采集进行编程。
图5 . 一个简单的例子
上面的例子说明了在LabVIEW中的简单Grab采集。所获取的图像显示在图像指示器中。本示例在缓冲区编号指示器中显示了缓冲区编号。如果while循环的循环速率不高于相机的帧速率,则可能会丢失缓冲区。在这种情况下,在可以处理原始图像之前,复制到内存缓冲区中的图像会被另一个图像覆盖。在大多数机器视觉情况下,重要的是要通知用户是否遗漏了任何帧。
了解相机属性
摄像机通常支持几种可设置的属性,这些属性使摄像机具有足够的灵活性,可以在具有各种约束的不同环境中工作。尽管大多数机器视觉相机都支持某些典型属性,例如增益,快门速度或位深度,但许多相机具有唯一的属性子集,该子集仅特定于该相机或相机系列。
图6 . MAX中的“摄像机属性”选项卡显示所有属性
GigE Vision标准定义了捕获图像所需的最少属性集。每个GigE Vision相机都必须支持这些属性,例如图像宽度,高度,像素格式等。但是,可以使用GenICam标准公开相机支持的其他属性。
GenICam标准
GigE Vision规范依赖于GenICam,它是欧洲机器视觉协会(EMVA)的标准,用于描述相机支持的功能(属性)。每个GigE Vision摄像头都必须提供符合GenICam语法的XML设备描述文件。连接摄像机并在MAX中首次选择该摄像机时,NI-IMAQdx会检索并解释该XML文件,以枚举摄像机支持的属性。由于每个相机供应商都提供特定于每个相机的XML文件,因此NI-IMAQdx可以自动填充该相机的特定属性。
<Integer Name =“ Gain” NameSpace =“ Standard”> <ToolTip>摄像机的模拟增益设置</ ToolTip> <DisplayName>增益</ DisplayName> <pValue> GainReg </ pValue> <Min> 0 </ Min> <Max> 128 </ Max>
<Inc> 1 </ Inc>
<Representation>对数</ Representation> </ Integer> <IntReg Name =“ GainReg”> <ToolTip>摄像机的增益功能的访问节点</ ToolTip> <地址> 0x0815 </地址> <Length> 2 </ Length> <AccessMode> RW </ AccessMode> <pPort>设备</ pPort> <Sign Unsigned </ Sign> <Endianess> BigEndian </ Endianess> </ IntReg> |
图7 . 描述增益属性的XML文件的片段
图7显示了在XML文件中描述的gain属性的非常简单的示例。解析此XML代码片段后,NI-IMAQdx确定以下内容:
- 功能名称是增益。
- 它的最小值和最大值分别为0和128,最小增量为1。
- 增益值以对数形式表示。
- 当前增益值以BigEndian Unsigned形式存储在地址为0x0815的寄存器中,长度为2个字节。
- 驱动程序具有对该寄存器的读写访问权限。
相机支持的每个此类属性在XML文件中都有一段代码,用于定义属性参数。您可以通过从<程序文件> \ National Instruments \ NI-IMAQdx \ Data \ XML目录中打开XML文件来手动检查它。注意:上面的示例非常简单地表示属性,并作为学术练习提供。典型的XML文件要复杂得多,并且涉及许多交叉引用。
以编程方式控制相机设置
可以通过使用MAX(请参见图6)来设置XML文件中公开的属性值来控制摄像机设置。但是,许多应用程序需要能够以编程方式更改相机属性。 NI-IMAQdx API提供了更改XML文件中公开的任何属性的值的方法。虽然可以在任何受支持的API中设置相机属性,但我们将在LabVIEW中讨论其实现。
相机支持的每个属性均由以下(不限)属性定义:
- 名称:属性的唯一名称
- 表示形式:可以是整数,浮点数,布尔值,枚举,字符串或命令
- 度量单位:值表示的单位(例如,微秒(μs))
- 访问:只读,只写或读/写
相机制造商可以为您提供详细说明每个属性的属性的文档。如果没有可用的文档,则可以使用MAX确定某个属性的属性。为此,只需从“摄像机属性”选项卡中选择所需的属性。例如,我们将检查Basler Scout scA640-70gm相机的ExposureTimeAbs属性。从图8中,我们可以确定属性ExposureTimeAbs是一个以微秒为单位的浮点数。
图8 . MAX中的ExposureTimeAbs属性
在LabVIEW中,您可以使用属性节点设置属性值。但是,在开发时,LabVIEW无法知道属性的名称或表示形式。因此,您将需要提供属性名称并根据属性表示形式(整数,字符串,布尔值等)调用适当的函数。
图9. 设置Basler scA640-70gm的ExposureTimeAbs属性
尽管GenICam提供了控制摄像机的灵活方法,但该标准还不足以保证互操作性。互操作性是在不同摄像机之间切换并仍保持应用程序软件功能的能力。例如,如果我们将上述示例中的Basler相机替换为其他制造商的相机。该相机可能具有以纳秒或整数表示的ExposureTimeAbs属性,甚至可能以不同的名称引用该属性。显然,每个摄像机对于相同的输入将产生不同的采集结果。
为了提高互操作性,EMVA与相机制造商合作创建了GenICam标准功能命名约定。本文档的目标是标准化大多数相机共有的许多属性的名称,表示形式,访问方式,单位和功能。通过与GenICam标准一起使用此命名约定,相机制造商可以为标准功能促进与其他相机的互操作性,同时仍使用户可以使用其相机的独特功能。
在GigE Vision中触发
在大多数机器视觉应用程序中,相机需要根据实际事件拍摄图像。例如,当瓶子相对于相机位于传送带上的确切位置时,瓶子检查系统必须捕获每个图像。这将使瓶子出现在图像中的完全相同的位置,从而简化图像处理。您可以使用硬件触发器来实现这种控制。
在典型的硬件触发系统中,接近传感器或编码器发送脉冲以触发采集。在许多情况下,触发器连接到启动采集的帧采集器。但是,由于GigE Vision摄像头(最长100米)可能存在较长的距离,因此触发抓帧器是不可行的。因此,所有触发信号必须直接连接到摄像机。
在GenICam中,选择触发模式的操作与设置相机属性一样。实际上,触发模式是GenICam中的属性。您可以使用上一节中讨论的相同API来设置触发模式。 GenICam标准功能命名约定定义了一些触发控制功能,使您可以自定义触发动作的行为。虽然不要求相机制造商实现所有触发模式,但以下介绍了最常用的模式。
- AquisitionStart :触发器在摄像机上开始采集
- AcquisitionActive :只要触发器处于活动状态,相机就会捕获图像
- FrameStart :相机为每个触发器捕获一张图像
- LineStart :相机为每个触发器捕获一条线(用于线扫描相机)
- ExposureStart :触发器开始曝光一帧(或一行)
- ExposureActive :只要触发器处于活动状态,框架(或线条)就会暴露
图10. Prosilica GE650摄像机的触发属性
例如,让我们看一下Prosilica GE650 GigE Vision相机的触发模式。 MAX的Camera Attributes选项卡如图10所示。请注意,我们已选择相机应为连接到Line1的触发器的每个上升沿捕获一个图像。一旦以任何API打开相机,这些设置一旦保存在MAX中,就会自动加载。但是,您可能需要以编程方式设置设置。图11使用LabVIEW以编程方式将摄像机配置为与图10相同的设置。
图11. LabVIEW中的简单触发示例
注意事项和陷阱
巨型数据包:如果您的NIC设备或任何中间网络硬件(交换机,路由器等)不支持巨型数据包,则您将被限制为小于1500字节的数据包大小。 GigE Vision数据包大小不能大于NIC允许的最大数据包大小。
防火墙:许多公司网络都使用防火墙来提高网络安全性。但是,除非使用High Performanceace驱动程序,否则无法从启用了防火墙的GigE Vision摄像机获取数据。如果您公司的网络策略不允许您禁用防火墙或使用其他网络驱动程序,则需要使用专用于图像采集的系统,该系统不属于公司网络。
损坏的XML文件:与任何新标准一样,相机制造公司通常会发布其固件的新修订版。如果收到错误消息指出XML文件已损坏,请联系相机制造商以获取其固件的最新版本。
互操作性:尽管GenICam使摄像机制造商可以灵活地创建自定义属性集,但很难在不修改代码的情况下轻松地在摄像机之间切换。尽管GenICam标准功能命名公约在一定程度上缓解了此问题,但大多数公约仅是建议而非要求。因此,相机制造商可能会偏离约定,在这种情况下,将需要修改应用程序软件以使其与其他相机兼容。