OpenGR icon indicating copy to clipboard operation
OpenGR copied to clipboard

Program exits unnormally when delta is too small

Open morgan-bc opened this issue 5 years ago • 3 comments

When the delta (max_norm_dist) in the options is too small, the Super4PCS GlobalRegistration cannot run successfully and will exits unnormally without computing the right transformation. For example, the program works well when delta=0.1, but crashes when delta=0.01. The document of Super4PCS says that delta is parameters to verify how much the clouds are aligned. Why the program goes to crash when the delta is small ?

morgan-bc avatar Oct 22 '20 08:10 morgan-bc

Delta is a parameter that controls the desired accuracy of the algorithm. Indirectly, it influences the size of several internal data-structures. In most cases, wrong parameter values leads to empty congruent set and thus wrong transformation estimation. Could you share the dataset causing the crash, so I can investigate from where it comes from ? Also, you might consider looking at the documentation, which explains how to set parameters according to input data.

nmellado avatar Oct 26 '20 21:10 nmellado

Thanks for your explanations. The testing data is private and I cannot shared it on the public forum. The registration parameters are

    gr::UniformDistSampler<Point3D> sampler;
    TransformVisitor vistor;
    gr::Utils::Logger logger(gr::Utils::Verbose);

    MatcherType::OptionsType options;
    MatrixType mat = MatrixType::Identity();
    options.sample_size = 2000;
    options.max_normal_difference = -1;
    options.max_color_distance = -1;
    options.max_time_seconds = 30;
    options.delta = 0.1;
    options.configureOverlap(0.5);

    MatcherType matcher(options, logger);

Note that the source mesh and the target mesh are partialy overlapped. The program works well at delta=0.1, but goes to crash at delta=0.01

morgan-bc avatar Oct 27 '20 10:10 morgan-bc

Reducing the parameter delta increase the resolution of the acceleration structures. I experienced crashed when trying to allocate too large datastructures, maybe this is what happens to you ? Could you please check the memory consumption when the program crash ?

nmellado avatar Dec 03 '20 09:12 nmellado