如何配置吉兆视觉摄像头的硬件触发采集?

134次浏览(过去30天)
如何从GigE Vision摄像机配置硬件触发采集?

接受的答案

MathWorks支援小组
MathWorks支援小组 2022年6月7日
编辑:MathWorks支援小组 2022年6月7日
图像采集工具箱提供了从GigE视觉相机硬件触发采集功能。这在相机采集需要通过外部触发信号与另一个设备(如仪器或另一个相机)同步的应用中非常有用。其他应用包括用外部信号控制采集帧率,或获取用于高动态范围(HDR)成像的多次曝光图像序列。
这个例子展示了如何使用视频输入gige接口来配置相机采集,以允许外部触发信号控制帧率和曝光时间。

需求和硬件设置

  • MATLAB R2016a及以上版本,图像采集工具箱,以及GigE视觉硬件支持包
  • 兼容GigE Vision的摄像头,具有硬件触发功能;本节以Basler acA1300为例。
  • 千兆以太网适配器,提供摄像机的直接网络连接,配置请参见“GigE Vision快速入门配置指南”。
  • 外部触发设置,可向相机触发线输入提供触发信号。例如,具有数字输出的DAQ设备、Arduino板或函数发生器仪器可用于输出自定义触发信号。有关触发信号电压电平/电流要求以及相机输入线的正确信号连接,请参阅相机用户手册。

连接摄像头

用所需的视频格式创建一个视频输入,并访问相机设备特定的属性。当使用视频输入gige适配器时,摄像机GenICam特性和参数值表示为视频输入源属性。
V =视频输入(“gige”, 1“Mono8”);
s = v.来源;
中所述的确定最佳流参数
%“GigE Vision快速入门配置指南”
% s.PacketSize =
% s.PacketDelay =

直接收购

