来自单个校准相机的 2 个连续帧的视差图。可能吗?

Posted

技术标签:

【中文标题】来自单个校准相机的 2 个连续帧的视差图。可能吗?【英文标题】:disparity map from 2 consecutive frames of a SINGLE calibrated camera. Is it possible? 【发布时间】:2012-02-22 21:30:04 【问题描述】:

stereo_match.cpp example 将 L 和 R 图像转换为视差和点云。我想调整这个例子来计算 single 校准相机的 2 个连续帧的视差和点云。可能吗?如果这个例子不适合我的范围,获得我想要的东西的步骤是什么?

【问题讨论】:

【参考方案1】:

立体系统上的视差图用于获取深度信息 - 到场景中对象的距离。为此,您需要相机之间的距离,以便能够将视差信息转换为真实尺寸。

另一方面,如果您有来自静态相机的连续帧,我想您想要它们之间的差异。您可以使用光流算法获得它。以与视差相同的方式,为图像中的每个像素计算密集光流,并输出运动方向和幅度。最常见的 OF 是稀疏的——它们只跟踪一组“强”或明确定义的点。

如果您有一个静态场景,那么获取视差算法可能是有意义的,但是您移动相机,模拟立体装置中的两个相机。

【讨论】:

【参考方案2】:

如果相机(或场景)正在移动,则是

【讨论】:

是的,我移动校准过的相机并拍摄静态物体的视频。从该视频的 2 个连续帧中获取视差图的步骤是什么? @Fobi - 与立体声装置完全相同。识别匹配点(例如 SURF)并求解相机位移矢量,然后对于场景中的每个匹配点,您都有视差和基线 求解相机位移矢量?你可以说得更详细点吗?我必须使用什么 OpenCV 函数?【参考方案3】:

我想我们无法从单个相机计算出准确的视差图。在计算视差图时,我们基本上假设立体装置中两幅图像的垂直像素坐标相同,只有水平像素坐标发生变化,但在单目图像序列中,这可能不成立,因为相机在两个连续的图像之间移动帧。

【讨论】:

以上是关于来自单个校准相机的 2 个连续帧的视差图。可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用我的视差图在 Meshlab 上获取 3D 地图

使用立体相机从视差图进行深度重建

双目三维重建系统(双目标定+立体校正+双目测距+点云显示)Python

双目三维重建系统(双目标定+立体校正+双目测距+点云显示)Python

立体相机如何创建好的深度图?

立体视觉:深度估计