
深度相机因为其包含深度距离信息,所以需要特别注意坐标变换过程中的距离。
相机中存在四个坐标系,分别为世界坐标系、相机坐标系、图像坐标系和像素坐标系。
世界坐标系:可以任意指定原点和x轴、y轴。
相机坐标系:原点位于小孔,z轴与光轴重合,x轴和y轴平行于投影面。
图像坐标系:原点位于光轴和投影面的焦点,x轴和y轴平行于投影面。
像素坐标系:从小孔向投影面方向看,投影面左上角为原点,u轴和v轴和投影面两边重合。
从世界坐标系到相机坐标系:
回忆高等数学中提到的某个单位正交基 经过一次旋转变成了 。那么对于同一个向量a,在两个坐标系下的坐标为 和 。根据坐标定义,有:

经过变换有:

R描述了旋转本身,因此称为旋转矩阵。
在欧式变换中除了旋转,还有平移。世界坐标系和相机坐标系存在一次旋转和一次平移t后有

引入齐次坐标和变换矩阵重写为

t为平移矩阵:

T称之为变换矩阵,其中参数被称为外参。
因此,设某点在世界坐标系下的坐标为 ,在相机坐标系下的坐标为 。则

从相机坐标系到图像坐标系:

某点在相机坐标系下坐标 ,在图像坐标系下的齐次坐标为 。由图中相似三角形得:

写成矩阵的表达形式为:

实际上因为镜头和成像芯片安装误差的问题,主点可能不在图像坐标系原点,若主点在图像坐标系中的坐标为

则

从图像坐标系到像素坐标系:
假设成像芯片上一个像素的长和宽分别为dx,dy,设像素坐标 ,像素中点为(u0,v0)则:

总结:
结合相机坐标系到像素坐标系的变换,变换矩阵K为:

其中 , ,K为内参矩阵。
如果一个相机,世界坐标系和相机坐标系可能重合。
需要注意的是,TOF相机得到的每个像素的距离一般是光路距离,即从光源经物体反射到成像芯片的距离。水平拍摄一面墙,得到的图像中间像素的距离小于图像边缘像素的距离。

相似三角形得

其中 ,则:

已知: 
设某点距离为Zc,则实际图像中测量的距离为:

或者计算角度:

已知:

得:

则:

|