Hello!
I've been working with CloudCompare for two months.I have a question about the ICP Registration.
As I know,the ICP algorithm is used for two cloudpoints which have almost the same number of points.Here I have another problem.I want to try to find an algorithm in 3D which looks like this:
A simple single model example (1 model, 1 occurrence, good search conditions) is presented first, followed by a more complex example (multiple models, multiple occurrences in a complex scene with bad search conditions).
Is there an algorithm useful for me ? Or can the CloudCompare do this in the future ?
Thanks!
Some question for ICP Registration
Re: Some question for ICP Registration
Hi,
In fact, you don't need to have the same number of points for ICP, but your clouds should represent the exact same shape.
The latest beta release (2.6.1.beta) has a new option to register "partially overlapping" clouds (which is equivalent to register clouds with only a small matching part). The clouds have to be already roughly registered to make this work properly.
There's also the 'remove farthest points' option that ignores at each iteration the points of the registered cloud that are very far from the model cloud. But its effect is generally limited.
In fact, you don't need to have the same number of points for ICP, but your clouds should represent the exact same shape.
The latest beta release (2.6.1.beta) has a new option to register "partially overlapping" clouds (which is equivalent to register clouds with only a small matching part). The clouds have to be already roughly registered to make this work properly.
There's also the 'remove farthest points' option that ignores at each iteration the points of the registered cloud that are very far from the model cloud. But its effect is generally limited.
Daniel, CloudCompare admin
-
- Posts: 19
- Joined: Tue Oct 28, 2014 5:53 am
Re: Some question for ICP Registration
Thanks a lot.'remove farthest points' works fine in some case.But not enough for us.And I have built the latest beta release (2.6.1.beta),I find the option to register "partially overlapping" clouds.
I have Set it as 50%,such as the number of my model cloudpoints is 500,the number of part cloudpoints is 1000.Is that right?
It still can't work fine.The registration was not good.
What I want to do is like below:
How can I match the two cloudpoints one is model and one is multiple models.I just want to match the model cloudpoints to one part of the multiple models cloudponits;
I have Set it as 50%,such as the number of my model cloudpoints is 500,the number of part cloudpoints is 1000.Is that right?
It still can't work fine.The registration was not good.
What I want to do is like below:
How can I match the two cloudpoints one is model and one is multiple models.I just want to match the model cloudpoints to one part of the multiple models cloudponits;
Re: Some question for ICP Registration
Sorry I can't see your image (I only see a default image from the hosting website). You can use the 'Upload attachment' tab below the frame where you input your message, then once the image is uploaded, you have a 'place inline' button below it.
Anyway, the 'overlap' parameter doesn't depends on the number of points, but more on the surface (i.e. the percentage of the overlapping surface). And you have to be almost in the final position (it's mainly for fine tuning).
Another option, if you compile the project yourself, is to remove more points at each iteration with the 'remove furthest point' option. See how the max distance is computed in the 'CC/src/RegistrationTools.cpp' file, line 349 (you can change the 2.5 coefficient by a lower value).
Anyway, the 'overlap' parameter doesn't depends on the number of points, but more on the surface (i.e. the percentage of the overlapping surface). And you have to be almost in the final position (it's mainly for fine tuning).
Another option, if you compile the project yourself, is to remove more points at each iteration with the 'remove furthest point' option. See how the max distance is computed in the 'CC/src/RegistrationTools.cpp' file, line 349 (you can change the 2.5 coefficient by a lower value).
Daniel, CloudCompare admin
-
- Posts: 19
- Joined: Tue Oct 28, 2014 5:53 am
Re: Some question for ICP Registration
Sorry for the picture,I have upload the picture again.
Thanks a lot for your help.Maybe I haven't understand the 'overlap' parameter.That I can't do a good registration.
the picture I want is like this: I hope the model cloudpoints can match the one part of the part cloudpoints.(the model is in White color,the part is in RGB color)
Thanks a lot for your help.Maybe I haven't understand the 'overlap' parameter.That I can't do a good registration.
the picture I want is like this: I hope the model cloudpoints can match the one part of the part cloudpoints.(the model is in White color,the part is in RGB color)
Re: Some question for ICP Registration
Ok, the white point cloud should be totally able to fit one of the "parts". Either you have to use the white cloud as 'data' cloud and the parts as 'model' (sorry, those are the denominations of the original algorithm ;). In this case the overlap is 100%. Otherwise you can use the white cloud as 'model' (won't move) and the parts as 'data' cloud. In this case the overlap is visibly around 50%.
But in both case, you have to roughly register the white cloud first. ICP is a registration refinement algorithm, clouds must be already relatively well registered (especially in this case where both "parts" could fit the white cloud and there's not much points).
But in both case, you have to roughly register the white cloud first. ICP is a registration refinement algorithm, clouds must be already relatively well registered (especially in this case where both "parts" could fit the white cloud and there's not much points).
Daniel, CloudCompare admin
-
- Posts: 19
- Joined: Tue Oct 28, 2014 5:53 am
Re: Some question for ICP Registration
There still have a problem with how to roughly register the While Cloud .Is there any algorithm can help me ?
Re: Some question for ICP Registration
Well, there's this algorithm: http://graphics.stanford.edu/~niloy/res ... ig_08.html
Actually there's an implementation of this algorithm in CC but it is hidden as it was too buggy. If you have some programming skill, you could try to debug it.
Actually there's an implementation of this algorithm in CC but it is hidden as it was too buggy. If you have some programming skill, you could try to debug it.
Daniel, CloudCompare admin
-
- Posts: 19
- Joined: Tue Oct 28, 2014 5:53 am
Re: Some question for ICP Registration
Thanks a lot.Maybe FPCS registration is what I need.I have build a single program to use FPCSRegistrationTools to do registration with two scan data.
But the return value is always false.What param should I set in the function CCLib::FPCSRegistrationTools::RegisterClouds(...)
/** Implements the 4 Points Congruent Sets Algorithm (Dror Aiger, Niloy J. Mitra, Daniel Cohen-Or
\param modelCloud the reference cloud (won't move)
\param dataCloud the cloud to register (will move)
\param transform the resulting transformation (output)
\param delta maximal distance to the reference cloud for the data points to be considered as registered
\param beta is used for bases selection (error tolerance)
\param overlap estimation of the two clouds overlap rate
\param nbBases number of iteration for the algorithm
\param nbTries number of tries to find a base in the reference cloud
\param progressCb the client application can get some notification of the process progress through this callback mechanism (see GenericProgressCallback)
\param nbMaxCandidates if>0, maximal number of candidate bases allowed for each step. Otherwise the number of candidates is not bounded
\return false: failure ; true: success.
**/
I can't understand the beta/overlap/nbBases/nbTries params.It seems I need to read the doc of FPCS algorithm and write a program myself to do the registration.Is there some tests can be used for the FPCS in CC without bugs?
But the return value is always false.What param should I set in the function CCLib::FPCSRegistrationTools::RegisterClouds(...)
/** Implements the 4 Points Congruent Sets Algorithm (Dror Aiger, Niloy J. Mitra, Daniel Cohen-Or
\param modelCloud the reference cloud (won't move)
\param dataCloud the cloud to register (will move)
\param transform the resulting transformation (output)
\param delta maximal distance to the reference cloud for the data points to be considered as registered
\param beta is used for bases selection (error tolerance)
\param overlap estimation of the two clouds overlap rate
\param nbBases number of iteration for the algorithm
\param nbTries number of tries to find a base in the reference cloud
\param progressCb the client application can get some notification of the process progress through this callback mechanism (see GenericProgressCallback)
\param nbMaxCandidates if>0, maximal number of candidate bases allowed for each step. Otherwise the number of candidates is not bounded
\return false: failure ; true: success.
**/
I can't understand the beta/overlap/nbBases/nbTries params.It seems I need to read the doc of FPCS algorithm and write a program myself to do the registration.Is there some tests can be used for the FPCS in CC without bugs?
Re: Some question for ICP Registration
That's why I say it's a bit buggy. I never managed to make it work (but the PhD student who wrote it said he had good results with it!). I guess you'll have to read the paper thoroughly indeed.
Daniel, CloudCompare admin