主要内容

硬件触发采集与GigE视觉摄像机

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

需求和硬件设置

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

  • 兼容GigE Vision的摄像头,具有硬件触发功能;本例使用Basler acA1300。

  • 千兆以太网适配器,提供直接摄像头网络连接,配置方法请参见《千兆视觉快速入门配置指南》。

  • 外部触发设置,可向相机触发线输入提供触发信号。例如,可以使用带有数字输出的DAQ设备、Arduino板或函数发生器仪器输出自定义触发信号。请参阅相机用户手册,了解触发信号的电压水平/电流要求以及相机输入线路的正确信号连接。

连接到相机

创建一个videoinput与所需的视频格式,并获得访问相机设备的特定属性。当使用videoinputgige适配器,摄像机GenICam的特征和参数值表示为videoinput源属性。

v = videoinput (“gige”, 1“Mono8”);s = v.Source;确定最佳的流参数,如所述《GigE Vision快速入门配置指南》s.PacketSize = 9000;% s.PacketDelay =

直接收购

默认情况下,当videoinput开始如果未显式指定硬件触发配置,则执行。为简单起见,本例执行获取有限数量的帧,并将它们存储在MATLAB基础工作空间中。

%设置曝光时间和模式s.ExposureMode =“时间”;s.ExposureTimeAbs = 4000;%默认的视频输入触发类型是'immediate',这是显式的为清晰起见,此处配置了%。triggerconfig (v,“立即”);%指定要获取的帧数v.FramesPerTrigger = 30;v.TriggerRepeat = 0;开始连续缓冲采集并等待采集完成开始(v);等待(v, 10);将获取的帧从获取输入缓冲区转移到工作区。data = getdata(v, v. framesavailable);

显示了框架。

图;imaqmontage(数据)

FrameStart触发

大多数GigE Vision相机支持FrameSt金宝appart硬件触发模式,该模式用于配置相机,为应用到相机线路输入的每个上升沿(或下降沿)信号获取一帧。在这个例子中,一个函数发生器仪器被用来提供一个25hz的外部周期方波信号应用到相机的“Line1”输入,信号频率有效地控制了相机的帧率。

当使用gige适配器,配置硬件触发采集,videoinput触发器类型需要设置为“硬件”,而其余的配置是通过videoinput源属性,表示相应的相机GenICam特征/参数。

%指定要获取的帧总数%每个外部信号脉冲采集一帧。numFrames = 30;v.FramesPerTrigger = 1;v.TriggerRepeat = numFrames - 1;指定“硬件”视频输入触发类型triggerconfig (v,“硬件”“DeviceSpecific”“DeviceSpecific”);

将摄像机配置为FrameStart触发模式,并指定外部触发信号输入线路和所需触发条件。

%这需要先设置触发器选择器;一次TriggerSelector%值,设置触发器属性(例如,% TriggerMode to 'on')只应用于指定的触发模式(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); / /当前帧

显示采集到的帧和图的时间戳差异,对应于外部触发信号的25hz频率。

图;imaqmontage (data2)图;情节(diff (ts2),“。”)包含(“帧索引”);ylabel (“diff(时间戳)(s)”);

注意:一些相机型号也支持一个acquisition star金宝appt触发器,根据相机型号和配置,它可以用作多帧采集的启动触发器,或者作为FrameStart触发器的启动器。

曝光时间的控制

某些GigE Vision相机型号支持通过外部信号脉冲宽度持续时间来金宝app控制每帧的曝光时间。这个配置可以通过FrameStart硬件触发模式和TriggerWidth曝光模式来实现。

可能的应用包括高动态范围(HDR)成像,其中外部触发信号可以是一系列不同脉冲宽度持续时间的脉冲。关于如何使用Arduino板生成自定义触发信号的简单示例,请参考以下URL:< //www.tatmou.com/matlabcentral/answers/289155>

%指定要获取的帧总数%每个外部信号脉冲采集一帧。numFrames = 30;v.FramesPerTrigger = 1;v.TriggerRepeat = numFrames - 1;指定“硬件”视频输入触发类型triggerconfig (v,“硬件”“DeviceSpecific”“DeviceSpecific”);

将摄像机配置为FrameStart触发模式,并指定外部触发信号输入线路和所需触发条件。

%这需要先设置触发器选择器;一次TriggerSelector%值,设置触发器属性(例如,% TriggerMode to 'on')只应用于指定的触发模式(FrameStart)。s.TriggerSelector =“FrameStart”;s.TriggerSource =“Line1”;s.TriggerActivation =“RisingEdge”;s.TriggerMode =“上”%用于曝光时间控制,配置一个TriggerWidth曝光模式。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)”);

每一个获得的多次曝光图像序列可以进一步处理,以获得高动态范围的图像。