使用GigE视觉相机的硬件触发采集
图像采集工具箱™提供了从GigE Vision®相机的硬件触发采集功能。这在相机采集需要通过外部触发信号与另一个设备(如DAQ设备或另一个相机)同步的应用程序中非常有用。其他应用包括用外部信号控制采集帧率,或获取多曝光图像序列,用于高动态范围(HDR)成像。的用法videoinput
gige
接口配置一个相机采集允许外部触发信号控制帧率和曝光时间。
要求和硬件设置
MATLAB®R2016a或更高版本,图像采集工具箱,以及GigE视觉硬件的图像采集工具箱支持包。
GigE Vision兼容摄像头与硬件触发能力。本例使用Basler acA1300 GigE相机。
提供直接摄像头网络连接的千兆以太网适配器,配置如GigE视觉图像采集快速入门指南.
外部触发设置,可向相机触发线输入提供触发信号。例如,带有数字输出的DAQ设备、Arduino®板或函数发生器仪器可用于输出自定义触发信号。关于触发信号电压水平/电流要求和正确的信号连接到相机输入线,请参考相机用户手册。本例使用Arduino Mega 2560板,该板已配置为发送触发信号。
连接到相机
创建一个videoinput
对象,并获得对相机设备特定属性的访问。当使用videoinput
gige
适配器,摄像机GenICam的特征和参数值表示为videoinput
源属性。
v = videoinput (“gige”,“1”,“Mono8”);s = v.Source;
您可以确定最佳流参数描述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 Vision摄像机支持FrameStart
硬件触发模式,用于配置相机为应用于相机线输入的每个上升边(或下降边)信号获取帧。在本例中,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”0.2) ylim ([0]);包含(“帧索引”);ylabel (“diff(时间戳)(s)”);
停止收购。
停止(v)
通过控制曝光时间捕捉帧
某些GigE Vision相机型号支持通过外部信号脉宽持续时间控制每帧的曝光时间。可以通过FrameStart
硬件触发模式和TriggerWidth
曝光模式。
可能的应用包括高动态范围(HDR)成像,其中外部触发信号可以是不同脉冲宽度持续时间的脉冲序列。在本例中,触发信号由Arduino生成,该Arduino被编程输出不同脉冲宽度(5、10、20和50毫秒)的重复脉冲序列,脉冲之间有50毫秒的延迟。有关如何使用Arduino生成自定义触发信号的简单示例,请参见如何配置从GigE Vision摄像机的硬件触发采集?.
指定要获取的帧总数。为每个外部信号脉冲获取一帧。
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