struct mp2p_icp_filters::FilterVoxelSOR::Parameters

Overview

#include <FilterVoxelSOR.h>

struct Parameters
{
    // fields

    std::string input_layer = mp2p_icp::metric_map_t::PT_LAYER_RAW;
    std::string output_layer_inliers;
    std::string output_layer_outliers;
    float voxel_size = 2.0f;
    uint32_t mean_k = 20;
    double std_dev_mul = 2.0;
    bool use_tsl_robin_map = true;
    size_t parallelization_grain_size = 10;
    size_t points_per_batch = 5'000'000;

    // methods

    void load_from_yaml(const mrpt::containers::yaml& c);
};

Fields

float voxel_size = 2.0f

Size of the voxel for local processing [meters].

uint32_t mean_k = 20

Number of neighbors to analyze for each point locally.

double std_dev_mul = 2.0

Standard deviation multiplier threshold.

bool use_tsl_robin_map = true

Whether to use tsl::robin_map for voxel storage (faster in general)

size_t parallelization_grain_size = 10

Grain size for TBB parallelization (number of voxels per thread block). Larger values reduce overhead but may cause load imbalance. Only used if TBB is available at build time.

size_t points_per_batch = 5'000'000

Maximum number of input points processed in one voxel-grid batch. For very large clouds the voxel grid (hash map + flat index array) can exhaust RAM. Splitting into chunks bounds peak memory to O(points_per_batch) without affecting SOR quality: voxels at chunk boundaries may see a partial point set, but the effect is negligible when voxel_size << spatial extent of the cloud. Set to 0 to disable chunking (process the whole cloud at once).