推广 热搜: 百度  搜索引擎  企业  可以  使用  选择  上海  技术  货运  未来 

Ceres Solver 具体案例分析

   日期:2024-12-26     作者:4en1l    caijiyuan  
核心提示:https://blog.csdn.net/weixin_43991178/article/details/100532618 https://blog.csdn.net/Night___Raid/article/details/10540

https://blog.csdn.net/weixin_43991178/article/details/100532618

https://blog.csdn.net/Night___Raid/article/details/105400547?utm_medium=distribute.pc_relevant.none-task-blog-title-7&spm=1001.2101.3001.4242

本篇博客结合例子 详细 介绍一下 Ceres库 的基本使用方法

Ceres 可以解决边界约束鲁棒 非线性最小二乘法优化问题,其概念可表达如下

其在工程和科学领域有非常广泛的应用,比如统计学中的曲线拟合,或者在计算机视觉中依据图像进行三维模型的构建等

 

使用Ceres求解非线性优化问题,可以分为三个步骤

1. 构建代价函数(cost function
代价函数,也就是寻优的目标式。这个部分需要使用仿函数(functor)这一技巧来实现,做法是定义一个cost function的结构体,在结构体内重载)运算符。关于仿函数的内容可以参考这篇博客:c++仿函数 functor

2.通过代价函数构建待求解的优化问题

3.配置求解器参数并求解问题
这个步骤就是设置方程怎么求解、求解过程是否输出等

先看源码

 

本部分的官方参照代码在examples/helloworld.cc
笔者在ubuntumate 18.04下进行验证,结果为

 

 

接下来介绍一个较为复杂的问题鲍威尔优化算法。有兴趣的可以查询其算法细节,本文主要是针对ceres的使用。
参数为 x = [x1, x2, x3, x4], 具体的函数为

1. 构建代价函数(cost function

 

2.通过代价函数构建待求解的优化问题

 

3.配置求解器参数并求解问题

 

运行结果为

 

 

本部分为本笔记的重点,是我们第一次真正意义上的使用ceres解决非线性最小二乘问题,当然,结构是还是一致的,只需要稍加改动就可以实现。
数据来源

1. 构建代价函数(cost function

和前文一致,先建立损失函数,此处和前面不同的是第一次引入了数据,所以residual和前面有所区别,但这个位真正的非线性最小二乘的结构。​​

 

Ceres Solver  具体案例分析

2.通过代价函数构建待求解的优化问题

 

3.配置求解器参数并求解问题

 

4、结果及分析

完整代码为

 

输出结果为

 

可以看出,结果与真实的曲线m = 0.3 m=0.3m=0.3 c = 0.1 c= 0.1c=0.1有一定的差别,这正好说明了拟合的正确性,因为我们添加了高斯噪音。
可视化的结果为

2.4、ceres在 BA 的实现

本文地址:http://ww.kub2b.com/tnews/1893.html     企库往 http://ww.kub2b.com/ ,  查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类生活信息

文章列表
相关文章
最新动态
推荐图文
生活信息
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号