主要内容

使用GigE视觉相机的硬件触发采集

图像采集工具箱™提供了从GigE Vision®相机的硬件触发采集功能。这在相机采集需要通过外部触发信号与另一个设备(如DAQ设备或另一个相机)同步的应用程序中非常有用。其他应用包括用外部信号控制采集帧率,或获取多曝光图像序列,用于高动态范围(HDR)成像。的用法videoinputgige接口配置一个相机采集允许外部触发信号控制帧率和曝光时间。

要求和硬件设置

  • MATLAB®R2016a或更高版本,图像采集工具箱,以及GigE视觉硬件的图像采集工具箱支持包。

  • GigE Vision兼容摄像头与硬件触发能力。本例使用Basler acA1300 GigE相机。

  • 提供直接摄像头网络连接的千兆以太网适配器,配置如GigE视觉图像采集快速入门指南

  • 外部触发设置,可向相机触发线输入提供触发信号。例如,带有数字输出的DAQ设备、Arduino®板或函数发生器仪器可用于输出自定义触发信号。关于触发信号电压水平/电流要求和正确的信号连接到相机输入线,请参考相机用户手册。本例使用Arduino Mega 2560板,该板已配置为发送触发信号。

连接到相机

创建一个videoinput对象,并获得对相机设备特定属性的访问。当使用videoinputgige适配器,摄像机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源属性,这些属性表示相应的相机特征和参数。GigeHardwareTriggering_03.png

指定要获取的帧总数。为每个外部信号脉冲获取一帧。

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摄像机的硬件触发采集?

GigeHardwareTriggering_06.png

指定要获取的帧总数。为每个外部信号脉冲获取一帧。

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
Baidu
map