Fitting a plane through a 3D point data
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
For example, i have 3d point cloud data [xi, yi, zi] as the attachment .txt file. I want to fit a plane to a set of 3D point data. What kind of method to do that?



1 Kommentar
Matt J
am 6 Mai 2018
How does one know that M and L are different planes and not just noise? Is there a known upper bound on the noise? A known lower bound on the separation distance between M and L?
Akzeptierte Antwort
Matt J
am 6 Mai 2018
5 Kommentare
Matt J
am 6 Mai 2018
Bearbeitet: Matt J
am 6 Mai 2018
One approach you might consider is to take planar cross sections of your data. This will give 2D data for a line, with outliers. Then you can apply a ready-made RANSAC line-fitter, like the one I linked you to. From line fits in two or more cross-secting planes you should be able to construct the desired plane K.
Weitere Antworten (2)
Walter Roberson
am 6 Mai 2018
data = load('1.txt');
coeffs = [data(:,1:2), ones(size(data,1),1)]\data(:,3);
The equation of the plane is then coeffs(1)*x + coeffs(2)*y - coeffs(3) = z
1 Kommentar
Matt J
am 6 Mai 2018
Bearbeitet: Matt J
am 6 Mai 2018
xyz=load('1.txt');
xyz(xyz(:,2)>40, :)=[];
mu=mean(xyz,1);
[~,~,V]=svd(xyz-mu,0);
normal=V(:,end).';
d=normal*mu';
The equation of the plane is then xyz*normal.' = d
3 Kommentare
Matt J
am 6 Mai 2018
How does one know that M and L are different planes and not just noise? Is there a known upper bound on the noise? A known lower bound on the separation distance between M and L?
Siehe auch
Kategorien
Mehr zu Point Cloud Processing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!