ReUseX
0.0.5
3D Point Cloud Processing for Building Reuse
Toggle main menu visibility
Loading...
Searching...
No Matches
segment_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.hpp"
7
#include <atomic>
8
#include <map>
9
#include <set>
10
11
namespace
reusex::geometry
{
12
20
struct
SegmentInstancesRequest
{
22
CloudConstPtr
cloud
;
23
25
CloudLConstPtr
semantic_labels
;
26
28
float
cluster_tolerance
= 0.5F;
29
31
int
min_cluster_size
= 50;
32
34
int
max_cluster_size
= 1000000;
35
42
std::set<uint32_t>
labels_to_process
;
43
45
const
std::atomic_bool *
cancel_token
=
nullptr
;
46
};
47
51
struct
SegmentInstancesResult
{
54
CloudLPtr
instance_labels
;
55
57
std::map<uint32_t, uint32_t>
instance_to_semantic
;
58
60
std::map<uint32_t, size_t>
instance_sizes
;
61
};
62
82
auto
segment_instances
(
const
SegmentInstancesRequest
&request)
83
->
SegmentInstancesResult
;
84
90
auto
segment_instances_impl
(
const
SegmentInstancesRequest
&request)
91
->
SegmentInstancesResult
;
92
93
}
// namespace reusex::geometry
reusex::geometry
Definition
processing_observer.hpp:19
reusex::geometry::segment_instances
auto segment_instances(const SegmentInstancesRequest &request) -> SegmentInstancesResult
Segment point cloud into instances using Euclidean clustering.
reusex::geometry::segment_instances_impl
auto segment_instances_impl(const SegmentInstancesRequest &request) -> SegmentInstancesResult
Implementation function for segment_instances.
reusex::CloudLPtr
typename CloudL::Ptr CloudLPtr
Definition
types.hpp:35
reusex::CloudLConstPtr
typename CloudL::ConstPtr CloudLConstPtr
Definition
types.hpp:36
reusex::CloudConstPtr
typename Cloud::ConstPtr CloudConstPtr
Definition
types.hpp:28
reusex::geometry::SegmentInstancesRequest
Request structure for instance segmentation via Euclidean clustering.
Definition
segment_instances.hpp:20
reusex::geometry::SegmentInstancesRequest::cancel_token
const std::atomic_bool * cancel_token
Optional cancellation token for long-running operations.
Definition
segment_instances.hpp:45
reusex::geometry::SegmentInstancesRequest::cluster_tolerance
float cluster_tolerance
Euclidean distance threshold for clustering (meters).
Definition
segment_instances.hpp:28
reusex::geometry::SegmentInstancesRequest::labels_to_process
std::set< uint32_t > labels_to_process
Optional filter for specific semantic labels.
Definition
segment_instances.hpp:42
reusex::geometry::SegmentInstancesRequest::min_cluster_size
int min_cluster_size
Minimum points per instance cluster.
Definition
segment_instances.hpp:31
reusex::geometry::SegmentInstancesRequest::cloud
CloudConstPtr cloud
Input point cloud (spatial positions).
Definition
segment_instances.hpp:22
reusex::geometry::SegmentInstancesRequest::semantic_labels
CloudLConstPtr semantic_labels
Semantic class labels (same size as cloud).
Definition
segment_instances.hpp:25
reusex::geometry::SegmentInstancesRequest::max_cluster_size
int max_cluster_size
Maximum points per instance cluster.
Definition
segment_instances.hpp:34
reusex::geometry::SegmentInstancesResult
Result structure for instance segmentation.
Definition
segment_instances.hpp:51
reusex::geometry::SegmentInstancesResult::instance_to_semantic
std::map< uint32_t, uint32_t > instance_to_semantic
Mapping from instance ID to semantic class ID.
Definition
segment_instances.hpp:57
reusex::geometry::SegmentInstancesResult::instance_labels
CloudLPtr instance_labels
Instance-labeled cloud (same size as input cloud) Labels are sequential: 1, 2, 3, ....
Definition
segment_instances.hpp:54
reusex::geometry::SegmentInstancesResult::instance_sizes
std::map< uint32_t, size_t > instance_sizes
Mapping from instance ID to point count.
Definition
segment_instances.hpp:60
libs
reusex
include
geometry
segment_instances.hpp
Generated by
1.17.0