OpenCv StereoRectify中矩阵的精确定义

时间:2015-02-23 16:54:26

标签: opencv matrix transformation projection

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

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

然后,投影矩阵 P = K * T

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

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

1 个答案:

答案 0 :(得分:1)

  1. CAMERAMATRIX1 - 是由opencv中的stereocalibrate()函数计算的内在K矩阵。你做对了!!!
  2. R 是cam2帧w.r.t cam1帧的旋转矩阵。类似地, T 是cam2 origin w.r.t的平移向量 cam1 origin。
  3. 如果您要查看O' Riley的书"学习OPENCV" pg.-434,您将了解 R1 (/ Rl )和 R2 (/ Rr )是。

                的器R1 = [<强> Rrect ] [<强> RL ];的器Rr = [<强>的Rect ] [<强> RR ];

    让相机的图片平面为plane1和plane2。当立体声整流尚未完成时,则plane1和plane2根本不会平行。此外,epilines不会与立体相机基线平行。因此,Rl所做的是它将左图像平面变换为与右图像平面平行(由Rr变换),并且两个图像上的epilines现在是平行的。
  4. P1 P2 是立体声整流后的新投影矩阵。请记住,相机矩阵(K)将3d空间中的点转换为2d图像平面。但是P1和P2在整流的2D图像平面上转换3d空间中的一个点 如果您之前已经校准了立体摄像机装置并观察了P1和K1值,那么如果您的立体装置几乎处于整流配置(显然在人类范围内),您会发现它们非常类似。