一、双目相机标定简介
双目相机标定包含两个部分内容
1)两台相机各自内参和畸变系数的标定(单目标定)
2)两台相机之间相互位置的标定(双目标定)
提问:为什么要进行双目标定?
因为在许多三维重建算法中,我们都要知道两台相机之间的相对位置关系,这样才能进行距离计算。
双目标定前后,双目模型对比如下图所示:
图1 标定模型
一些名词概念:
基线:两个光心的连线称为基线;
极平面:物点(空间点M)与两个光心的连线构成的平面称为极平面;
极线:极平面与成像平面的交线
极点:极线的一端,基线与像平面的交点
像点:极线的一端,光心与物点连线与像平面的交点;
可以看出:
校正前,相机的光心不是相互平行的
校正后,极点在无穷远处,两个相机的光轴平行,像点在左右图像上的高度一致
标定+校正后图片:
图2 立体校正后左右相机图像发生一定扭曲
这样做的好处是:比如后续的立体匹配时,只需在同一行上搜索左右像平面的匹配点即可,能使效率大大提高。所以,我们要知道右相机相对于左相机的位姿关系,那我们才可以做校正。
二、单目相机标定理论
1、相机成像原理
相机成像系统中,共包含四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。
这四个坐标系之间的转化关系为:
其中, (U,V,W)为在世界坐标系下一点的物理坐标, (u,v)为该点对应的在像素坐标系下的像素坐标, Z为尺度因子。
我们将矩阵:
称为相机的内参矩阵,内参矩阵取决于相机的内部参数。其中, f为像距, dX, dY分别表示X,Y方向上的一个像素在相机感光板上的物理长度(即一个像素在感光板上是多少毫米), u0,v0 分别表示相机感光板中心在像素坐标系下的坐标, θ 表示感光板的横边和纵边之间的角度( 90°表示无误差)。
我们将矩阵: 称为相机的外参矩阵,外参矩阵取决于相机坐标系和世界坐标系的相对位置, R表示旋转矩阵, T表示平移矢量。
即单点无畸变的相机成像模型如下:
相机标定的目的其实很简单,我们要想对一个成像系统建模,进而进行相应的计算,所必须的参数就是相机的内参矩阵: 和相机的外参矩阵
,因此,相机标定的第一个目的就是获得相机的内参矩阵和外参矩阵。
2、畸变与畸变矫正
另外,相机拍摄的图片还存在一定的畸变,畸变包括桶形畸变和枕形畸变。畸变模型包括径向畸变和切向畸变。
畸变公式(3阶)如下:
其中,分别为理想的无畸变的归一化的图像坐标、畸变后的归一化图像坐标, r为图像像素点到图像中心点的距离,即
相机标定的第二个目的就是获得相机的畸变参数,如上式中的 k1, k2, p1, p2等,进而对拍摄的图片进行去畸变处理。
3、张正友标定法
张正友标定法利用如下图所示的棋盘格标定板,在得到一张标定板的图像之后,可以利用相应的图像检测算法得到每一个角点的像素坐标 (u,v)。
张正友标定法将世界坐标系固定于棋盘格上,则棋盘格上任一点的物理坐标 W=0,由于标定板的世界坐标系是人为事先定义好的,标定板上每一个格子的大小是已知的,我们可以计算得到每一个角点在世界坐标系下的物理坐标 (U,V,W=0)。
我们将利用这些信息:每一个角点的像素坐标 (u,v)、每一个角点在世界坐标系下的物理坐标 (U,V,W=0),来进行相机的标定,获得相机的内外参矩阵、畸变参数。
3.1标定相机的内参矩阵和外参矩阵
张正友标定法标定相机的内外参数的思路如下:
1)求解单应矩阵;
2)求解内参矩阵;
3)求解外参矩阵;
4)极大似然估计优化;
3.1.1 求解单应矩阵
棋盘平面和成像平面间的单应
将一个平面映射到另一个平面,将棋盘格所在的平面映射到相机的成像平面,则有
p = HP ①
𝐻表示的是成像平面和标定棋盘平面之间的单应矩阵
p为棋盘格所成像的像点坐标(u,v),P为棋盘格角点在世界坐标系的坐标(U,V,W=0)。
根据小孔相机模型,用齐次坐标系表示可以化简为
②
其中, R1,R2为旋转矩阵R的前两列,R3由于W=0,直接消去。为了简便,将内参矩阵记为A。
对于不同的图片,内参矩阵A为定值;
对于同一张图片,内参矩阵A,外参矩阵 (R1 R2 T) 为定值;
对于同一张图片上的单点,内参矩阵A,外参矩阵(R1 R2 T),尺度因子Z 为定值。
根据公式①②,可得单应矩阵H为内参矩阵和外参矩阵的积H = A(R1 R2 T)
记矩阵 H的三列为(H1 H2 H3) ,则有:
利用上式,消去尺度因子Z,可得:
此时,尺度因子Z已经被消去,因此上式对于同一张图片上所有的角点均成立。(u,v)是像素坐标系下的标定板角点的坐标, (U,V)是世界坐标系下的标定板角点的坐标。通过角点识别算法,我们可以得到标定板角点的像素坐标(u,v),又由于标定板的世界坐标系是人为定义好的,标定板上每一个格子的大小是已知的,我们可以计算得到世界坐标系下的(U,V)。
由这里的 H是齐次矩阵,有8个独立未知元素。每一个标定板角点可以提供两个约束方程(u,U,V的对应关系、v,U,V的对应关系提供了两个约束方程),因此,当一张图片上的标定板角点数量等于4时,即可求得该图片对应的矩阵 H。当一张图片上的标定板角点数量大于4时,利用SVD求解最小二乘法最佳的矩阵H。
3.1.2 求解内参矩阵
我们已知了矩阵 H = A(R1 R2 T) ,接下来需要求解相机的内参矩阵 A 。
利用R1,R2作为旋转矩阵 R 的两列,存在单位正交的关系,即:
则由 H 和 R1,R2 的关系,可知:
代入可得:
另外,我们发现,上述两个约束方程中均存在矩阵 。因此,我们记
,则 B为对称阵。我们先求解出矩阵 B ,通过矩阵 B 再求解相机的内参矩阵 A 。
同时,为了简便,我们记相机内参矩阵 A 为:
则:
则用矩阵 A表示矩阵 B 得:
注意:由于B为对称阵,上式出现了两次 B12,B13,B23 。
这里,我们可以使用 将前面通过 R1,R2 单位正交得到的约束方程化为:
上述方程看起来有点复杂,但是其实不然,我们可以记:
则上述方程化为:
此时,通过 R1,R2单位正交得到的约束方程可化为:
即:
其中,矩阵
由于矩阵 H 已知,矩阵 v 又全部由矩阵 H 的元素构成,因此矩阵v已知。
此时,我们只要求解出向量b ,即可得到矩阵B 。每张标定板图片可以提供一个 vb=0 的约束关系,该约束关系含有两个约束方程。但是,向量 b 有6个未知元素。因此,单张图片提供的两个约束方程是不足以解出来向量 b。因此,我们只要取3张标定板照片,得到3个vb=0 的约束关系,即6个方程,即可求解向量 b。
当标定板图片的个数大于3时(事实上一般需要15到20张标定板图片),可采用SVD求解最小二乘拟合最佳的向量 b 。
根据矩阵 B 的元素和相机内参 α, β, γ,u0,v0 的对应关系(如上式),可得到:
即可求得相机的内参矩阵
3.1.3 求解外参矩阵
这里再次强调一下,对于同一个相机,相机的内参矩阵取决于相机的内部参数,无论标定板和相机的位置关系是怎么样的,相机的内参矩阵不变。这也正是在第2部分“求解内参矩阵”中,我们可以利用不同的图片(标定板和相机位置关系不同)获取的矩阵 H,共同求解相机内参矩阵 A的原因。
但是,外参矩阵反映的是标定板和相机的位置关系。对于不同的图片,标定板和相机的位置关系已经改变,此时每一张图片对应的外参矩阵都是不同的。
在关系: 中,我们已经求解得到了矩阵 H(对于同一张图片相同,对于不同的图片不同)、矩阵 A(对于不同的图片都相同)。通过公式:
,即可求得每一张图片对应的外参矩阵 (R1 R2 T)。
注意,这里值得指出,完整的外参矩阵为 。但是,由于张正友标定板将世界坐标系的原点选取在棋盘格上,则棋盘格上任一点的物理坐标 W=0,将旋转矩阵的R的第三列 R3消掉,因此, R3在坐标转化中并没有作用。但是 R3要使得 R满足旋转矩阵的性质,即列与列之间单位正交,因此可以通过向量 R1,R2的叉乘,即 R3 = R1×R2,计算得到R3。
此时,相机的内参矩阵和外参矩阵均已得到。
3.1.4 极大似然估计优化
以上推导都是假设不存在畸变参数的情况下成立的。但是事实上,相机是存在畸变参数的,因此,张正友标定法还需要通过极大似然估计对参数进行优化。
极大似然估计是一种估计总体未知参数的方法。它主要用于点估计问题。所谓点估计是指用一个估计量的观测值来估计未知参数的真值。说穿了就一句话:就是在参数空间中选取使得样本取得观测值的概率最大的参数。
为什么标定的内外参数可以用极大似然法进行估计:
因为我们是假定图像上的角点是被噪声干扰的,且我们认为这些噪声是高斯噪声。那么对于噪声的幅度就是给观测值造成的误差。但高斯噪声的概率密度我们是已知的,所以我们可以用前面所述的极大似然估计的思想去“猜”真值。
假设同一相机从𝑛个不同的角度的得到了𝑛幅标定板的图像,每幅图像上有𝑚个像点(角点)。𝑀𝑖𝑗表示第i𝑖幅图像上第j个像点对应的标定板上的三维点,则
表示𝑀𝑖𝑗的估计像点。其中,𝑅𝑖,𝑡𝑖表示第𝑖幅图像对应相机的旋转矩阵和平移向量,K(前面计算A矩阵)是相机的内参数。则像点𝑚𝑖𝑗的概率密度函数是
构造似然函数
为了能够让𝐿取得最大值,需要最小化下面的值(高斯概率密度特性)
这是一个非线性优化问题,可以使用Levenberg-Marquardt的方法,利用前几步求得的内参和外参作为初始值,迭代得到最优解。
3.2 标定相机的畸变参数
张正友标定法仅仅考虑了畸变模型中影响较大的径向畸变。
其中,分别为理想的无畸变的归一化的图像坐标、畸变后的归一化图像坐标, r为图像像素点到图像中心点的距离,即
。
图像坐标和像素坐标的转化关系为:
其中,为理想的无畸变的像素坐标。由于 θ 接近于 90° ,则上式近似为:
同理可得畸变后的像素坐标的表达式为:
代入径向畸变公式(2阶)则有:
可化简得:
即为:
每一个角点,只要知道畸变后的像素坐标 、理想的无畸变的像素坐标
,就可以构造两个上述等式。那么,有𝑚幅图像,每幅图像上有𝑛个标定板角点,则将得到的所有等式组合起来,可以得到𝑚𝑛个未知数为
的约束方程,将约束方程系数矩阵记为 D ,等式右端非齐次项记为 d ,可将其记着矩阵形式:
后,利用最小二乘法可得:
此时,相机的畸变矫正参数已经标定好。
那么,如何获得畸变后的像素坐标 和理想的无畸变的像素坐标
呢?
可以通过识别标定板的角点获得,
可以通过如下方法近似求得:
当然,由于外参矩阵 ( R1 R2 T ) 和内参矩阵 A 是在有畸变的情况下获得的,这里得到的像素坐标并不是完全理想的、无畸变的。我们的总逻辑是,在进行内参矩阵和外参矩阵的求解的时候,我们假设不存在畸变;在进行畸变系数的求解的时候,我们假设求得的内参矩阵和外参矩阵是无误差的。
3.3 参数优化
为了使标定得到的估算实际的、存在径向畸变的摄像机参数。我们需要把刚刚求解得到的畸变参数,连同前面得到的理想无畸变条件下的内外参数一起,再一次进行极大似然估计。
得到畸变参数k1,k2后,可以先将图像进行去畸变处理,然后用去畸变后的图像坐标估计相机的内参数。
和上面类似利用最大似然估计取得最优解,使用Levenberg-Marquardt的方法估计使得下面式子是最小值的参数值
最终就得到了,我们想要在考虑畸变情况下,摄像机的参数。
三、双目标定理论
双目模型如下
其中,
另外,右相机主点相对于左相机主点,显然还有:
公式(6)和(7)是相等的,另外旋转矩阵R是正交矩阵。根据正交矩阵的性质,矩阵的逆等于矩阵的转置,即
我们可以得到:
因为Rr, Rl, Tr, Tl这些参数在单目标定的时候已经获得,所以代入公式(8),可以求得R,T。因为拍摄了多张图片,利用最小二乘法,最小化误差,即可得到我们最佳估计的R,T矩阵。有了这两个矩阵,我们做个旋转、平移就可以了。
标定流程:
已知左侧标定板世界坐标系中各个角点位置Pw,通过左侧相机的Ri, ti,将角点坐标转换到相机坐标系:
再根据R,T转换到右侧相机坐标系,并投影到右像上,得到角点估计值p:
已知右像的角点位置p,使得的投影误差最小
在OpenCV的实现中,用高斯牛顿法的最小二乘方法来优化最后的结果。
参考链接:https://zhuanlan.zhihu.com/p/94244568