首先引述来自维基百科的定义:假设我们有一个3D空间中的点,他被位于不同位置的多个摄像机看到,那么所谓的光束法平差(Bundle Adjustment),就是能够从这些多视角信息中提取出3D点的坐标以及各个摄像机的相对位置和光学信息的过程。
可能这么说有点不够具体,我们用比较通俗的数学公式来描述这个过程:
问题提出:假设我们有一个3D空间中的一个点
Xj
,他可以被多个位于不同角度的摄像机看到,设第
i
个摄像机看到的第
光束法:加入我们的图像含有噪声,那么
PiXj=xij
可能不能够准确的满足,所以我们采用极大似然估计(Maximum Likelihood )的办法,假设测量噪声是高斯白噪声,我们希望估计投射矩阵
P^i
和对应的3D空间中的点
X^j
,这两个参量可以准确的满足
P^iX^j=x^ij
.这里的
x^ij
是我们在图像中观测到的点。我们希望最小化所有的通过预测得到的3D空间中的点投影在在平面中的像点,与真实的平面中的像点之间的误差,也就是:
这里的 cij 代表指示参量,如果计算的像素在平面里面, cij=1 反之, cij=0 。 d(x,y) 表示点 x,y 之间的几何距离。这种把所有的映射误差最小化的过程被称为光束法平差——就类似于调整位于相机中心和一系列的3D点之间的一串光束一样。
(这里我们要简单回顾下相机矩阵的概念,相机都要进行校正,其中以小孔模型为例,把以小孔中心为原点的三维坐标系中的点转化到同样以小孔中心为原点的二维平面的矩阵,我们称之为内部矩阵(intrinsic matrix),这个矩阵只与 fx,fy,cx,cy 等相机的内部参数有关,把相机坐标系转换到世界坐标系的矩阵称之为外部矩阵,一般涉及相机的旋转和平移(rotation and translation matrix))。\color{red}{(注意我们一般在变量上加一个折号来表示观测量,如\hat{x},加波浪号表示预测量,如\tilde{x}),个人认为上面公式中出现的有关折号的参量表示应该改为波浪号}。