Skip to content

CyberbuildLab/pcd-bim-matching-confidence

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

126 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IFC Model and Point Cloud Matching Confidence Evaluation

Overview

This code provides a unified framework for evaluating the geometric matching confidence between an IFC model and a point cloud. It calculates confidence indices for each element, quantifying how well the BIM model is explained by the point cloud data.

Confidence Metrics

  • Icoverage
  • Idistance
  • Idistribution
I_confidence = I_coverage × I_distance × I_distribution

Features

  • Reads IFC and point cloud files (PLY format).
  • Filters elements by IFC type.
  • Computes and saves confidence metrics for each element.
  • Outputs CSV reports, processed point clouds with scalar fields.
  • Supports visualization options for debugging and analysis (normals, coverage, distributions, distances).

Prerequisites

Install dependencies:

pip install -r requirements.txt

Usage

Command-Line Arguments

python main.py <input_model_ifc_path> <input_model_pcd_path> [--input_mesh_sampling_size <float>] [--input_pcd_voxel_sampling_size <float>]

Arguments:

  • <input_model_ifc_path>: Path to the IFC file (e.g., input/Sample.ifc)
  • <input_model_pcd_path>: Path to the point cloud file (e.g., input/Sample.ply)
  • --input_mesh_sampling_size: (Optional) Mesh sampling size (default: 0.02)
  • --input_pcd_voxel_sampling_size: (Optional) Point cloud voxel sampling size (default: 0.01)

Output Files

Results are saved in output/<pcd_filename>_bim_<mesh_sampling_size>_scan_<pcd_voxel_sampling_size>/:

  • Processed element meshes and point clouds (objects/ subfolder)
  • Combined point cloud with scalar fields (combined_pcd_with_scalars.ply)
  • Confidence report (<pcd_filename>_confidence_report.csv)
  • Filtered mesh and point cloud files
  • IFC file with confidence metrics (*_with_confidence.ifc)

Configuration

Edit the following parameters in main.py to customize analysis:

  • filtered_element_types: IFC element types to analyze (default: ['IfcWall'])
  • delta: Distance threshold for matching (default: 0.05)
  • mesh_sampling_size, pcd_voxel_sampling_size: Sampling densities
  • Visualization flags: DRAW_COURSE_MATCHING, DRAW_FINE_MATCHING, DRAW_ELEMENTS, DRAW_NORMALS, DRAW_COVERAGE, DRAW_DISTRIBUTIONS, DRAW_DISTANCES

Example: Filtering IFC Elements

filtered_element_types = ['IfcWall', 'IfcColumn']

Visualization Options

Set any DRAW_* flag to True in main.py to enable interactive Open3D visualizations for debugging or analysis (normals, coverage, distributions, distances, etc).

Output Structure

output/
	<pcd_filename>_bim_<mesh_sampling_size>_scan_<pcd_voxel_sampling_size>/
		combined_pcd_with_scalars.ply
		<ifc_filename>_mesh.ply
		<pcd_filename>_pcd.ply
		<pcd_filename>_visible_mesh_pcd.ply
		<pcd_filename>_confidence_report.csv
		<ifc_filename>_with_confidence.ifc
		objects/
			<ElementType>_<ElementName>_mesh.ply
			<ElementType>_<ElementName>_pcd.ply
			<ElementType>_<ElementName>_visible_mesh_pcd.ply

Licensing

Released under the Apache 2.0 License (see LICENSE.md).

Contributors

The work and code were contributed by Ahmet Ersoz and Frédéric Bosché. We would also like to aknowledge initial work conducted by Shirin Malihi.

Citation

If you use this work, please cite:

@article{pcd_bim_matching_confidence,
title = {Evaluating confidence in geometric matching between 3D point clouds and BIM models by integrating coverage, distance, and distribution metrics},
journal = {Automation in Construction},
volume = {181},
pages = {106636},
year = {2026},
issn = {0926-5805},
doi = {https://doi.org/10.1016/j.autcon.2025.106636},
url = {https://www.sciencedirect.com/science/article/pii/S0926580525006764},
author = {Ahmet Bahaddin Ersoz and Frédéric Bosché},
}

Made with contrib.rocks

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages