8.VisionPro工具介绍之CogAcqFifoTool

2022-06-01 15:39:27 浏览数 (2)

VisionPro利用Acquisition FIFO(先进先出)队列来获取图像。要获取图像,需要向FIFO发送一个取像请求,取像请求发送后,在获取图像过程中,你可以处理其它任务,也可以等待图像获取完成再进行其它任务。Acquisition FIFO首先处理最早的取像请求,并将在取像过程中发送的请求队列,在取像完成时相应的取像请求将从取像队列中移除。

1.1.基本概念介绍

  • Acquisition FIFO:是一个维持先进先出队列的对象。你可以为每个相机创建一个Acquisition FIFO,以用来连接图像抓取工具。
  • Acquisition properties:用来控制相机的工作方式及相机和Acquisition FIFO交互方式的一系列属性。
  • Asynchronous simultaneous acquisition:异步取像,两个或者多个相机的FIFO同时接收取像请求、获取图像的一种方法。
  • Automatic triggering:通过检查触发线上的脉冲信号来获取图像的方法,又叫硬件触发。
  • Camera Configuration File (CCF):存储在安装路径中的一个文件,默认路径(),其中包含了取像系统根据不同的相机来创建相应的图像格式的信息。
  • Cognex Video Module (CVM):为各种不同相机提供接口的硬件。CVMs可以以子卡的方式集成在图像获取模块(frame grabber)或出厂配置中。
  • FIFO:一个先进先出链表结构,其中的元素按添加时的顺序从链表中移除。
  • Frame grabber:将图像数字化,使之可为软件所用的一种硬件,在康耐视视觉库中,用frame grabber来表示硬件的取像功能及所支持的取像方式。
  • Manual triggering:手动触发又叫软触发,通过一个函数来触发取像。
  • Synchronous simultaneous acquisition:一种同步取像方式,可以指定一个FIFO为主FIFO,一个或多个FIFO为从FIFO。当主FIFO收到取像请求开始取像时,从FIFO业自动开始取像。
  • Ticket: StartAcquire函数的一个返回值,可以将其传递给CompleteAcquire函数,以得到与取像请求相对应的图像。
  • Trigger event:触发线上的一个脉冲信号,或者一个函数信号,用来触发取像设备。
  • Trigger line:取像信号设备(frame grabber)上的一根专用信号线,用来接收外部触发信号以开始取像以及响应相应的外部事件。
  • Video format:用来定义相机类型、图像尺寸、以及图像深度等。

1.2.取像缓存队列(Acquisition FIFOs)

ICogAcqFifo由ICogFrameGrabber对象创建,frame grabber安装在电脑上,用来控制与之连接的电脑。特定的frame grabber模式决定了你可以使用什么种类的相机以及视频的可用特征。当你创建一个Acquisition FIFO对象,你要设定用来描述相机特征的视频格式及像素深度,一旦创建了Acquisition FIFO对象,你将不能改变与其相连的frame grabber,也不能改变视频格式。

根据特定的模式,frame grabber可能会有一个或多个相机端口,你创建了一个Acquisition FIFO,你可以设置用于连接的相机端口。但是,你必须明白一点frame grabber的相机端口可能不可以同时取像。你也可以利用已存在的FIFO创建一个从Acquisition FIFO,以用来从两个或多个像源获取图像。

  • 视频格式(Video Formats)

视频格式用来描述特定的相机模式,以及用来控制相机物理我口与Frame grabber的各种参数,例如图像尺寸大小、最大像素深度、资源同步性等。康耐视提供了一些视频格式的配置文件,用来排定上述参数。虽然它们不可编辑,但你可以看到这些CCF文件,这毕件在Visionpro软件安装的时候默认安装在C:ProgramFilesCognexVisionProbin路径

在Visionpro中,视频格式通过字符串来描述,字符串包含了相机制造商、模式、同步信息等参数。为了帮助使用者选择视频格式,确保使用有效的视频格式名称,下表对怎样解释视频格式名称做了介绍。以"Sony XC-75 640x240 IntDrv(rapid-reset,shutter-sw-SDONPISHA)CCF为例,

1.3.相机端口和视频通道(Camera Ports and Video Channels)

康耐视大部分的frame grabber允许连接多个相机,尽管如此并不是说你可以同时从所有的相机取像,能够同时取像的相机数量取决于frame grabber的视频通道数目,视频通道是(video channel)frame grabber用来处理图像的硬件;一个视频通道能够服务于多台相机端口,Visionpro提供了一个函数NumVideoChannels,用来报告您的framegrabber拥有的视频通道的个数。在一些framegrabbers上可能有不同格式的相机端口,例如可能有模拟相机端口和数字相机端口,在这种情况下,你可以用GetNumCameraPorts函数来获取给定相机格式的相机端口数量,你也可以通过NumCameraPorts来获取创建时所选视频格式的可用相机端口数量。

1.4.取像请求(Acquisition Requests)

Acquisition FIFO根据取像请求来获取图像,图像请求的产生方式取决于为Acquisition FIFO设置的CogAcqTrjggerModelConstants值,你可以根据自己的具体需要来指定触发方式。有以下几种触发方式可以选择:

  • 手动触发(Manual Triggering):通过调用函数。
  • 硬件触发(Automatic Triggering):通过触发线上的脉冲信号。
  • 硬件半自动(Semi-automatic Triggering):通过函数和外部触发

混合方式。

  • 自由运行(Free Run Triggering):让系统尽可能快的获取图像。
  • 手动触发(Manual Triggering)

手动触发是最简单的一种触发方式,这种触发方式下,通过调用StartAcquine函数来发出取像请求,通过调用CompleteAcquire函数来获取已经可用的图像;采用这种方式,在取像的过程中,您可以发送新的取像请求或处理其他事情,不必等待本次取像完成。如果你想在发送取像请求后等待图像获取完成,您可以采用Acquire函数。

2.硬件触发(Automatic Triggering)

一些情况下,采用外部触发方式是最好的选择。每一个frame grabber最少提供一个用来发送触发请求的触发输入端,当取像软件检测到触发信号上的跳变信号时,开始取像。这种方式下,使用手动触发会产生错误。同样,你可以通过调用CompleteAcquire函数根据取像请求的顺序来获取图像。

Acquisition FIFO的大小是32,你必须获取图像已将其移出FIFO。否则FIFO将被填满,后来的图像请求将被忽略。您可以利用GetFifoState可监控FIFO中在排队的取像求取的个数,利用CompleteAcquire来获取未处理的图像,利用Flush函数来移除未处理的取像请求。如果您想忽略触发信号,你可以利用TriggerEnabled属性来使能或禁用触发信号另外,如果两台或多台相机共用一个触发线也不会报错,但是,最先获得触发源的FIFO将获取图像,其他的FIFOS将被阻塞。

3.硬件半自动(Semi-automatic Triggering)

硬件半自动是一种混合触发方式,是硬件触发方式和手动触发方式的组合,可以通过调用取像函数或外部触发信号来获取图像。

4.自由运行(Free Run Triggering)

这种触发方式下,取像系统以相机所能支持的最大帧率取像,你在应用程序中必须通过调用Complete Acquire来获取下一个可用图像,不能再使用Start Acquire。

1.5.CogAcqFifoTool工具设置步骤

(1)选择硬件,设置取像参数:

(2)设置触发方式:

(3)图像属性:

(4)设置GigE参数:

(5)设置自定义属性参数:

0 人点赞