如果您在查找通用Levenberg-Marquardt C/C时访问此页面++实现,请查看稀疏LM利瓦尔,分别针对稀疏和稠密雅可比矩阵的问题。

介绍

该网站关注sba公司,用于分布式通用稀疏束调整的C/C++包根据GNU通用公共许可证(GPL公司).光束法平差(BA)几乎总是用作每个基于特征的多视图的最后一步重建视觉算法以获得最佳三维结构和运动(即摄像机矩阵)参数估计。提供初始估计,BA同时细化运动和结构通过最小化观测和预测图像点之间的重投影误差。最小化通常是在勒文贝格·马夸特(LM)算法。然而,由于大量未知因素导致重投影误差最小化,LM算法的通用实现(例如MINPACK公司不羁)当应用于BA环境中定义的最小化问题时,会产生较高的计算成本。

幸运的是,不同3D点和相机的参数之间缺乏交互,导致了显示稀疏块结构的法线方程(单击在这里例如)。sba公司通过使用LM算法的定制稀疏变体来利用这种稀疏性相当大的计算增益。sba公司是通用的,因为它授予用户对描述摄像机和3D结构的参数的定义。因此,它几乎可以支持任何多视图重建问题的显示/参数化,例如任意投影相机,部分或完全内部校准的摄像机,从固定3D估算外部方位(即姿态)点、内部参数的细化等。用户必须做的所有事情都是为了适应sba公司任何此类问题为其提供适当的例程,用于计算估计的图像投影及其雅可比手头的问题和参数化。计算解析雅可比矩阵的例程可以手动编码、生成使用支持符号区分的工具(例如。枫木),或获得使用自动微分技术。还有其他选择借助有限差分逼近雅可比矩阵。此外,sba公司包括的例程检查用户提供的Jacobians的一致性。据我们所知,sba公司是第一个以及目前唯一一个以自由软件形式发布的同类软件包。


概述

sba公司已实施,特别强调灵活性和性能效率。本质上,它是一种专门的LM变体,适合“箭头”SfM问题中常见的稀疏类型。为此,sba公司雇佣了一名将法线矩阵划分为不同的摄像机和结构块并解决(稀疏)问题的方案利用稀疏矩阵的法方程舒尔点子矩阵的补。通过采用此方案,sba公司可以有效地处理大型重建问题。关于背后理论的更多细节sba公司可以找到在中文档.
作为其效率的指示,这里注意到一个中等规模的测试问题哪一个sba公司已申请参与54摄像头和5207产生的3D点24609图像投影。相应的最小化问题取决于15999变量并由解决sba公司在Intel上使用未优化的BLAS只需大约7秒钟P4@1.8GHz运行Linux。如果没有BA的稀疏实现,那么这种规模的问题就很难解决。

sba公司依赖于LAPACK公司对于所有线性代数运算在LM算法过程中产生的。如果LAPACK(或等效的供应商优化库,如英特尔的MKL、AMD的AMCL、Sun的性能库、IBM的ESSL、SGI的SCSL、NAG…),不可用,建议安装CLAPACK公司,LAPACK的f2版本。在MSWin下,还可以从以下位置下载预编译的32位LAPACK/BLAS库在这里。为了获得更好的性能,阿特拉斯数学库,分别是建议使用自动调优的BLAS实现和K.Goto的高性能BLAS。除了LAPACK和BLAS,sba公司不需要其他第三方库。用于使用的MEX文件接口sba公司从内部matlab软件也可以使用。它可能会起作用带GNU倍频程也一样,但这还没有经过测试。


文档

对背后理论的详细描述sba公司可以在相应的ACM中找到TOMS公司 纸张(bibtex入口)或(有些过时)2004 ICS/FORTH技术报告#340,标题为的设计和实现基于Levenberg-Marquardt算法的通用稀疏束平差软件包.概述演示sba公司BA可以在这些幻灯片.

Hartley&Zisserman的附录6中也讨论了稀疏BA.


可用功能

提供的用户可调用功能sba公司遵循以下命名约定:所有函数都有前缀通过sba公司_; 此前缀后面的字符串指定函数是实现完全还是部分(即。,仅运动或结构)BA。为了满足不同的用户需求,专家和简单的驾驶员需要进行稀疏束调整已开发;专业驾驶员的区别在于_x个函数名中的后缀。更具体地说,sba公司包括以下功能:

  • sba_motstr_levmar(),sba_motstr_levmar_x():
    负责人。全动和结构BA的简单而专业的驱动程序。
  • sba_mot_levmar(),sba_mot_levmar_x():
    负责人。纯动作BA的简单而专业的驱动程序。严格来说不是BA,因为结构保持不变。然而,此函数非常在处理涉及相机重切的问题时很有用,例如姿势根据已知3D-2D对应进行估计。
  • sba_str_levmar(),sba_str_levmarx():
    响应。简单而专业的驱动程序,只用于结构BA。同样,这不是真实BA,因为运动保持不变。例如,此函数可以:,在处理交叉问题时非常有用,即重建3D在一组外部校准图像中看到的点。

精确的原型sba_motstr_levmar_x()下面给出了参考,以及以下内容的描述它的每个参数。这些描述中的I和O分别表示输入和输出参数。只有动作和结构的BA例程具有非常相似的参数。咨询Madsen课堂讲稿有关角色的详细信息opts选项信息论据。参数阿达塔旨在帮助避免在计算图像投影函数的例程中直接使用全局函数及其雅可比矩阵。可以设置包含指向适当数据结构的指针的结构向上,指向它的指针可以传递给BA函数,然后BA函数不加解释地传递给每个函数调用用户提供的例程。更准确的参数描述可以在文档而Madsen等人课堂讲稿提供由实现的LM算法的更多详细信息sba公司.还包括在sba公司的分布是一个示例程序(即。,欧茨巴德莫。c(c)),提供了使用sba公司各种口味的欧几里得BA。

sba_motstr_levmar_x()

.::切换显示::。

实际使用的示例sba公司包含在上的演示页中摄像机跟踪无序全景图像的定位.


联系人地址

如果你发现sba公司对您的研究有用或有任何意见/问题/建议,请联系我在

请注意,尽管我试图回复大多数信息,但我可能需要很长时间才能回复。
如果您使用sba公司在你发表的作品中,请引用本文:bibtex入口 ].



自11月10日星期四15:23:31 EET 2005以来的点击量