2

我无法将颜色和深度图像与图像采集工具箱同步。

目前,我只是试图将两个流记录到二进制文件中,而不会丢帧或丢失同步。

我不会在录制过程中尝试渲染。

开始按钮的代码:

colorVid = videoinput('kinect',1); depthVid = videoinput('kinect',2);
colorVid.FramesPerTrigger = inf; depthVid.FramesPerTrigger = inf;
triggerconfig([colorVid depthVid],'manual');

iatconfigLogging(colorVid,'Video/Color.bin');
iatconfigLogging(depthVid,'Video/Depth.bin');

start([colorVid depthVid]);

pause(2); % this is to be sure both sensor are start before the trigger

trigger([colorVid depthVid]);

iatconfigureLogging() 来自这里

和停止按钮只是在做

stop([colorVid depthVid]);

由于 Kinect 的帧速率是 30FPS,我们无法更改,所以我使用 FrameGrabInterval 来模拟它。

但是当我过分喜欢 5FPS 时,我无法记录深度和颜色并保持帧同步超过 20-25 秒。除了 1 FPS,同步在 2-3 分钟后结束,我正在寻找至少 10-15 分钟的采集时间。

我正在寻找类似flushdata(obj,'triggers')的东西; 现在,但我不知道如何通过日志记录保持 30 FPS。

提前感谢任何愿意提供东西的人。

4

1 回答 1

0

据我所知,您无法通过触发来同步流,因为它们在硬件中未同步。我试过了,我能想到的最好的办法就是给每个流加上时间戳,并丢弃时间上相距太远的帧对。我注意到经典的频率偏移效应,即流与每个周期之间差异的反向频率进出同步。丢弃帧的明显缺点是你得到一个不连续的流。您可以使用获取时间戳信息

[data time] = getdata(vid,1);
于 2013-09-27T00:57:07.603 回答