How to compute the density of a 3D point cloud?
154 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Ali
am 12 Jul. 2020
Kommentiert: Ali
am 12 Jul. 2020
I'm trying to write a program that operates on 3D point clouds (.ply, .pcd), I need to know the density of the given point cloud file and compare it with a threshold or certain percentage to decide for some operations. How can I do that?
Two methods can be used to compute the density:
- either 'Precise': the density is estimated by counting for each point the number of neighbors N (inside a sphere of radius R)
- or 'Approximate': the density is simply estimated by determining the distance to the nearest neighbor (which is generally much faster). This distance is considered as being equivalent to the above spherical neighborhood radius R (and N = 1).
However I'm not sure how to put this into matlab code, I guess I should use pcfitplane for sphere fitting and findNearestNeighbors. Would appreciate a step by step example.
0 Kommentare
Akzeptierte Antwort
Thiago Henrique Gomes Lobato
am 12 Jul. 2020
Bearbeitet: Thiago Henrique Gomes Lobato
am 12 Jul. 2020
You can just directly apply the definition you gave considering that the density is N/Volume. The easiest is the second one, which would be:
AllPoints = % your points
K = 1;
for idx=1:length(AllPoints)
[~,r] = findNearestNeighbors(AllPoints,AllPoints(idx,:),K);
density(idx) = 1/(4*pi*r.^3/3);
end
The first one is a little more complicated but at the same time not so much:
AllPoints = % your points
R = 1; % depends on your data
for idx=1:length(AllPoints)
Distances = sqrt( sum( (AllPoints-AllPoints(idx,:)).^2 ,2) );
Ninside = length( find(Distances<=R) );
density(idx) = Ninside/(4*pi*R.^3/3);
end
6 Kommentare
Thiago Henrique Gomes Lobato
am 12 Jul. 2020
4*pi*R.^3/3 is the same as 4/3*pi*R.^3 since exponent has priority over division in matlab. For the notes the first point is important only when there's a limit to define neighborhood, and the second is already taken into account for all methods.
Weitere Antworten (0)
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!