实战 | 相机标定

2019 年 1 月 15 日 计算机视觉life

点击“计算机视觉life”关注,置顶更快接收消息!

本文阅读时间约5分钟

什么是相机标定?我们为什么需要相机标定?

相机标定就是确定相机内参和外参的过程,其结果精度会直接影响视觉系统后续工作的准确性。

坐标系

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

像素坐标系

图像物理坐标系

相机坐标系

世界坐标系

为了进行相机标定,必须已知世界坐标系中足够多的三维空间点坐标,找到这些空间点在图像中投影点的二维图像坐标,并建立对应关系。世界坐标系中某个给定点投影到图像坐标系中被分为两个步骤:

机器视觉中常用的有两种不同类型的镜头:普通镜头和远心镜头。使用普通镜头时,世界坐标系到图像坐标系为透视投影;使用远心镜头时为平行投影。

相机标定方法分类

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

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

(左右滑动查看)

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

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

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

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

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

MATLAB相机标定应用程序

MATLAB自带相机标定应用程序,有camera calibrator和stereo camera calibrator两类相机标定应用程序。其操作简单、直观,能够获得相机的内、外参数以及畸变参数等。

其中,camera calibrator用于单目相机标定;stereo camera calibrator用于双目相机标定。两者操作方式相同,唯一区别在于stereo camera calibrator添加图片时会弹出添加两个相机图片的操作框。

标定板准备(实验室经费有限,只能自己制作)

平面标定板具有以下几个优点:

  1. 易于操作;

  2. 尺寸可以制作的非常精确;

  3. 非常方便应用在背光照明应用中,只需要使用透明材料制作放置标志点的底盘即可。

使用MATLAB编程进行棋盘标定板的制作,将图片打印后固定在一块平板上。程序如下:

  J = (checkerboard(300,3,4)>0.5);    %生成黑白棋盘图像
figure, imshow(J)   %显示黑白棋盘图像
imwrite(J,'plate.jpg');%保存黑白棋盘图像

效果如图:(感觉有点寒酸呀,“但这不重要”,没条件自己创造)

Camera Calibrator应用程序

camera calibrator操作界面如下:

对于标定图像数量,位姿越多,标定结果也会越精确,建议在10到20幅之间。按照上图中的1、2、3进行相机标定操作。我们可以选择径向畸变系数以及是否计算切向畸变和倾斜,通过优化选项可以设置内参矩阵以及径向畸变参数的输出形式。

1.添加标定图像后显示界面如下图:

2.相机标定后显示界面会显示相机与标定板之间的位置关系。

3.相机参数输出camera calibrator应用程序相机标定参数输出如图所示:

高亮:MATLAB相机标定结果中的内参矩阵默认格式为,其中,分别为轴和轴的有效焦距;轴和轴的不垂直因子,一般令;是光学中心。注意事项:

  1. 制作棋盘格标定板时,黑色方格与白色方格尺寸需要相同,所有方格尺寸一致;

  2. 采集标定板图像时,应采集多幅不同位姿的标定板图像,采集图像数量不应太少,建议10~20幅为宜;

  3. 采集图像时,相机的焦距不能调节,否则会改变相机的内参数,导致标定失败;

  4. MATLAB相机标定程序能够自动计算重投影误差,重投影误差越小表示相机标定的精度越高。

相机标定参数的准确度

相机标定过程中如果标定板放置不适当的话将会导致相机参数中某个参数或某些参数不能得到唯一值。为了得到高准确度的相机参数必须避免这种情况的发生。除了这个影响外,影响相机参数准确度的主要因素就是用于进行相机标定的图像数量。下面显示了用于相机标定的图像数量对参数的影响。

从图中可以看出相机参数的准确度随使用图像数量的增加而明显增加。为什么使用相当多的标定图像可以提高相机标定精度?这主要是因为相机参数之间存在不容忽视的相关性,这些参数只能通过多次无关测量进行求解。为了得到更准确的相机参数,我们需要这样做:

  1. 标定板在图像中最好能够覆盖整个视野(覆盖图像的每个角落可以使得径向畸变系数更准确);

  2. 标定板覆盖较大的深度范围(将标定板绕它的轴和轴旋转或者放置在不同距离的位置上)。


