我想用matlab同时从相机(即图像)和模拟电压中获取数据。对于摄像机,我使用imaq工具箱,为了读取电压,我使用daq工具箱(读取NI-USB设备),代码如下:
clear all
% Prepare camera
vid = videoinput('gentl', 1, 'Mono8');
src = getselectedsource(vid);
vid.FramesPerTrigger = 1;
vid.TriggerRepeat = Inf;
triggerconfig(vid, 'hardware', 'DeviceSpecific', 'DeviceSpecific');
src.FrameStartTriggerMode = 'On';
src.FrameStartTriggerActivation = 'RisingEdge';
% prepare DAQ
s=daq.createSession('ni');
s.addAnalogInputChannel('Dev1','ai1','Voltage');
fid = fopen('log.txt','w');
lh = s.addlistener('DataAvailable',@(src,event)SaveData(fid,event));
s.IsContinuous = true;
% Take data
s.startBackground();
start(vid)
N=10;
for ii=1:N
im(:,:,ii)=getsnapshot(vid);
end
% end code
delete(lh );
fclose('all');
stop(vid)
delete(vid)其中函数SaveData是:
function SaveData(fid,event)
time = event.TimeStamps;
data = event.Data;
fprintf(fid, '%f,%f\n ', [time data]);
end我确实获得了带有daq跟踪(时间和数据)的图像和log.txt文件,但是如何使用外部触发(触发摄像机)或其他时钟来同步两者?在本例中,daq读取触发TTL信号(@ 50 Hz)的摄像机,因此我希望将每个TTL脉冲分配给图像。
增编:我一直在搜索,并找到了一些关于这个主题的讨论(比如一),并阅读了Mathworks网站上的示例,但是还没有找到答案。文档展示了如何实现在外部事件上启动多触发器获取。,但是所讨论的获取只与基于DAQ的输入相关,而不是基于摄像机的输入(它也在前台工作)。
发布于 2013-03-05 23:18:02
这并不能完全解决你的问题,但它可能足够好。由于您在50 Hz的同步信号,您可以使用clock为您的两种类型的数据(相机图像和模拟电压)创建时间戳。由于函数clock几乎不需要时间(即1e-7秒以下),因此您可以尝试相应地编辑SaveData函数:
fprintf(fid, '%f,%f\n ', [clock time data]);在for循环中添加:
timestamp(i,:)=clock;发布于 2013-03-25 22:10:29
你能用同步来触发广告板吗?从USB-6009手册.
使用PFI 0作为数字触发器--当定义了模拟输入任务时,可以将PFI 0配置为数字触发器输入。当启用数字触发器时,AI任务在开始收购之前等待PFI 0的上升或下降边缘。若要将AI启动触发器(ai/StartTrigger)与数字源一起使用,请指定PFI 0作为源,并选择上升或下降的边缘。
我的经验表明,触发器和AQ之间的延迟非常短。
很抱歉,我使用Python或C来实现这个功能,所以我不能给您提供MatLab代码,但是您需要查看类似的函数。
/* Select trigger source */
Select_Signal(deviceNumber, ND_IN_START_TRIGGER, ND_PFI_0, ND_HIGH_TO_LOW);
/* specify that a start trigger is to be used */
DAQ_Config(deviceNumber, startTrig, extConv); // set startTrig = 1
/* start the acquisition */
DAQ_Start(deviceNumber, …)如果你想走这条路,你可以从:http://www.ni.com/white-paper/4326/en得到更多的想法。
希望这能帮上忙卡尔
发布于 2013-03-08 10:16:41
这还不是一个完整的解决方案,但有些想法可能是有用的。
我确实获得了带有daq跟踪(时间和数据)的图像和log.txt文件,但是如何使用外部触发(触发摄像机)或其他时钟来同步两者?
你能想出一种方法来校准你的装置吗?即修改您的实验,并在映像流和电压测量中创建一个不同的事件,可用于同步?就像这样。。
https://stackoverflow.com/questions/15036311
复制相似问题