SFNC —— 采集控制(四)(上)

简介: SFNC —— 采集控制(四)

5、采集控制(Acquisition Control)

    采集控制章节描述了与图像采集相关的所有特征,包括触发器和曝光控制。它描述了采集的基本模型和设备的典型行为。

1. 采集相关的词汇和信号(Acquisition related vocabulary and signals)

    本节描述了用于描述和命名与采集相关的特性的词汇表和术语。它还定义了与采集相关的信号及其在设备采集图像时的时间位置。

    采集(Acquisition)由直线(Lines)构成的一个或多个帧(Frames)组成。采集的帧可以选择分组为单独触发的较小的突发。采集定义为对一个或多个帧序列的捕获(请参见图 5-1 )。

  采集帧的传输从第一帧的传输开始开始,到最后一帧的传输完成结束。

   帧的突发(A Burst of Frame(s))定义为捕获中一个或多个帧组的捕获(Acquisition)(参见图 5-1 )。如果启用了帧突发启动(FrameBurstStart)或帧突发活动触发器(FrameBurstActive)(其触发模式(TriggerMode)=On),则可以在许多较小的突发中中断采集。在这种情况下,每个爆发都有自己的触发器。如果仅启用帧突发启动触发器,则采集突发帧计数将确定每个突发的长度。如果启用了帧突发启动和帧突发结束触发器,则它们将用于限定每个突发的长度。如果启用了帧突发激活触发器,它将确定每个单独突发的长度(只要断言触发器,突发将持续)。


   突发的帧的传输从突发的第一帧的传输开始开始,到最后一帧的传输的完成结束。


   一帧被定义为宽度像素( Width pixels) x 高度线(Height lines)的捕获。帧从可选的曝光(Exposure)周期开始,以传感器读出的完成结束。一般来说,一个传输周期将在传感器读出期间开始,并将在它之后的某个时间完成,但它不被视为框架的一部分。

    对于线扫描采集,帧的定义保持相同,但是对虚拟帧的每一行进行曝光和读取。

2. 采集特性使用模型(Acquisition features usage model)

   AcquisitionMode 控制着该设备的采集模式。这主要影响采集中捕获的帧数(SingleFrame, MultiFrame 或者 Continuous)。


   可选的 AcquisitionArm 命令用于验证和冻结与图像数据捕获相关的所有参数。它为 AcquisitionStart 准备设备。


   AcquisitionStart 命令用于启动采集。


   AcquisitionStop 命令将在当前帧结束时停止采集。它可以在任何采集模式下使用,如果相机正在等待触发器,等待的帧将被取消。


   AcquisitionAbort 命令可用于在任何时候中止采集。这将立即结束捕获,而不等待采集完当前帧。


   AcquisitionFrameCount 控制当采集模式(AcquisitionMode)为多帧(MultiFrame)时将捕获的帧数。


   如果启用了 FrameBurstStart 触发器并且禁用了 FrameBurstEnd 触发器,则 AcquisitionBurstFrameCount 确定要捕获的每个突发的长度。


   AcquisitionFrameRate 控制在触发模式(TriggerMode)关闭时捕获帧的速率。


   AcquisitionLineRate 控制当触发模式关闭时,每一帧中的线被捕获的速率。这通常有用。


   AcquisitionStatusSelector 和 AcquisitionStatus 可以用来读取内部采集信号的状态。标准采集信号状态为:采集触发等待(AcquisitionTriggerWait)、采集激活(AcquisitionActive)、采集传输(AcquisitionTransfer)、帧触发等待(FrameTriggerWait)、帧激活(FrameActive)、曝光激活(ExposureActive)(参见图 5-1 和图 5-3 )。

3. 采集时序图(Acquisition timing diagrams)

    本节给出了最常见的采集场景的时序图和功能设置顺序。

(1)Continuous Acquisition —— 连续采集


(2)Continuous Acquisition with AcquisitionStart trigger —— 使用 AcquisitionStart 触发器进行连续采集

