图像曲线拟合的多项式最小二乘法

时间:2012-07-15 09:40:20

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

如果您尝试拟合有序点(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度多项式,您需要适合每个数据并评估自己的适用性。没有通用的方法(至少我不知道)会告诉您需要适合数据的近似程度。