Page 1 of 1

Is it possible to have an option to make the ICP algorithm give greater importance to points in less dense areas?

Posted: Fri May 11, 2018 6:54 pm
by DarknessRain
I think one of my problems is that by nature of the relationship between distance from the points in my pointcloud to the scanner and the density of the points, the algorithm is finding it too attractive to place the scanner origins superimposed upon each other. Due to the fact that floors and ceilings are pretty uniformly flat surfaces regardless of position in a room, there will be a couple of densely packed circular rows of points immediately adjacent to the scanner on the floor and the ceiling, regardless of where the scanner is placed, and these rows will look similar, making them very easily falsely matched. It shouldn't be too much of a problem because there would be the further walls and objects in the room to counter-balance this, but since a far wall would be covered in much fewer points, it would take multiple feet of matched wall to counter each foot of mis-matched floor.

Re: Is it possible to have an option to make the ICP algorithm give greater importance to points in less dense areas?

Posted: Sun May 13, 2018 2:59 pm
by daniel
You can use a scalar field as 'weights' for the ICP algorithm (see the "Use displayed model/data scalar field as weights" options - http://www.cloudcompare.org/doc/wiki/in ... ?title=ICP)

The bigger the value is, the more weight the point will have in the registration process. Therefore you need to compute the density of the cloud (Tools > Other > Density). But you'll need to make the density value 'bigger' in less dense area. Either you play with the 'Density' tool options to get something like this directly (I can't remember if it's possible or not). Or you use the 'SF Arithmetics' tool to change the behavior of the density scalar field.