相机模型承担了联系二维图像与三维物理世界的作用,为了得到精确的相机模型,需要对所使用的双目相机进行标定,包括对两个镜头的内参标定及两镜头之间的外参标定。双目标定使用 Kalibr 标定工具,同时标定两镜头内参及外参。INDEMIND双目相机使用 OV9281 图像传感器,可以最高每秒 50 帧的速率采集 1280x800 分辨率的图像,同时采用 M12 定焦镜头,该镜头畸变较大,因此采用 Pinhole-equidistant 相机模型进行标定。
一、相机标定
1、在场景中放置一个已知的物体
(1)识别图像和场景之间的对应关系
(2)计算从场景到图像的映射
相机的标定在最简单的情况下可以用这样一个方案:假定场景里面有一个已知物体,而且假定建立已知物体的一些点到图像中点的一些关系,
接下来要做的就是寻找相机矩阵,把一些三维点映射到平面的两维点上面来,假定平面上的三维点的坐标是已知的,非常精确的,而且知道三维坐标而且知道图像中的点和三维模型的点之间的对应关系,利用这种3D到2D的对应关系,可以来做相机的标定
问题:必须非常精确地了解几何
必须知道3D - 2D对应关系
2、摄像机参数估计Resectioning
利用这种3D到2D的对应关系,可以来做相机的标定这种方案称之为Resectioning。
画成图像来看,就是三维点在这里,有一个两维照片,而且知道黑色的点有对应关系,那么要求的就是相机矩阵,就是3X4的相机矩阵,包含内参、外参所有的参数都在里面,
直观上可以认为把这一张照片,在三维空间中摆到一个恰当的位置,使得从相机中心发出去的光线刚刚好要通过三维空间中的这些已知点,所以要解决的问题是:这个相机要放到三维空间中的什么位置才能让这个几何关系得以成立。
在做这样的方法的时候,假定这些三维点的坐标是非常精确已知的,然而在实际应用中是比较难做到的,很早以前会使用标定物,通过专业设备制作的过程中保证三维点的位置,然后有精确标定物之后标定相机矩阵。
3、基本方程(Basic Equations)
算法实现其实蛮简单的,任何的一个三维点,经过相机的投影矩阵之后,会投影到图像中的一个两维点,这所有都是在射影几何(projective geometry),如果要写成传统的代数方程式,这个地方要加入一个非零的系数λ
,这样才能让两个等式严格成立
λ
引入过来其实是引入一个额外的变量,对我们的求解造成了一些不方便,我们想办法把它去除掉,最简单的办法就是用叉乘
,我们在学习单应性(Homography)的时候用过类似的技术,一张图的点,经过单应性变换映射到了另一张图,为了消掉尺度(sclae),使用图像坐标乘以投影的坐标等于零。这个就是我们的约束
可以做一个进一步的变换,P
是未知数,x
和X
已知,P当做未知数提出来,组成一个列向量,P1是矩阵1的第一行,P2是矩阵2的第一行,P3是矩阵3的第一行,把三行的元素挪成一个列向量,前面就是x与X操作算出来的矩阵,所有矩阵里面的系数都是已知的
最后进行求解的到相机的度量(metrics),这样的方法就叫做直接线性变换Direct Linear Transform(DLT)
Ap = 0
对方程进行奇异值分解,对矩阵A做一个SVD,
可以先数一下P里面有多少对未知数,相机的矩阵P是一个3X4的矩阵,这里面本身是有12个未知数的,真正独立变量只有11个,每一对对应点可以给的约束,其实是两个,因为图像点是二维坐标,每一对对应点可以给它两个约束,至少需要六个点才能解方程
最小化约束||Ap||,不能用退化解P = 0,所以避免退化解加一个约束,
||P|| = 1