struct mola::KeyframePointCloudMap::RegroupParams
Overview
Parameters for regroupKeyframes().
#include <KeyframePointCloudMap.h> struct RegroupParams { // fields double voxel_size = 0; double edge_overlap = 0.75; double core_fraction = 0.85; double extent_factor = 2.0; double merge_decimate_voxel = 0; double island_merge_fraction = 0.025; bool unify_all = false; };
Fields
double voxel_size = 0
Voxel resolution [m] used to compute pairwise cloud overlaps. If <=0, it is auto-derived from the median per-keyframe sensing radius.
double edge_overlap = 0.75
Minimum pairwise voxel-overlap (Jaccard-min, in [0,1]) required to create an edge in the keyframe adjacency graph, i.e. for two keyframes to be candidates for merging into the same super-keyframe.
double core_fraction = 0.85
Inner-core fraction, in (0,1], of a super-keyframe’s spatial extent. A member keyframe whose center lies within core_fraction * extent of the seed is marked “covered” (deep inside, single-KF localization is reliable there). Members in the outer band stay available to seed/join neighboring super-keyframes, which is what produces the deliberate inter-group overlap. The outer (overlap) band is (1 - core_fraction) of the extent, so the default of 0.85 yields ~15% overlap between neighboring super-keyframes.
double extent_factor = 2.0
Spatial extent cap of a super-keyframe, as a multiple of the seed keyframe’s own sensing radius (half its cloud bounding-box diagonal). This auto-sizes groups non-uniformly: large outdoors (long range), small indoors.
double merge_decimate_voxel = 0
If >0, voxel-downsample each merged super-keyframe cloud at this resolution [m] to bound the point-count blow-up from the deliberate overlap. This is strongly recommended for large maps. Per-point view-direction fields, when present, are carried over (first point kept per voxel).
double island_merge_fraction = 0.025
Any cluster whose total point count falls below this fraction of the largest cluster’s point count is treated as an “island”: too small to usefully stand on its own as a super-keyframe (it would mislead proximity-based nearest-keyframe search at runtime see TCreationOptions::density_penalty_min_points while contributing little real geometry). Islands are absorbed into their nearest neighboring cluster (by center distance) instead of being emitted as their own super-keyframe. Set to 0 to disable (old behavior: every cluster becomes its own super-keyframe, however small). Default 0.025 = 2.5%.
bool unify_all = false
If true, bypass the overlap-graph clustering entirely and merge ALL keyframes into a single super-keyframe, anchored at the pose of the first (oldest) keyframe. Useful to turn a whole session’s keyframe map into one wide, self-contained keyframe e.g. so a subsequent session’s localization always sees the full previous map instead of only the max_search_keyframes nearest of many small keyframes, which under-covers stop-and-rotate scanning patterns. merge_decimate_voxel still applies to bound the resulting cloud size; all other clustering parameters above are ignored. Default false.