How to segment/partition point cloud into upper and lower layers?
11 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
This problem has been troubling me for long. I have attached a dataset of unorganized point cloud. It is the partial surface of a cartilage, and it's clear that it has upper and lower surfaces. Now I'd like to use Matlab to divide the point cloud into upper and lower parts, any idea how I could do this? I thought about local search method grid by grid then separating them from the mid-plane. But this method seems very limited and doesn't work well for dataset with a severe slope.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/162639/image.jpeg)
Alternatively, I could look to segment a contour slice of it into upper and lower part. I just need a rough segmentation, the left and right end points don't matter much. After segmentation, I'd do a B-Spline surface approximation.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/162641/image.jpeg)
Any ideas? Thanks in advance!
0 commentaires
Réponses (1)
Image Analyst
le 5 Avr 2017
Assuming you have (x,y,z) coordinates and want to find points above and below some specified z value:
zDivider = -41; % Dividing line between upper and lower points.
lowerPointsIndexes = z < zDivider; % Logical index.
% Now extract out x, y, and z for the lower part
xLower = x(lowerPointsIndexes);
yLower = y(lowerPointsIndexes);
zLower = z(lowerPointsIndexes);
% Now do for the upper points:
upperPointsIndexes = z >= zDivider; % Logical index.
% Now extract out x, y, and z for the lower part
xUpper = x(upperPointsIndexes);
yUpper = y(upperPointsIndexes);
zUpper = z(upperPointsIndexes);
4 commentaires
stefano chiappini
le 7 Mar 2022
Hi, i have a similar question. I have got a point cloud crown tree and i need slicing along z direction with with 10 cm thickness. Is there a way to create a list ? my aim is to compute the volume with alpha shape concern each singular slice.
Thank you so much
Image Analyst
le 7 Mar 2022
Not sure what you have. Do you have a 3-D volumetric image where the voxel value is 1 if a tree occupies that voxel? Do you just want to get the top most z value for every (x,y) coordinate? And then maybe fill in some "holes" where the top most z value is way down near the middle or bottom of the tree? If so, attach your variable in a .mat file.
Voir également
Catégories
En savoir plus sur Point Cloud Processing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!