该代码源于《视觉SLAM十四讲》 ceres_curve_fitting/main.cpp
Ceres库用于通用的最小二乘问题求解;我们需要做的就是定义优化问题,设置选项,输入近Ceres求解即可。
该页代码用于日后查找方便 (添加了部分笔记)、
问题描述
该代码主要是求解曲线 y= exp(a*x*x + b*x +c) + w;(w是噪声) 假设有N个x和y的观测数据点,用来求解曲线的参数。则待估计变量实际上是a,b,c
解决思路
先用CV随机数产生器生成N个数据(包括噪声) 构造最小二乘问题 ; 配置求解器(配置项比较多), 对问题进行优化。
代码部分
#include <iostream>
#include <opencv2/core/core.hpp>
#include <ceres/ceres.h>
#include <chrono>
using namespace std;
// 代价函数的计算模型(不是很熟悉这种模型定义)
struct CURVE_FITTING_COST
{
CURVE_FITTING_COST ( double x, double y ) : _x ( x ), _y ( y ) {}
// 残差的计算
template <