Interpolating points of a 3D point cloud

3 vues (au cours des 30 derniers jours)
Meghana Dinesh
Meghana Dinesh le 4 Juin 2015
Commenté : Gaurav le 7 Mar 2016
I have two questions:
1. I have a 3D point cloud which isn't continuous. There are a few gaps in it. I want to interpolate this data and fill in those gaps.
(I have attached the point cloud and code to display it on MATLAB here .)
I came across functions like triscatteredInterp and scatteredInterpolant. I did not understand how to proceed with this in my case. Kindly help me here. I am getting a blank output.
This is what I am doing:
figure,
x = PointCloud(:,:,1);
x_max = max(x(:))
x_min = min(x(:))
y = PointCloud(:,:,2);
y_max = max(y(:))
y_min = min(y(:))
z = PointCloud(:,:,3);
[xi,yi] = meshgrid(x_max:0.01:x_min, y_max:0.01:y_min);
xyz_2D = cat(2,x(:),y(:),z(:));
pointcloud_2D = xyz_2D(~any(isnan(xyz_2D)|isinf(xyz_2D),2),:);
zi = griddata(pointcloud_2D(:,1),pointcloud_2D(:,2),pointcloud_2D(:,3),xi,yi);
surf(xi,yi,zi); xlabel('x') ylabel('y') zlabel('Depth')
2. My second question is: looking at the point cloud, I want to remove those parts which have lesser number of connected pixels. The way we have bwlabel for 2D Images, is there any function in MATLAB which outputs labels for 8 connected objects? This way, I can disregard the one with lesser number of points connected.
  1 commentaire
Gaurav
Gaurav le 7 Mar 2016
Hi @Meghana did you found a good approach for your first question? If yes Can you please tell how you solved it.
Thanks

Connectez-vous pour commenter.

Réponses (1)

Fabio Freschi
Fabio Freschi le 4 Juin 2015
Does triscatteredinterp make the job?
  1 commentaire
Meghana Dinesh
Meghana Dinesh le 5 Juin 2015
Nope, I wasn't able to execute it using this function as well.

Connectez-vous pour commenter.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by