Page 1 of 1
stochastic ICP result transform matrix
Posted: Tue May 07, 2019 2:22 pm
by ZilongS
Hello, Daniel,
I am using de compiled version of CC, and I find that when using ICP, for the same reference cloud and same aligned clolud, the result transform matrix can be different, even the Random sampling limit is greater than the point number of the cloud to be aligned, however, do you have a solution such that every time when using ICP for two same clouds, the output matrix can always be the same (reproducible)?
Best regards
Zilong
Re: stochastic ICP result transform matrix
Posted: Tue May 07, 2019 8:35 pm
by daniel
If the random sampling limit is above both cloud sizes, you shouldn't have any 'random' behavior anymore...
Re: stochastic ICP result transform matrix
Posted: Thu May 09, 2019 7:23 am
by ZilongS
You are right, I thought the Random Sampling Limit is only valid for the cloud to be aligned.
Thanks for your answer.
Best regards
Zilong
Re: stochastic ICP result transform matrix
Posted: Thu May 09, 2019 11:53 am
by ZilongS
daniel wrote: ↑Tue May 07, 2019 8:35 pm
If the random sampling limit is above both cloud sizes, you shouldn't have any 'random' behavior anymore...
However, it's better that the sampling process with the random sampling limit below the point number can be also reproducible, can we do that?
Re: stochastic ICP result transform matrix
Posted: Fri May 10, 2019 1:13 pm
by daniel
By definition it's a random process. But I guess it's possible with a little hack to always use the same 'seed' for random numbers generation.
You would need to add an optional argument to the CloudSamplingTools::subsampleCloudRandomly method (see
https://github.com/CloudCompare/CloudCo ... ols.h#L129). This argument could be 0 for the default seeding mechanism or a specific seed number otherwise (see line 218).
Then you'll have to change the call to subsampleCloudRandomly with a constant seed in the ICPRegistrationTools::Register method (see
https://github.com/CloudCompare/CloudCo ... s.cpp#L179).
Re: stochastic ICP result transform matrix
Posted: Tue Jun 04, 2019 6:50 am
by ZilongS
You mean by setting the line 219 of std::mt19937 gen(rd()); to std::mt19937 gen(0); ?
From
https://github.com/CloudCompare/CloudCo ... gTools.cpp