相机标定 和 单应性矩阵H

求解相机参数的过程就称之为相机标定。


1.相机模型中的四个平面坐标系:

1.1图像像素坐标系(u,v)

以像素为单位,是以图像的左上方为原点的图像坐标系;

1.2图像物理坐标系(也叫像平面坐标系)(x,y)

以毫米为单位,用物理单位表示图像像素位置,定义坐标系OXY,原点O定义在相机Zc轴与图像平面交点;

1.3相机坐标系(Xc,Yc,Zc)

以毫米为单位,以相机的光心作为原点,Zc轴与光轴重合,并垂直于成像平面,且取摄影方向为正方向,Xc、Yc轴

与图像物理坐标系的x,y轴平行,且OcO为摄像机的焦距f;

1.4世界坐标系(Xw,Yw,Zw)

根据具体情况而定,该坐标系描述环境中任何物体的位置,根据具体情况而定,满足右手法则;


四个坐标系关系作图如下:




2.四个坐标系转换

2.1世界坐标系(Xw,Yw,Zw)->相机坐标系(Xc,Yc,Zc):

摄像机的外参数: 旋转向量(大小为1×3的矢量或旋转矩阵3×3)和平移向量(Tx,Ty,Tz)

从相机坐标系到世界坐标系的变换,是通过旋转矩阵R和平移矩阵t完成的。


式中,M1称为相机的外参数. R为3*3矩阵,T为3*1矩阵,0为(0,0,0),旋转矩阵R是坐标轴依次绕x,y和z轴旋转角度ψ,φ和θ,所形成的三个矩阵Rx(ψ),Ry(φ),Rz(θ)的总乘积,

如下:


矩阵R的计算公式为:



2.2相机坐标系(Xc,Yc,Zc):->图像物理坐标系(x,y):

摄像机的内参数:摄像机内参数矩阵(fx,fy,u0,v0)和畸变系数(三个径向k1,k2,k3,两个切向p1,p2)

OpenCV中的畸变系数的排列(这点一定要注意k1,k2,p1,p2,k3)、


理想的摄像机模型是针孔模型,但是实际的镜头不符合这种假设。另外,相机的构造以及制造、安装、工艺等因素也会造成误差,导致相机通常会存在多种非线性畸变,使得上面介绍的针孔相机模型并不能准确地描述最终的成像关系。所以,为了使相机标定结果更加准确,在进行相机标定时应该将相机的非线性畸变考虑进来,修正理想投影模型。


径向畸变

径向畸变产生的主要原因是镜头径向曲率的不规则变化,它会导致图像的扭曲变形,例如,空间中的一条直线成像到图像平面后发生弯曲,变形成一条曲线。这种畸变的特点是以主点为中心,沿径向移动,离的距离越远,产生的变形量就越大。径向畸变是导致图像畸变的主要因素。如图所示,一个矩形的严重径向失真被较正成理想线性镜头的图像。 

这里写图片描述

径向畸变模型在OpenCV中被描述为: 

xcorrected=x(1+k1r2+k2r4+k3r6)ycorrected=y(1+k1r2+k2r4+k3r6)

径向畸变如下图所示,有桶形畸变和枕形畸变两种。

这里写图片描述


切向畸变

由于透镜不是完美地平行于图像平面,所以存在切向畸变。这种畸变使得一些区域看上去比预期的近。畸变模型为: 

xcorrected=x+[2p1xy+p2(r2+2x2)]ycorrected=y+[p1(r2+2y2)+2p2xy]

通常还有离心畸变、薄棱镜畸变等,但主要畸变是径向畸变和切向畸变,故opencv中使用这个5个参数描述摄像机畸变,即: 

Distortion  coefficients=(k1,k2,p1,p2,k3)


针孔模型下的理想透视投影变换:

表示为矩阵形式为:

f表示有效焦距

2.3图像物理坐标系(x,y):->图像像素坐标系(u,v):



上述公式中我们假设物理坐标系中的单位为毫米,那么dx的的单位为:毫米/像素。那么x/dx的单位就是像素了,即和u的单位一样都是像素,u0 ,v0是图像中心(光轴与图像平面的交点)坐标,dx,dy分别为一个像素在X与Y 方向上的物理尺寸.
上式表示为齐次坐标与矩阵形式表示出来即为:



其逆关系可表示为:


3.世界坐标系与图像像素坐标系之间的变换关系:


M1称为相机的内参数,M2称为外参数







单应性矩阵H,来自于不同角度的拍摄,


转自:http://blog.csdn.net/yonger_/article/details/55194602

原文地址:https://www.cnblogs.com/wyuzl/p/7760601.html