前情提要:
是第一次做项目的小白,文章内的资料介绍如有错误,请多包含!
相机内参
相机内参是本身的物理数据,包括焦距f和缩放c,一般以矩阵K的形式存放和使用
为什么要获取相机的内参数据:
1.相机的内参数据在建图的时候就需要使用,SLAM中需要根据相机内参数据结合传入的图像数据等进行建图,不然无法根据2D图像建立三维点云地图。
如果使用的是SFM技术构建三维点云地图,运动结构恢复,就无相机内参数据
2.在进行视觉重定位的时候,无论是几何方法还是图像检索方法,都需要当前传入输入数据的相机的内参来进一步计算得出当前的位姿信息。
因此,获取当前相机的内参数据是必不可少的。
如果不了解什么是几何方法或是图像检索方法,可以看看这篇文章:基于视觉重定位的室内AR导航APP的大创项目思路(2):改进的项目思路——建图和定位分离
由于项目的预期搭配设备是手机,因此需要解决的问题变为了如何获取手机相机的内参数据。
获取相机内存数据的方法
棋盘格标定
目前主流的获取相机内参数据的方法是:使用棋盘格进行相机标定(张正友棋盘格标定法)。
但是对于这个项目来说,这个方法是无法在项目的全部流程中使用的。
你可以在建图时使用这个标定方法获取建图时的手机的相机内参,但是在定位导航时,你是无法要求用户在使用一个app的时候,还要专门购买一个标定板进行相机标定的。
在项目思路2中提到了建图和定位分离的思想,因此我们并非要完全舍弃标定板标定,而是只在建图时使用这种方法,定位导航时另寻他法。
自动相机标定
使用棋盘格标定获取的相机内参数据是较为准确的,要不是别无选择,使用这种准确的数据进行相机重定位是最好的。
在项目思路1中,我提到过使用过一个ORB-SLAM3的安卓端移植APP,这个APP在进行建图的时候是无需进行相机标定的。
那么必然存在一种或是多种无需进行标定板标定就能获取相机内参数据的方法,尽管数据可能不如使用标定板进行相机标定那么准确。
在经过一系列的搜寻和确定后,目标的关键词变为了:自动相机标定
而自动相机标定的方法有很多种,后文展开再讲
未完待续
如果你觉得这篇文章写的不错,多多点赞~收藏吧!