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

2018 年 2 月 28 日 计算机视觉life sixgod

   坚持原创,点击上方蓝字关注


前面文章从零开始学习「张氏相机标定法」(一)成像几何模型》中我们学习了相机成像几何模型,知道了如何将世界坐标系中的三维坐标和像素坐标系中的二维坐标联系起来,根据从零开始学习「张氏相机标定法」(二)单应矩阵》,我们根据标定棋盘图纸及其对应的照片已经可以得到单应矩阵H了。如下所示:

下一步如何求相机内外参数呢?


我们知道H是内参矩阵和外参矩阵的混合体,而我们想要最终分别获得内参和外参。所以需要想个办法,先把内参求出来(先求内参是因为更容易),得到内参后,外参也就随之解出了。


我们先不考虑镜头畸变,来看看如何求解内参和外参。求解思路是利用旋转向量的约束关系,以下是具体推导,建议自己演算一遍,加深理解。


为了利用旋转向量之间的约束关系,我们先将单应性矩阵H化为3个列向量,即H=[h1 h2 h3],则有

按元素对应关系可得:

因为旋转向量在构造中是相互正交的,即r1和r2相互正交,由此我们就可以利用“正交”的两个含义,得出每个单应矩阵提供的两个约束条件:


约束条件1:旋转向量点积为0(两垂直平面上的旋转向量互相垂直),即:

约束条件2:旋转向量长度相等(旋转不改变尺度),即:

所以一个单应性矩阵H可以提供上述两个约束条件。那么如何利用上述两个约束条件求解内参或者外参呢?我们一步一步来看,由前面可知内参矩阵M:

记:

我们看到B为对称矩阵,真正有用的元素只有6个(主对角线任意一侧的6个元素)。把B带入前面两个约束条件后可转化为:

上面两约束中的式子均可写为通式

的形式,定义3X3的单应矩阵H=[h1 h2 h3]的第i列列向量:

将如下表达式代入上述的约束单项式:

为了简化表达形式,令:

则有:

由此,两约束条件最终可以转化为如下形式:

如果我们拍摄了n张不同角度的标定图片,因为每张图片我们都可以得到一组(2个)上述的等式。其中,v12,v11,v22可以通过前面已经计算好的单应矩阵得到,因此是已知的,而b中6个元素是待求的未知数。因此,至少需要保证图片数 n>=3,我们才能解出b。


根据n张不同角度的标定图片,最终我们得到了一个矩阵集合 Vb=0 ,其中V是一个 (2n x 6) 的矩阵。如果 n>=3,就可以得到唯一解b(带有一个比例因子)。


如果 n=2,也就是只有两张标定图片,那么我们可以设置内参中的γ=0(γ表示由于制造误差产生的两个坐标轴偏斜参数,通常很小,可忽略),将前面式子(搬运到下图)中γ=0可以看到对应 B12=0,换句话说,就是增加了一个约束条件:[0, 1, 0, 0, 0, 0]b = 0。


如果n=1,只能假设u0, v0已知(位于图像中心)且 γ=0,这样只能解出fx, fy两个参数。


前面说到,B中包含一个尺度因子λ,即:

假设我们已经根据前面计算得到了矩阵B元素的值,那么根据已知的矩阵B很容易解出内参,如下:

得到内参数后,内参矩阵M也已知。单应矩阵H也已知,因此可继续求得外参数:

其中又由旋转矩阵性质有

则可得

实际情况下,数据中是存在噪音的,所以计算得到的旋转矩阵R并不一定能满足旋转矩阵的性质。所以通常根据奇异值分解来得到旋转矩阵R。


上述的推导结果是基于理想情况下的解,从理论上证明了张氏标定算法的可行性。但在实际标定过程中,一般使用最大似然估计进行优化。假设我们拍摄了n张标定图片,每张图片里有m个棋盘格角点。三维空间点X在图片上对应的二维像素为x,三维空间点经过相机内参M,外参R,t变换后得到的二维像素为x',假设噪声是独立同分布的,我们通过最小化x, x'的位置来求解上述最大似然估计问题:

现在我们来考虑透镜畸变的影响,由于径向畸变的影响相对较明显,所以主要考虑径向畸变参数,根据经验,通常只考虑径向畸变的前两个参数k1,k2就可以(增加更多的参数会使得模型变的复杂且不稳定)。实际求解中,通常把k1,k2也作为参数加入上述函数一起进行优化,待优化函数如下所示

上述非线性优化问题通常用Levenberg-Marquardt(LM)算法进行迭代求解。一般将k1,k2初值设为0。


至此,张氏相机标定理论部分已经介绍完毕。下一篇会详细介绍一下LM算法。

相关阅读

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

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

注:原创不易,转载请联系simiter@126.com,注明来源,侵权必究。

登录查看更多
3

相关内容

最新《自动微分手册》77页pdf
专知会员服务
98+阅读 · 2020年6月6日
《深度学习》圣经花书的数学推导、原理与Python代码实现
实战 | 如何制作一个SLAM轨迹真值获取装置?
计算机视觉life
11+阅读 · 2019年10月16日
特征方程的物理意义
算法与数学之美
6+阅读 · 2019年5月13日
百面机器学习!算法工程师面试宝典!| 码书
程序人生
6+阅读 · 2019年3月2日
从零推导支持向量机 (SVM)
AI科技评论
9+阅读 · 2019年2月7日
实战 | 相机标定
计算机视觉life
15+阅读 · 2019年1月15日
从零开始一起学习SLAM | 点云平滑法线估计
计算机视觉life
4+阅读 · 2018年12月28日
从零开始一起学习SLAM | 神奇的单应矩阵
计算机视觉life
9+阅读 · 2018年11月11日
【直观详解】支持向量机SVM
机器学习研究会
18+阅读 · 2017年11月8日
干货|全景视频拼接的关键技术分析
全球人工智能
13+阅读 · 2017年7月15日
Angular-Based Word Meta-Embedding Learning
Arxiv
3+阅读 · 2018年8月13日
Structure Aware SLAM using Quadrics and Planes
Arxiv
4+阅读 · 2018年8月13日
VIP会员
相关资讯
实战 | 如何制作一个SLAM轨迹真值获取装置?
计算机视觉life
11+阅读 · 2019年10月16日
特征方程的物理意义
算法与数学之美
6+阅读 · 2019年5月13日
百面机器学习!算法工程师面试宝典!| 码书
程序人生
6+阅读 · 2019年3月2日
从零推导支持向量机 (SVM)
AI科技评论
9+阅读 · 2019年2月7日
实战 | 相机标定
计算机视觉life
15+阅读 · 2019年1月15日
从零开始一起学习SLAM | 点云平滑法线估计
计算机视觉life
4+阅读 · 2018年12月28日
从零开始一起学习SLAM | 神奇的单应矩阵
计算机视觉life
9+阅读 · 2018年11月11日
【直观详解】支持向量机SVM
机器学习研究会
18+阅读 · 2017年11月8日
干货|全景视频拼接的关键技术分析
全球人工智能
13+阅读 · 2017年7月15日
Top
微信扫码咨询专知VIP会员