class mp2p_icp_filters::FilterDecimateRangeAdaptive

Overview

Range-adaptive voxel decimation following EllipseLIO (arXiv:2605.21150, Eqs. 1-3).

The input cloud is split into configurable-width radial bins (see bin_width). Within bin i (points in [i*bin_width, (i+1)*bin_width) m), the voxel size is set to the scan-line separation at that range:

v_i = (i+1) * vertical_fov_rad / (num_scan_lines - 1)

clamped to [min_voxel_size, max_voxel_size]. Each bin is independently voxelised (first-point per voxel), and the filtered clouds are unioned.

When vertical_fov_rad or num_scan_lines are zero, they are auto-derived from the input cloud’s ring channel (if present).

Not compatible with calling from different threads simultaneously for different input point clouds. Use independent instances for each thread if needed.

#include <FilterDecimateRangeAdaptive.h>

class FilterDecimateRangeAdaptive: public mp2p_icp_filters::FilterBase
{
public:
    // structs

    struct Impl;
    struct Parameters;

    // fields

    Parameters params;

    // methods

    virtual void filter(mp2p_icp::metric_map_t& inOut) const;
};

Inherited Members

public:
    // methods

    virtual void filter(mp2p_icp::metric_map_t& inOut) const = 0;
    FilterBase& operator = (const FilterBase&);
    FilterBase& operator = (FilterBase&&);

Fields

Parameters params

Algorithm parameters

Methods

virtual void filter(mp2p_icp::metric_map_t& inOut) const

See docs above for FilterBase.