Does Screened Poisson Reconstruction use N-1 CPU threads?

If I’m reading the debug/verbose output correctly, it looks like this stage explicitly takes N-1 CPU threads. In my instance, I have 8 threads and have not specified a --max-concurrency value, so 8 threads should be used for all stages that support multithreading.

However, the Screened Poisson Reconstruction always seems to use N-1 threads, or N-1 whatever I set for --max-concurrency.

Display issue, or actually not using them all?

root@GreenMachine:/code# ./ --verbose --debug --use-hybrid-bundle-adjustment --pc-classify --pc-rectify --time --mesh-octree-depth 14 --pc-ept --pc-las
ERROR 4: Unable to open EPSG support file gcs.csv. Try setting the GDAL_DATA environment variable to point to the directory containing EPSG csv files.
[INFO] Initializing ODM - Wed Feb 24 22:08:27 2021
[INFO] ==============
[INFO] build_overviews: False
[INFO] camera_lens: auto
[INFO] cameras: {}
[INFO] crop: 3
[INFO] debug: True
[INFO] dem_decimation: 1
[INFO] dem_euclidean_map: False
[INFO] dem_gapfill_steps: 3
[INFO] dem_resolution: 5
[INFO] depthmap_resolution: 640
[INFO] dsm: False
[INFO] dtm: False
[INFO] end_with: odm_report
[INFO] fast_orthophoto: False
[INFO] feature_quality: high
[INFO] feature_type: sift
[INFO] force_gps: False
[INFO] gcp: None
[INFO] geo: None
[INFO] gps_accuracy: 10
[INFO] ignore_gsd: False
[INFO] matcher_distance: 0
[INFO] matcher_neighbors: 8
[INFO] matcher_type: flann
[INFO] max_concurrency: 8
[INFO] merge: all
[INFO] mesh_octree_depth: 14
[INFO] mesh_size: 200000
[INFO] min_num_features: 8000
[INFO] name: code
[INFO] optimize_disk_space: False
[INFO] orthophoto_compression: DEFLATE
[INFO] orthophoto_cutline: False
[INFO] orthophoto_no_tiled: False
[INFO] orthophoto_png: False
[INFO] orthophoto_resolution: 5
[INFO] pc_classify: True
[INFO] pc_csv: False
[INFO] pc_ept: True
[INFO] pc_filter: 2.5
[INFO] pc_las: True
[INFO] pc_quality: medium
[INFO] pc_rectify: True
[INFO] pc_sample: 0
[INFO] primary_band: auto
[INFO] project_path: /
[INFO] radiometric_calibration: none
[INFO] rerun: None
[INFO] rerun_all: False
[INFO] rerun_from: None
[INFO] resize_to: 2048
[INFO] skip_3dmodel: False
[INFO] skip_band_alignment: False
[INFO] skip_report: False
[INFO] sm_cluster: None
[INFO] smrf_scalar: 1.25
[INFO] smrf_slope: 0.15
[INFO] smrf_threshold: 0.5
[INFO] smrf_window: 18.0
[INFO] split: 999999
[INFO] split_image_groups: None
[INFO] split_overlap: 150
[INFO] texturing_data_term: gmi
[INFO] texturing_outlier_removal_type: gauss_clamping
[INFO] texturing_skip_global_seam_leveling: False
[INFO] texturing_skip_local_seam_leveling: False
[INFO] texturing_tone_mapping: none
[INFO] tiles: False
[INFO] time: True
[INFO] use_3dmesh: False
[INFO] use_exif: False
[INFO] use_fixed_camera_params: False
[INFO] use_hybrid_bundle_adjustment: True
[INFO] verbose: True
[INFO] ==============
[INFO] Running dataset stage
[INFO] Loading dataset from: /code/images
[INFO] Loading images database: /code/images.json
[INFO] Found 23 usable images
[INFO] Coordinates file already exist: /code/odm_georeferencing/coords.txt
[INFO] Parsing SRS header: WGS84 UTM 18N
[INFO] Finished dataset stage
[INFO] Running split stage
[INFO] Normal dataset, will process all at once.
[INFO] Finished split stage
[INFO] Running merge stage
[INFO] Normal dataset, nothing to merge.
[INFO] Finished merge stage
[INFO] Running opensfm stage
[WARNING] /code/opensfm/image_list.txt already exists, not rerunning OpenSfM setup
[WARNING] Detect features already done: /code/opensfm/features exists
[WARNING] Match features already done: /code/opensfm/matches exists
[WARNING] Found a valid OpenSfM tracks file in: /code/opensfm/tracks.csv
[WARNING] Found a valid OpenSfM reconstruction file in: /code/opensfm/reconstruction.json
[INFO] Already extracted cameras
[WARNING] Negative GSD estimated, this might indicate a flipped Z-axis.
[INFO] Undistorting /code/opensfm …
[WARNING] Already undistorted (nominal)
[WARNING] Found a valid OpenSfM NVM reconstruction file in: /code/opensfm/undistorted/reconstruction.nvm
[WARNING] Will skip exporting /code/opensfm/geocoords_transformation.txt
[INFO] Export reconstruction stats
[WARNING] Found existing reconstruction stats /code/opensfm/stats/stats.json
[INFO] Finished opensfm stage
[INFO] Running openmvs stage
[WARNING] Found a valid OpenMVS reconstruction file in: /code/opensfm/undistorted/openmvs/scene_dense_dense_filtered.ply
[INFO] Finished openmvs stage
[INFO] Running odm_filterpoints stage
[WARNING] Found a valid point cloud file in: /code/odm_filterpoints/point_cloud.ply
[INFO] Finished odm_filterpoints stage
[INFO] Running odm_meshing stage
[INFO] Writing ODM Mesh file in: /code/odm_meshing/odm_mesh.ply
[INFO] running /code/SuperBuild/src/PoissonRecon/Bin/Linux/PoissonRecon --in /code/odm_filterpoints/point_cloud.ply --out /code/odm_meshing/odm_mesh.dirty.ply --depth 14 --pointWeight 4.0 --samplesPerNode 1.0 --threads 7 --linearFit --verbose

** Running Screened Poisson Reconstruction (Version 10.02) **

    --in /code/odm_filterpoints/point_cloud.ply
    --depth 14
    --out /code/odm_meshing/odm_mesh.dirty.ply
    --samplesPerNode 1.000000
    --pointWeight 4.000000
    --threads 7

Good eye, we purposefully set the threads to N -1 because… during testing we noticed that using all the threads the program would sometimes hang at random!


Thanks! I was playing around with stitching stuff from my TeraCube One phone:

The accuracy of the reconstruction is… wow.

1 Like

The wedding photo point cloud is adorbs.


Haha, thanks! I’m amazed by how accurately it portrayed the objects it imaged. The sensor on this phone is not fantastic by any means…

If only I had more RAM so I could crank the processing settings more… As it was, I couldn’t complete the point cloud filtering/mesh decimation stage. All 28GB of RAM for WSL2 + about 24GB of SWAP out to my USB HDD… Not fun.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.