综述 | 相机标定方法

2019 年 8 月 26 日 计算机视觉life

点击上方“计算机视觉life”,选择“星标”

快速获得最新干货


在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数(内参、外参、畸变参数)必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。

标定的目的主要为解决两个问题:

a、确定世界坐标系下三维空间点与像素平面像素点间的转换关系(内外参);

b、确定相机成像过程中的畸变系,用于图像矫正。

针孔相机模型

相机将三维世界中的坐标点(单位:米)映射到二维图像平面(单位:像素)的过程能够用一个几何模型来描述,其中最简单的称为针孔相机模型 (pinhole camera model),其框架如下图所示:

其中,涉及到相机标定涉及到了四大坐标系,分别为:

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

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

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

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

下面,我们来详细推导从世界坐标系到像素坐标的过程。

世界坐标系到相机坐标系

从世界坐标系到相机坐标系, 这是一个刚体变换,只需对世界坐标系的三维点作用一个旋转R和平移t(R,t即为相机的外参),变换过程可以通过一下公式完成:

相机坐标系到成像平面坐标系

这一过程进行了从三维坐标到二维坐标的转换,也即投影透视过程(用中心投影法将物体投射到投影面上,从而获得的一种较为接近视觉效果的单面投影图,也就是使我们人眼看到景物近大远小的一种成像方式)。

成像过程如下图所示:针孔面(相机坐标系)在图像平面(图像坐标系)和物点平面(棋盘平面)之间,所成图像为倒立实像。

但是为了在数学上更方便描述,我们将相机坐标系和图像坐标系位置对调,变成下图所示的布置方式(没有实际的物理意义,只是方便计算):

此时,假设相机坐标系中有一点M,则在理想图像坐标系下(无畸变)的成像点P的坐标为(可由相似三角形原则得出):

f为焦距,整理,得:

成像平面坐标系到像素坐标系

如上图,成平面坐标系和像素坐标系之间存在一个缩放和平移

整理得:

以fx、fy的方式表示为:

其中

  • α、β的单位为像素/米;

  • fx、fy为x、y方向的焦距,单位为像素;

  • (cx,cy)为主点,图像的中心,单位为像素。

那么,相机坐标系到像素坐标系的最终形式可写成:

将 Zc移到左边:

所以,在世界坐标系中的三维点M=[X,Y,Z]T 和像素坐标系中二维点m=[u,v]T的关系为:

即:

其中,s为缩放因子,A为相机的内参矩阵,[R t]为相机的外参矩阵,分别为m和M对应的齐次坐标。

畸变模型

我们在摄像机坐标系到图像坐标系变换时谈到透视投影。摄像机拍照时通过透镜把实物投影到像平面上,但是透镜由于制造精度以及组装工艺的偏差会引入畸变,导致原始图像的失真。因此我们需要考虑成像畸变的问题。

透镜的畸变主要分为径向畸变和切向畸变,还有薄透镜畸变等等,但都没有径向和切向畸变影响显著,所以我们在这里只考虑径向和切向畸变。

径向畸变

顾名思义,径向畸变就是沿着透镜半径方向分布的畸变,产生原因是光线在原理透镜中心的地方比靠近中心的地方更加弯曲,这种畸变在普通廉价的镜头中表现更加明显,径向畸变主要包括桶形畸变和枕形畸变两种。以下分别是枕形和桶形畸变示意图:

实际情况中我们常用r=0处的泰勒级数展开的前几项来近似描述径向畸变,矫正径向畸变前后的坐标关系为:

切向畸变

切向畸变是由于透镜本身与相机传感器平面(像平面)或图像平面不平行而产生的,这种情况多是由于透镜被粘贴到镜头模组上的安装偏差导致。畸变模型可以用两个额外的参数p1和p2来描述:

其中,

所以,我们一共需要5个畸变参数(k1,k2,k3,p1,p2)来描述透镜畸变。

综上所述,相机标定实际上就是确定相机的内外参数、畸变参数的过程。

以上是对于单个相机进行标定,那么对于多目相机系统或者RGBD 相机的标定呢?

立体标定

对于多目相机系统或者RGBD 相机除了要对别对每个相机进行以上标定以外,还需要求传感器之间的变换T,以使同一时刻获取的数据能够“对齐”,以双目为例,左右两个相机的坐标系如下图:

计算出两个摄像机之间的旋转矩阵R和平移向量t,方法是分别计算出两个摄像机的R和T,再由以下公式计算:

立体匹配

由于单相机获取的图像只能计算出二维坐标,因为我们使用了2套相机,且2套相机之间的关系也是已知的,那么如果我们能把三维空间中某点在左右相机成像的二维坐标都计算出来,且能知道这是同一个点,这样就可以计算出三维坐标。这里面确认同名点的技术就是立体匹配。立体匹配有很多种算法,其中局部匹配法是最常用的,但是就目前已有算法来说,没有一种算法可以实现100%匹配。一般来说待匹配点越多,匹配准确率越低。

