|
ReUseX
0.0.5
3D Point Cloud Processing for Building Reuse
|
Parameters for panorama-derived loop-edge detection. More...
#include <PanoramaLoopEdges.hpp>
Public Attributes | |
| bool | enable = false |
| Off by default; opt in with rux optimize --loop-closure --use-panoramas. | |
| int | max_frames = 240 |
| Panorama alignment matches a temporal window around the timestamp-seed frame (PanoramaAlignmentOptions::candidate_window), every pair of which is closer than min_frame_gap — so it could never yield a loop edge. | |
| int | min_candidate_frames = 8 |
| Skip frames whose colour/depth cannot be read rather than failing; a scan with fewer than this many usable candidates cannot support loop edges. | |
| int | n_yaw = 8 |
| perspective slices around the equator | |
| double | fov_deg = 90.0 |
| per-slice horizontal FOV (overlapping) | |
| int | slice = 1008 |
| slice size (px, square) | |
| int | max_features = 3000 |
| ORB features per image. | |
| float | ratio_test = 0.85f |
| Lowe ratio threshold. | |
| float | min_depth = 0.3f |
| ignore frame keypoints outside [min,max] (m) | |
| float | max_depth = 6.0f |
| int | min_frame_correspondences = 10 |
| A frame needs this many slice correspondences before resection is attempted. | |
| int | min_slice_correspondences = 6 |
| A single (slice, frame) pair needs this many correspondences to seed the resection with solvePnPRansac (which needs >= 4 for EPnP; 6 gives it margin). | |
| int | min_frame_inliers = 20 |
| Accept a frame's independent resection above this many gated inliers. | |
| float | ransac_reproj_px = 5.0f |
| solvePnPRansac reprojection threshold | |
| int | ransac_iterations = 500 |
| int | refine_iterations = 10 |
| bearing-space Gauss-Newton steps | |
| double | max_pano_distance = 8.0 |
| Reject a resection whose panorama centre sits further than this from the frame (m). | |
| int | max_edges_per_panorama = 24 |
| Cap the edges contributed per panorama (highest joint inlier support first). | |
| float | base_sigma_trans = 0.15f |
| Base sigmas at min_frame_inliers support, shrinking as sqrt(min_frame_inliers / inliers) down to the floors — the same inlier-scaling law LoopClosureOptions uses. | |
| float | base_sigma_rot = 0.06f |
| rad | |
| float | min_sigma_trans = 0.05f |
| floor on the translational std (m) | |
| float | min_sigma_rot = 0.025f |
| floor on the rotational std (rad) | |
| unsigned | seed = 42 |
| RANSAC determinism (docs/STANDARDS.md §6). | |
Parameters for panorama-derived loop-edge detection.
The ORB / slicing defaults deliberately mirror PanoramaAlignmentOptions so the two front-ends see the same features; the frame-selection and edge-emission knobs are specific to loop closure.
Definition at line 72 of file PanoramaLoopEdges.hpp.
| float reusex::geometry::PanoramaLoopOptions::base_sigma_rot = 0.06f |
rad
Definition at line 136 of file PanoramaLoopEdges.hpp.
| float reusex::geometry::PanoramaLoopOptions::base_sigma_trans = 0.15f |
Base sigmas at min_frame_inliers support, shrinking as sqrt(min_frame_inliers / inliers) down to the floors — the same inlier-scaling law LoopClosureOptions uses.
Deliberately looser than the ORB pair front-end: a panorama edge chains TWO independent resections, so its error is the composition of both. m
Definition at line 135 of file PanoramaLoopEdges.hpp.
| bool reusex::geometry::PanoramaLoopOptions::enable = false |
Off by default; opt in with rux optimize --loop-closure --use-panoramas.
Definition at line 74 of file PanoramaLoopEdges.hpp.
| double reusex::geometry::PanoramaLoopOptions::fov_deg = 90.0 |
per-slice horizontal FOV (overlapping)
Definition at line 91 of file PanoramaLoopEdges.hpp.
| float reusex::geometry::PanoramaLoopOptions::max_depth = 6.0f |
Definition at line 98 of file PanoramaLoopEdges.hpp.
| int reusex::geometry::PanoramaLoopOptions::max_edges_per_panorama = 24 |
Cap the edges contributed per panorama (highest joint inlier support first).
One panorama matching many frames would otherwise dominate the graph with O(F^2) mutually-derived edges that share the same resection errors and are therefore NOT independent measurements.
Definition at line 129 of file PanoramaLoopEdges.hpp.
| int reusex::geometry::PanoramaLoopOptions::max_features = 3000 |
ORB features per image.
Definition at line 95 of file PanoramaLoopEdges.hpp.
| int reusex::geometry::PanoramaLoopOptions::max_frames = 240 |
Panorama alignment matches a temporal window around the timestamp-seed frame (PanoramaAlignmentOptions::candidate_window), every pair of which is closer than min_frame_gap — so it could never yield a loop edge.
Loop-edge detection instead sweeps the WHOLE trajectory, evenly subsampled to this many frames. That global sweep is what lets one panorama tie temporally-distant revisits together; it is also the dominant cost (slices x frames descriptor matches), hence the budget.
Definition at line 84 of file PanoramaLoopEdges.hpp.
| double reusex::geometry::PanoramaLoopOptions::max_pano_distance = 8.0 |
Reject a resection whose panorama centre sits further than this from the frame (m).
Bearing resection from a narrow match cone is weakly constrained in translation and can slide the centre far away at a still small angular residual; the panorama was physically captured within a room of the frames it matches. Mirrors PanoramaAlignmentOptions:: max_correction_m. <= 0 disables.
Definition at line 122 of file PanoramaLoopEdges.hpp.
| int reusex::geometry::PanoramaLoopOptions::min_candidate_frames = 8 |
Skip frames whose colour/depth cannot be read rather than failing; a scan with fewer than this many usable candidates cannot support loop edges.
Definition at line 87 of file PanoramaLoopEdges.hpp.
| float reusex::geometry::PanoramaLoopOptions::min_depth = 0.3f |
ignore frame keypoints outside [min,max] (m)
Definition at line 97 of file PanoramaLoopEdges.hpp.
| int reusex::geometry::PanoramaLoopOptions::min_frame_correspondences = 10 |
A frame needs this many slice correspondences before resection is attempted.
Lower than the alignment path's pooled requirement because the pool here is ONE frame, not all candidates.
Definition at line 104 of file PanoramaLoopEdges.hpp.
| int reusex::geometry::PanoramaLoopOptions::min_frame_inliers = 20 |
Accept a frame's independent resection above this many gated inliers.
The binding quality gate: a weak resection makes a wrong edge, and unlike the alignment path there is no second chance from other frames' points.
Definition at line 112 of file PanoramaLoopEdges.hpp.
| float reusex::geometry::PanoramaLoopOptions::min_sigma_rot = 0.025f |
floor on the rotational std (rad)
Definition at line 138 of file PanoramaLoopEdges.hpp.
| float reusex::geometry::PanoramaLoopOptions::min_sigma_trans = 0.05f |
floor on the translational std (m)
Definition at line 137 of file PanoramaLoopEdges.hpp.
| int reusex::geometry::PanoramaLoopOptions::min_slice_correspondences = 6 |
A single (slice, frame) pair needs this many correspondences to seed the resection with solvePnPRansac (which needs >= 4 for EPnP; 6 gives it margin).
Mirrors PanoramaAlignmentOptions::min_slice_correspondences.
Definition at line 108 of file PanoramaLoopEdges.hpp.
| int reusex::geometry::PanoramaLoopOptions::n_yaw = 8 |
perspective slices around the equator
Definition at line 90 of file PanoramaLoopEdges.hpp.
| int reusex::geometry::PanoramaLoopOptions::ransac_iterations = 500 |
Definition at line 114 of file PanoramaLoopEdges.hpp.
| float reusex::geometry::PanoramaLoopOptions::ransac_reproj_px = 5.0f |
solvePnPRansac reprojection threshold
Definition at line 113 of file PanoramaLoopEdges.hpp.
| float reusex::geometry::PanoramaLoopOptions::ratio_test = 0.85f |
Lowe ratio threshold.
Definition at line 96 of file PanoramaLoopEdges.hpp.
| int reusex::geometry::PanoramaLoopOptions::refine_iterations = 10 |
bearing-space Gauss-Newton steps
Definition at line 115 of file PanoramaLoopEdges.hpp.
| unsigned reusex::geometry::PanoramaLoopOptions::seed = 42 |
RANSAC determinism (docs/STANDARDS.md §6).
Definition at line 140 of file PanoramaLoopEdges.hpp.
| int reusex::geometry::PanoramaLoopOptions::slice = 1008 |
slice size (px, square)
Definition at line 92 of file PanoramaLoopEdges.hpp.