相关文章

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

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

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

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

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

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

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

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

欢迎关注公众号:计算机视觉life,一起探索计算机视觉新世界~

登录查看更多
15

相关内容

【开放书】SLAM 中的几何与学习方法,62页pdf
专知会员服务
107+阅读 · 2020年6月5日
【IJCAI2020】TransOMCS: 从语言图谱到常识图谱
专知会员服务
34+阅读 · 2020年5月4日
基于视觉的三维重建关键技术研究综述
专知会员服务
154+阅读 · 2020年5月1日
【人大】图实现算法综述与评测分析
专知会员服务
37+阅读 · 2020年4月28日
【干货书】机器学习Python实战教程,366页pdf
专知会员服务
330+阅读 · 2020年3月17日
深度学习算法与架构回顾
专知会员服务
77+阅读 · 2019年10月20日
实战 | 如何制作一个SLAM轨迹真值获取装置?
计算机视觉life
11+阅读 · 2019年10月16日
计算机视觉方向简介 | 视觉惯性里程计(VIO)
计算机视觉life
63+阅读 · 2019年6月16日
【泡泡读者来稿】VINS 论文推导及代码解析(一)
泡泡机器人SLAM
112+阅读 · 2019年3月3日
视觉SLAM技术综述
计算机视觉life
25+阅读 · 2019年1月4日
【泡泡一分钟】无参相机标定
泡泡机器人SLAM
3+阅读 · 2018年11月7日
利用自识别标记实现复杂场景下相机标定
计算机视觉life
7+阅读 · 2018年4月17日
计算机视觉方向简介 | 单目微运动生成深度图
计算机视觉life
7+阅读 · 2018年1月17日
计算机视觉方向简介 | 阵列相机立体全景拼接
计算机视觉life
6+阅读 · 2018年1月3日
干货|全景视频拼接的关键技术分析
全球人工智能
13+阅读 · 2017年7月15日
Arxiv
6+阅读 · 2018年1月14日
Arxiv
4+阅读 · 2017年11月4日
VIP会员
相关VIP内容
【开放书】SLAM 中的几何与学习方法,62页pdf
专知会员服务
107+阅读 · 2020年6月5日
【IJCAI2020】TransOMCS: 从语言图谱到常识图谱
专知会员服务
34+阅读 · 2020年5月4日
基于视觉的三维重建关键技术研究综述
专知会员服务
154+阅读 · 2020年5月1日
【人大】图实现算法综述与评测分析
专知会员服务
37+阅读 · 2020年4月28日
【干货书】机器学习Python实战教程,366页pdf
专知会员服务
330+阅读 · 2020年3月17日
深度学习算法与架构回顾
专知会员服务
77+阅读 · 2019年10月20日
相关资讯
实战 | 如何制作一个SLAM轨迹真值获取装置?
计算机视觉life
11+阅读 · 2019年10月16日
计算机视觉方向简介 | 视觉惯性里程计(VIO)
计算机视觉life
63+阅读 · 2019年6月16日
【泡泡读者来稿】VINS 论文推导及代码解析(一)
泡泡机器人SLAM
112+阅读 · 2019年3月3日
视觉SLAM技术综述
计算机视觉life
25+阅读 · 2019年1月4日
【泡泡一分钟】无参相机标定
泡泡机器人SLAM
3+阅读 · 2018年11月7日
利用自识别标记实现复杂场景下相机标定
计算机视觉life
7+阅读 · 2018年4月17日
计算机视觉方向简介 | 单目微运动生成深度图
计算机视觉life
7+阅读 · 2018年1月17日
计算机视觉方向简介 | 阵列相机立体全景拼接
计算机视觉life
6+阅读 · 2018年1月3日
干货|全景视频拼接的关键技术分析
全球人工智能
13+阅读 · 2017年7月15日
Top
微信扫码咨询专知VIP会员