校准和校正后如何让相机投影矩阵三角化Pts

How to get Camera Projection Matrix to triangulatePts after calibration and rectification

我能够弄清楚如何在不进行复述的情况下为一组立体相机生成相机矩阵。我所做的是两次调用 calibrateCamera,这为每个相机提供了 C1、R1 和 T1 以及 C2、R2 和 T2。

我将其结合起来使投影矩阵 P1 = C1 * [R1|T1] 和 P2 = C2 * [R2|C2]。这是一个 3x4 矩阵

然后我有一个自己的对应算法产生一个对应关系,然后我给它们每个 triangulatePts 得到一组 3D 点。

现在,我需要在 运行我的对应算法之前使用立体声校正。我对如何在进行立体校正后获得投影矩阵感到困惑。我们似乎得到了两个旋转矩阵(称它们为 R*)和一个新的投影矩阵(P*)。我现在如何组合这些以获得新的投影矩阵(3x4 矩阵)以馈入 triangulatePts?

示例似乎只说明如何使用这些矩阵和 运行 initUndistorRectifyMap 并重新映射,以便图像对齐。它还给了我一个视差图,但我不认为我应该使用它,因为我这样做的唯一目的是测试对应算法,这将产生一个好的视差图。

编辑:我假设相机中没有失真,在这种情况下大多数情况下都是如此。

这里的答案有些明显,尽管当时并非如此。我正在寻找的投影矩阵是 P1 和 P2。这可以直接用于 triangulatePts。

我的困惑是由于查看如何构建具有失真参数的投影矩阵。实际上,这是没有必要的,因为整个重映射过程不会扭曲图像,因此我们可以直接使用 P1 和 P2 作为投影。希望这对某人有所帮助。