我有一組3D點。2D平面擬合,ransac,matlab,鏈接
Points_[x,y,z]% n*3 where n is number of points
我想適合飛機(它是地板)並檢查飛機的高度。我認爲這是2D問題。
z=bo+b1x+b2y;
我無法找到一個鏈接,2D RANSAC平面擬合。有人可以給這個鏈接或文件。其次,有些軟件(商業版)給出了飛機的高度值。這意味着一些複雜的價值。
問候,
我有一組3D點。2D平面擬合,ransac,matlab,鏈接
Points_[x,y,z]% n*3 where n is number of points
我想適合飛機(它是地板)並檢查飛機的高度。我認爲這是2D問題。
z=bo+b1x+b2y;
我無法找到一個鏈接,2D RANSAC平面擬合。有人可以給這個鏈接或文件。其次,有些軟件(商業版)給出了飛機的高度值。這意味着一些複雜的價值。
問候,
如果形成下面「A」矩陣
A = [ones(numel(Points_X),1), Points_X(:), Points_Y(:)];
其中(:)
是給你列向量(如果它們沒有以開始)
然後你可以寫出你的方程作爲經典的線性方程組:
A*b = Points_Z(:);
其中b = [b0; B1; b2] - 您嘗試確定的參數的列向量。 這具有典型的解決方案
b=A\Points_Z(:)
或b=pinv(A)*Points_Z(:)
查看mldivide和PINV幫助。
你必須有3個或更多的點並不都在一條線上。對於這樣的超定系統,pinv和\基本上會產生相同的結果。如果它們幾乎共線,則可能有一些優勢。
b中的3個參數基本上是平面上的平面的高度,x斜率和y平面的斜率。如果你仔細想想,一架飛機的「高度」就是你的z字。你可以談論某個點以上的高度(如原點)。現在,如果你想在高採樣點的質心,你會然後做
z_mean = [1 mean(Points_X(:)) mean(Points_Y(:))] * b
這可能只是相當於mean(Points_Z(:))
。爲了使這個定義有意義,你必須確保你在感興趣的區域上有一個均勻間隔的網格。
可能存在其他定義,例如,如果您試圖找到房間中心的高度,並沿着牆壁和內部採樣點,則用平均值替換平均值可能更合適。
我不清楚你在問什麼。一架飛機有無限的寬度和長度,但沒有高度。但是,下面是一個2D RANSAC實現:http://www.visual-experiments.com/demo/ransac.js/ –
除非他預計會有很多不好的測量結果,否則RANSAC似乎是過度殺傷性的。 Trusy老線性最小平方應該工作得很好。 – JonB