ReUseX
0.0.5
3D Point Cloud Processing for Building Reuse
Toggle main menu visibility
Loading...
Searching...
No Matches
quality_metrics.hpp
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: 2025 Povl Filip Sonne-Frederiksen
2
//
3
// SPDX-License-Identifier: GPL-3.0-or-later
4
5
#pragma once
6
#include "reusex/types.hpp"
7
8
#include <Eigen/Core>
9
10
#include <cstdint>
11
#include <string>
12
#include <vector>
13
14
namespace
reusex::geometry
{
15
17
struct
PlaneQuality
{
18
uint32_t
label
= 0;
19
std::size_t
point_count
= 0;
20
double
rms
= 0.0;
21
double
p90
= 0.0;
22
Eigen::Vector3d
normal
= Eigen::Vector3d::Zero();
23
Eigen::Vector3d
centroid
= Eigen::Vector3d::Zero();
24
};
25
37
struct
QualityReport
{
38
std::size_t
total_points
= 0;
39
std::size_t
labeled_points
= 0;
40
std::vector<PlaneQuality>
planes
;
41
42
double
flatness_rms
= 0.0;
43
double
flatness_rms_max
= 0.0;
44
double
thickness_p90
= 0.0;
45
46
[[nodiscard]] std::string
to_json
(
int
indent = 2)
const
;
47
};
48
49
struct
QualityMetricsOptions
{
51
std::size_t
min_points
= 100;
52
};
53
62
QualityReport
compute_plane_quality
(
const
Cloud
&cloud,
const
CloudL
&labels,
63
const
QualityMetricsOptions
&options = {});
64
65
}
// namespace reusex::geometry
reusex::geometry
Definition
visual_observer.hpp:33
reusex::geometry::compute_plane_quality
QualityReport compute_plane_quality(const Cloud &cloud, const CloudL &labels, const QualityMetricsOptions &options={})
Compute per-plane flatness/thickness quality metrics.
reusex::Cloud
pcl::PointCloud< PointT > Cloud
Definition
point_types.hpp:27
reusex::CloudL
pcl::PointCloud< LabelT > CloudL
Definition
point_types.hpp:35
reusex::geometry::PlaneQuality
Quality statistics for a single detected plane.
Definition
quality_metrics.hpp:17
reusex::geometry::PlaneQuality::rms
double rms
RMS point-to-plane residual [m].
Definition
quality_metrics.hpp:20
reusex::geometry::PlaneQuality::p90
double p90
90th percentile of |residual| [m]
Definition
quality_metrics.hpp:21
reusex::geometry::PlaneQuality::label
uint32_t label
Definition
quality_metrics.hpp:18
reusex::geometry::PlaneQuality::centroid
Eigen::Vector3d centroid
Definition
quality_metrics.hpp:23
reusex::geometry::PlaneQuality::normal
Eigen::Vector3d normal
Definition
quality_metrics.hpp:22
reusex::geometry::PlaneQuality::point_count
std::size_t point_count
Definition
quality_metrics.hpp:19
reusex::geometry::QualityMetricsOptions
Definition
quality_metrics.hpp:49
reusex::geometry::QualityMetricsOptions::min_points
std::size_t min_points
Planes supported by fewer points are excluded from the report.
Definition
quality_metrics.hpp:51
reusex::geometry::QualityReport
Ground-truth-free reconstruction quality report.
Definition
quality_metrics.hpp:37
reusex::geometry::QualityReport::labeled_points
std::size_t labeled_points
points with plane label > 0
Definition
quality_metrics.hpp:39
reusex::geometry::QualityReport::planes
std::vector< PlaneQuality > planes
Definition
quality_metrics.hpp:40
reusex::geometry::QualityReport::to_json
std::string to_json(int indent=2) const
reusex::geometry::QualityReport::total_points
std::size_t total_points
Definition
quality_metrics.hpp:38
reusex::geometry::QualityReport::flatness_rms
double flatness_rms
point-weighted mean of per-plane RMS [m]
Definition
quality_metrics.hpp:42
reusex::geometry::QualityReport::flatness_rms_max
double flatness_rms_max
worst per-plane RMS [m]
Definition
quality_metrics.hpp:43
reusex::geometry::QualityReport::thickness_p90
double thickness_p90
point-weighted mean of per-plane p90 [m]
Definition
quality_metrics.hpp:44
libs
reusex
include
reconstruction
quality_metrics.hpp
Generated by
1.17.0