class mp2p_icp::QualityEvaluator_RangeImageSimilarity

Overview

Matching quality evaluator: simple ratio [0,1] of paired entities.

Implementation of the method in the papper:

  • “Analyzing the Quality of Matched 3D Point Clouds of Objects”, Igor Bogoslavskyi, Cyrill Stachniss, IROS 2017.

This implementation reprojects points into range images with the resolution defined in parameters and compares the likelihood of both range images to be generated from the same point clouds.

At present, the PT_LAYER_RAW layer of points is the only one that is used to evaluate the depth images.

#include <QualityEvaluator_RangeImageSimilarity.h>

class QualityEvaluator_RangeImageSimilarity: public mp2p_icp::QualityEvaluator
{
public:
    // fields

    mrpt::img::TCamera rangeCamera;
    double sigma = 0.1;
    double penalty_not_visible = 2.0;
    bool debug_show_all_in_window = false;
    bool debug_save_all_matrices = false;

    // methods

    virtual void initialize(const mrpt::containers::yaml& params);

    virtual double evaluate(
        const metric_map_t& pcGlobal,
        const metric_map_t& pcLocal,
        const mrpt::poses::CPose3D& localPose,
        const Pairings& pairingsFromICP
        ) const;

    mrpt::math::CMatrixDouble projectPoints(
        const mrpt::maps::CPointsMap& pts,
        const std::optional<mrpt::poses::CPose3D>& relativePose = std::nullopt
        ) const;

    std::vector<double> scores(
        const mrpt::math::CMatrixDouble& m1,
        const mrpt::math::CMatrixDouble& m2
        ) const;
};

Inherited Members

public:
    // methods

    virtual void initialize(const mrpt::containers::yaml& params) = 0;

    virtual double evaluate(
        const metric_map_t& pcGlobal,
        const metric_map_t& pcLocal,
        const mrpt::poses::CPose3D& localPose,
        const Pairings& pairingsFromICP
        ) const = 0;

Fields

mrpt::img::TCamera rangeCamera

Parameters for the simulated camera

double penalty_not_visible = 2.0

!< Uncertainty of depth ranges [meters]

Penalty for pixels only visible from one view point [in “sigmas”]

Methods

virtual void initialize(const mrpt::containers::yaml& params)

See base class. Parameters :

ncols: 200
nrows: 100
cx: 100
cy: 50
fx: 50
fy: 50
sigma: 0.1
#debug_show_all_in_window: false
virtual double evaluate(
    const metric_map_t& pcGlobal,
    const metric_map_t& pcLocal,
    const mrpt::poses::CPose3D& localPose,
    const Pairings& pairingsFromICP
    ) const

See base class. This implementation does NOT use pairingsFromICP at all, it can be empty.