2022-10-12 更新
“归一化” 这个操作要么在得到相机坐标系坐标后就执行
抑或是经过内参矩阵后执行
总之,在得到像素坐标前,要执行一次“归一化”操作,使得 x,y,z坐标都除以 z 坐标,这样会使得 z 坐标丢失。
原文
按照对极几何中的定义,设
x
1
,
x
2
\mathbf{x}_1,\mathbf{x}_2
x1,x2 为两个特征点的归一化坐标,那么它们满足
s
2
x
2
=
s
1
R
x
1
+
t
s_2\mathbf{x}_2=s_1\mathbf{R}\mathbf{x}_1+t
s2x2=s1Rx1+t
上述内容来自《视觉SLAM十四讲从理论到实践》第二版第 177 页。
当时看到这里,我就非常地不解,为什么这个等式成立呢?
为什么会引入两个变量而不是一个变量呢?
现在,我能回答这个问题了,先大概讲一下。然后再对比一下“归一化坐标”和“像素坐标”的区别,因为它们很像!之后应该对这个问题就很清晰了
式子为什么成立
假设某个三维点在某个相机坐标系下的坐标是
[
x
,
y
,
z
]
[x,y,z]
[x,y,z]
那么该点的归一化坐标是
[
x
/
z
,
y
/
z
,
1
]
[x/z,y/z,1]
[x/z,y/z,1]
即
1
z
[
x
,
y
,
z
]
\frac{1}{z}[x,y,z]
z1[x,y,z]
注意,此时还没经过相机内参矩阵
K
K
K 的作用,还只是相机坐标。
但是由于像素坐标 在齐次坐标下的表现形式和归一化坐标很像,几乎一样
[
u
,
v
,
1
]
[u,v,1]
[u,v,1]
所以可能让人产生困惑。
那么这么看好了,先不管归一化坐标,先考虑一个三维点
P
\mathbf{P}
P在两个相机坐标系下的坐标
P
1
,
P
2
\mathbf{P}_1,\mathbf{P}_2
P1,P2。注意,此时它们还是三维坐标哦,只是为了区分它们所在的坐标系。
则将
P
2
\mathbf{P}_2
P2 变换到
P
1
\mathbf{P}_1
P1的式子为(相当于变换坐标系哦)
P
1
=
R
21
P
2
+
t
\mathbf{P}_1=\mathbf{R_{21}}\mathbf{P}_2+t
P1=R21P2+t
另一方面,有
P
1
=
z
1
x
1
\mathbf{P}_1=z_1\mathbf{x}_1
P1=z1x1
P
2
=
z
2
x
2
\mathbf{P}_2=z_2\mathbf{x}_2
P2=z2x2
其中,
x
1
,
x
2
\mathbf{x}_1,\mathbf{x}_2
x1,x2分别是两个相机坐标系下的归一化坐标。因为坐标系不同嘛,所以坐标的z坐标(深度)也不同。所以用两个变量区分一下。
所以,有下式成立
z
1
x
1
=
z
2
x
2
+
t
z_1\mathbf{x}_1=z_2\mathbf{x}_2+t
z1x1=z2x2+t
归一化坐标和像素坐标
下图中
(
X
,
Y
,
Z
)
T
(X,Y,Z)^{T}
(X,Y,Z)T
是三维点在相机坐标系下的表示。
注意到前面乘了一个
1
z
\frac{1}{z}
z1
所以我们可以这样理解:
首先,相机坐标系下的三维点变换到归一化坐标系下
然后再经过相机内参矩阵的作用。
也就是说,归一化坐标是在得到像素坐标之前一步得到的!