sba一个通用的稀疏光束法平差的软件包解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如果你来到这个页面来寻找一个通用的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的稀疏实现,那么这种规模的问题会变得非常棘手。
/lulyon/blog/item/70179866ed90132eaa184c1f.html
又一个光束法平差库,由德国斯图加特大学发布。名字很怪,不知道全称是什么。
引言
程序DGAP 实现了光束法平差的摄影测量方法,由Helmut Schmid and Duane Brown 发明。它
基于图像和目标的几何关系的中心投影,使用最小二乘法。
特点
Camera-/self-/simultan 标定,连同作者Brown, Ebner and Gruen 建议附加的参数。
两者可选的图像模型:直接线性变换(DLT)和仿射变换。
不同测量位置和/或姿态数据(GPS 支持的空三、直接地理参考)的集成。
精确的计算内外几何参数
测试附加参数的意义
计算协方差(新!)和相关性
新:对分格摄影机图像(frame camera imagery)的扩展的摄影测量模型。
新:线扫描仪(line scanner)图像的直接地理参考。
新:空三(aerial triangulation,AT)的样例,GPS 支持的空三并且直接地理参考。
新:ADS-40 线扫描仪图像的直接地理参考样例。
版权/许可
Copyright (C) 2005 Dirk Stallmann
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of t he
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
下载地址:http://www.ifp.uni-stuttgart.de/publications/software/openbundle/index.en.html
依赖
库genlib2 提供了各种子程序以及模板类。
可以有选择的使用LAPACK 和BLAS。LAPACK 是一个Fortran77 库,用来解数字线性代数中
最常见的问题。它又依赖于基本的线性代数子程序BLAS。BLAS 也是一个Fortran77 库,提供
优化的向量和矩阵操作。两个库都是自由软件,并且拥有版权。
LAPACK 和BLAS 可在netlib 上获得:
为了在MS Windows 2000/XP 下编译DGAP,可以使用Cygnus 的GNU-win32 开发工具包“Cygwin” (),版本1.3.6 或者更高。LAPACK/BLAS 库在Cygwin 下
依然可用。