2015-10-13 40 views
0

我想從3D點列表中找到最合適的平面。這意味着飛機與所有點的距離最小。讀了這篇文章從3D座標列表中找到最合適的平面

Best fit plane by minimizing orthogonal distances
3D Least Squares Plane

我完全理解搜索解決方案,但它原來對方是我的情況是不切實際的。我需要閱讀一個非常大的3d點列表,直接阻礙會導致病態問題。即使我用它們的平均值來減去數據,(參考文獻 - > part3:http://www.geometrictools.com/Documentation/LeastSquaresFitting.pdf)這個數字還是非常大的。那麼我能做什麼?

有沒有一種迭代的方式來實現它?


我改變了提問的方式,希望可能有人能給我更多的建議嗎?

鑑於3D的列表點
{(X 0 ,Y ,Z ),
(X ,Y ,Z ).. 。
(X n-1個,Y n-1個,Z n-1個)}

我想通過擬合所有的3D點來構建一個平面。在這個意義上,我的意思是找到具有格式(Ax + By + Cy + D = 0)的平面,因此它使用四個參數(A,B,C,D)來表徵一個平面。每個點與飛機之間的距離總和應該是最小的。

我嘗試在以下鏈接
http://www.geometrictools.com/Documentation/LeastSquaresFitting.pdf

提供的menthod但有兩個問題:
-During計算,上述算法需要做的所有的點值,從而導致溢出問題的總和如果我的點數增加

-given新添加的點,它必須重新做所有的計算,有沒有辦法使用之前計算的平面參數和新給定的點以某種方式微調平面參數? PS:我有點貪婪,如果我們需要涉及所有的點,最終獲得的飛機可能是不夠好的。我想使用隨機樣本一致性(RANSAC),是不是正確的方向?

+2

請更具體地說明爲什麼您提供的鏈接上的解決方案不起作用。第二個鏈接明確提供了一個非常好的方法。 – Petr

+0

我讀的大多數算法都需要計算所有x座標或y座標的總和,但是因爲我的點數很多。結果值總是會導致溢出。這就是問題所在。 – Carl

+0

爲什麼你不使用浮點類型?無論如何,你的答案將是浮點... – Petr

回答

1

如果你正在等飛機,那麼大多數點並不是那麼有用,因爲即使少數人也應該給你最終解決方案的一個很好的近似(模塊多一點噪音)。

所以這裏的解決方案。通過擬合算法對數據集進行採樣,使其運行並運行較小的集合。

如果您不希望點在飛機上,那麼子採樣應該仍然有效,但您必須考慮任何解決方案的誤差範圍(因爲它們可能相當大)。

相關問題