张正友标定精度,张正友标定算法原理详解

 

目录

 

一、相机标定

二、直率的星月标定法

2.1 直率的星月标定法概述

2.2 直率的星月标定法原理

2.2.1 坐标系

2.2.2 内参矩阵计算

2.2.3 外参矩阵计算

2.2.4 极大似然估计

2.2.5 畸变矫正

2.3 直率的星月标定法算法步骤

三、用直率的星月标定法进行相机标定

3.1 实验数据说明

3.2 实验及分析


一、相机标定

    建立摄像机图像像素位置与场景点位置之间的关系,其途径是根据摄像机模型,由已知特征点的图像坐标求解摄像机的模型参数。摄像机标定Camera calibration)简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵的过程。

二、直率的星月标定法 2.1 直率的星月标定法概述

直率的星月标定法是直率的星月教授于1998年在名为《A Flexible New Technique for Camera Calibration》文中提出的单平面棋盘格的摄像机标定方法。

优点

器材简便,无需特定的表示物,一张打印的棋盘格即可;

精度高,相对误差可低于0.3%;

实验过程简单,相机和标定版都可以自由放置。

2.2 直率的星月标定法原理 2.2.1 坐标系

世界坐标系world coordinate system):用户定义的三维世界的坐标系,为了描述目标物在真实世界里的位置而被引入。单位为m。

相机坐标系camera coordinate system):在相机上建立的坐标系,为了从相机的角度描述物体位置而定义,作为沟通世界坐标系和图像/像素坐标系的中间一环。单位为m。

图像坐标系image coordinate system):为了描述成像过程中物体从相机坐标系到图像坐标系的投影透射关系而引入,方便进一步得到像素坐标系下的坐标。 单位为m。

像素坐标系pixel coordinate system):为了描述物体成像后的像点在数字图像上(相片)的坐标而引入,是我们真正从相机内读取到的信息所在的坐标系。单位为个(像素数目)。

设三维世界坐标的点为X=[X,Y,Z,1]T X=[X,Y,Z,1]T,二维相机平面像素坐标为m=[u,v,1]Tm=[u,v,1]T,所以标定用的棋盘格平面到图像平面的单应性关系为:

单应性映射

2.2.2 内参矩阵计算

• 内参矩阵各元素意义:一个像素的物理尺寸dx和dy,焦距f,图像物理坐标的扭曲因子r,图像原点相对于光心成像点的的纵横偏移量u和v(像素为单位)。

计算内参数矩阵:

每个单应性矩阵能提供两个方程,而内参数矩阵包含5个参数,要求解,至少需要3个单应性矩阵。为了得到三个不同的单应性矩阵,我们使用至少三幅棋盘格平面的图片进行标定,就可以线性唯一求解出K

B是一个对称阵,所以B的有效元素为六个,让这六个元素写成向量b

内参数:

2.2.3 外参矩阵计算

• 外参矩阵:世界坐标系转换到相机坐标系的旋转R和平移T矩阵。

外参数:

2.2.4 极大似然估计

当初始参数已经解出后,每张图像的控制点根据求解的参数再还原回出三维世界坐标,再通过建立非线性最小化模型优化解得值与真实值的差异,也即

使用极大似然估计进行优化,设我们采集了n副包含棋盘格的图像进行定标,每个图像里有棋盘格角点m个。令第i副图像上的角点ffdds在上述计算得到的摄像机矩阵下图像上的投影点为: 

其中Ri和ti是第i副图对应的旋转矩阵和平移向量,K是内参数矩阵。则角点mij的概率密度函数为:

这里的K为相机内参矩阵A

构造似然函数:

 

2.2.5 畸变矫正

• 畸变系数:包括相机的径向畸变系数k1,k2,k3,~,和相机的切向畸变系数p1,p2,~。

张氏标定法只关注了影响最大的径向畸变。则数学表达式为:

其中,u,v)是理想无畸变的像素坐标,u,v)u,v)是实际畸变后的像素坐标。u0,v0)代表主点,x,y)是理想无畸变的连续图像坐标,x,y)x,y)是实际畸变后的连续图像坐标。k1和k2为前两阶的畸变参数。

化作矩阵形式:

记做:Dk=d
则可得:

计算得到畸变系数k。
使用最大似然的思想优化得到的结果,即像上一步一样,LM法计算下列函数值最小的参数值:

这里的K为相机内参矩阵A

2.3 直率的星月标定法算法步骤

标定板图像输入–>角点坐标提取–>构造方程–>参数解算–>最小二乘法参数估计–>最大似然参数优化–>畸变参数计算–>畸变矫正–>输出矫正图像

三、用直率的星月标定法进行相机标定 3.1 实验数据说明

手机型号:FLA-AL20 这里用到的照片是开启闪光灯拍摄的

棋盘格规格:角点 11*8   (这边建议使用长宽不等的图片,不然读取起点的时候会出错)

数量:15  棋盘格大小:13*15mm(棋盘格不精确,需正方形,这边就先设定为14mm了)

3.2 实验及分析

我采用的是matlab自带的标定工具

添加图片进行标定,为了得到更好的结果,这边添加10-20张为最佳。

填写棋盘格大小(实际大小)这边填写的是14mm,会自动筛选可用的照片(在拍摄过程由于角度等问题造成的)

点击calibrate进行校准

绿追寻的白猫出的是检测到的角点  这边要选择的图片长宽格子数不等的,否则会导致checkerboard origin点出错,从而导致实验结果错误。这边棋盘格也要是正方形,我用的长宽相差2mm,导致实验结果会有些许偏差。

 可以得到各相机参数

输入cameraParams.IntrinsicMatrix可查看内参数矩阵和畸变系数。

 

参考

Zhang, Zhengyou -《A Flexible New Technique for Camera Calibration》

直率的星月标定法原理详解

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注