Robust Curve Fitting

现在,假设我们得到的数据中有一些异常值,即有一些点不符合噪声模型。如果用上一小节的代码来拟合这些数据,我们会得到如下拟合结果。请注意拟合曲线与真实曲线的偏差。

处理离群值的方法是使用损失函数(LossFunction)。损失函数可以减少残差较高的残差块的影响,这些残差块通常与异常值相对应。要将损失函数与残差块关联起来,我们需要改变

problem.AddResidualBlock(cost_function, nullptr , &m, &c);

改为

problem.AddResidualBlock(cost_function, new CauchyLoss(0.5) , &m, &c);

CauchyLoss 是 Ceres Solver 附带的损失函数之一。参数 0.5 指定损失函数的比例。加入损失函数后,我们得到了下面的拟合结果。请注意拟合曲线是如何向真实曲线靠拢的。

Footnotes

Last updated