图像采集工具箱提供了从GigE视觉相机硬件触发采集功能。这在相机采集需要通过外部触发信号与另一个设备(如仪器或另一个相机)同步的应用中非常有用。其他应用包括用外部信号控制采集帧率,或获取用于高动态范围(HDR)成像的多次曝光图像序列。
这个例子展示了如何使用视频输入gige接口来配置相机采集,以允许外部触发信号控制帧率和曝光时间。
需求和硬件设置
-
MATLAB R2016a及以上版本,图像采集工具箱,以及GigE视觉硬件支持包
- 兼容GigE Vision的摄像头,具有硬件触发功能;本节以Basler acA1300为例。
- 千兆以太网适配器,提供摄像机的直接网络连接,配置请参见“GigE Vision快速入门配置指南”。
- 外部触发设置,可向相机触发线输入提供触发信号。例如,具有数字输出的DAQ设备、Arduino板或函数发生器仪器可用于输出自定义触发信号。有关触发信号电压电平/电流要求以及相机输入线的正确信号连接,请参阅相机用户手册。
连接摄像头
用所需的视频格式创建一个视频输入,并访问相机设备特定的属性。当使用视频输入gige适配器时,摄像机GenICam特性和参数值表示为视频输入源属性。
V =视频输入(“gige”, 1“Mono8”);
s = v.来源;
直接收购
默认情况下,如果没有显式指定硬件触发配置,则在执行videoinput start函数时立即进行采集。
为了简单起见,这个示例执行有限数量的帧的获取,并将它们存储在MATLAB基础工作空间中。
s.ExposureMode =“时间”;
s.ExposureTimeAbs = 4000;
triggerconfig (v,“立即”);
v.FramesPerTrigger = 30;
v.TriggerRepeat = 0;
开始(v);
等待(v, 10);
[data, ts] = getdata(v, v. framesavailable);
显示获得的帧和情节获取时间戳。
数字
imaqmontage(数据)
图;
情节(ts,“。”)
包含(“帧索引”)
ylabel (“时间戳(s)”)
FrameStart触发
大多数GigE Vision相机支持FrameStart硬件触发模式,该模式用于配置相机为应用于相机线输入的每个上升沿(或下降沿)信号获取一帧。
在本例中,使用函数发生器仪器提供25 Hz外部周期方波信号应用于摄像机Line1输入,该信号频率有效地控制摄像机帧频。
当使用|gige|适配器时,要配置硬件触发采集,|视频输入|触发类型需要设置为“硬件”,而其余的配置是通过|视频输入|源属性完成的,该属性表示对应的摄像机GenICam功能/参数。
numFrames = 30;
v.FramesPerTrigger = 1;
v.TriggerRepeat = numFrames - 1;
triggerconfig (v,“硬件”,“DeviceSpecific”,“DeviceSpecific”);
配置相机为FrameStart触发模式,并指定外部触发信号输入线和所需的触发条件。
s.TriggerSelector =“FrameStart”;
s.TriggerSource =“Line1”;
s.TriggerActivation =“RisingEdge”;
s.TriggerMode =“上”;
s.ExposureMode =“时间”;
s.ExposureTimeAbs = 4000;
开始(v)
等待(v, 10)
[data2, ts2] = getdata(v, v. framesavailable);
显示获取的帧和时间戳
数字
imaqmontage (data2)
数字
情节(ts2,“。”)
包含(“帧索引”)
ylabel (“时间戳(s)”)
注意:一些相机型号还支持一个tionstart触发器,这取决于相机型号和配置,可以用作多帧采集的开始触发器,或者作为FrameStart触发器的使能器。
曝光时间控制
某些GigE Vision相机型号支持通过外部信号脉冲持续时间控制每帧的曝光时间。
这种配置可以通过FrameStart硬件触发模式和TriggerWidth曝光模式来实现。
可能的应用包括高动态范围(HDR)成像,其中外部触发信号可以是不同脉冲宽度持续时间的脉冲序列。关于如何使用Arduino板生成自定义触发信号的简单示例,请参阅所附的Arduino草图文件(outputpulsessequence .ino)。
numFrames = 30;
v.FramesPerTrigger = 1;
v.TriggerRepeat = numFrames - 1;
triggerconfig (v,“硬件”,“DeviceSpecific”,“DeviceSpecific”);
配置相机为FrameStart触发模式,并指定外部触发信号输入线和所需的触发条件。
s.TriggerSelector =“FrameStart”;
s.TriggerSource =“Line1”;
s.TriggerActivation =“RisingEdge”;
s.TriggerMode =“上”;
s.ExposureMode =“TriggerWidth”;
s.ExposureOverlapTimeMaxAbs = 5000;
开始(v)
等待(v, 10)
[data3, ts3] = getdata(v, v. framesavailable);
显示获取的帧和时间戳
数字
imaqmontage (data3)
数字
情节(ts3,“。”)
包含(“帧索引”)
ylabel (“时间戳(s)”)
数字
情节(diff (ts3),“- x”)
包含(“帧索引”)
ylabel (“diff(时间戳)(s)”)
要获得高动态范围(HDR)图像,请使用图像处理工具箱中的makehdr函数对每个获得的多次曝光图像序列进行处理。