现有标定方法介绍

相机标定方法有:传统相机标定法、主动视觉相机标定法、相机自标定法。

标定方法 优点 缺点 常用方法
传统相机标定法 可使用于任意的相机模型、 精度高 需要标定物、算法复杂 Tsai两步法、张氏标定法
主动视觉相机标定法 不需要标定物、算法简单、鲁棒性高 成本高、设备昂贵 主动系统控制相机做特定运动
相机自标定法 灵活性强、可在线标定 精度低、鲁棒性差 分层逐步标定、基于Kruppa方程

(左右滑动查看)

  1. Tsai两步法是先线性求得相机参数,之后考虑畸变因素,得到初始的参数值,通过非线性优化得到最终的相机参数。Tsai两步法速度较快,但仅考虑径向畸变,当相机畸变严重时,该方法不适用。

  2. 张氏标定法使用二维方格组成的标定板进行标定,采集标定板不同位姿图片,提取图片中角点像素坐标,通过单应矩阵计算出相机的内外参数初始值,利用非线性最小二乘法估计畸变系数,最后使用极大似然估计法优化参数。该方法操作简单,而且精度较高,可以满足大部分场合。

  3. 基于主动视觉的相机标定法是通过主动系统控制相机做特定运动,利用控制平台控制相机发生特定的移动拍摄多组图像,依据图像信息和已知位移变化来求解相机内外参数。这种标定方法需要配备精准的控制平台,因此成本较高。

  4. 分层逐步标定法是先对图像的序列做射影重建,在重建的基础上进行放射标定和欧式标定,通过非线性优化算法求得相机内外参数。由于初始参数是模糊值,优化算法收敛性不确定。

  5. 基于Kruppa的自标定法是通过二次曲线建立关于相机内参矩阵的约束方程,至少使用3对图像来标定相机。图像序列长度会影响标定算法的稳定性,无法保证射影空间中的无穷远平面。

以上为单个相机标定的方法,而对于相机-相机、相机-距离传感器之间进行标定,OpenCV、Matlab都有自带的工具箱或函数库可以用来标定,但[1]提出了一个带有Web界面的工具箱,用于全自动相机到相机和相机到范围的校准。该系统可在一分钟内恢复内外参数以及摄像机和距离传感器之间的转换。而且,该方法所提出的基于生长的棋盘格角点检测方法明显优于OpenCV需要指定棋盘格角点大小的角点检测方法。详细介绍请参考《一次拍摄搞定多相机自动化标定》


References:

1、Geiger A, Moosmann F, Car Ö, et al. Automatic camera and range sensor calibration using a single shot[C]//Robotics and Automation (ICRA), 2012 IEEE International Conference on. IEEE, 2012: 3936-3943.

2、针孔相机投影模型以及畸变模型

3、计算机视觉life | 相机标定

4、学习opencv3(中文版) —— Adrian Kaehler & Gary Bradski

5、双目视觉之相机标定

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、算法竞赛、图像检测分割、人脸人体、医学影像、自动驾驶、综合等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


从零开始学习三维视觉核心技术SLAM,扫描查看介绍,3天内无条件退款

早就是优势,学习切忌单打独斗,这里有教程资料、练习作业、答疑解惑等,优质学习圈帮你少走弯路,快速入门!


推荐阅读

从零开始学习「张氏相机标定法」(一)成像几何模型

从零开始学习「张氏相机标定法」(二)单应矩阵

从零开始学习「张氏相机标定法」(三)推导求解

从零开始学习「张氏相机标定法」(四)优化算法前传

从零开始学习「张氏相机标定法」(五)优化算法正传

一次拍摄搞定多相机自动化标定

利用自识别标记实现复杂场景下相机标定

实战 | 相机标定

IMU标定 | 工业界和学术界有什么不同?

相机标定究竟在标定什么?

解放双手|教你进行相机与IMU外参的在线标定

如何从零开始系统化学习视觉SLAM?

从零开始一起学习SLAM | 为什么要学SLAM?

从零开始一起学习SLAM | 学习SLAM到底需要学什么?

从零开始一起学习SLAM | SLAM有什么用?

从零开始一起学习SLAM | C++新特性要不要学?

从零开始一起学习SLAM | 为什么要用齐次坐标?

从零开始一起学习SLAM | 三维空间刚体的旋转

从零开始一起学习SLAM | 为啥需要李群与李代数?

从零开始一起学习SLAM | 相机成像模型

从零开始一起学习SLAM | 不推公式,如何真正理解对极约束?

从零开始一起学习SLAM | 神奇的单应矩阵

从零开始一起学习SLAM | 你好,点云

从零开始一起学习SLAM | 给点云加个滤网

