光束平差法:Bundle Adjustment
引入
Bundle Adjustment (BA)的翻译可以看出其利用的一组数据(“光束”)来进行最小化误差(“平差”),其本质就是一种优化算法。在SFM中,我们采用了多个视角的不同图像来计算物理世界的实际位置(三角定位)。那么三角定位得到的物体的三维位置信息肯能是不准确的。我们按照这个信息再次重新在像平面上进行投影(重投影),得到的新的投影位置。该位置与第一次投影(相机成像时为第一次投影)可能存在误差。BA模型最小化的误差就是这个重投影误差。
模型
假设物理世界的物体的坐标为
C(x,y,z)
C
(
x
,
y
,
z
)
,其在像平面上的成像的坐标为
(u,v)
(
u
,
v
)
。那么在SFM中,如果世界坐标系固定,也就是物体的世界坐标不发生变化。而相机在不同角度进行对物体进行拍摄成像,那么在不同位置
Pi
P
i
中像素位置是不一样的
(uij,vij)
(
u
i
j
,
v
i
j
)
。
根据之前的博文中推导过程可以得知,物体的世界坐标和像素坐标之间是存在一个关系的。即:
在重投影之后,我们还可以获得一个物理世界坐标(经过计算得出的世界坐标,并不一定为真实坐标)和像素坐标(并不一定为真实的像素坐标)。即:
那么由此,就可以得到两次投影的误差了:
从而可以得到优化的目标函数:
其中, σij σ i j 表示 Cj C j 是否在 Pi P i 位置的像上是否有投影。
优化方法
当将问题转化为无约束的优化模型后,只需要根据实际的需求选择不同的优化方法来优化目标函数,常用的方法有梯度下降法、最速下降法、牛顿法、拟牛顿法、LM算法等。部分相关算法可以参考:无约束优化。