关闭

使用G2O拟合曲线

标签: 优化
247人阅读 评论(0) 收藏 举报
分类:

这是参考自清华大学的高翔所著的《视觉SLAM十四讲》读后感,笔记和摘要。

使用G2O拟合曲线

首先,将曲线拟合问题抽象成图优化。在该问题中,只要记住节点为优化变量,边为误差项即可。


  • 在曲线拟合问题中,整个问题只有一个定点:曲线模型的参数a,b,c;而各个噪声的数据点,构成了一个个误差项,也就是图优化的边。我们把边称为Hyper Edge,整个图叫做Hyper Graph 。

优化步骤


弄清楚这个模型后,接下来就是在G2O中建立该模型,进行优化了


  • 定义顶点和边的类型
  • 构建图
  • 选择优化算法
  • 调用g2o进行优化,返回结果

下面演示一下程序
std::cout<<"Hello World"<<std::endl;


在这个程序中,从g2o派生出了用于曲线拟合的图优化顶点和边:CurveFittingVertex和CurveFittingEdge,这实质上扩展了g2o的使用方式。在这两个派生类中,重写了重要的虚函数:


  • 顶点的更新函数:oplusImpl。我们知道优化过程中最重要的是增量Δx的计算,而该函数处理的是xk+1=xk+Δx的过程。在曲线拟合的过程中,由于优化变量本身位于向量空间中,这个更新计算确实就是简单的加法。但是,当优化变量不在向量空间中,比如说x是相机位姿,它本身不一定有加法运算。这时,就需要重新定义增量如何加到现有的估计上的行为。
  • 顶点的重置函数:setToOriginImpl。这是平凡的,把估计值置0.
  • 边的误差函数计算:computerError。该函数需要去除边所连接的顶点的当前估计置,根据曲线模型,与它的观测值比较。这和最小二乘问题中的误差模型是一致的。
  • 存盘和读数函数:read和write。由于并不像进行读/写操作,所以留空。

在定义了顶点和边之后,在main函数里声明了一个图模型,然后按照生成的噪声数据,往图模型中添加顶点和边,最后调用优化函数进行优化。g2o会给出优化的结果。

Code:



- Red
+ Green
* Blue

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

g2o:一种图优化的C++框架

声明:转载自 Taylor Guo ,仅供个人学习 g2o: A general framework for graph optimization 原文发表于IEEE InternationalCo...
  • u012700322
  • u012700322
  • 2016-10-19 10:41
  • 1381

基于最小二乘法的曲线拟合的C++代码的实现

简单思路如下: 1,采用目标函数对多项式系数求偏导,得到最优值条件,组成一个方程组; 2,方程组的解法采用行列式变换(两次变换:普通行列式——三角行列式——对角行列式——求解),行列式的求解算法上优化...
  • maweifei
  • maweifei
  • 2016-07-24 17:28
  • 2885

用numpy进行曲线拟合~

# -*- coding: cp936 -*- import numpy import pylab def plot_polynomail_fit(matrix,col,*deg):# '...
  • vola9527
  • vola9527
  • 2014-12-09 11:34
  • 2342

openCV编程总结(2)-车道线检测之Bezier曲线3次拟合

最近做车道线检测,要检测弯道的曲线,于是采用Bezier3次曲线拟合的方式去拟合弯道曲线。 首先,要知道什么Bezier 3次曲线:对于二次抛物线,使用3个点就可以确定这条抛物线,而且抛物线的参数方...
  • CV_YOU
  • CV_YOU
  • 2017-04-23 11:39
  • 700

《Practical WPF Charts and Graphics 》翻译——之11章 曲线拟合(2)

线性回归 让我们首先考虑最小二乘拟合的线性形式 其中fi(x)是已经定义过的x的函数,叫做基本函数。这种情况下,残差和就是 相应的梯度方程从简化到 先前的方程能写成矩阵形式 ...
  • xiangshimoni
  • xiangshimoni
  • 2012-12-11 17:48
  • 1652

三阶贝塞尔曲线拟合1/2正弦

三阶贝塞尔曲线拟合1/2正弦 根据贝塞尔曲线的知识,我们知道三阶贝塞尔曲线的参数方程如下,其中A、B、C、D为四个控制点坐标,P(t)表示曲线上的每一点。 因为要模拟1/2正弦,所以通过P...
  • nibiewuxuanze
  • nibiewuxuanze
  • 2015-08-31 22:54
  • 3298

自动曲线拟合与估计TableCurve2D v5中文汉化

  • 2017-01-31 10:01
  • 69B
  • 下载

Apache Commons Math3学习笔记(2) - 多项式曲线拟合

多项式曲线拟合:org.apache.commons.math3.fitting.PolynomialCurveFitter类。 用法示例代码: // ... 创建并初始化输入数据: double[...
  • kingfox
  • kingfox
  • 2015-03-07 18:59
  • 4787

Matlab的曲线拟合工具箱CFtool的使用

今天帮同学做了一个非线性函数的曲线拟合,以前没做过,所以是摸着石头过河。费了一下午时间,终于把曲线拟合出来了,顺道也学习了使用Matlab进行曲线拟合的方法,把学习所得记录下来,和大家共享。 一、...
  • fobdddf
  • fobdddf
  • 2013-08-08 13:25
  • 5730

Matlab的曲线拟合工具箱CFtool使用

注:文章参考了http://hi.baidu.com/snowlxm/blog/item/15a714b122ae95500823025f.html的内容,在原文基础上做了一些增添。     一...
  • u011202336
  • u011202336
  • 2013-06-25 17:28
  • 443
    个人资料
    • 访问:1034次
    • 积分:58
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档