一般而言,我们通过小孔成像来描述相机的成像原理,对其进行数学建模,如下图所示。
其中O-x-y-z为相机坐标系,O’-x’-y’-z’为成像平面物理坐标系,o-u-v为像素坐标系,通过此几何模型,我们可以得到:Z/f=-X/X’=-Y/Y’,其中负号表示这个在成像平面上所形成的像是倒的,我们可以对该模型进行一定的处理,将负号去掉,得到以下模型:
以上分别为真实成像平面、对称成像平面、归一化成像平面。其中像素坐标系的定义为:原点定义在左上角上,u轴与x轴平行,v轴与y轴平行。像素坐标系与成像坐标系相差了一个缩放和原点的平移。设在u轴缩放了 α α
倍,在 v 轴缩放了 β β 倍,原点平移了 [cx,cy]T [ c x , c y ] T ,则成像平面上的点P’与像素坐标的关系为:
{u=αX′+cxv=βY′+cy { u = α X ′ + c x v = β Y ′ + c y
将像素平面与摄像机坐标系上的点 P(X,Y,Z) P ( X , Y , Z ) 联系起来,在这里,我们设 fx=αf f x = α f ( f f 表示焦距), fy=βf f y = β f ,则可得到以下公式:
{u=fxXZ+cxv=fyYZ+cy { u = f x X Z + c x v = f y Y Z + c y
其中,f 的单位为米, α α , β β 单位为像素/米, fx f x , fy f y 的单位为像素,写成齐次坐标为:
⎛⎝⎜uv1⎞⎠⎟=1Z⎛⎝⎜fx000fy0cycy1⎞⎠⎟⎛⎝⎜XYZ⎞⎠⎟=1ZKP=1ZK(RP+t) ( u v 1 ) = 1 Z ( f x 0 c y 0 f y c y 0 0 1 ) ( X Y Z ) = 1 Z K P = 1 Z K ( R P + t )
则K代表的是内参,若需要将世界坐标点转换到,只需要对上述基于摄像机坐标系的空间点P转化到基于世界坐标系的空间点P’即可。以上我们得到了像素坐标系,成像坐标系,摄像机坐标系,世界坐标系上点的转换关系。其中涉及到一个归一化平面,相当于焦距为单位化了,这里不详细说明。
对于畸变而言,可分为径向畸变和切向畸变,在这里我们只考虑径向畸变
{xdistorted=x(1+k1r2+k2r4+k3r6)ydistorted=y(1+k1r2+k2r4+k3r6)} { x d i s t o r t e d = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) y d i s t o r t e d = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) }
其中(x,y)为归一化平面上的点, (xdistorted,ydistorted) ( x d i s t o r t e d , y d i s t o r t e d ) 为畸变后的点。在畸变纠正模型中,对于畸变较小的图像中心区域,主要是k1起作用,对于畸变较大的边缘区域,主要是k2起作用。
在这里补充一下归一化平面的知识,归一化平面位于相机前方z=1处的平面,因此上面的点z坐标的值恒等于1.有以下关系式:
在以上公式中, Pw P w 基于世界坐标系, Pc˜ P c ~ 基于摄像机坐标系, Pc P c 基于归一化平面。T为世界坐标系到摄像机坐标系的转换矩阵。
单目相机成像过程:世界坐标系P(X,Y,Z)——> 摄像机坐标系P’(X’,Y’,Z’)——>归一化平面上的点p(X’/Z’,Y’/Z’,1)(或者焦距为f的点p)——>进行畸变矫正得到的点 p′(xdistorted,ydistorted) p ′ ( x d i s t o r t e d , y d i s t o r t e d ) ——>通过内参得到像素上的点 p′′(u,v) p ″ ( u , v ) 。
灰度图:在一张灰度图中,每个像素位置(x,y)对应一个灰度值 I I ,所以,一张宽度为w、高度为h的图像,数学上可以记做一个矩阵: mathitI(x,y)∈Rw×h m a t h i t I ( x , y ) ∈ R w × h 。由于计算机不能表达整个实数空间,所以常见的灰度图中,用0-255的整数来表达图像的灰度大小。
故一张宽度为640像素、高度为480像素分辨率的图像图就可以表示为:
usigned char image[480][640]
RGB-D:在RGB深度图中,记录了各个像素与相机之间的距离,这个距离通常以毫米为单位,而RGB-D相机的量程通常在10几米之外,超过了255.采用16位整数来记录深度图,也就是位于0-65536的值。
彩色图像:彩色图像需要有通道的概念。计算机中,用红绿蓝这三种颜色的组合来任意表示,于是对于每一个像素,就要记录R、G、B三个数值,每个数值称为一个通道。例如,最常见的彩色图有三个通道,每个通道由8位整数表示,在这种规定下,一个像素占据24位空间。