默认情况下,如果没有显式指定硬件触发配置,则在执行videoinput start函数时立即进行采集。
为了简单起见,这个示例执行有限数量的帧的获取,并将它们存储在MATLAB基础工作空间中。
设置曝光时间和曝光模式
s.ExposureMode =“时间”
s.ExposureTimeAbs = 4000;
默认的视频输入触发类型是'immediate',这是显式的
%配置在这里清楚。
triggerconfig (v,“立即”);
指定要获取的帧数
v.FramesPerTrigger = 30;
v.TriggerRepeat = 0;
%启动连续缓冲采集并等待采集完成
开始(v);
等待(v, 10);
从采集输入缓冲区传输采集到的帧和时间戳
%进入工作区
[data, ts] = getdata(v, v. framesavailable);
显示获得的帧和情节获取时间戳。
数字
imaqmontage(数据)
图;
情节(ts,“。”
包含(“帧索引”
ylabel (“时间戳(s)”

FrameStart触发

大多数GigE Vision相机支持FrameStart硬件触发模式,该模式用于配置相机为应用于相机线输入的每个上升沿(或下降沿)信号获取一帧。
在本例中,使用函数发生器仪器提供25 Hz外部周期方波信号应用于摄像机Line1输入,该信号频率有效地控制摄像机帧频。
当使用|gige|适配器时,要配置硬件触发采集,|视频输入|触发类型需要设置为“硬件”,而其余的配置是通过|视频输入|源属性完成的,该属性表示对应的摄像机GenICam功能/参数。
指定需要获取的帧总数
每个外部信号脉冲采集一帧。
numFrames = 30;
v.FramesPerTrigger = 1;
v.TriggerRepeat = numFrames - 1;
指定“硬件”视频输入触发类型
triggerconfig (v,“硬件”“DeviceSpecific”“DeviceSpecific”);
配置相机为FrameStart触发模式,并指定外部触发信号输入线和所需的触发条件。
这需要先设置TriggerSelector;一次TriggerSelector
% value,设置触发器属性(例如,
% 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);
显示获取的帧和时间戳
数字
imaqmontage (data2)
数字
情节(ts2,“。”
包含(“帧索引”
ylabel (“时间戳(s)”
注意:一些相机型号还支持一个tionstart触发器,这取决于相机型号和配置,可以用作多帧采集的开始触发器,或者作为FrameStart触发器的使能器。

曝光时间控制

某些GigE Vision相机型号支持通过外部信号脉冲持续时间控制每帧的曝光时间。
这种配置可以通过FrameStart硬件触发模式和TriggerWidth曝光模式来实现。
可能的应用包括高动态范围(HDR)成像,其中外部触发信号可以是不同脉冲宽度持续时间的脉冲序列。关于如何使用Arduino板生成自定义触发信号的简单示例,请参阅所附的Arduino草图文件(outputpulsessequence .ino)。
指定需要获取的帧总数
每个外部信号脉冲采集一帧。
numFrames = 30;
v.FramesPerTrigger = 1;
v.TriggerRepeat = numFrames - 1;
指定“硬件”视频输入触发类型
triggerconfig (v,“硬件”“DeviceSpecific”“DeviceSpecific”);
配置相机为FrameStart触发模式,并指定外部触发信号输入线和所需的触发条件。
这需要先设置TriggerSelector;一次TriggerSelector
% value,设置触发器属性(例如,
% 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)”
要获得高动态范围(HDR)图像,请使用图像处理工具箱中的makehdr函数对每个获得的多次曝光图像序列进行处理。
2的评论
自然地Ruengsakulrach
自然地Ruengsakulrach 2016年9月27日
编辑:MathWorks支援小组 2021年5月19日
Bego,这 链接 也许能帮到你。有一个名为“ExifTool”的工具可以让你在图像中添加元数据。

登录评论。

更多答案(1)

乔纳森
乔纳森 2017年1月7日
编辑:乔纳森 2017年1月7日
你好,
这很有帮助。但是,我的相机适配器是Gentl(相机来自AVT公司)。我试着修改上面的代码并转移到我的绅士相机上,但失败了。请问如何配置绅士相机的硬件触发采集?谢谢。
我得到的错误信息(通过运行如下所示的修改后的代码)是:
使用imaqdevice/wait错误(第120行)
WAIT在OBJ停止运行之前达到超时。
Trigger_Test中的错误(第31行)
等待(v, 10) *
imaqreset;
V =视频输入(“gentl”, 1“Mono8”);
s = v.来源;
指定需要获取的帧总数
每个外部信号脉冲采集一帧。
numFrames = 30;
v.FramesPerTrigger = 1;
v.TriggerRepeat = numFrames - 1;
指定“硬件”视频输入触发类型
triggerconfig (v,“硬件”“DeviceSpecific”“DeviceSpecific”);
这需要先设置TriggerSelector;一次TriggerSelector
% value,设置触发器属性(例如,
% TriggerMode to 'on')仅适用于指定的触发器模式(FrameStart)。
% s.TriggerSelector = ' acquitionstart ';
% s.TriggerSelector = 'FrameStart';
s.TriggerMode =“上”
s.TriggerSelector =“ExposureStart”
s.TriggerSource =“InputLines”
s.TriggerActivation =“RisingEdge”
为每一帧指定恒定的曝光时间
s.ExposureMode =“时间”
s.ExposureTime = 500;
启动硬件触发的缓冲连续采集,并等待
完成获取百分比
开始(v)
等待(v, 10)
从采集输入缓冲区传输采集到的帧和时间戳
%进入工作区
[data2, ts2] = getdata(v, v. framesavailable);
图;
imaqmontage (data2)
图;
情节(ts2,“。”
包含(“帧索引”);
ylabel (“时间戳(s)”);
6个评论

登录评论。

标签

还没有输入标签。

2022世界杯八强谁会赢?


释放

R2018a

世界杯预选赛小组名单社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!世界杯预选赛小组名单

开始狩猎!

Baidu
map