光束法平差(SBA)常作为每个基于特征的多视重建视觉算法的最后一步,用来获得最佳的三维结构和运动(如相机矩阵)参数估计。对于提供初步估计值,BA通过减少观察和预测图像点之间的重投影误差细化运动和结构。一般通过Levenberg-Marquardt (LM)算法来辅助完成减少误差。然而,由于许多未知的因素作用于最小投影误差,一个通用的LM算法的实现(如MINPACK‘s lmder)当应用于BA背景下的最小化问题时,会带来极高的计算代价。
幸运的是,在normal equations(正则方程)中不同的三维点和相机参数相互之间影响较小,呈现一种稀疏的块结构。Sba利用这种稀疏的特性,采用L-M算法的简化稀疏变型来降低计算的复杂度。Sba是通用的,因为它保证了用户对于相机和三维结构的描述参数的定义的完全可控。因此,它事实上可以支持任何多视重建问题的显示和参数化。比如任意相机,部分的或完全标定的相机,由固定的三维点进行外部姿态的估计,内部参数的细化等等。用户要想在这类问题中使用sba,只需要提供合适的程序对这些问题和参数来计算估计的图像投影和它们的函数行列式(Jacobian 矩阵)。用来计算解析的函数行列式可以是手头的代码,或者使用支持符号微分的工具(如maple)生成的代码,或者通过自动微分技术获得的代码。也可以使用近似的函数行列式,辅之以有限差分的方法。另外,sba包含了检查用户提供的函数行列式的一致性的程序。就我们的知识之所及,sba是第一个并且也是当前独一无二的的软件包,因为他能够不受版权限制以源代码形式放置在任何工程中。
参考资料:
1.http://users.ics.forth.gr/~lourakis/sba/
2.http://blog.youkuaiyun.com/ximenchuixuezijin/article/details/7246663
3.http://www.zhihu.com/question/29082659