remove outliers in 3D point data
Afficher commentaires plus anciens
Hi guys, I want to thank you in advance for you help. I have a point cloud of an object, separated by axis:
points = [x, y, z];
which when plotted on a scatter contain some outliers that I want to get rid of.
I've already got a distance matrix of the point set using the following code:
distanceMatrix = squareform(pdist(points, 'euclidean'));
I can use logical indexing to remove distances beyond a certain standard deviation (I'm using 1 here),
newDistanceM = distanceMatrix>mean(mean(distanceMatrix))+1*std(std(distanceMatrix));
Where I am having trouble is using newDistanceM to filter out the points that are outliers in my original set. It's probably really simple to do this but I'm not seeing it.
Any help on this is, of course, greatly appreciated and if anybody has a better/more robust way of achieving what I describe, I very much welcome the feedback.
Cheers
2 commentaires
Baltam
le 18 Avr 2016
Are you sure you are calculating the correct distance? If you need the distance of each point to the origin than you should use:
points = rand(50,3);
distance = sqrt(sum(points.^2,2));
indices = distance<(mean(distance)+std(distance)); %note I use smaller than instead of bigger
remainingPoints = points(indices,:);
jay
le 18 Avr 2016
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Fit Postprocessing dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!