camera calibration相机标定简单说就是从世界坐标系切换到图像坐标系的过程,是求解最终投影矩阵P的过程。
基本的坐标系有三个:世界坐标系,相机坐标系,图像坐标系。
相机标定有两个部分:
第一步从世界坐标系转换到相机坐标系,是三维到三维点的变换,包括R,t(相机外参)等参数。
第二步是从相机坐标系转为图像坐标系,这是三维点到二维点的转换,包括K(相机内参)等参数。
相机主轴Z,相机中心点C,相平面,主点p,C到p的距离为焦距f
像平面平行于xoy平面
相机坐标系和像平面坐标系度量值为米m
图像坐标系是以像平面为参照,度量值为像素个数
知道相机坐标系一点X,像平面坐标系对应点x,从X(X,Y,Z)到x(x,y)的转换
x=PX P即为投影矩阵
之前的操作把相机坐标系的点转换到像平面坐标系,但是像平面坐标系与图像坐标系的原点位置不同,所以需要进一步操作
得到相机内参K 此时K由焦距f和主点基于图像坐标系原点的坐标px,py决定
在图像坐标系中的度量单位是像素,而之前得到的结果是m,所以还需要进行转换
mx表示水平方向1m包含像素个数 my表示竖直方向1m包含的像素个数
像素可能不一定是正方形,一个像素(m度量)大小为 1/mx * 1/my
更新内参K
世界坐标系到相机坐标系为三维坐标系变换,通常只需要一个平移和一个旋转操作
P = K[ R | t ]
K是内参,包括焦距,主点p位置,像素与真实环境大小比例,是固有属性。R和t是相机外参,R是旋转矩阵,可以转换三维的旋转向量,分别表示绕x,y,z轴旋转, t是一个平移向量,分别表示在x,y,z三个方向上的平移量
distortion parameters
)畸变是对直线投影的一种偏移,简单说就是场景内一条直线投影到图片上也保持为一条直线,畸变的话投影就不能保持为一条直线了。
畸变可以分为径向畸变和切向畸变
径向畸变有三种,桶形畸变、枕形畸变、胡子畸变。可以用公式修正
切向畸变是由于透镜与成像平面不严格的平行,可以用公式修正
5个畸变参数D =(k1,k2,p1,p2,k3)
标定过程通过标定板,可以得到n个对应的世界坐标三维点X和对应的图像坐标二维点x。三维点到二维点的转换都可以通过相机内参K,外参R和t,以及畸变参数D经过一系列矩阵变换得到,可以用对应关系求解相机参数。最后可以用线性方程方法求解方程式。
相机标定原因:每个镜头畸变程度不同,相机标定可以校正镜头畸变。实际上来说,可以认为相机标定方法得到了内参和畸变参数,然后接下来就可以通过求得的内参和畸变参数求解其他图片的R和t。
齐次坐标
就是将一个原本是n维的向量用一个n+1维向量来表示。
许多图形应用涉及到几何变换,主要包括平移、旋转、缩放。以矩阵表达式来计算这些变换时,平移是矩阵相加,旋转和缩放则是矩阵相乘,综合起来可以表示为 x = R ∗ X + t x = R*X+ t x=R∗X+t(注:因为习惯的原因,实际使用时一般使用变化矩阵左乘向量)( R R R 旋转缩放矩阵, t t t 为平移矩阵, X X X 为原向量, x x x 为变换后的向量)。引入齐次坐标的目的主要是合并矩阵运算中的乘法和加法,表示为 x = P ∗ X x = P*X x=P∗X 的形式。即它提供了用矩阵运算把二维、三维甚至高维空间中的一个点集从一个坐标系变换到另一个坐标系的有效方法。和上面的计算过程是对应的。
转载自相机标定(Camera calibration)_honyniu的专栏-CSDN博客_相机标定