使用GigE Vision摄像头进行硬件触发采集

图像采集工具箱提供从GigE Vision摄像头进行硬件触发采集的功能。这在需要通过外部触发信号与另一个设备(如DAQ设备或另一个摄像头)同步摄像头采集的应用中非常有用。其他应用包括使用外部信号控制采集帧速率,或获取用于高动态范围(HDR)成像的多曝光图像序列。此示例显示如何使用视频输入gige接口,用于配置摄像头采集,以允许外部触发信号控制帧速率和曝光时间。

要求和硬件设置

  • MATLAB R2016a或更高版本,图像采集工具箱,和“GigE视觉硬件”支持包。万博1manbetx

  • 兼容GigE Vision的摄像头,具有硬件触发功能;本例使用Basler acA1300。

  • 千兆以太网适配器,提供直接摄像头网络连接,配置方法请参见《千兆视觉快速入门配置指南》。

  • 外部触发设置,可向摄像头触发线输入提供触发信号。例如,可使用带数字输出的DAQ设备、Arduino板或函数发生器仪器输出自定义触发信号。有关触发信号电压电平/电流要求和c正确连接摄像头输入线的信号。

连接到相机

创建一个视频输入使用所需的视频格式并访问相机设备的特定属性视频输入gige适配器、摄像头GenICam功能和参数值表示为视频输入源属性。

v = videoinput (“gige”1.“Mono8”); s=v.源;确定最佳的流参数,如所述%“GigE Vision快速启动配置指南”s、 包装尺寸=9000;% s.PacketDelay =

直接收购

默认情况下,在以下情况下立即进行收购:视频输入开始如果未显式指定硬件触发配置,则执行。为简单起见,本例执行获取有限数量的帧,并将它们存储在MATLAB基础工作空间中。

%设置曝光时间和模式s.ExposureMode =“定时”; s、 曝光时间abs=4000;%默认的videoinput触发器类型为“立即”,这是显式的%为清晰起见,此处进行了配置。triggerconfig(v,“立即”);%指定要获取的帧数v.FramesPerTrigger = 30;v.TriggerRepeat = 0;开始连续缓冲采集并等待采集完成启动(v);等待(v,10);%将采集的帧从采集输入缓冲区传输到工作区。data = getdata(v, v. framesavailable);

显示采集的帧。

图;imaqmontage(数据)

帧启动触发器

大多数GigE Vision相机支持FrameSt万博1manbetxart硬件触发模式,该模式用于配置相机,为应用到相机线路输入的每个上升沿(或下降沿)信号获取一帧。在这个例子中,一个函数发生器仪器被用来提供一个25hz的外部周期方波信号应用到相机的“Line1”输入,信号频率有效地控制了相机的帧率。

当使用gige适配器,用于配置硬件触发采集视频输入触发器类型需要设置为“硬件”,而其余配置通过视频输入源属性,表示相应的相机GenICam特征/参数。

%指定要获取的帧总数%每个外部信号脉冲采集一帧。numFrames=30;v.FramesPerTrigger=1;v.TriggerRepeat=numFrames-1;指定“硬件”视频输入触发类型triggerconfig(v,“硬件”,“设备特定”,“设备特定”);

将摄像头配置为FrameStart触发模式,并指定外部触发信号输入线和所需的触发条件。

%这需要首先设置TriggerSelector;一次设置TriggerSelector%值,设置触发器属性(例如,%TriggerMode至“开”)仅适用于指定的触发器模式(FrameStart)。s、 触发器选择器=“框架开始”;s.TriggerSource=“第1行”;s.触发激活=“RisingEdge”;s.TriggerMode =“开”%为每个帧指定恒定曝光时间s.ExposureMode =“定时”; s、 曝光时间abs=4000;启动硬件触发的缓冲连续采集,并等待获得完成百分比开始(v)等待(v,10)从采集输入缓冲区传输获取的帧和时间戳%进入工作区[data2, ts2] = getdata(v, v. framesavailable); / /当前帧

显示采集的帧并绘制与外部触发信号的25 Hz频率相对应的时间戳差异。

图;imaqmontage (data2)图;情节(diff (ts2),'.')包含(“帧索引”); 伊拉贝尔(“diff(时间戳)(s)”);

注意:某些相机型号还支持AcquisitionStart触发万博1manbetx器,根据相机型号和配置,该触发器可用作多帧采集的启动触发器,或用作FrameStart触发器的启用码。

曝光时间的控制

某些GigE Vision相机型号支持通过外部信号脉冲宽度持续时间来万博1manbetx控制每帧的曝光时间。这个配置可以通过FrameStart硬件触发模式和TriggerWidth曝光模式来实现。

可能的应用包括高动态范围(HDR)成像,其中外部触发信号可以是不同脉冲宽度持续时间的脉冲序列。有关如何使用Arduino板生成自定义触发信号的简单示例,请参阅以下URL:< //www.tianjin-qmedu.com/matlabcentral/answers/289155>

%指定要获取的帧总数%每个外部信号脉冲采集一帧。numFrames=30;v.FramesPerTrigger=1;v.TriggerRepeat=numFrames-1;指定“硬件”视频输入触发类型triggerconfig(v,“硬件”,“设备特定”,“设备特定”);

将摄像头配置为FrameStart触发模式,并指定外部触发信号输入线和所需的触发条件。

%这需要首先设置TriggerSelector;一次设置TriggerSelector%值,设置触发器属性(例如,%TriggerMode至“开”)仅适用于指定的触发器模式(FrameStart)。s、 触发器选择器=“框架开始”;s.TriggerSource=“第1行”;s.触发激活=“RisingEdge”;s.TriggerMode =“开”%用于曝光时间控制,配置一个TriggerWidth曝光模式。s.ExposureMode =“触发宽度”%以微秒为单位指定相机曝光重叠时间最大值s、 曝光重叠时间最大值=5000;启动硬件触发的缓冲连续采集,并等待获得完成百分比开始(v)等待(v,10)从采集输入缓冲区传输获取的帧和时间戳%进入工作区[data3,ts3]=getdata(v,v.FramesAvailable);

显示采集的帧并绘制时间戳差异。

图形imaqmontage(数据3)图;地块(ts3,'.')包含(“帧索引”); 伊拉贝尔(“时间戳(s)”);图;绘图(差异(ts3),“-x”); xlabel(“帧索引”); 伊拉贝尔(“diff(时间戳)(s)”);

每一个获得的多次曝光图像序列可以进一步处理,以获得高动态范围的图像。