这里是我在对Kinect标定参数时发现的一些可能会导致像我一样的初学者犯下的错误以及误区,所以在这里mark一下。如果有错误的地方,希望能在评论区解释一下,感激不尽。
首次简单介绍一下后面操作需要用到的Kinect设备的参数:
Kinect的视角场(FOV)—垂直方向43度,水平方向57度,整体的三维模型为“金字塔”形状。最大深度4m,最小深度0.6m。
下面介绍一下这篇文章需要先了解的一些基础知识:
1.由于光沿直线传播,所以对于远近不一的物体,人眼可以看到这些物体表现为在一个平面上。
2.图像坐标系:是基于图像平面的一种坐标系,默认为以矩形左上角的点为原点,水平向左为x轴的正方向,垂直向下为y轴的正方向。(为了方便后面计算,这里我通过Kinect获得的图像分辨率为640*480)。
3.摄像机坐标系:是以摄像头中心为原点的空间坐标系,就像在“金字塔”形状的空间内,这里默认是以垂直地面向下为y轴正方向,水平面垂直金字塔底面(我通常都假想为一个图像的成像的平面)的方向是z轴的正方向,与z轴,y轴组成平面垂直向右为x轴正方向。
4.坐标系转换:
这里转换后的坐标系坐标用w表示
w=⎡⎣⎢⎢⎢1000⎤⎦⎥⎥⎥xw+⎡⎣⎢⎢⎢0100⎤⎦⎥⎥⎥yw+⎡⎣⎢⎢⎢0010⎤⎦⎥⎥⎥zw+⎡⎣⎢⎢⎢0001⎤⎦⎥⎥⎥
用M表示辅助矩阵
M=[R0t1]
转换前的坐标系的坐标用c表示
c=⎡⎣⎢⎢⎢1000⎤⎦⎥⎥⎥