从零开始一起学习SLAM | 点云平滑法线估计

从零开始一起学习SLAM | 点云到网格的进化

从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码

从零开始一起学习SLAM | 掌握g2o顶点编程套路

从零开始一起学习SLAM | 掌握g2o边的代码套路

从零开始一起学习SLAM | ICP原理及应用

从零开始一起学习SLAM | 用四元数插值来对齐IMU和图像帧

汇总 | SLAM、重建、语义相关数据集大全

吐血整理 | SLAM方向国内有哪些优秀的公司?

最强战队 | 三维视觉、SLAM方向全球顶尖实验室汇总

计算机视觉方向简介 | 视觉惯性里程计(VIO)

解放双手|教你进行相机与IMU外参的在线标定

SLAM方向公众号、知乎、博客上有哪些大V可以关注?

登录查看更多
2

相关内容

基于深度学习的表面缺陷检测方法综述
专知会员服务
92+阅读 · 2020年5月31日
基于视觉的三维重建关键技术研究综述
专知会员服务
154+阅读 · 2020年5月1日
【人大】图实现算法综述与评测分析
专知会员服务
37+阅读 · 2020年4月28日
【天津大学】风格线条画生成技术综述
专知会员服务
31+阅读 · 2020年4月26日
3D目标检测进展综述
专知会员服务
187+阅读 · 2020年4月24日
专知会员服务
109+阅读 · 2020年3月20日
【浙江大学】对抗样本生成技术综述
专知会员服务
89+阅读 · 2020年1月6日
专知会员服务
84+阅读 · 2019年12月13日
综述 | SLAM回环检测方法
计算机视觉life
14+阅读 · 2019年8月19日
最全综述 | 图像分割算法
极市平台
23+阅读 · 2019年6月23日
【泡泡一分钟】基于运动估计的激光雷达和相机标定方法
泡泡机器人SLAM
25+阅读 · 2019年1月17日
实战 | 相机标定
计算机视觉life
15+阅读 · 2019年1月15日
视觉SLAM技术综述
计算机视觉life
25+阅读 · 2019年1月4日
计算机视觉方向简介 | 室内场景的结构化重建
计算机视觉life
8+阅读 · 2018年11月13日
【紫冬分享】移动机器人视觉里程计综述
中国科学院自动化研究所
11+阅读 · 2018年10月31日
【质量检测】机器视觉表面缺陷检测综述
产业智能官
30+阅读 · 2018年9月24日
计算机视觉方向简介 | 阵列相机立体全景拼接
计算机视觉life
6+阅读 · 2018年1月3日
干货|全景视频拼接的关键技术分析
全球人工智能
13+阅读 · 2017年7月15日
Arxiv
5+阅读 · 2018年12月18日
Arxiv
6+阅读 · 2018年11月1日
Arxiv
135+阅读 · 2018年10月8日
Arxiv
3+阅读 · 2018年4月3日
Arxiv
151+阅读 · 2017年8月1日
VIP会员
相关VIP内容
基于深度学习的表面缺陷检测方法综述
专知会员服务
92+阅读 · 2020年5月31日
基于视觉的三维重建关键技术研究综述
专知会员服务
154+阅读 · 2020年5月1日
【人大】图实现算法综述与评测分析
专知会员服务
37+阅读 · 2020年4月28日
【天津大学】风格线条画生成技术综述
专知会员服务
31+阅读 · 2020年4月26日
3D目标检测进展综述
专知会员服务
187+阅读 · 2020年4月24日
专知会员服务
109+阅读 · 2020年3月20日
【浙江大学】对抗样本生成技术综述
专知会员服务
89+阅读 · 2020年1月6日
专知会员服务
84+阅读 · 2019年12月13日
相关资讯
综述 | SLAM回环检测方法
计算机视觉life
14+阅读 · 2019年8月19日
最全综述 | 图像分割算法
极市平台
23+阅读 · 2019年6月23日
【泡泡一分钟】基于运动估计的激光雷达和相机标定方法
泡泡机器人SLAM
25+阅读 · 2019年1月17日
实战 | 相机标定
计算机视觉life
15+阅读 · 2019年1月15日
视觉SLAM技术综述
计算机视觉life
25+阅读 · 2019年1月4日
计算机视觉方向简介 | 室内场景的结构化重建
计算机视觉life
8+阅读 · 2018年11月13日
【紫冬分享】移动机器人视觉里程计综述
中国科学院自动化研究所
11+阅读 · 2018年10月31日
【质量检测】机器视觉表面缺陷检测综述
产业智能官
30+阅读 · 2018年9月24日
计算机视觉方向简介 | 阵列相机立体全景拼接
计算机视觉life
6+阅读 · 2018年1月3日
干货|全景视频拼接的关键技术分析
全球人工智能
13+阅读 · 2017年7月15日
相关论文
Top
微信扫码咨询专知VIP会员