(3)Continuous Acquisition with FrameStart trigger —— 使用帧启动触发器进行连续采集

(4)Continuous Acquisition with FrameBurstStart trigger —— 使用帧突发启动触发器进行连续采集

(5)Multi-Frame Acquisition —— 多帧采集


(6)Multi-Frame Acquisition with AcquisitionStart trigger —— 使用采集启动触发器进行多帧采集

(7)Multi-Frame Acquisition with FrameStart trigger —— 使用帧启动触发器进行多帧采集

(8)Multi-Frame Acquisition with FrameBurstStart trigger —— 使用FrameBurstStart 触发器进行多帧采集


(9)Single Frame Acquisition —— 单帧采集

(10)Single Frame Acquisition with AcquisitionStart trigger —— 使用AcquisitionStart触发器进行多帧采集


(11)Single Frame Acquisition with FrameStart trigger —— 使用帧启动触发器进行多帧采集

4. 采集和触发器功能的使用示例(Acquisition and Trigger features usage examples)

(1)Continuous acquisition when the camera is in its reset state

当摄像机处于重置状态时,可进行连续采集。

  AcquisitionMode = Continuous;
  AcquisitionStart();
  AcquisitionStop();

(2)Single Frame acquisition in Hardware trigger mode using the external I/O Line 3

使用外部I/O线3在硬件触发模式下的单帧采集

  AcquisitionMode = SingleFrame;
  TriggerSelector = FrameStart;
  TriggerMode = On;
  TriggerActivation = RisingEdge;
  TriggerSource = Line3;
  AcquisitionStart();

(3)Multi-Frame acquisition started by a single Software trigger

多帧采集由单个软件触发器延迟1毫秒。触发器将启动整个序列采集。每一帧的曝光时间设置为 500 us。

/* Multi-Frame acquisition started by a single Software trigger delayed by 1 millisecond. 
 The Trigger starts the whole sequence acquisition. The Exposure time for each frame is 
 set to 500 us.
*/
  AcquisitionMode = MultiFrame;
  AcquisitionFrameCount = 20;
  TriggerSelector = AcquisitionStart;
  TriggerMode = On;
  TriggerSource = Software;
  TriggerDelay = 1000;
  ExposureMode = Timed;
  ExposureTime = 500;
  AcquisitionStart();
  TriggerSoftware();


(4)Continuous acquisition in Hardware trigger mode

    在硬件触发模式下的连续采集。帧触发器是来自物理线2的上升边缘信号。曝光时间是500 us。在每一帧曝光后,曝光结束事件也被发送到主机应用程序,以表明被检查的部分可以被移动。该事件的时间戳也会被读取。

/* Continuous acquisition in Hardware trigger mode. The Frame triggers are Rising Edge signals 
 coming from the physical Line 2. The Exposure time is 500us. An exposure end event is also 
 sent to the Host application after the exposure of each frame to signal that the inspected part 
 can be moved. The timestamp of the event is also read.
*/

  AcquisitionMode = Continuous;
  TriggerSelector = FrameStart;
  TriggerMode = On;
  TriggerActivation = RisingEdge;
  TriggerSource = Line2;
  ExposureMode = Timed;
  ExposureTime = 500;
  Register(Camera.EventExposureEnd, CallbackDataObject, CallbackFunctionPtr)
  EventSelector = ExposureEnd;
  EventNotification = On;
  AcquisitionStart();
  // In the callback of the ExposureEnd event, get the event timestamp:
  Timestamp = EventExposureEndTimestamp;
  AcquisitionStop();

(5)Multi-Frame acquisition with each frame triggered by a Hardware trigger on Line 1

    多帧采集,每帧由硬件 Line 1 触发器触发。曝光信号持续时间(500us)的负脉冲也被发送到物理输出线2,以在每一帧的曝光时间期间激活一束光。序列捕获的结束通过采集结束事件发送给主机。

