图像曲线拟合的多项式最小二乘法
Polynomial Least Squares for Image Curve Fitting
我正在尝试将曲线拟合到图像中的多个像素,以便对其形状进行进一步处理。有人知道如何在C++中实现最小二乘法吗?最好使用以下参数:x数组、y数组和答案数组(答案数组的长度应该说明需要计算多少系数)?
如果这不是您自己实现的练习,我建议您使用像GNU gsl这样的现成库。请查看名称以gsl_multifit_
开头的函数,例如,请参见此处的第二个示例。
如果你试图像在图中那样拟合有序点(x,y),你可以使用线性最小二乘法,但在这种方法中,你需要指定用来近似的多项式的阶数(大概是答案数组的长度)。如果你的点是平面中能够形成闭环或结构轮廓的一般有序点(例如,试图拟合描述椭圆、圆或其他闭合或更复杂几何体的点),那么你需要更复杂的东西。您仍然可以使用最小二乘法,但需要使用参数化类型的曲线,如样条曲线。看看这个链接上的pdf,它可能会提供你需要的东西(或者至少说明我在说什么):http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CE0QFjAA&url=http%3A%2F%2Folk.uio.no%2Fs39%2Fnchap6.pdf&ei=Yp8CUNvHC8Kg0QX6r_mEBw&usg=AFQjCNHBUZ5t2Y7C8eONYSosRydLs4Zu4A
如果看不到你试图拟合的图像,很难说-你的数据很可能以非参数的方式与线性最小二乘多项式拟合-如果是这样,你只需要一个线性代数库,你可以自己这样编码近似值:http://en.wikipedia.org/wiki/Ordinary_leastrongquares
即便如此,所有形式的近似都需要你在拟合之前决定你的形式(函数基和次数等)。例如,如果你想决定是否需要4次、5次、6次或7次多项式来拟合你的数据,你需要拟合每一个,并评估其是否适合自己。没有通用的方法(至少我不知道)可以告诉你你需要适应数据的近似程度。
- 在二维数组中查找最小值和最大值?
- 运行无限循环的最小二叉树问题
- 最小二乘多项式拟合仅适用于偶数个坐标
- 犰狳函数的不同最小二乘误差
- 谷神星求解器:对非线性最小二乘法使用平滑近似
- 从二维数组中查找最小值和最大值
- 在二叉树中返回最大值和最小值
- 二阶多项式计算器的输出不一致
- 在二叉搜索树中查找最小和的算法改进
- 无法使用 glm::vec2 作为矩阵的标量类型并使用线性最小二乘法求解
- 线性代数方程 Ax 的最小二乘解 = 由 在本征C++中
- 以线性最小二乘方式求解系统 Ax=b,具有复元素和下三角形平方 A 矩阵
- 线性方程组,带约束的最小二乘法
- 用最小二乘法拟合圆
- 图像曲线拟合的多项式最小二乘法
- 偏最小二乘库
- GSL 非线性最小二乘拟合不会收敛
- 卡尔曼,最小二乘法,或
- 迭代非线性最小二乘优化3d到2d投影
- 用c++特征库求解线性最小二乘方程(动态分配)