Bundle Adjustment
Bundle Adjustment,光束法平差,常简写为BA,是SLAM里图优化的常用方法。
BA主要求解的是一个关于相机位姿以及路标点的空间坐标的大规模最小二乘优化问题。
在拍摄过程中,每一个相机位姿都与多个路标点关联,而每一个路标点也同时和多个相机位姿相关联,由此形成复杂的网状的相互约束。BA的目的即是调整相机位姿和路标点的位置估计,使得所有路标点在所有相机中的重投影误差最小。
BA本质还是离不开最小二乘原理(几乎所有优化问题其本质都是最小二乘)。
目前BA优化框架最为代表的是ceres solver和g2o。
ORB
ORB=Oriented FAST + Rotated BRIEF
FAST 主要检测局部像素灰度变化明显的地方(角点)。如果一个像素与它邻域的像素差别较大(过亮或过暗), 那它更可能是角点。
FAST 角点数量不确定,不具有方向信息,存在尺度问题(远处看着像是角点的地方,接近后看可能就不是角点)
Oriented FAST
方向信息:灰度质心法,假设角点的灰度和质心存在偏移,这个向量能够计算出一个方向。
尺度信息:使用尺度金字塔,计算不同尺度特征点。设置比例因子(1.2)和金字塔的层数(8)。将原图像按比例因子缩小成不同比例的图像,提取特征点总和。
BRIEF(Binary Robust Independent Elementary Features)
二进制编码描述子。以特征点为中心,在邻域窗口中选取N个点对。比较点对中两个点的亮度大小,量化为1bit二进制结果。N个点对量化为Nbit的二进制结果。
噪声敏感问题:以点为中心,取窗口内的像素和,代替点的亮度(单点->窗口)。
旋转不变性问题:计算BRIEF描述子时,以特征点为圆心,以特征点和取点区域的形心的连线为X轴,建立2维坐标系。
将BRIEF结果看作字符串,进行异或运算,统计结果为1的个数,就是Hamming距离。
目标三维重建
SLAM建图的过程可看作对ORB特征点(即路标点)进行空间位置估计的过程,其背后的原理为目标三维重建。涉及成像几何、相机内参/外参、极线约束、本征矩阵、三角化等一系列原理,串起了相机标定、ORB特征提取、mappoint估计、BA优化等一系列的步骤。
在查找过程中,找到了一份解释的直观、详细的文章,一步步串起了相关的概念。在此也进行转载,方便学习:
OpenCV实现SfM(一):相机模型_aipiano的博客-CSDN博客
OpenCV实现SfM(二):双目三维重建_aipiano的博客-CSDN博客
OpenCV实现SfM(三):多目三维重建_aipiano的博客-CSDN博客_多目视觉 三维重建
OpenCV实现SfM(四):Bundle Adjustment_aipiano的博客-CSDN博客
参考链接
Bundle Adjustment简述_OptSolution的博客-CSDN博客_bundleajustment
bundle adjustment 详解_cheng.li@3D_Vision的博客-CSDN博客_openmvg源码解析