Page 1 of 1
Averaging two Clouds
Posted: Wed Apr 22, 2015 9:12 pm
by Pixel UAV
Hi all,
I am wanting to average two point clouds of the same surface that are within 50mm of each other. The purpose of this is to experiment with improving the cloud accuracy by taking more than one scan, with each scan being its own unique setup.
Idealy i would like to be able to take every point on the Compared Cloud and create another point that is halfway to the reference cloud. The surface is relatively flat and the two clouds of matching density, so i don't think it would make a much of a difference if nearest neighbor or true distances is used.
Any feedback or ideas would be greatly appreciated
Cheers
Re: Averaging two Clouds
Posted: Thu Apr 23, 2015 7:44 am
by daniel
Hi,
There's currently no way to 'move' the points in such a way. You can trim the cloud so as to remove points with a big distance, or remove the outliers (see the 'Tools > Clean > Filter noise' tool for instance) but you can't move the points with various quantities.
Re: Averaging two Clouds
Posted: Tue Apr 28, 2015 2:02 pm
by jason3d
if it is a flat surface you can rasterize and set it to average the points in a given cell of the grid.
Re: Averaging two Clouds
Posted: Tue Apr 28, 2015 6:43 pm
by Dimitri
The solution with the previous rasterizing option would work well if your surface is mostly horizontal. If not, you can do this with M3C2 (it's a tweak as M3C2 is not really optimized for this, but it works perfectly):
. first merge the two clouds
. Duplicate the resulting cloud (just because M3C2 needs 2 clouds, but the 2nd cloud is not used -> note to Daniel: we could have an option of M3C2 just for averaging clouds. I'm actually using this averaging feature quite often, or it can be used to filter outliers by using the median rather than the arithmetic mean ;-))
. Select the first and second cloud and click on the M3C2 icon
. You select the projection scale as the scale at which you want to average your data : if this scale is very large, you'll smooth out the details, if it's very small you'll barely no averaging
. Set the normal scale as 4-5 times the projection scale. Again, this parameter would depend on the cloud orientation/configuration, a bit of trial and error could be required, so start to work on an excerpt of your cloud.
. Very important: set the maximum depth at a minimum of twice the max distance between the original two clouds you wanted to average (in order to consider all the points).
. Set core points to use cloud #1 (all points), but more probably you want here to create an average point cloud with a mininum point spacing. Then select the point spacing you want in the subsample box.
. In the normal tab, you select the option that best suits your cloud orientation: i.e. if your clouds are mostly horizontal you can directly select a vertical normal (in which case the normal scale parameter is not important), but this would be similar to the rasterize solution which is easier to use. If your clouds are more 3D and complex, then select the default orientation. If you know what you're doing, you can select the horizontal (e.g. for walls).
. Advanced : nothing to change unless you know what you want
. Output : VERY important, select CLOUD #1. You can also choose to compute the std deviation and the number of points use to compute the mean position by ticking the adequate boxes.
The resulting cloud will the be average cloud you're looking for. Many scalars won't be necessary/useful and can be deleted. You can only keep N_points_cloud1 (number of points used to compute the average of each point) and std_cloud1 (detrended standard deviation, generally called roughness).
Hope this helps
Dim
Re: Averaging two Clouds
Posted: Thu Apr 30, 2015 8:31 pm
by Pixel UAV
thankyou very much, i will experiment and see what i results i can get