Hello,
I have two point clouds. One point cloud is well populated and dense, each point's magnitude represents strain. The other point cloud is much less populated and dense, each point's magnitude represents the average 3 nearest neighbor value (also spatially it is the center of an embryonic heart cell). My goal is to sample the small points in the dense cloud that are in the vicinity of the large points in the sparse cloud.
Is this possible with CloudCompare? I have attached a screen shot showing what my clouds look like.
Thanks!
Subsample a point cloud at specified points/regions
Re: Subsample a point cloud at specified points/regions
Yep, you can simply compute the Cloud-to-cloud distances between the dense cloud (as the 'compared' cloud) and use the low density cloud as 'reference'. Then you can keep only the points with a small distance.
There's even a tool named 'Tools > Distances > Closest Point Set' that will return directly the closest points of one cloud (= the dense one) with respect to another one.
There's even a tool named 'Tools > Distances > Closest Point Set' that will return directly the closest points of one cloud (= the dense one) with respect to another one.
Daniel, CloudCompare admin
Re: Subsample a point cloud at specified points/regions
Thank you, Daniel. I see this is quite simple to do. However, I ultimately would like to plot each of the sparse point's attached data (avg 3 nearest neighbor distance) against that points corresponding strain data in the other cloud (which I will average). Would it be possible to index the points in the sparse cloud and attach each unique sparse point to it's corresponding points in the dense cloud?
Re: Subsample a point cloud at specified points/regions
So my extracted data would look something like this:
X1 (sparse cloud), Y1 (sparse cloud), Z1 (sparse cloud), Scalar at point 1 (sparse cloud), X1 (dense cloud), Y1 (dense cloud), Z1 (dense cloud), Scalar at point 1 (dense cloud)
X1 (sparse cloud), Y1 (sparse cloud), Z1 (sparse cloud), Scalar at point 1 (sparse cloud), X2 (dense cloud), Y2 (dense cloud), Z2 (dense cloud), Scalar at point 2 (dense cloud)
...
X1 (sparse cloud), Y1 (sparse cloud), Z1 (sparse cloud), Scalar at point 1 (sparse cloud), XN (dense cloud), YN (dense cloud), ZN (dense cloud), Scalar at point N (dense cloud)
Where N = point index/identification out of total number of points in dense cloud
then onto the next sparse cloud point with its own set of dense cloud points:
X2 (sparse cloud), Y2 (sparse cloud), Z2 (sparse cloud), Scalar at point 2 (sparse cloud), X1 (dense cloud), Y1 (dense cloud), Z1 (dense cloud), Scalar at point 1 (dense cloud)
X2 (sparse cloud), Y2 (sparse cloud), Z2 (sparse cloud), Scalar at point 2 (sparse cloud), X2 (dense cloud), Y2 (dense cloud), Z2 (dense cloud), Scalar at point 2 (dense cloud)
X1 (sparse cloud), Y1 (sparse cloud), Z1 (sparse cloud), Scalar at point 1 (sparse cloud), X1 (dense cloud), Y1 (dense cloud), Z1 (dense cloud), Scalar at point 1 (dense cloud)
X1 (sparse cloud), Y1 (sparse cloud), Z1 (sparse cloud), Scalar at point 1 (sparse cloud), X2 (dense cloud), Y2 (dense cloud), Z2 (dense cloud), Scalar at point 2 (dense cloud)
...
X1 (sparse cloud), Y1 (sparse cloud), Z1 (sparse cloud), Scalar at point 1 (sparse cloud), XN (dense cloud), YN (dense cloud), ZN (dense cloud), Scalar at point N (dense cloud)
Where N = point index/identification out of total number of points in dense cloud
then onto the next sparse cloud point with its own set of dense cloud points:
X2 (sparse cloud), Y2 (sparse cloud), Z2 (sparse cloud), Scalar at point 2 (sparse cloud), X1 (dense cloud), Y1 (dense cloud), Z1 (dense cloud), Scalar at point 1 (dense cloud)
X2 (sparse cloud), Y2 (sparse cloud), Z2 (sparse cloud), Scalar at point 2 (sparse cloud), X2 (dense cloud), Y2 (dense cloud), Z2 (dense cloud), Scalar at point 2 (dense cloud)
Re: Subsample a point cloud at specified points/regions
Hey everybody, I think I figured out how to do this.
I interpolated my dense point cloud onto my sparse point cloud. I used the Radius (sphere) option with average interpolation. This gave me a SF in the sparse point cloud where the scalars were averages of all the dense points that fell within 10 microns of my sparse points... at least I think that's what I did. Now I'm trying to generate an idealized dataset to confirm my results.
Also, it really helped to reduce my confusion after I realized I could rename my scalar fields. I'm new to CloudCompare!
I interpolated my dense point cloud onto my sparse point cloud. I used the Radius (sphere) option with average interpolation. This gave me a SF in the sparse point cloud where the scalars were averages of all the dense points that fell within 10 microns of my sparse points... at least I think that's what I did. Now I'm trying to generate an idealized dataset to confirm my results.
Also, it really helped to reduce my confusion after I realized I could rename my scalar fields. I'm new to CloudCompare!
Re: Subsample a point cloud at specified points/regions
Hi Daniel, one more thing.
Would it be possible to add in standard deviation and n or count to "interpolate from another entity" under interpolation algorithm? Currently the options are Average, Median, and Normal distribution. It would just be nice to have more stats so I can make error bars. Or is there another way to do this?
Would it be possible to add in standard deviation and n or count to "interpolate from another entity" under interpolation algorithm? Currently the options are Average, Median, and Normal distribution. It would just be nice to have more stats so I can make error bars. Or is there another way to do this?
Re: Subsample a point cloud at specified points/regions
The 'sigma' parameter is already the standard deviation (for the 'Normal distribution' mode). It is not clear to me what you need in addition to that?
Daniel, CloudCompare admin
Re: Subsample a point cloud at specified points/regions
Thanks Daniel, but I guess don't quite understand what the sigma parameter is. It seems like the output is still just an average, but weighted, as per "Compute a weighted average of the neighbors SF values" when I hover on the "Normal distribution" option.
I need to calculate the average of the points' SF that fall within my set radius. Then, from the mean and n, I would like to calculate the standard deviation.
The best thing for me would be to just get all the points and their scalar values that fall within the sphere (radius) I specify, then I could calculate the average and standard deviation myself.
I need to calculate the average of the points' SF that fall within my set radius. Then, from the mean and n, I would like to calculate the standard deviation.
The best thing for me would be to just get all the points and their scalar values that fall within the sphere (radius) I specify, then I could calculate the average and standard deviation myself.
Re: Subsample a point cloud at specified points/regions
Ah yes, then the easier would be to hack the code (you could add new 'features' to the Tools > Other > Compute Geometric features' tool). Or use the CloudCompy wrapper?
Daniel, CloudCompare admin