使用摄像头创建同步立体视频

时间:2014-08-06 13:40:10

标签: opencv synchronization webcam video-capture stereo-3d

我正在使用OpenCV从Ubuntu 14.04中的两个USB网络摄像头(Microsoft LifeCam Studio)捕获视频流。我正在使用非常简单的VideoCapture代码(source here),并尝试至少查看两个彼此同步的视频。

我在三星Galaxy S3 mini上使用了Android秒表应用程序(UltraChron Stopwatch LiteStopwatch Timer),以确认我查看的图像不同步(在秒表上显示不同的时间)。

帧可以在50%的时间内同步。我得到的帧时间差为0到大约300ms,平均大约120ms。似乎使用的超时量对同步影响很小(1000ms或2000ms相同)。我试图最小化超时(openCV循环的waitKey(1)完全工作)并读取循环的每个第X次迭代 - 这给waitKey(1000)带来了更糟糕的结果。我在FullHD中运行,但将分辨率降低到640x480没有任何影响。

理想的结果是具有X FPS的100%同步立体视频流。正如我所说,我到目前为止使用OpenCV来观看视频静止图像,但我不介意使用其他任何东西来获得所需的结果(也可以在Windows上)。

提前感谢您的帮助!

编辑:在我寻找低成本硬件时,我认为可能会做一些商品硬件黑客攻击(link here)并将单个时钟信号注入多个相机模块同时获得所需的同步。这样做的人似乎已经开发了他的GENLOCKed camera board (called NerdCam1),甚至是synced stereo camera board,他现在的售价约为200欧元。

然而,我几乎没有硬件黑客的能力。此外,我不确定这种时钟注入是否可用于高于NTSC / PAL标准的分辨率(因为它似乎是一个“模拟”解决方案?)。另外,我更喜欢可变基线选项,其中两个相机都不会焊接在一块板上。

1 个答案:

答案 0 :(得分:1)

无法立体声同步两个常见的摄像头,因为摄像头缺少外部触发功能,可以使用常见的触发信号精确同步多个摄像头。这种触发可以在SW或HW中完成,但后者将提供更好的精度。网络摄像头仅支持“自由运行”模式,让您可以流式传输他们支持的任何FPS,但是您无法影响何时完成帧集成/曝光。

有USB摄像头具有专用的外部触发功能(通常像Point Grey这样的科学摄像头) - 它们比网络摄像头更昂贵(起价约300美元/片),但可以同步。如果你的预算很低,可以尝试hack the PS3 Eye camera to get the ext. trigger feature