2022-10-12 更新
“归一化” 这个操作要么在得到相机坐标系坐标后就执行
抑或是经过内参矩阵后执行
总之,在得到像素坐标前,要执行一次“归一化”操作,使得 x,y,z坐标都除以 z 坐标,这样会使得 z 坐标丢失。
原文
按照对极几何中的定义,设 x1,x2\mathbf{x}_1,\mathbf{x}_2x1,x2 为两个特征点的归一化坐标,那么它们满足
s2x2=s1Rx1+ts_2\mathbf{x}_2=s_1\mathbf{R}\mathbf{x}_1+ts2x2=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]
即
1z[x,y,z]\frac{1}{z}[x,y,z]z1[x,y,z]
注意,此时还没经过相机内参矩阵 KKK 的作用,还只是相机坐标。
但是由于像素坐标 在齐次坐标下的表现形式和归一化坐标很像,几乎一样
[u,v,1][u,v,1][u,v,1]
所以可能让人产生困惑。
那么这么看好了,先不管归一化坐标,先考虑一个三维点 P\mathbf{P}P在两个相机坐标系下的坐标P1,P2\mathbf{P}_1,\mathbf{P}_2P1,P2。注意,此时它们还是三维坐标哦,只是为了区分它们所在的坐标系。
则将 P2\mathbf{P}_2P2 变换到 P1\mathbf{P}_1P1的式子为(相当于变换坐标系哦)
P1=R21P2+t\mathbf{P}_1=\mathbf{R_{21}}\mathbf{P}_2+tP1=R21P2+t
另一方面,有
P1=z1x1\mathbf{P}_1=z_1\mathbf{x}_1P1=z1x1
P2=z2x2\mathbf{P}_2=z_2\mathbf{x}_2P2=z2x2
其中,x1,x2\mathbf{x}_1,\mathbf{x}_2x1,x2分别是两个相机坐标系下的归一化坐标。因为坐标系不同嘛,所以坐标的z坐标(深度)也不同。所以用两个变量区分一下。
所以,有下式成立
z1x1=z2x2+tz_1\mathbf{x}_1=z_2\mathbf{x}_2+tz1x1=z2x2+t
归一化坐标和像素坐标
下图中
(X,Y,Z)T(X,Y,Z)^{T}(X,Y,Z)T
是三维点在相机坐标系下的表示。
注意到前面乘了一个 1z\frac{1}{z}z1
所以我们可以这样理解:
首先,相机坐标系下的三维点变换到归一化坐标系下
然后再经过相机内参矩阵的作用。
也就是说,归一化坐标是在得到像素坐标之前一步得到的!