双目标定过程 ROS.org
标定后的参数解释 ROS官网解释
这里解释下其中的投影矩阵,参考双目标定
投影矩阵
P
=
[
f
x
′
0
c
x
′
T
x
0
f
y
′
c
y
′
T
y
0
0
1
0
]
(1)
P= \left[ \begin{matrix} fx' & 0& cx' & Tx\\ 0 & fy' & cy'& Ty \\ 0 & 0 & 1& 0 \end{matrix} \right]\tag{1}
P=⎣⎡fx′000fy′0cx′cy′1TxTy0⎦⎤(1)
对于左相机,前三列是矫正后的相机内参矩阵,最后一列Tx,Ty都是0,对于右相机,前三列是矫正后右目的内参矩阵,最后一列和右目光心在左目相机坐标系下的位置有关(注意不是相等),其实因为矫正的原因,这里的左右内参都是一样的。
Tz=0表示两个相机在相同的立体图像平面上(这就是矫正的作用),Ty=0,表示矫正后的左右图像的纵坐标相同,极线平行可以加快极线搜索的速度,Tx=-fx’*B,B是双目相机的基线,这个值是用来根据视差的相似三角形关系计算3D点深度的参考深度测量。
焦距f在水平方向的像素个数就是fx = f / dx,关于为什么是fx而不是f,个人理解是由于z=f * B/d中,视差d的单位是像素,基线B的单位是米,为得到米制的深度z,要使用归一化的fx代替f以消掉像素这个单位(可能不全面,欢迎补充)。
由投影矩阵便可得到归一化的2D图像点(x,y)和3D点(X,Y,Z)的变换关系:
[
u
v
w
]
=
[
f
x
′
0
c
x
′
T
x
0
f
y
′
c
y
′
T
y
0
0
1
0
]
∗
[
X
Y
Z
1
]
(2)
\left[\begin{matrix} u\\v\\w\end{matrix} \right]= \left[ \begin{matrix} fx' & 0& cx' & Tx\\ 0 & fy' & cy'& Ty \\ 0 & 0 & 1& 0 \end{matrix} \right]*\left[\begin{matrix} X\\Y\\Z\\1\end{matrix} \right] \tag{2}
⎣⎡uvw⎦⎤=⎣⎡fx′000fy′0cx′cy′1TxTy0⎦⎤∗⎣⎢⎢⎡XYZ1⎦⎥⎥⎤(2)
x
=
u
/
w
y
=
v
/
w
(3)
x=u/w\\ y=v/w\tag{3}
x=u/wy=v/w(3)