我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:欢乐棋牌下载手机版 > 光线法 >

SLAM笔记(五)光束平差法(Bundle Adjustment)

归档日期:07-23       文本归类:光线法      文章编辑:爱尚语录

  前边的八点法,五点法等可以求出闭式解的前提是已经知道确切的点对。但实际情况中往往存在大量的噪声,点与点不是精确地对应甚至出现一些错误匹配。

  对场景中任意三维点P,由从每个视图所对应的的摄像机的光心发射出来并经过图像中P对应的像素后的光线,都将交于P这一点,对于所有三维点,则形成相当多的光束(bundle);实际过程中由于噪声等存在,每条光线几乎不可能汇聚与一点,因此在求解过程中,需要不断对待求信息进行调整(adjustment),来使得最终光线能交于点P。对m帧,每帧含N个特征点的目标函数如下:

  其中:表示受白噪声影响的估计二维点坐标,为投影函数,ruguo 如果点j出现在图i上,则,否则。

  以上便是光束平差法目标函数的原理。由于场景中特征点往往较多,该问题是一个巨大的高维非线性优化问题。接下来,需要对上述式子进行求解,这是光束平差法的核心内容。

  针对具体应用场景,光束平差法有不同收敛方法。目前常用的方法有梯度下降法,牛顿法,高斯牛顿法,Levenber-Marquardt等方法。

  所谓一阶方法,即对问题的目标函数进行泰勒一阶展开后进行迭代求解的方法。梯度下降法是一阶方法之一。当梯度为负值时,沿着梯度方向就是函数值f变小最快的方向。梯度下降法就是让函数沿着下降最快的方向去找函数值的最小值,就像水流沿着斜率最大的方向流去。对于变量都为标量的函数,形象的描述是始终用一条直线来拟合曲线。梯度下降法迭代式子如下:

  其中,ϵ表示自己设置的迭代步长,可用一维线性搜索动态确定。x表示自变量。

  严格意义上,梯度下降法并不决定函数f(x)下降方向,因为它仅仅是一个余向量而非向量,只能通过最终标量的正负而非实际的向量指引函数下降方向。梯度下降法的复杂度是Ο(n),其中n为待解决问题的大小,比如矩阵E的行数。实际过程中,常常使用一维线性搜索方法来寻找合适的步长。

  牛顿法是二阶优化方法,即会将目标函数展开至泰勒二阶项然后进行优化求解。与梯度法相比,它们利用到了目标函数的二阶导数。形象地讲,如用牛顿法求解自变量为标量的函数时,用二次曲线来拟合最优化点时的函数曲线。

  由于牛顿法下降速度很快。实际中往往加上一个步长因子γϵ(0,1),来控制收敛的速度:

  牛顿法是二阶收敛的,收敛速度很快。在实际应用中,向量x往往非常大(每个视图中图像处理后特征点数量可能达到万个以上),海森矩阵H将非常大,求海塞矩阵的逆的运算消耗将非常大,对于牛顿法来说,计算复杂度是O(n3)。此外,由于海塞矩阵不一定可逆。其三,对于大多数一阶优化方法,可以采用诸如图形处理器(Graphics Processing Unit)并行的方式来加速,但对于海塞矩阵求逆来说这显然无法实现。因此实际中往往出现一阶方法比二阶方法更快收敛。

  所谓拟牛顿法,就是用其他式子来模拟替代海塞矩阵。假如牛顿法中的海塞矩阵不是正定(positive definitive)的,无法求解;此外,海森矩阵H往往非常大,求海塞矩阵的逆的运算消耗也很大(对于牛顿法来说,计算复杂度是O(n3)),因此,引入用拟牛顿法来用正定矩阵代替海塞矩阵和海塞矩阵的逆。常用的拟牛顿法有高斯牛顿法(Gauss-Newton Method)。

  如果对于一个近线性的优化问题,则上式第二项更趋近于0,因此舍弃第二项,上式为:

  应当特别指出,上式成立的条件是。在结构与运动过程中,由于一般认为到场景位置点的距离比较远的,因此短暂的移动过程中,可以认为从摄像机到场景位置点的距离是近似不变的。在距离不变,也就是一个维度固定的前提下,投影函数π是线性的。因此该近似符合应用场景,是很好的近似。

  另外一种思路是将牛顿法和梯度法融合在一起。数学上是阻尼最小二乘法的思路,即近似只有在区间内才可靠。对于

  此处μ是信赖区间半径,D为对∆进行转换的矩阵(在Levenberg的方法中,他将D设置为单位矩阵)。

  这种方法时保证改进后的海塞矩阵可逆且正定。从效果上,是用λ在牛顿法与梯度法之间做出权衡。当λ很小时,上式几乎等同与牛顿法式子,当λ很大时,上式等同于梯度下降法的式子。

  后来,Levenberg(1944)对此方法进行了改进。他将H替换成高斯牛顿法中的拟合矩阵:

  但容易出现的问题是,当 很小的时候,λI可能很大。这样会极大地偏向梯度法,降低收敛速度。因此为了提高收敛速度,Marquardt 提出了一种新的自适应方法:它的迭代式子中:

  即ρ=实际下降/近似下降。当ρ太大,则减少近似范围(增大λ),当p太大,则增加近似范围(减少λ)。

  d)若ρ0.75(经验值),则μ=2μ(经验值,实际可视作变化迭代步长);

  e)如果ρ大于某阈值,则该次近似是可行的,回到b)继续迭代;否则算法已经收敛,迭代结束。

  光束平差法需要比较好的初始值才能比较快地收敛,所以光束平差法一般作为重建流水线的最后一个步骤,在此之前,需要使用多视图几何中传统的八点法,五点法等传统多视图几何算法先算出R,T等信息。

  引入步长控制,既可以是避免收敛时步长太大而在最优点附近震荡,也可以加快收敛速度。加入迭代步长的原因,是因为牛顿法中下降方向可能和真实下降方向不一致*。*比如可能会出现几个最优点相邻比较近的情况,那么优化过程将在几个谷底之间跳来跳去迟迟不收敛。为了避免这种情况,增加收敛速率,加入一个迭代步长γ,来使迭代朝着真实下降方向走。如果在鞍点,在沿着海塞矩阵为负的方向迭代。实际应用中,可以采用每一次迭代后,再对γ进行一维搜索的方法来寻找合适步长。也可以采用L-M的方法,通过改变信任区间的方式,来进行步长控制。

  工程上常用的是g2o和ceres-solver。此上列表来源不可考,如有侵权请联系我以删除。

  光束平差法代价函数代价函数求解-Levenberg_Marquardt方法代码实现流程图光束平差法采用光束平差法对射影空间下的多个相机运动矩阵及非编码元三维结构进行优化。光束平差法一般在各种重建算法的...博文来自:把习惯当成一种生活

  上一篇我们讲了线性的超定方程的解法,这节我们就接着讲讲slam里非线性方程的优化方法。一、BA光束平差法偷个图:首先到底啥是BA呢?在slam前端中,我们通过匹配特征点、对极约束、三角化就可以恢复出相...博文来自:potxxx的博客

  Bundleadjustment有很多书将其翻译成是捆绑调整,其实不然,其就是摄影测量中的光束法平差,即是整体求解相机的位姿和加密点坐标。但是由于计算机视觉中是物方坐标系到图像的像素坐标系,而摄影测量...博文来自:大橙子的博客

  一、光束平差法定义光束平差法是结合三维模型点和视觉参数(相机参数,位置,畸变)做为一个整体进行一起评估的一个提高精度的方法。(这篇论文主要是讲到如何利用光束平差法提高重建精度,他给的定义也是说到bun...博文来自:的博客

  本文主要根据Ceres官方教程翻译的来。开发Ceres库的一个重要出发点就是计算光束法平差BundleAdjustment,简称BA。关于光束法平差的原理可以参考这篇博客《BundleAdjustme...博文来自:小政哥的私房博客

  Bundleadjustment-光束法平差介绍本文主要从摄影测量的角度来介绍光束法平差:目录Bundleadjustment-光束法平差介绍目录关键词解析空中三角测量Markdown及扩展表格定义列...博文来自:oqqXiMu12345的博客

  去年7月初开始和某银行保险项目的合作,到我明天下项目,都9个月了。其中,经历了2个项目,其中一个项目由于客户那边的人力资源缺乏问题仅仅维持了3个月;另一个呢,则从开始到现在都6个月了,预计今年6月上线...博文来自:小荷才露尖尖角

  使用BA优化的方法:先用PNP之类的求出RT的初始值——3D2DRT代入g2o——得出优化的RT...博文来自:weixin_42082454的博客

  802.11n最主要的添加了BlockAck这个技术,但是在实际应用中对于BA还是知之甚少,转贴一个讲述BA基本原理的文章,但是我通过wireshark进行抓报并没有在BAR(BlockAckRequ...博文来自:Saimon的博客

  BA(BusinessSystemAnalyst)是一种介于客户和IT团队之间的角色,BA在IT项目中负责发掘、分析、传达和确认客户需求。BA需要了解有关业务上的各种问题并发现新的机会,搭建业务和IT...博文来自:NBfang的博客

  人们总习惯于想象“了解自己的工作”,所以,当BA接到一个新的项目,BA总是很快进入角色开始工作。这样看起来很合理,但让人吃惊的是,客户经常会失望,BA被责备,或者项目失败了,因为“BA”从开始就不清楚...博文来自:kofkyo的专栏

  光束平差法:BundleAdjustment引入BundleAdjustment(BA)的翻译可以看出其利用的一组数据(“光束”)来进行最小化误差(“平差”),其本质就是一种优化算法。在SFM中,我们...博文来自:吕爽

  首先引述来自维基百科的定义:假设我们有一个3D空间中的点,他被位于不同位置的多个摄像机看到,那么所谓的光束法平差(BundleAdjustment),就是能够从这些多视角信息中提取出3D点的坐标以及各...博文来自:开源节流

  定义给出从不同视角拍摄的,描述同一个场景的一系列图片,bundleadjustment可以根据所有点在图像中的投影作为标准,同时提炼出描述场景结构的3D点坐标、相对运动参数和相机的光学参数。[mutl...博文来自:何必浓墨重彩

  本人最近接触了SBA,由于没有人指导,只能在网上搜索资料来进行学习,理解地并不是很深入。但考虑到有很多初学者和我一样,会遇到很多问题,故想整理一下,一算是对自己这些天学习的回顾,二算是给接下来学习的人...博文来自:oliongs的博客

  感觉这个链接讲的比较好理解,看slam的书完全一脸懵。...博文来自:weixin_40710375的博客

  来源wikipedia: 光束平差法的最终目的归结为:减少观测图像的点和参考图像(预测图像)的点之间位置投影...博文来自:8rfuz的博客

  一、针孔成像模型涉及到的坐标系由于相机的参数总数相对于某种光学模型而言的,这里用到的比较广泛的光学模型就是小孔成像的模型,下面针对小孔成像的光学模型涉及到的坐标系一一介绍。1、世界坐标系世界坐标系即为...博文来自:lhanchao的博客

  BA本质是把PnP问题当成李代数上的非线性最小二乘问题。线性问题的方式:先求相机位姿,再求空间点位置问题:给定nnn个三维空间点PPP和投影ppp,希望计算相机的位姿RR\mathbf{R}和t⃗&a...博文来自:摸着石头撑船

  敏捷开发模式下需求分析岗BA传统的瀑布开发模式下需求分析岗是必不可少的。那么敏捷项目没有需求分析吗?在很多人的印象中,敏捷软件开发是种类似黑客行为的过程,是程序员最爱的勾当。不写文档,不作需求分析,没...博文来自:BA的专栏

  从业务分析师的职责角度,提出了作者对业务分析师的基本理解。博文来自:BA_RockyLee的专栏

  PnP(Perspective-n-Point)是求解3D到2D点对运动的方法。PnP可以再很少的匹配点中获得较好的运动估计,是最重要的一种姿态估计方法。PnP问题有多种解法,通用的算法有P3P、EP...博文来自:的博客

  光束法平差(BundleAdjustment)光束法平差作为三维重建流水线步骤的最后一步,为了让重建过程中的点的配对更加准确,即同样位置的点在不同的二维图像中对应的点更加准确。理想情况下,我们希望一个...博文来自:wsxzhbzl的博客

  研究svo代码时发现其在优化相机位姿时,在对重投影误差的累加时使用了Tukeysbiweight核函数,现将维基百科的相关解释复制如下,有空再来总结。RedescendingM-estimatorR...博文来自:weixin_42005205的博客

  首先引述来自维基百科的定义:假设我们有一个3D空间中的点,他被位于不同位置的多个摄像机看到,那么所谓的光束法平差(BundleAdjustment),就是能够从这些多视角信息中提取出3D点的坐标以及各...博文来自:XiaoZhuang

  原文链接:“为什么BA和PM的薪水要比程序员要高?”———————————————————正文开始————————————————————一个简单的回答应该是——“因为在我们的社会里,我们总是会认为薪...博文来自:什么时候才能成为大N

  光束法平差程序,是摄影测量中重要内容。通过空中三角测量解算外方位元素和加密点坐标。本实验的数据只做了外方位元素的解算

  光束平差法由Bundle Adjustment翻译得来,有两层意思: 对场景中任意三维点P,由从每个视图所对应的的摄像机的光心发射出来并经过图像中P对应的像素后的光线,都将交于P这一点,对于所有三维点

  本算法根据近景摄影测量中的直接线性变换(DLT算法)写成,内含有两个版本的数据以供试验,注释清晰,运行正常。

  以下为我学习深蓝学院的一门课程《基于图像的三维建模》的个人学习笔记,主要学习了最速下降法、牛顿法、Levenberg-Marquartdt方法的原理:...博文来自:3D视觉工坊

  单应性矩阵由配对的内点计算出来 u,v是原始图片左边,对应得到变换后的图片坐标x,y,其中变换矩阵可以拆成4部分,表示线性变换,比如scaling,shearing和ratotion。用于平移,产生透...博文来自:dellme99的专栏

  该系统主要用于对静态物体的高精度三维坐标测量,测量时只需要手持相机距离被测物体一定距离从多个位置和角度拍摄一定数量的数字像片,然后由计算机软件自动处理(标志点图像中心自动定位、自动匹配、自动拼接和...博文来自:clipp_Huang的博客

  jquery/js实现一个网页同时调用多个倒计时(最新的)nn最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦!nnnn//jsn...博文来自:Websites

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗!nnDocker的三大核心概念:镜像、容器、仓库n镜像:类似虚拟机的镜像、用俗话说就是安装文件。n容器:类似一个轻量...博文来自:我走小路的博客

  本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...博文来自:Lynn_Blog

  :[reply]Darlingqiang[/reply] 博主,没看见你的邮箱啊!博主试过将txt词典换成bin词典嘛。我的手机上txt词典加载需要1分钟,bin词典加载5s之内既可以完成。但是bin词典在运行时却比txt词典测试时更加的卡顿,基本不能使用。。。

本文链接:http://asaaancr.com/guangxianfa/177.html