通常投影矩阵的定义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- 是由 opencv 中的 Stereocalibrate() 函数计算得出的内在 K 矩阵。你做对了!!!
-
R是凸轮 2 坐标系相对于凸轮 1 坐标系的旋转矩阵。相似地 ,T是 cam2 原点 w.r.t 的平移向量
凸轮1原点。
- 如果你看看 O'Riley 的书“LEARNING OPENCV”第-434页,你就会明白什么R1(/Rl) and R2(/Rr) are.
Rl=[Rrect][rl]; Rr=[Rect][rr];
设相机的像平面为plane1和plane2。当没有进行立体校正时,则plane1和plane2根本不平行。此外,外线不会与立体相机基线平行。因此,Rl 所做的是将左图像平面变换为与右图像平面平行(由 Rr 变换),并且两个图像上的外线现在是平行的。
-
P1 and P2是立体校正后的新投影矩阵。请记住,相机矩阵 (K) 将 3d 空间中的点变换到 2d 图像平面上。但 P1 和 P2 将 3d 空间中的点变换到校正的 2d 图像平面上。
如果您之前校准过立体摄像机装备并观察过 P1 和 K1 值,如果您的立体装备几乎处于校正配置(显然在人类范围内),您会发现它们非常相似
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)