在视觉SLAM中,有几个基本的坐标系
- 世界坐标系
- 相机坐标系
- 成像平面坐标系
- 图像像素坐标系
如何在各坐标系之间相互转换,把摄像头输出的2D图像和我们所在的三维世界一一对应,是SLAM技术研究的一大重点,从世界坐标系如何在各坐标系之间相互转换,把摄像头输出的2D图像和我们所在的三维世界一一对应,是SLAM技术研究的一大重点是一个小孔成像的模型,其中:
[1]O点表示camera centre
,即相机的中心点,也是相机坐标系的中心点;
[2]z轴表示principal axis
,即相机的主轴;
[3]q点所在的平面表示image plane
,即相机的像平面,也就是图片坐标系所在的二维平面;
[4]O1点表示principal point
,即主点,主轴与像平面相交的点;
[5]O点到O1点的距离,也就是右边图中的f,即相机的焦距;
[6]像平面上的x和y坐标轴是与相机坐标系上的X和Y坐标轴互相平行的;
[7]相机坐标系是以X,Y,Z(大写)三个轴组成的且原点在O点,度量值为米(m
);
[8]像平面坐标系是以x,y(小写)两个轴组成的且原点在O1点,度量值为米(m
);
[9]像素坐标系一般指图片相对坐标系,在这里可以认为和像平面坐标系在一个平面上,不过原点是在图片的角上,而且度量值为像素的个数(pixel
);
2、相机坐标系→成像平面坐标系
[1]以O点为原点建立摄像机坐标系。点Q(X,Y,Z)为摄像机坐标系空间中的一点,该点被光线投影到图像平面上的q(x,y,f)点。
图像平面与光轴z轴垂直,和投影中心距离为f (f是相机的焦距)。按照三角比例关系可以得出:
x/f = X/Z y/f = Y/Z ,即 x = fX/Z y = fY/Z
以上将坐标为(X,Y,Z)的Q点映射到投影平面上坐标为(x,y)的q点的过程称作投影变换。
上述Q点到q点的变换关系用3*3的矩阵可表示为:q = MQ,其中
最终得出透视投影变换矩阵为:
(1)
M称为摄像机的内参数矩阵,单位均为物理尺寸。
通过上面,可以把相机坐标系转换到像图像坐标系的物理单位[即(X,Y,Z)→(x,y)]
3、成像平面坐标系→像素坐标系
通过下面,可以把像平面坐标系物理单位到像素单位[即→(u,v)]
以图像平面的左上角或左下角为原点建立坐标系。假设像平面坐标系原点位于图像左下角,水平向右为u轴,垂直向上为v轴,均以像素为单位。
以图像平面与光轴的交点O1 为原点建立坐标系,水平向右为x轴,垂直向上为y轴。
原点O1一般位于图像中心处,O1在以像素为单位的图像坐标系中的坐标为(u0, v0)。
像平面坐标系和像素坐标系虽然在同一个平面上,但是原点并不是同一个。
设每个像素的物理尺寸大小为 dx * dy (mm) ( 由于单个像素点投影在图像平面上是矩形而不是正方形,因此可能dx != dy),
图像平面上某点在成像平面坐标系中的坐标为(x, y),在像素坐标系中的坐标为(u, v),则二者满足如下关系:[即(x, y)→(u, v)]
u = x / dx + u0 v = y / dy + v0
用齐次坐标与矩阵形式表示为:
将等式两边都乘以
点Q(X,Y,Z)坐标中的Z可得:
将摄像机坐标系中的(1)式代入上式可得:
则右边第一个矩阵和第二个矩阵的乘积亦为
摄像机的内参数矩阵(单位为像素),相乘后可得:
(2)
和(1)式相比,此
内参数矩阵中f/dx, f/dy, cx/dx+u0,cy/dy+v0 的单位均为像素。令
内参数矩阵为K,则上式可写成:
(3)