sba(sparse bundle adjustment):一个基于Levenberg-Marquardt(LM)算法的通用稀疏光束法平差C/C++软件包

sba是一个用于多视重建视觉算法最后一步的通用软件包,基于Levenberg-Marquardt算法,适用于各种相机和三维结构的描述参数计算,能高效解决大规模问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【转】sba(sparse bundle adjustment):一个基于Levenberg-Marquardt(LM)算法的通用稀疏光束法平差C/C++软件包
2011-01-04 10:44
转载自  lulyon
最终编辑  lulyon

如果你来到这个页面来寻找一个通用的Levenberg-Marquardt算法的C/C++实现,请看levmar

引言:

本页面是关于sba,一个通用的稀疏光束法平差的C/C++软件包。它基于GNU通用公共许可证GPL分发的。光束法平差(BA是作为每个基于特征的多视重建视觉算法的最后一步,用来获得最佳的三维结构和运动(如相机矩阵)参数估计。提供初始估计,BA同时精化运动和结构参数,通过最小化观测和预测的图像点之间的投影误差。最小化一般通过Levenberg-Marquardt (LM)算法来辅助完成。然而,由于许多未知的因素作用于最小投影误差,一个通用的LM算法的实现(如MINPACK的 lmder)当应用于BA背景下的定义的最小化问题时,会带来极高的计算代价。

      

       幸运的是,在基本的法方程中不同的三维点和相机参数相互之间影响较小,呈现一种稀疏的块结构(如)。Sba利用这种稀疏的特性,使用LM算法的简化的稀疏变量来降低计算的复杂度。Sba是通用的,因为它保证了用户对于相机和三维结构的描述参数的定义的完全控制。因此,它事实上可以支持任何多视重建问题的显示和参数化。比如任意投影相机,部分的或完全标定的相机,由固定的三维点进行外方位元素(即姿态)的估计,精化本征参数,等等。用户要想在这类问题中使用sba,只需要提供合适的程序对这些问题和参数来计算估计的图像投影和他们的函数行列式(Jacobian)。用来计算解析的函数行列式可以是手头的代码,或者使用支持符号微分的工具(如maple)生成的代码,或者通过自动微分技术获得的代码。也可以使用近似的函数行列式,辅之以有限差分的方法。另外,sba包含了检查用户提供的函数行列式的一致性的程序。就我们的知识之所及,sba是第一个并且也是当前独一无二的的软件包,因为他能够不受版权限制以源代码形式放置在任何工程中。

作为sba的效率的一个指标,我们在这里说明,sba的单次测试已经涉及54台相机和5207三维点,产生了24609个图像投影。相应的最小化问题依赖于15999个变量,sba使用非最优的BLAS在 Intel P4@1.8 GHz running Linux机器上大约7秒钟内解决。如果没有BA的稀疏实现,那么这种规模的问题会变得非常棘手。

这篇简介全部译自http://www.ics.forth.gr/~lourakis/sba/,可参看更多相关页面了解光束法平差。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值