首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据采集工具箱和Matlab图像采集工具箱能同步吗?

数据采集工具箱和Matlab图像采集工具箱能同步吗?
EN

Stack Overflow用户
提问于 2013-02-23 02:21:41
回答 3查看 2.8K关注 0票数 4

我想用matlab同时从相机(即图像)和模拟电压中获取数据。对于摄像机,我使用imaq工具箱,为了读取电压,我使用daq工具箱(读取NI-USB设备),代码如下:

代码语言:javascript
复制
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是:

代码语言:javascript
复制
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的输入相关,而不是基于摄像机的输入(它也在前台工作)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-05 23:18:02

这并不能完全解决你的问题,但它可能足够好。由于您在50 Hz的同步信号,您可以使用clock为您的两种类型的数据(相机图像和模拟电压)创建时间戳。由于函数clock几乎不需要时间(即1e-7秒以下),因此您可以尝试相应地编辑SaveData函数:

代码语言:javascript
复制
fprintf(fid, '%f,%f\n ', [clock time data]);

在for循环中添加:

代码语言:javascript
复制
timestamp(i,:)=clock;
票数 1
EN

Stack Overflow用户

发布于 2013-03-25 22:10:29

你能用同步来触发广告板吗?从USB-6009手册.

使用PFI 0作为数字触发器--当定义了模拟输入任务时,可以将PFI 0配置为数字触发器输入。当启用数字触发器时,AI任务在开始收购之前等待PFI 0的上升或下降边缘。若要将AI启动触发器(ai/StartTrigger)与数字源一起使用,请指定PFI 0作为源,并选择上升或下降的边缘。

我的经验表明,触发器和AQ之间的延迟非常短。

很抱歉,我使用Python或C来实现这个功能,所以我不能给您提供MatLab代码,但是您需要查看类似的函数。

代码语言:javascript
复制
/* 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得到更多的想法。

希望这能帮上忙卡尔

票数 1
EN

Stack Overflow用户

发布于 2013-03-08 10:16:41

这还不是一个完整的解决方案,但有些想法可能是有用的。

我确实获得了带有daq跟踪(时间和数据)的图像和log.txt文件,但是如何使用外部触发(触发摄像机)或其他时钟来同步两者?

你能想出一种方法来校准你的装置吗?即修改您的实验,并在映像流和电压测量中创建一个不同的事件,可用于同步?就像这样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15036311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档