2011-07-31 59 views
4

我有一組點(形式爲x1,y1,z1 ... xn,yn,zn)從表面網格獲得。我想通過最小化正交距離來找到最適合這些點的3D平面。 x,y,z座標是獨立的,也就是我想獲得平面方程Ax + By + Cz + D = 0的係數A,B,C,D。通過最小化正交距離最合適的平面

什麼是算法獲得A,B,C,D?

注:在一個previous post它討論了最佳擬合平面在最小二乘意義上,通過考慮Ž座標的的x,y的線性函數。然而,這不是我的情況。

+0

你是什麼意思「最小化正交距離」?您只能優化**一個**數量,如正交距離的平方和。 –

回答

5

從內存中,這變成了一個特徵向量問題。從一個點到你的平面的距離與Ax + By + Cz + D成正比 - 看到這個的一種方法是注意平面的法線是(A,B,C)。常數D是脖子上的疼痛,但我認爲你可以通過重新定義變量來將它變爲常數,這樣一切就意味着0,擺脫它。在這種情況下,我認爲最合適的平面將通過原點。

然後,您會發現要最小化SUM_i(X_i。A)^ 2,其中A是3-矢量。當然,你可以通過將A的所有成分乘以一些小標量來使得這個任意小,所以你想要將這個主題最小化爲約束條件,例如, || A ||^2 = 1,通過將A作爲一個單位向量來理解比例性。所以你想最小化 A'(SUM_i(X_i'X_i))A所以我認爲你想SUM_i的最小特徵向量X_i'X_i

(X_i.A)^ 2 = A'(X_i'X)

在統計學中不常用的原因之一是,如果您縮放任何座標向量的單位,而沒有在其他方向上縮放相同數量的單位,則得到的答案將會改變。

試想想它,你可以看到這一切工作正常進行的http://en.wikipedia.org/wiki/Total_least_squares

+0

完美!這正是我正在尋找的。 – CodificandoBits

+0

你能解釋一下(X_i。A)^ 2 = A'(X_i'X)A的意思嗎? – Nick

+0

看看維基百科的參考資料,但在這裏「。」在X_i.A中是點積(也稱爲標量積),「'」是矩陣轉置。所以我說的是,兩個向量的點積的平方與通過將一個向量轉到另一個向量並與另一個向量相乘產生一個n×n矩陣(X_i'X)相同,然後通過將它乘以一個標量另一個矢量由它在一邊形成一個矢量,然後在該結果和另一個矢量之間取得點積。在中心有一個矩陣將其轉化爲一個特徵值問題。 – mcdowella

2

Least Squares Fitting of Data,第2節:「使用正交回歸ND點的線性擬合」。

正如mcdowella提到的那樣,您需要解決一個3x3特徵系統。

+0

太棒了!感謝您的鏈接 – CodificandoBits

+0

這是第4節,而不是2.但很好的參考。 –