7

我有一个使用 OpenCV 和 Python 校准的立体校准相机系统。我正在尝试使用它来计算图像点的 3D 位置。我收集了内在和外在矩阵,以及 E、F、R 和 T 矩阵。我对如何将 2D 图像点三角测量到 3D 对象点感到困惑。我已经阅读了以下帖子,但我对这个过程感到困惑(在校准的立体视觉设备中,如何获得实现 3D 三角测量算法所需的“相机矩阵”?)。有人可以解释如何从 2D 到 3D 吗?通过阅读,我觉得基本矩阵(F)很重要,但我还没有找到一种明确的方法将它与投影矩阵(P)联系起来。有人可以指导我完成这个过程吗?

我很感激我能得到的任何帮助。

4

1 回答 1

15

如果您校准了立体相机,您应该拥有每个相机的内在函数 K1、K2,以及从第一个相机到第二个相机的旋转 R12 和平移 t12。根据这些,您可以形成相机投影矩阵 P1 和 P2,如下所示:

P1 = K1 * [I3 | 0]
P2 = K2 * [R12 | t12]

这里,I3 是 3x3 单位矩阵,符号 [R | t] 表示水平堆叠 R 和 t。

然后,您可以使用函数triangulatePoints文档),它实现了两个相机矩阵的稀疏立体三角剖分。

如果你想要密集的三角测量或深度图估计,有几个函数可以做到这一点。您首先需要使用stereoRectify( documentation ) 校正两个图像,然后执行立体匹配,例如使用StereoBM( documentation )。

于 2014-03-11T20:22:41.633 回答