首先直观感受:
- 我们当前所处的世界是三维的空间
- 图像是三维世界的场景在相机成像平面的投影
然后定量建立如下坐标系:
- 世界坐标系(三维): xW,yW,zW; 单位是毫米
- 相机坐标系(三维): xC,yC,zC, 原点与相机光学中心重合, z 轴与光轴重合; 单位是毫米
- 图像坐标系(二维): x,y, 原点为相机光轴与成像平面的交点,是图像的中心点; 单位是毫米
- 像素坐标系(二维): u,v, 原点在左上角, 单位为像素
世界坐标系到相机坐标系的转换
世界坐标系 通过 Rigid Transform (刚体变换: 旋转和平移) 得到 相机坐标系
⎣⎡xCyCzC⎦⎤3×1=R3×3⎣⎡xWyWzW⎦⎤3×1+T3×1
⎣⎡xCyCzC⎦⎤3×1=[R3×3∣T3×1]3×4⎣⎡xWyWzW1⎦⎤4×1
⎣⎡xCyCzC1⎦⎤=⎣⎡R11R21R310R12R22R320R13R23R330TxTyTz1⎦⎤⎣⎡xWyWzW1⎦⎤
⎣⎡xCyCzC1⎦⎤=[R3×301×3T3×11]⎣⎡xWyWzW1⎦⎤
其中 R 为三维旋转矩阵, T 为 三维平移向量
Camera Calibration 中所说的外参,也即此处的 R 和 T
此转换所描述的即为相机在三维空间的运动
相机坐标系到图像坐标系的转换
相机坐标系通过 Perspective Transform (成像模型中的相似三角形原理) 得到图像坐标系
⎩⎨⎧xy=zCf⋅xC=zCf⋅yC
zC⎣⎡xy1⎦⎤=⎣⎡f000f0001000⎦⎤⎣⎡xCyCzC1⎦⎤
f 为相机焦距
值得注意的是,当前成像系统往往是透镜成像而非小孔成像,透镜的形状很难完全规则,因而成像效果可能存在不同程度的畸变
图像坐标系到像素坐标系的转换
图像坐标系通过Affine Transform (缩放和平移) 得到像素坐标系
⎩⎨⎧uv=dx1x+u0=dy1y+v0
⎣⎡uv1⎦⎤=⎣⎡dx1000dy10u0v01⎦⎤⎣⎡xy1⎦⎤
其中 u0,v0 表示 图像中心像素坐标,dx,dy 表示水平和垂直方向每个像素分别对应多少毫米
总结:世界坐标系到像素坐标系
zC⎣⎡uv1⎦⎤=⎣⎡dx1000dy10u0v01⎦⎤⎣⎡f000f0001000⎦⎤⎣⎡R11R21R310R12R22R320R13R23R330TxTyTz1⎦⎤⎣⎡xWyWzW1⎦⎤
zC⎣⎡uv1⎦⎤=⎣⎡dxf000dyf0u0v01000⎦⎤⎣⎡R11R21R310R12R22R320R13R23R330TxTyTz1⎦⎤⎣⎡xWyWzW1⎦⎤
zC⎣⎡uv1⎦⎤=⎣⎡dxR11f+R31u0dyR21f+R31v0R31dxR12f+R32u0dyR22f+R32v0R32dxR13f+R33u0dyR23f+R33v0R33dxTxf+Tzu0dyTyf+Tzv0Tz⎦⎤⎣⎡xWyWzW1⎦⎤
zC⎣⎡uv1⎦⎤=M3×4⎣⎡xWyWzW1⎦⎤=⎣⎡M11M21M31M12M22M32M13M23M33M14M24M34⎦⎤⎣⎡xWyWzW1⎦⎤
当 世界坐标 和 像素坐标 都已确定,可以求解 M 矩阵