/* Multi-Frame acquisition with each frame triggered by a Hardware trigger on Line 1.
 A negative pulse of the exposure signal duration (500us) is also sent to the physical
  output line 2 to activate a light during the exposure time of each frame. The end of 
 the sequence capture is signalled to the host with an acquisition end event.
*/
  AcquisitionMode = MultiFrame;
  AcquisitionFrameCount = 20;
  TriggerSelector = FrameStart;
  TriggerMode = On;
  TriggerActivation = RisingEdge;
  TriggerSource = Line1;
  ExposureMode = Timed;
  ExposureTime = 500;
  LineSelector = Line2;
  LineMode = Output;
  LineInverter = True;
  LineSource = ExposureActive 
  Register(Camera.EventAcquisitionEnd,CallbackDataObject,CallbackFunctionPtr)
  EventSelector = AcquisitionEnd;
  EventNotification = On;
  AcquisitionStart();

(6)Continuous Acquisition of frames in bursts of 10 frames

    10 帧的连续采集帧。每个突发都由 Line 1 上的硬件触发器触发。每个突发捕获的结束都通过一个帧突发结束事件(FrameBurstEnd )发送给主机。

/* Continuous Acquisition of frames in bursts of 10 frames. Each burst is triggered by a 
 Hardware trigger on Line 1. The end of each burst capture is signalled to the host with a 
 FrameBurstEnd event.
*/

  AcquisitionMode = Continuous;
  AcquisitionBurstFrameCount = 10;
  TriggerSelector = FrameBurstStart;
  TriggerMode = On;
  TriggerActivation = RisingEdge;
  TriggerSource = Line1;
  Register(Camera.EventFrameBurstEnd,CallbackDataObject,CallbackFunctionPtr)
  EventSelector = FrameBurstEnd;
  EventNotification = On;
  AcquisitionStart();
  // In the callback of the end of burst event, get the event timestamp:
  Timestamp = EventExposureEndTimestamp;
  AcquisitionStop();

(7)Multi-Frame Acquisition of 50 frames in 5 bursts of 10 frames

    多帧采集50帧,每5次采集10帧。每次爆发都由 Line 1 上的硬件触发器触发。

/* Multi-Frame Acquisition of 50 frames in 5 bursts of 10 frames. Each burst is triggered by a 
 Hardware trigger on Line 1.
*/
  AcquisitionMode = MultiFrame;
  AcquisitionFrameCount = 50;
  AcquisitionBurstFrameCount = 10;
  TriggerSelector = FrameBurstStart;
  TriggerMode = On;
  TriggerActivation = RisingEdge;
  TriggerSource = Line1;
  AcquisitionStart();

(8)Linescan continuous acquisition with Hardware Frame and Line trigger

    使用硬件框架和线触发器线扫描连续采集。

/* Linescan continuous acquisition with Hardware Frame and Line trigger. */
  AcquisitionMode = Continuous;
  TriggerSelector = FrameStart;
  TriggerMode = On;
  TriggerActivation = RisingEdge;
  TriggerSource = Line1;
  TriggerSelector = LineStart;
  TriggerMode = On;
  TriggerActivation = RisingEdge;
  TriggerSource = Line2;
  AcquisitionStart();
  AcquisitionStop();

(9)Framescan continuous acquisition

    帧扫描连续采集与硬件帧触发器和曝光持续时间由触发器的脉冲宽度控制。

/* Framescan continuous acquisition with Hardware Frame trigger and the
 Exposure duration controlled by the Trigger pulse width.
*/ 
  AcquisitionMode = Continuous;
  TriggerSelector = FrameStart;
  TriggerMode = On;
  TriggerActivation = RisingEdge;
  TriggerSource = Line1;
  ExposureMode = TriggerWidth;
  AcquisitionStart();
  AcquisitionStop();

(10)Framescan continuous acquisition

    帧可以连续采集,通过1个硬件触发器来控制采集的开始,以及 2 个其他硬件触发器来启动和停止每个帧的曝光。

