OpenCv StereoRectify中矩阵的精确定义

Tho*_*orn 6 opencv transformation projection matrix

通常,投影矩阵P的定义是3x4矩阵,其将点从世界坐标投影到图像/像素坐标.投影矩阵可以分为:

  • K:具有内在参数的3x4相机矩阵K.
  • T:具有外部参数的4×4变换矩阵

投影矩阵是则P = ķ*Ť.

OpenCV的stereoRectify的以下输入有哪些明确的定义:

  • cameraMatrix1 - 第一个相机矩阵(我假设它是投影矩阵的内在K部分,对吗?).
  • R - 第一和第二摄像机的坐标系之间的旋转矩阵.('之间'是什么意思?是从cam1到cam2还是从cam2到cam1的旋转?)
  • T - 摄像机坐标系之间的平移向量.(同上面.是从cam1 - > cam2或cam2-> cam1的平移)
  • R1 - 为第一台摄像机输出3x3整流变换(旋转矩阵).(这是整流后的旋转,因此投影矩阵的新外部部分变为T1new = R1*T1old?)
  • P1 - 在第一台摄像机的新(整流)坐标系中输出3x4投影矩阵.("新坐标系中的投影矩阵"是什么意思?看来这个投影矩阵依赖于旋转矩阵R1来投影从世界坐标到图像/像素坐标的点,所以从上面的定义来看它既不是'投影矩阵'或'相机矩阵'但两者的某种混合物)

小智 0

  1. CAMERAMATRIX1 - 是由 opencv 中的 Stereocalibrate() 函数计算得出的内在 K 矩阵。你做对了!!!
  2. R是cam2坐标系相对于cam1坐标系的旋转矩阵。类似地,T是cam2原点相对于cam1原点的平移向量。
  3. 如果您查看 O'Riley 的书“LEARNING OPENCV”第-434 页,您就会了解R1 (/ Rl ) 和R2 (/ Rr ) 是什么。

    Rl =[ Rrect ][ rl ]; Rr =[矩形][ rr ];

    设相机的像平面为plane1和plane2。当没有进行立体校正时,则plane1和plane2根本不平行。此外,外线不会与立体相机基线平行。因此,Rl 所做的是将左图像平面变换为与右图像平面平行(由 Rr 变换),并且两个图像上的外线现在是平行的。
  4. P1P2是立体校正后的新投影矩阵。请记住,相机矩阵 (K) 将 3d 空间中的点变换到 2d 图像平面上。但 P1 和 P2 将 3d 空间中的点变换到校正的 2d 图像平面上。
    如果您之前校准过立体摄像机装备并观察过 P1 和 K1 值,如果您的立体装备几乎处于校正配置(显然在人类范围内),您会发现它们非常相似