Matlab使用Kinect的Color / Depth同步采集

时间:2013-09-26 18:13:51

标签: matlab synchronization kinect

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

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

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

开始按钮的代码:

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()来自here

和停止按钮正在执行

stop([colorVid depthVid]);

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

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

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

提前感谢任何愿意提供帮助的人。

1 个答案:

答案 0 :(得分:0)

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

获取时间戳信息
[data time] = getdata(vid,1);