/* Framescan continuous acquisition with 1 Hardware trigger controlling
 the start of the acquisition and 2 others harware triggers to start and stop 
 the exposure of each frame. 
*/
  AcquisitionMode = Continuous;
  TriggerSelector = AcquisitionStart;
  TriggerMode = On;
  TriggerSource = Line1;
  ExposureMode = TriggerControlled;
  TriggerSelector = ExposureStart;
  TriggerMode = On;
  TriggerSource = Line3;
  TriggerSelector = ExposureStop;
  TriggerMode = On;
  TriggerSource = Line4;
  AcquisitionStart();
  AcquisitionStop();

SFNC —— 采集控制(四)(中):https://developer.aliyun.com/article/1598544

目录
相关文章
|
4月前
|
传感器
SFNC —— 采集控制(四)(中)
SFNC —— 采集控制(四)
136 4
|
4月前
|
算法 索引
SFNC —— 采集控制(四)(下)
SFNC —— 采集控制(四)
85 2
|
5月前
|
消息中间件 存储 数据采集
基于Modbus实现的工业采集数据项目(包含led的开关)
1.首先应该实现一个基于Modbus实现对一个设备的数据采集以及控制,我这边是通过Modbus_tcp实现的。 2.因为要实现采集控制程序和网页服务器的通信我这边采用的是共享内粗你和消息队列,传输存储的数据就用共享内存,操作开关就用消息队列 3.写网页服务器和一个网页,需要让其两个可以正常通信,就是让网页服务器上的东西可以发到网页上 4.然后将采集的数据通过共享内存去分享给网页服务器,让网页服务器传给网页即可,控制开关同理,反过来。
108 1
|
7月前
|
Prometheus 监控 关系型数据库
监控数据的几种采集方式
【1月更文挑战第14天】
|
传感器 存储
VM系列振弦采集模块的信号检测与分析计算
振弦传感器钢弦起振后,信号强度在短时间内迅速达到最大,然后在钢弦张力及空气阻力作用下逐渐恢复静止。我们可将整个振动过程分为起振、调整、稳定、消失几个阶段,上述几个阶段中,起振和调整阶段的振动又叫做强迫振动,稳定与消失阶段合称为自主振动。
298 66
VM系列振弦采集模块的信号检测与分析计算
LabVIEW控制Arduino采集光敏电阻数值(基础篇—14)
利用光敏电阻和LIAT中的光敏函数库,通过Arduino Uno控制板的模拟端口采集与光敏电阻串联电阻的分压值上传给LabVIEW软件,并除以光照系数以获得光照值,实现一个光强计的功能。
|
传感器
LabVIEW控制Arduino采集多路DS18B20温度数值(进阶篇—3)
本篇博文将实现LabVIEW控制Arduino采集多路DS18B20温度数值,关于LabVIEW控制Arduino在基础篇已经讲解过很多种类温度传感器的采集方法。
|
7月前
|
SQL JSON 监控
无需重启应用,动态采集任意点位日志
借助日志治理的现有能力,我们能够在不重启应用的前提下,动态采集任意点位信息,同时由于日志治理在采集信息时会引入链路信息,在分析复杂调用问题时能够起到很好的效果。
107 0
无需重启应用,动态采集任意点位日志
西门子S7-300开关量模块和模拟量模块通道地址如何分配?
根据机架上模块的类型,地址可以设定为输入I或输出O。数字量I/O模块每个槽占4个字节地址,也就是32个I/O点,1个字节8个位所以4个字节32个位。
西门子S7-300开关量模块和模拟量模块通道地址如何分配?
|
传感器 移动开发 缓存
振弦采集模块的系统状态
VMXXX 模块有 3 种工作状态,分别为空闲状态、忙状态、休眠状态, 模块自动完成空闲和忙两种状态的切换,当需要使模块进入休眠模式时,需要向系统寄存器 SYS_FUN 发送指令码 0x0006或者字符串指令$SLEP\r\n(详见“3.21.6 低功耗休眠” )。
振弦采集模块的系统状态