计算机视觉的坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系
计算机视觉的坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系
计算机视觉中的坐标系转换是理解图像处理和三维重建的基础。本文详细介绍了世界坐标系、相机坐标系、图像坐标系和像素坐标系的定义、转换关系及其在实际应用中的意义。通过本文,读者可以建立对计算机视觉中坐标系转换的全面理解。
几何坐标概述
描述坐标系的要素包括:
- 原点
- 坐标轴(三维/二维,旋转关系,正方向)
- 单位
以下将从这几个方面详细描述各种坐标系。
1.1 世界坐标系
含义
世界坐标系(Ow,Xw,Yw,Zw)是真实世界的立体空间坐标,是一个客观参考坐标系,用于描述整个场景。相机/目标的位置/运动等都可以在世界坐标系中定义。世界坐标系一般是不动的。
定义
- 原点:根据运算方便可以选择合适的位置作为原点。对于较小的固定场所,例如固定装卸,可以选择机器手底座或者机器手前端执行器上等手端坐标系或平台坐标系OeXeYe Ze作为世界坐标系。对于较大的场所,例如自动驾驶,可以选择WGS84作为世界坐标系。
- 坐标轴:三维坐标,旋转关系可以选择右手定则。对于局部坐标系,可以选择X/Y在水平面,Z向上。对于大地坐标系,选择X/Y/Z分别指向东北天。
- 单位:物理单位m
作用
其主要作用有:
- 盛放物体的三维坐标
- 标定的时候根据原点确定标定物的位置
- 多传感器标定:例如给定出两个摄像机相对于世界坐标系的位置,从而求出两个或多个相机之间的坐标关系
1.2 相机坐标系
含义
相机坐标系(Oc,Xc,Yc,Zc)是根据透镜成像原理,将世界坐标在照相机内呈现,是一个三维坐标系。
定义
- 原点:在摄像机的光心(镜头中心)上
- 坐标轴:三维坐标,X水平向右,Y垂直向下,Z轴与摄像机光轴平行,即摄像机的镜头拍摄方向
- 单位:物理单位m
作用
相机坐标系是图像坐标与世界坐标之间发生关系的纽带,沟通了世界上最远的距离。
1.3 图像坐标系
含义
为了能够定量描述三维空间到二维图像的映射关系,图形学里引入了像平面坐标系。它是摄像机坐标系的一个平移,中心仍在摄像机主光轴上,距离光轴中心的距离等于摄像机的焦距。图像坐标系(o-xy)将相机呈现的三维坐标投影到屏幕上,而建立的新坐标系,不含高程信息,是一个二维坐标系。对应平面是像平面。
定义
- 原点:位于摄像机光轴与成像平面的焦点O’上(CCD 图像平面的中心)
- 坐标轴:二维坐标系,X水平向右,Y垂直向下。习惯上把成像平面对称到相机的前方,此时Y垂直向上。
- 单位:物理单位m或mm。
作用
将三维物体投影到该二维平面上。用于指定物体在照片中的位置。
1.4 像素坐标系
含义
像素坐标系(u,v)将图像量化为像素。是离散图像坐标或像素坐标,实际对应了CCD相机的存储元素。数码相机采集的图像首先是形成标准电信号的形式,然后再通过模数转换变换为数字图像。每幅图像的存储形式是M × N的数组,M 行 N 列的图像中的每一个元素的数值代表的是图像点的灰度。这样的每个元素叫像素,像素坐标系就是以像素为单位的图像坐标系。对应平面是像素平面。
定义
- 原点:在图片的左上角( CCD 图像平面的左上角顶点)
- 坐标轴:二维坐标系,X水平向右,Y垂直向下。
- 单位:尺度单位一个pixel。
作用
是实实在在的,我们能从摄像机中得到的真实信息。即底片的存储信息。
1.5 小结
可以看到,这些坐标系的定义都是有实际含义并且方便处理。对于自动驾驶,由于三个常用世界坐标系(ISO国际标准定义,SAE(Society of Automotive Engineers)汽车工程师协会定义,和基于惯性测量单元IMU的坐标定义)都是右手定则,因此推荐右手定则。
物理含义
物理模型1
摄像机会在光轴中心后方的底片上成一个缩小的倒像,是真正的像平面(X’f, Y’f)。但是为了分析和计算方便,我们会在光轴中心前方设立一个虚拟像平面(Xf, Yf)。虚拟像平面上的成像为正像,大小与真实倒像相同。
物理模型2
从右到左,依次是世界坐标系、图像坐标系、相机坐标系、像素坐标系。
物理模型3
图像平面在相机后。图像平面和像素平面是重合的。世界坐标系下的点P,经过相机坐标系转换,变为图像平面的点P'。
物理模型4
图像平面在相机前。图像平面和像素平面是重合的。世界坐标系下的点P,经过相机坐标系转换,变为图像平面的点P'。
几种表示方法都是对的,根据使用和理解方便选择其中一个。注意相机坐标系选择右手定则,与世界坐标系一样,方便旋转变换。
坐标系转换概述
3.1 作用
正:世界到像素
这一过程就是摄像机的拍摄过程,可以抽象成是从三维摄像机坐标系映射到二维像平面坐标系,再映射到图像坐标系的过程。
反:像素到世界
图像感知算法则是这一过程的逆过程,通过二维图像推断物体在三维摄像机坐标系中的位置,例如获得距离(深度)信息。
3.2 方法
正变换的步骤流程就是:
step1:将世界坐标转化为相机坐标,旋转平移,称之为刚体变换;
step2:将相机坐标转化为图像坐标,缩放投影,称为透视变换,或投影变换
step3:将图像坐标平移、离散抽样
变换矩阵如下。
3.3 相机标定
相机标定的主要工作也是坐标变换和解方程。包括内参,外参
世界坐标系转相机坐标系
以下为便于理解,相机载体以汽车为例说明。
4.1 坐标系定义
世界坐标系选择IMU车体坐标系,如下图所示。三个旋转角(横滚、俯仰、偏航)按定义不是很清楚,可以按照右手定则(x/y/z)顺序,旋转即正方向。
例如偏航角,旋转轴是z轴,正方向是x正向旋转向y正向,逆z轴看(从上往下看)是逆时针。
例如俯仰角,旋转轴是x轴,正方向是y正向旋转向z正向,逆x轴看是逆时针。
例如横滚角,旋转轴是y轴,正方向是z正向旋转向x正向,逆y轴看是逆时针。
相机坐标系XYZ分别用红蓝黄表示,如下图所示。(图中只看摄像机坐标系,世界坐标系和车体坐标系请自动忽略。)
4.2 变换方法
根据世界坐标系和相机坐标系关系特点,确定变换方法。目标物体P在世界坐标系下。一般是先旋转Z轴。
可以先将P点先绕Zw旋转90°,这样Xw和X就重合了。相当于偏航角Yaw是90°。
再绕Xw旋转90°,这样Yw和Y就重合了。相当于俯仰角Pitch是-90°。
此时Zw和Z也重合了,所以不用绕Y旋转了。
4.3 变换公式
旋转
绕轴旋转的公式属于基本公式,物理含义就是向新坐标轴投影。不理解的可以先看一下二维坐标变换。
绕z变化公式:
绕x,y变化公式:
在刚体变化中,旋转变换写作:
R的最终表达式,以旋转轴顺序是ZYX为例:
平移
平移矩阵T,则变换可以写成:
注意:是先旋转后平移,否则物理含义就变了,旋转矩阵的数值也变了。有的应用不是这样。
组合成齐次
进一步转化,可以写成齐次方程,4阶矩阵:
R矩阵是一个3×3矩阵,T是一个3×1矩阵,RT是一个4×4矩阵。
小结
经过变换以后,世界坐标系下的一点
就变换成了相机坐标系的点
。可以看到,刚体变换只有旋转和平移,没有缩放(各轴相等尺度变换)和斜切(各轴不相等尺度变换)。这样物体还无法存到有限的底片上。继续往下变换。
相机坐标系转图像坐标系
坐标系定义
变换公式
相机坐标系的点
投影到图像坐标系的点
。此处z=f。
根据相似三角形原理,
因此有:
对z轴进行归一化,可得P的像P'在相机前方z=1处的坐标
,称为归一化平面坐标。
写成矩阵形式:
小结
可以看到,由于相机坐标系和图像坐标系Z轴相同,因此只有缩放(各轴相等尺度变换)。
注意:对于每个深度不同的点,
是不同的。因此
不是个常数。在不同点构成的方程中
数值不一样,只是这个数可以在处理过程中消掉。
图像坐标系转像素坐标系
5.1 一般形式
坐标系定义
如前文所述,我们设
点为像素坐标系的原点,它位于图像的左上顶点。u轴向右为正方向,v轴向下为正方向。
[ps一句:左上角作为像素坐标的原点,这是一种人为的设置。换句话说,我们也可以设置其它顶点作为原点。例如,在opencv里面,像素的原点即为左上角;而在kinect拍到的图片里,则左下角为原点。]
变换公式
图像坐标系的点
投影到像素坐标系的点
。
写成矩阵形式:
举个例子。由于被摄像机摄物体的图像经过镜头投影到CCD芯片上(像平面),我们设CCD的大小为8x6mm,而拍摄到的图像大小为640x480,则dx=1/80mm/像素,dy=1/60mm/像素,u0=320,v0=240。
5.2 复杂形式
坐标系
如果相机x,y不垂直,设夹角投影将是如下效果:
公式
写成矩阵形式:
当xy正交时,
,公式退化为一般形式.
现在的相机基本都能做到满足垂直,因此使用一般形式即可.
从世界坐标系到像素坐标系
前三步整合后的公式
公式中, fx=f/dx,fy=f/dy。
内外参数和投影矩阵
定义投影矩阵和相机的内外参数。由于相机的内参出厂就确定了。因此一般坐标变换时,又可以写作如下形式:
世界坐标系的点
投影到图像坐标系的点
。
文献中的常见形式
对比整合所得公式,
得:
,
,
,
是个xy不垂直的畸变量。这个对于理解下一篇的相机标定有很大作用。
小结
从世界坐标系坐标系到图像坐标系:
1)从三维坐标系变到了二维坐标系;
2)经过了四个坐标系、三个矩阵、内外两种参数;
3)丢失了距离信息。因此出现深度相机等设备,将距离信息加以利用。