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
stochastic ICP result transform matrix
Re: stochastic ICP result transform matrix
If the random sampling limit is above both cloud sizes, you shouldn't have any 'random' behavior anymore...
Daniel, CloudCompare admin
Re: stochastic ICP result transform matrix
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
Thanks for your answer.
Best regards
Zilong
Re: stochastic ICP result transform matrix
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).
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).
Daniel, CloudCompare admin
Re: stochastic ICP result transform matrix
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
From https://github.com/CloudCompare/CloudCo ... gTools.cpp