最小二乘法擬合平面

2021-10-09 02:50:52 字數 1101 閱讀 7166

最小二乘法通過最小化誤差的平方和,使擬合物件越來越接近最終物件。

擬合直線就是找到一條直線使所有資料點到擬合直線的歐式距離之和最小。

擬合平面就是找到乙個平面使得所有資料點到擬合平面的歐式距離最小

設擬合平面方程為ax+by+cz+d=0,則約束條件為a平方+b平方+c平方=1

構建方程ax』+by』+cz』+d=0,則可以得到如下方程:

a(x-x』)+b(y-y』)+c(z-z』)=0

主要是將方程組變為齊次方程組,用於奇異值分解。

接下來將方程轉為矩陣形式,使得min||wx||,約束條件||x||=1,運用svd分解求出使||wx||最小且||x||=1的x值。

svd後得到v的最後一列就是a,b,c,d的值,最小特徵值對應的特徵向量。

具體**如下:

void

fitplane

(cv::mat &points,cv::mat &plane)

centor.at<

float

>

(0.i)

= centor.at<

float

>(0

,i)/ rows;

}cv::mat pointc = cv::mat::

ones

(points.rows,points.cols,cv_32fc1)

;for

(int i =

0;i < points.cols;

++i)

}//svd分解

cv::mat a,w,u,v;

//構建奇異值矩陣(gemm矩陣相乘)

cv::

gemm

(pointc,points,1,

null,0

,a,cv_gemm_a_t)

;svd::

compute

(a,w,u,v)

;plane = cv::mat::

zeros(4

,1,cv_32fc1)

;for

(int i =

0;i < points.cols;

++i)

}

python最小二乘法擬合圓 最小二乘法擬合圓

有一系列的資料點 我們知道這些資料點近似的落在乙個圓上。依據這些資料預計這個圓的引數就是乙個非常有意義的問題。今天就來講講怎樣來做圓的擬合。圓擬合的方法有非常多種,最小二乘法屬於比較簡單的一種。今天就先將這樣的。我們知道圓方程能夠寫為 x?xc 2 y?yc 2 r2 通常的最小二乘擬合要求距離的平...

python最小二乘法擬合圓 最小二乘法擬合圓

有一系列的資料點 我們知道這些資料點近似的落在乙個圓上。依據這些資料預計這個圓的引數就是乙個非常有意義的問題。今天就來講講怎樣來做圓的擬合。圓擬合的方法有非常多種,最小二乘法屬於比較簡單的一種。今天就先將這樣的。我們知道圓方程能夠寫為 x?xc 2 y?yc 2 r2 通常的最小二乘擬合要求距離的平...

最小二乘法 直線擬合

功能描述 利用最小二乘法求斜率 xytopx 截距 方法1 xytopy 斜率 ncount 點數 void min2method double xytopy,double xytopx,int x,int y,int ncount graphics.drawline pen,point x i y...