【问题标题】:Polynomial Least Squares for Image Curve Fitting图像曲线拟合的多项式最小二乘
【发布时间】:2012-07-14 12:14:19
【问题描述】:

我正在尝试将曲线拟合到图像中的多个像素,以便可以对其形状进行进一步处理。有谁知道如何在 C/++ 中实现最小二乘法,最好使用以下参数:x 数组、y 数组和答案数组(答案数组的长度应该说明需要计算多少个系数)?

【问题讨论】:

标签: c++ c image-processing curve-fitting least-squares


【解决方案1】:

如果这不是你自己实现的一些练习,我建议你使用像GNU gsl 这样的现成库。查看名称以gsl_multifit_ 开头的函数,请参见例如第二个例子here。

【讨论】:

  • 谢谢你,但我不确定如何使用 gsl_multifit_,这些示例似乎是针对 3 维数据的,我不确定协方差矩阵是如何工作的。
  • 您有无需提供源代码即可用于商业软件的解决方案吗?
【解决方案2】:

如果您尝试像在图形中那样拟合有序点 (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%2Ffolk.uio.no%2Fin329%2Fnchap6.pdf&ei=Yp8CUNvHC8Kg0QX6r_mEBw&usg=AFQjCNHBUZ5t2Y7C8eONYSosRydLs4Zu4A

如果没有看到您想要拟合的确切图像,很难说 - 您的数据很可能可以使用线性最小二乘多项式以非参数方式拟合 - 如果是这样,您只需要一个线性代数库,您可以像这样自己编写近似值:http://en.wikipedia.org/wiki/Ordinary_least_squares

即便如此,所有形式的近似都要求您在拟合之前确定您的形式(功能基础和度数等)。例如,如果您想决定是否需要 4 次、5 次、6 次或 7 次多项式拟合您的数据,您需要拟合每个数据并评估是否适合您自己。没有通用的方法(至少我所知道的没有)可以告诉您需要适应数据的近似程度。

【讨论】:

  • 不幸的是,我需要最小二乘中的多项式,而且我刚刚意识到可能数据实际上可能是 3 维的,因为我需要为最小二乘算法提供数据的顺序虽然数学 PDF 很有帮助,但我不太擅长数学和 C 代码之间的转换。
  • 在 3D 中拟合曲线是一项艰巨的任务。您可能需要使用正交距离回归和参数曲线,如果您从头开始编码,这绝非易事。你能提供一张你所拥有的数据的图片吗?
  • 嗯,我正在尝试创建一个通用的形状描述(稍后用于形状识别),示例图像可能是这样的字母:tinypic.com/r/bcv45/6
  • @user293895 是的,恐怕您无法使用多项式来拟合它。您需要为此目的的样条线或 NURBS。您只是无法对需要参数曲线的那种类型的数据进行 x-y 回归。
猜你喜欢
  • 1970-01-01
  • 2014-03-05
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
相关资源
最近更新 更多