Fitting a plane through a 3D point data
18 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentario
Matt J
el 6 de Mayo de 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?
Respuesta aceptada
Matt J
el 6 de Mayo de 2018
5 comentarios
Matt J
el 6 de Mayo de 2018
Editada: Matt J
el 6 de Mayo de 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.
Más respuestas (2)
Walter Roberson
el 6 de Mayo de 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 comentario
Matt J
el 6 de Mayo de 2018
Editada: Matt J
el 6 de Mayo de 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 comentarios
Matt J
el 6 de Mayo de 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?
Ver también
Categorías
Más información sobre Point Cloud Processing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!