光束平差(Bundle Adjustment)算法
来源:互联网 发布:淘宝销售宣传标语 编辑:程序博客网 时间:2024/05/14 13:59
光束平差法(bundle adjustment ,BA)是一种优化问题算法,通过最小化观测图像和预测图像的对应点之间的位置投影误差而同时得到摄像机相关参数(摄像机参数矩阵、标定参数等)和空间结构的最优解。它的名字来源于将空间三维点投影到成像平面过程中,所有三维点与成像面二维点的连线都聚焦于一点:光心。
光束平差法有几个要素:目标函数,数值优化方法(如牛顿法),迭代与更新的方法,质量检验。总的来说,目标函数通常是一系列平方和,然后采用最小二乘法进行优化。
其中Levenberg-Marquardt(LM) 算法是常用的BA算法,其形式如下:
其中:
Q为将三维点投影到像平面的投影关系
d(x,y)表示x与y间的欧式距离。
对大范围的初始估计,LM也可以很快收敛。由于特征大多不会永远存在所有视场中,特别如SLAM 等移动建图的过程中,一个路标只出现在一小部分图像里,所以联系不同 视场的矩阵是一个稀疏矩阵,因此计算量上使得采用所有信息进行全局优化(global optimization)成为可能。
常用BA库:
sba: A Generic Sparse Bundle Adjustment C/C++
Apero/MicMac, a free open source photogrammetric
software. Cecill-B licence.
Package Based on the Levenberg–Marquardt Algorithm (C, MATLAB). GPL.
cvsba: An OpenCV wrapper for sba library (C++). GPL.
ssba: Simple Sparse Bundle Adjustment package based on the Levenberg–Marquardt Algorithm (C++). LGPL.
OpenCV: Computer Vision library in the contrib module. BSD license.
mcba: Multi-Core Bundle Adjustment (CPU/GPU). GPL3.
libdogleg: General-purpose sparse non-linear least squares solver, based on Powell’s dogleg method. LGPL.
ceres-solver: A Nonlinear Least Squares Minimizer. BSD license.
g2o: General Graph Optimization (C++) - framework with solvers for sparse graph-based non-linear error functions. LGPL.
DGAP: The program DGAP implement the photogrammetric method of bundle adjustment invented by Helmut Schmid and Duane Brown. GPL.
- 光束平差(Bundle Adjustment)算法
- DGAP - bundle adjustment 光束法平差
- Bundle Adjustment 光束法平差详解
- Bundle Adjustment光束平差法概述
- Bundle Adjustment光束平差法概述
- Bundle Adjustment 光束法平差详解
- Bundle adjustment-光束法平差介绍
- bundle adjustment 光束平差法介绍及其应用
- Bundle Adjustment——光束平差法
- bundle adjustment 光束平差法介绍及其应用
- 全景:Bundle adjustment算法
- bundle adjustment算法学习
- sparse bundle adjustment 摄影测量光束法平差程序库------编译
- SLAM笔记(五)光束平差法(Bundle Adjustment)
- sba(sparse bundle adjustment):一个基于Levenberg-Marquardt(LM)算法的通用稀疏光束法平差C/C++软件包
- 读书笔记:光束平差测量
- sparse bundle adjustment(sba) 摄影测量光束法平差程序库------程序库简介
- 三维重建(三)相机参数标定与光束平差法(Bundle Adjustment)
- hihocode #1385 : A Simple Job
- 周末轻松一刻,欣赏完全由程序自己回忆的视频片段
- python学习之 requests库
- load-on-startup在web.xml中的含义
- 打造史上最简单的广告轮播图Banner
- 光束平差(Bundle Adjustment)算法
- Lowest Common Ancestor of a Binary Tree
- 在Eclipse中显示.project, .classpath, .gitignore文件和.setting文件夹
- 线性表之单链表的c++实现
- ./arch/arm/include/asm/barriers.h:33:24: error: operator '>=' has no left operand
- 0005-每日一记(2016-09-25)
- 科普小知识——音频编码
- html常用标签
- 表白(love)