参考自课件:
我们需要一个数学模型来描述如何将 3D 世界坐标系中的点 (U,V,W) 投影到 2D 图片坐标系 (u,v) 中。
相机坐标系 Camera Coords (X,Y,Z) to 画布坐标系 Film Coords (x,y):
对于相机坐标系中的点(X,Y,Z),其中Z 是从相机原点到该点的距离。已知焦距f, 因此,相机坐标系到画布坐标系的比例关系为 f/Z。
对应的,我们想求此点在画布坐标系中的横纵坐标(x,y),只需要按比例缩放:
x=X⋅Zf=fZX
y=Y⋅Zf=fZY
因此, 变换方程可以写作
⎣⎡xyz⎦⎤=⎣⎡f000f0001000⎦⎤⎣⎡XYZ1⎦⎤
其中z 为虚构的第三维坐标, Camera Coords (X,Y,Z,1) 中的 1 为预留的位置偏移量。
世界坐标系 World Coords (PW) 到相机坐标系 Camera Coords (PC) 只需要简单的旋转R 和偏移C.
因此,变换方程可以写作
PC=R(PW−C)⎝⎛XYZ1⎠⎞=⎝⎛r11r21r310r12r22r320r13r23r3300001⎠⎞⎝⎛100001000010−cx−cy−cz1⎠⎞⎝⎛UVW1⎠⎞
其中 偏移C=(cx,cy,cz)。


R⋅(PW−C)=RPW−RC=RPW−T
⎝⎛XYZ1⎠⎞=⎝⎛lr11r21r310r12r22r320r13r23r3300001⎠⎞⎝⎛100001000010−cx−cy−cz1⎠⎞⎝⎛UVW1⎠⎞=⎝⎛r11r21r310r12r22r320r13r23r330txtytz1⎠⎞⎝⎛UVW1⎠⎞
画布坐标系 到 像素坐标系: 仿射变换 Affine Transformation
主要有两个方面
- 偏移量 offset: o
- 尺度变换 scales: s
u= sx1f⋅x+ox= sx1fZX+ox
v= sy1f⋅y+oy= sy1fZY+oy
注意,方向 可能会变化,此时,需要考虑增加正负号。