ReUseX  0.0.5
3D Point Cloud Processing for Building Reuse
Loading...
Searching...
No Matches
reusex::geometry::DensifyParams Struct Reference

Parameters for Multi-View Stereo dense reconstruction (OpenMVS). More...

#include <densify.hpp>

Collaboration diagram for reusex::geometry::DensifyParams:

Public Attributes

std::string output_name = "dense"
 Name to save the dense point cloud under in ProjectDB.
std::string seed_cloud_name = "cloud"
 Source LiDAR cloud (name in ProjectDB) used to seed PatchMatch and the downstream 3D-point views.
int seed_max_points = 100'000
 Sub-sample stride when copying the seed cloud (uniform).
int resolution_level = 1
 0 = full image resolution, 1 = half, 2 = quarter, ...
int max_resolution = 2000
 Upper bound on max(width, height) for any image.
int min_resolution = 640
 Lower bound on max(width, height). Images below this are not used.
int num_views = 4
 Number of neighbor views considered per image during depth-map estimation.
int frame_stride = 1
 Per-frame stride when subsampling RTABMap frames.
bool geometric_consistency = true
 Geometric consistency between neighboring depth maps.
int gpu_index = -2
 CUDA device selection for PatchMatch depth-map estimation.
int max_threads = 0
 Maximum concurrent OpenMP threads used during depth-map estimation.
bool outlier_filter = true
 Apply PCL's statistical outlier removal to the merged output after fusion.
int outlier_mean_k = 50
double outlier_stddev_thresh = 2.0
bool bbox_clip = true
 If the seed cloud (LiDAR) is present, clip the dense output to its percentile-based bounding box expanded by bbox_margin (relative expansion: 0.25 = 25% on each side).
double bbox_margin = 0.25
int chunk_size = 0
 Process at most this many frames per dense-reconstruction call, then merge the resulting point clouds.
int max_fuse_points = 0
 Cap on the number of points kept after fusion (OPTDENSE.nMaxPointsFuse).

Detailed Description

Parameters for Multi-View Stereo dense reconstruction (OpenMVS).

Definition at line 16 of file densify.hpp.

Member Data Documentation

◆ bbox_clip

bool reusex::geometry::DensifyParams::bbox_clip = true

If the seed cloud (LiDAR) is present, clip the dense output to its percentile-based bounding box expanded by bbox_margin (relative expansion: 0.25 = 25% on each side).

This catches the large triangulation-failure patches that SOR misses — they sit far outside the LiDAR volume, so a generous box around the LiDAR extent removes them while keeping anything plausibly part of the scene.

Definition at line 82 of file densify.hpp.

◆ bbox_margin

double reusex::geometry::DensifyParams::bbox_margin = 0.25

Definition at line 83 of file densify.hpp.

◆ chunk_size

int reusex::geometry::DensifyParams::chunk_size = 0

Process at most this many frames per dense-reconstruction call, then merge the resulting point clouds.

This is the only way to bound peak fusion RAM without lowering image resolution — fusion holds every depth map in memory at once, so smaller chunks → smaller fusion working set. Successive chunks are consecutive frames from the (frame_stride-filtered) sensor-frame list. 0 = disabled, fuse the whole scene at once. Reasonable values for 640×480 indoor scans are 30–80 frames depending on available RAM.

Definition at line 93 of file densify.hpp.

◆ frame_stride

int reusex::geometry::DensifyParams::frame_stride = 1

Per-frame stride when subsampling RTABMap frames.

1 = use every frame, 2 = every other, etc. Use this to bound runtime on dense capture sessions.

Definition at line 44 of file densify.hpp.

◆ geometric_consistency

bool reusex::geometry::DensifyParams::geometric_consistency = true

Geometric consistency between neighboring depth maps.

Slower but produces cleaner output.

Definition at line 48 of file densify.hpp.

◆ gpu_index

int reusex::geometry::DensifyParams::gpu_index = -2

CUDA device selection for PatchMatch depth-map estimation.

-2 = force CPU PatchMatch (safest, no CUDA init needed) -1 = let OpenMVS pick the best GPU >=0 = use the specified CUDA device index Default is -2 because some build environments expose CUDA at link time but cuInit() fails at runtime; the in-process MVS then crashes during depth-map estimation. Override with –gpu-index 0 (or -1) on a machine with a working CUDA runtime to get the GPU PatchMatch.

Definition at line 58 of file densify.hpp.

◆ max_fuse_points

int reusex::geometry::DensifyParams::max_fuse_points = 0

Cap on the number of points kept after fusion (OPTDENSE.nMaxPointsFuse).

0 = unlimited. Setting this throttles the final output size.

Definition at line 97 of file densify.hpp.

◆ max_resolution

int reusex::geometry::DensifyParams::max_resolution = 2000

Upper bound on max(width, height) for any image.

Larger images are downsampled until they fit. Smaller is faster but loses detail.

Definition at line 32 of file densify.hpp.

◆ max_threads

int reusex::geometry::DensifyParams::max_threads = 0

Maximum concurrent OpenMP threads used during depth-map estimation.

0 = let OpenMVS pick (typically all CPU cores). The dominant memory driver is concurrent PatchMatch — each worker holds image pyramids, candidate depth/normal buffers, and neighbor-view caches in RAM. Set to a small number (e.g. 2 or 4) on memory-constrained machines.

Definition at line 65 of file densify.hpp.

◆ min_resolution

int reusex::geometry::DensifyParams::min_resolution = 640

Lower bound on max(width, height). Images below this are not used.

Definition at line 35 of file densify.hpp.

◆ num_views

int reusex::geometry::DensifyParams::num_views = 4

Number of neighbor views considered per image during depth-map estimation.

0 = all calibrated images.

Definition at line 39 of file densify.hpp.

◆ outlier_filter

bool reusex::geometry::DensifyParams::outlier_filter = true

Apply PCL's statistical outlier removal to the merged output after fusion.

Drops local statistical outliers but is not aggressive enough to catch far-outlier patches (groups of bad points that have each other as neighbours).

Definition at line 71 of file densify.hpp.

◆ outlier_mean_k

int reusex::geometry::DensifyParams::outlier_mean_k = 50

Definition at line 72 of file densify.hpp.

◆ outlier_stddev_thresh

double reusex::geometry::DensifyParams::outlier_stddev_thresh = 2.0

Definition at line 73 of file densify.hpp.

◆ output_name

std::string reusex::geometry::DensifyParams::output_name = "dense"

Name to save the dense point cloud under in ProjectDB.

Definition at line 18 of file densify.hpp.

◆ resolution_level

int reusex::geometry::DensifyParams::resolution_level = 1

0 = full image resolution, 1 = half, 2 = quarter, ...

Definition at line 28 of file densify.hpp.

◆ seed_cloud_name

std::string reusex::geometry::DensifyParams::seed_cloud_name = "cloud"

Source LiDAR cloud (name in ProjectDB) used to seed PatchMatch and the downstream 3D-point views.

Empty disables seeding.

Definition at line 22 of file densify.hpp.

◆ seed_max_points

int reusex::geometry::DensifyParams::seed_max_points = 100'000

Sub-sample stride when copying the seed cloud (uniform).

Definition at line 25 of file densify.hpp.


The documentation for this struct was generated from the following file: