基于GigE视觉摄像头的硬件触发采集
图像采集工具箱™提供了从GigE Vision®相机硬件触发采集的功能。这在相机采集需要通过外部触发信号与另一个设备(如DAQ设备或另一个相机)同步的应用程序中非常有用。其他应用包括用外部信号控制采集帧率,或获取用于高动态范围(HDR)成像的多次曝光图像序列。方法的使用videoinput
gige
接口,用于配置相机采集,以允许外部触发信号控制帧速率和曝光时间。
要求和硬件设置
MATLAB®R2016a或更高版本,图像采集工具箱,以及GigE视觉硬件的图像采集工具箱支持包。金宝app
GigE Vision兼容摄像头与硬件触发能力。本例使用Basler acA1300 GigE摄像机。
提供直接摄像机网络连接的千兆以太网适配器,配置方法参见GigE视觉图像采集快速入门指南.
外部触发装置,可向相机触发线输入提供触发信号。例如,具有数字输出的DAQ设备、Arduino®板或函数发生器仪器可用于输出自定义触发信号。有关触发信号电压电平/电流要求以及相机输入线的正确信号连接,请参阅相机用户手册。本例使用Arduino Mega 2560板,该板已配置为发送触发信号。
连接摄像头
创建一个videoinput
对象所需要的视频格式,并访问相机设备特定的属性。当使用videoinput
gige
适配器,摄像机GenICam的特征和参数值表示为videoinput
源属性。
V =视频输入(“gige”,“1”,“Mono8”);s = v.来源;
中所述,可确定最佳流媒体参数GigE视觉图像采集快速入门指南.这些值将因您的设置而不同。
s.PacketSize = 9000;s.PacketDelay = 17327;
捕获帧与即时采集
默认情况下,当您调用videoinput
开始
函数且未指定硬件触发配置。为了简单起见,这个示例执行有限数量的帧的获取,并将它们存储在MATLAB工作空间中。
triggerconfig (v,“立即”);
设置曝光时间和曝光模式。
s.ExposureMode =“时间”;s.ExposureTimeAbs = 4000;
指定要获取的帧数。
v.FramesPerTrigger = 30;v.TriggerRepeat = 0;
启动连续缓冲采集并等待采集完成。
开始(v);等待(v, 10);
将采集的帧从采集输入缓冲区保存到工作区。
data = getdata(v,v. framesavailable);
显示获取的帧。
图;imaqmontage(数据)
停止收购。
停止(v)
使用FrameStart
触发
大多数GigE视觉相机支持金宝appFrameStart
硬件触发模式,用于配置相机为应用于相机线输入的每个上升沿(或下降沿)信号获取一帧。在本例中,Arduino用于提供应用于相机的外部周期性方波信号Line1
输入。信号频率有效地控制了相机的帧率。
当使用gige
适配器配置一个硬件触发采集,该videoinput
“触发类型”必须设置为硬件
.配置文件完成其余配置videoinput
源属性,表示相应的相机特征和参数。
指定要获取的帧总数。对每个外部信号脉冲采集一帧。
numFrames = 30;v.FramesPerTrigger = 1;v.TriggerRepeat = numFrames - 1;
指定videoinput
触发类型为硬件
.
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)
绘制时间戳差异,对应于外部触发信号的10hz频率。
图;情节(diff (ts2),“- x”) ylim([0 0.2]);包含(“帧索引”);ylabel (“diff(时间戳)(s)”);
停止收购。
停止(v)
通过控制曝光时间捕获帧
某些GigE Vision相机型号支持通过外部信号脉冲宽度持续时间控金宝app制每帧的曝光时间。可以使用FrameStart
硬件触发方式和一种TriggerWidth
曝光模式。
可能的应用包括高动态范围(HDR)成像,其中外部触发信号可以是不同脉冲宽度持续时间的脉冲序列。在本例中,触发信号由Arduino生成,Arduino被编程输出不同脉冲宽度(5、10、20和50 ms)的重复脉冲序列,脉冲之间有50 ms的延迟。有关如何使用Arduino生成自定义触发信号的简单示例,请参见如何配置吉兆视觉摄像头的硬件触发采集?.
指定要获取的帧总数。对每个外部信号脉冲采集一帧。
numFrames = 30;v.FramesPerTrigger = 1;v.TriggerRepeat = numFrames - 1;
指定videoinput
触发类型为硬件
.
triggerconfig (v,“硬件”,“DeviceSpecific”,“DeviceSpecific”);
配置摄像头FrameStart
触发方式,并指定外部触发信号输入线和所需的触发条件。
s.TriggerSelector =“FrameStart”;s.TriggerSource =“Line1”;s.TriggerActivation =“RisingEdge”;s.TriggerMode =“上”;
若要控制曝光时间,请配置TriggerWidth
曝光模式。
s.ExposureMode =“TriggerWidth”;
指定相机ExposureOverlapTimeMaxAbs
在微秒。
s.ExposureOverlapTimeMaxAbs = 5000;
启动连续缓冲采集并等待采集完成。
开始(v);等待(v, 10);
将获取的帧和时间戳从获取输入缓冲区保存到工作空间。
[data3,ts3] = getdata(v,v. framesavailable);
显示获取的帧。
图;imaqmontage (data3)
图;情节(diff (ts3),“- x”);ylim ([0.05 - 0.11]);包含(“帧索引”);ylabel (“diff(时间戳)(s)”);
停止收购。
停止(v)
每个获得的多次曝光图像序列可以进一步处理,以获得高动态范围的图像在图像处理工具箱™功能。
清理
当你用完相机后,清理工作空间。
删除(v)清晰v