本篇文章主要讲述如何通过通过照相机模型在映射中加入部分照相机产生图像过程的投影特性从而 处理三维图像与平面图像之间的映射从而时间网格坐标的标定。篇中讲述了如何确定照相机模型、图像间的投影变换等。
针孔照相机模型
如图所示,其中c为图像中心点,C为相机中心点,x为三维坐标点在二维图像中的映射点,X为景物的三维坐标点,f为两中心点连线。其中x为CX直线与图像平面的交点。因此我们可以得到:
其中P为相机矩阵,表达式如下。R为描述相机方向的旋转矩阵,t是描述相机中心位置的三维平移向量,K为内标定矩阵用于描述照相机的投影性质。
标定矩阵通常可以写成如下形式,其中f为图像平面和照相机中心间的距离,s为倾斜参数。
照相机标定
同步标定内部参数和外部参数,一般包括两种策略:
1.光学标定: 利用已知的几何信息(如定长棋盘格)实现参数求解。
2.自标定: 在静态场景中利用 structure from motion估算参数。
下文中实现的为自标定效果
光学标定
首先需要制作标定板,用于标定空间坐标
接着通过空间中已知坐标的(特征)点 (Xi,Yi,Zi),以及它们在图像中的对应坐标 (ui,vi),直接估算 11 个待求解的内部和外部参数
最终得到上图所示矩阵,可根据最小二乘法求解,得出矩阵M的值。
其优缺点如下:
优点 | 缺点 |
---|---|
所有的相机参数集中在一个矩阵中,便于求解 | 无法得知具体的内参数和外参数 |
通过矩阵可以直接描述世界坐标中的三维点,到二维图像平面中点的映射关系 | 求解出的未知量个数比待标定参数更多,会引发参数不独立/相关问题 |
标定工具需要有极高的精度,包括不同平面的角度、特征点的物理距离等。因此制作标定工具十分困难 |
自标定(SFM)
对于自标定,我们只需选择一张标定板,通过不同角度与位置的标定板图片进行标定。如上图所示,其中0为相机中心,序号1-20表示不同图像平面。
最终通过求解M矩阵得到对应参数结果,上图参数说明如下
参数 | 说明 |
---|---|
s | 世界坐标系到图像坐标系的尺度因子 |
A | 相机内参矩阵 |
(u0,v0) | 像主点坐标 |
α, β | 焦距与像素横纵比的融合 |
γ | 径向畸变参数 |
仅需要平面标定板,拍摄若干张图片,且标定板中的模式十分灵活,可以是棋盘格,也可以是其他几何结构已知的图形。
自标定的总体流程如下:
1.打印一张棋盘格A4纸张(黑白间距已知),并贴在一个平板上
2.针对棋盘格拍摄若干张图片(一般10-20张)
3.在图片中检测特征点(Harris特征)
4.利用解析解估算方法计算出5个内部参数,以及6个外部参数
5.根据极大似然估计策略,设计优化目标并实现参数的refinement
实验结果
棋盘格图片数据如下,图片大小为1920 x 1442,共12张图片
最终得到的总误差为0.7769873251891357
在原数据的基础上,将所有图片数据的大小按比例缩小为1000 x 751,再次运行,得到的总误差为0.404443173882072。图像缩小后精度得到了提升,个人认为这是由于图像的大小一定程度上决定了图像自身的精度,越大的图片对细节有越好的展示,因此最终结果的误差会较大与缩小后的图片
算法在读取图片数据时若该图无法识别出角点则不会被记录数据,因此对于一些系统无法识别的图片我们需要进行畸变矫正,如上图。在进行畸变矫正后图片较之与之前出现扭曲但是脚点矫正到了同一直线,因此能够进行正确的角点识别。识别后最终得到总误差为0.376169230258824,比无法识别该畸变图像得到的结果更加精确。所以去畸变在对于图像角点识别的过程中有极大促进作用。
此外,对于常规标定板中角点的识别。该算法能够很精确的识别到棋盘格中的每一个交界处,并实现与下一行角点的连接,如上图。因此在该基础上实现的相关相机参数计算与最终的坐标标定也能够将误差降到很小。