主要内容

基于GigE视觉摄像头的硬件触发采集

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

要求和硬件设置

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

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

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

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

连接摄像头

创建一个videoinput对象所需要的视频格式,并访问相机设备特定的属性。当使用videoinputgige适配器,摄像机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源属性,表示相应的相机特征和参数。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”) ylim([0 0.2]);包含(“帧索引”);ylabel (“diff(时间戳)(s)”);

停止收购。

停止(v)

通过控制曝光时间捕获帧

某些GigE Vision相机型号支持通过外部信号脉冲宽度持续时间控金宝app制每帧的曝光时间。可以使用FrameStart硬件触发方式和一种TriggerWidth曝光模式。

可能的应用包括高动态范围(HDR)成像,其中外部触发信号可以是不同脉冲宽度持续时间的脉冲序列。在本例中,触发信号由Arduino生成,Arduino被编程输出不同脉冲宽度(5、10、20和50 ms)的重复脉冲序列,脉冲之间有50 ms的延迟。有关如何使用Arduino生成自定义触发信号的简单示例,请参见如何配置吉兆视觉摄像头的硬件触发采集?

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