ReUseX
0.0.5
3D Point Cloud Processing for Building Reuse
Toggle main menu visibility
Loading...
Searching...
No Matches
reconcile_instances.hpp
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: 2025 Povl Filip Sonne-Frederiksen
2
// SPDX-License-Identifier: GPL-3.0-or-later
3
4
#pragma once
5
6
#include "reusex/types/point_types.hpp"
7
8
#include <cstdint>
9
#include <functional>
10
#include <map>
11
#include <string>
12
#include <vector>
13
14
namespace
reusex::geometry
{
15
20
struct
ReconciledInstance
{
21
uint32_t
instance_id
= 0;
22
int
semantic_class
= -1;
23
int
point_count
= 0;
24
std::string
guid
;
25
bool
carried_over
=
false
;
26
uint32_t
matched_old_id
= 0;
27
};
28
30
struct
OrphanedInstance
{
31
uint32_t
instance_id
= 0;
32
int
semantic_class
= -1;
33
std::string
guid
;
34
double
best_overlap
= 0.0;
35
};
36
39
struct
ReconcileResult
{
40
std::vector<ReconciledInstance>
instances
;
41
std::vector<OrphanedInstance>
orphaned_old
;
42
size_t
matched_count
= 0;
43
size_t
fresh_count
= 0;
44
};
45
47
struct
PriorInstance
{
48
uint32_t
instance_id
= 0;
49
int
semantic_class
= -1;
50
std::string
guid
;
51
};
52
54
struct
ReconcileOptions
{
57
double
min_overlap
= 0.5;
59
unsigned
int
seed
= 42;
60
};
61
83
ReconcileResult
84
reconcile_instance_identities
(
const
CloudL
*old_labels,
85
const
CloudL
&new_labels,
86
const
std::vector<PriorInstance> &prior,
87
const
std::map<uint32_t, uint32_t> &new_semantic,
88
const
std::map<uint32_t, size_t> &new_sizes,
89
const
std::function<std::string()> &make_guid,
90
const
ReconcileOptions
&opts = {});
91
92
}
// namespace reusex::geometry
reusex::geometry
Definition
visual_observer.hpp:33
reusex::geometry::reconcile_instance_identities
ReconcileResult reconcile_instance_identities(const CloudL *old_labels, const CloudL &new_labels, const std::vector< PriorInstance > &prior, const std::map< uint32_t, uint32_t > &new_semantic, const std::map< uint32_t, size_t > &new_sizes, const std::function< std::string()> &make_guid, const ReconcileOptions &opts={})
Carry stable GUIDs across an instance-cloud regeneration.
reusex::CloudL
pcl::PointCloud< LabelT > CloudL
Definition
point_types.hpp:35
reusex::geometry::OrphanedInstance
A previous instance whose GUID could not be matched to any new instance.
Definition
reconcile_instances.hpp:30
reusex::geometry::OrphanedInstance::instance_id
uint32_t instance_id
Definition
reconcile_instances.hpp:31
reusex::geometry::OrphanedInstance::best_overlap
double best_overlap
Best mutual overlap seen (for diagnostics).
Definition
reconcile_instances.hpp:34
reusex::geometry::OrphanedInstance::guid
std::string guid
Definition
reconcile_instances.hpp:33
reusex::geometry::OrphanedInstance::semantic_class
int semantic_class
Definition
reconcile_instances.hpp:32
reusex::geometry::PriorInstance
Prior instance state (typically loaded from ProjectDB::instances()).
Definition
reconcile_instances.hpp:47
reusex::geometry::PriorInstance::guid
std::string guid
Definition
reconcile_instances.hpp:50
reusex::geometry::PriorInstance::instance_id
uint32_t instance_id
Definition
reconcile_instances.hpp:48
reusex::geometry::PriorInstance::semantic_class
int semantic_class
Definition
reconcile_instances.hpp:49
reusex::geometry::ReconcileOptions
Options controlling instance identity reconciliation.
Definition
reconcile_instances.hpp:54
reusex::geometry::ReconcileOptions::seed
unsigned int seed
Fixed seed forwarded to GUID generation callers (not used internally).
Definition
reconcile_instances.hpp:59
reusex::geometry::ReconcileOptions::min_overlap
double min_overlap
Minimum mutual point-set overlap (fraction of the smaller instance) for a new instance to inherit an ...
Definition
reconcile_instances.hpp:57
reusex::geometry::ReconcileResult
Result of reconciling a freshly-segmented instance set against a previous one.
Definition
reconcile_instances.hpp:39
reusex::geometry::ReconcileResult::instances
std::vector< ReconciledInstance > instances
Definition
reconcile_instances.hpp:40
reusex::geometry::ReconcileResult::matched_count
size_t matched_count
Definition
reconcile_instances.hpp:42
reusex::geometry::ReconcileResult::fresh_count
size_t fresh_count
Definition
reconcile_instances.hpp:43
reusex::geometry::ReconcileResult::orphaned_old
std::vector< OrphanedInstance > orphaned_old
Old GUIDs with no match.
Definition
reconcile_instances.hpp:41
reusex::geometry::ReconciledInstance
A single reconciled instance: its (new) label value, the semantic class it belongs to,...
Definition
reconcile_instances.hpp:20
reusex::geometry::ReconciledInstance::guid
std::string guid
Definition
reconcile_instances.hpp:24
reusex::geometry::ReconciledInstance::point_count
int point_count
Definition
reconcile_instances.hpp:23
reusex::geometry::ReconciledInstance::semantic_class
int semantic_class
Definition
reconcile_instances.hpp:22
reusex::geometry::ReconciledInstance::matched_old_id
uint32_t matched_old_id
Old instance_id matched (0 = none).
Definition
reconcile_instances.hpp:26
reusex::geometry::ReconciledInstance::carried_over
bool carried_over
Definition
reconcile_instances.hpp:25
reusex::geometry::ReconciledInstance::instance_id
uint32_t instance_id
Definition
reconcile_instances.hpp:21
libs
reusex
include
segmentation
reconcile_instances.hpp
Generated by
1.17.0