Open3D (C++ API)  0.16.0
PointCloud.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// The MIT License (MIT)
5//
6// Copyright (c) 2018-2021 www.open3d.org
7//
8// Permission is hereby granted, free of charge, to any person obtaining a copy
9// of this software and associated documentation files (the "Software"), to deal
10// in the Software without restriction, including without limitation the rights
11// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12// copies of the Software, and to permit persons to whom the Software is
13// furnished to do so, subject to the following conditions:
14//
15// The above copyright notice and this permission notice shall be included in
16// all copies or substantial portions of the Software.
17//
18// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
24// IN THE SOFTWARE.
25// ----------------------------------------------------------------------------
26
27#pragma once
28
29#include <unordered_map>
30
31#include "open3d/core/Tensor.h"
32
33namespace open3d {
34namespace t {
35namespace geometry {
36namespace kernel {
37namespace pointcloud {
38
39void Unproject(const core::Tensor& depth,
40 utility::optional<std::reference_wrapper<const core::Tensor>>
41 image_colors,
42 core::Tensor& points,
43 utility::optional<std::reference_wrapper<core::Tensor>> colors,
44 const core::Tensor& intrinsics,
45 const core::Tensor& extrinsics,
46 float depth_scale,
47 float depth_max,
48 int64_t stride);
49
50void Project(
51 core::Tensor& depth,
52 utility::optional<std::reference_wrapper<core::Tensor>> image_colors,
53 const core::Tensor& points,
54 utility::optional<std::reference_wrapper<const core::Tensor>> colors,
55 const core::Tensor& intrinsics,
56 const core::Tensor& extrinsics,
57 float depth_scale,
58 float depth_max);
59
60void GetPointMaskWithinAABB(const core::Tensor& points,
61 const core::Tensor& min_bound,
62 const core::Tensor& max_bound,
63 core::Tensor& mask);
64
66 const core::Tensor& center,
67 const core::Tensor& rotation,
68 const core::Tensor& extent,
69 core::Tensor& mask);
70
71void UnprojectCPU(
72 const core::Tensor& depth,
73 utility::optional<std::reference_wrapper<const core::Tensor>>
74 image_colors,
76 utility::optional<std::reference_wrapper<core::Tensor>> colors,
77 const core::Tensor& intrinsics,
78 const core::Tensor& extrinsics,
79 float depth_scale,
80 float depth_max,
81 int64_t stride);
82
83void ProjectCPU(
84 core::Tensor& depth,
85 utility::optional<std::reference_wrapper<core::Tensor>> image_colors,
86 const core::Tensor& points,
87 utility::optional<std::reference_wrapper<const core::Tensor>> colors,
88 const core::Tensor& intrinsics,
89 const core::Tensor& extrinsics,
90 float depth_scale,
91 float depth_max);
92
94 const core::Tensor& min_bound,
95 const core::Tensor& max_bound,
96 core::Tensor& mask);
97
99 const core::Tensor& center,
100 const core::Tensor& rotation,
101 const core::Tensor& extent,
102 core::Tensor& mask);
103
105 const core::Tensor& normals,
106 const core::Tensor& indices,
107 const core::Tensor& counts,
108 core::Tensor& mask,
109 double angle_threshold);
110
111#ifdef BUILD_CUDA_MODULE
112void UnprojectCUDA(
113 const core::Tensor& depth,
114 utility::optional<std::reference_wrapper<const core::Tensor>>
115 image_colors,
117 utility::optional<std::reference_wrapper<core::Tensor>> colors,
118 const core::Tensor& intrinsics,
119 const core::Tensor& extrinsics,
120 float depth_scale,
121 float depth_max,
122 int64_t stride);
123
124void ProjectCUDA(
125 core::Tensor& depth,
126 utility::optional<std::reference_wrapper<core::Tensor>> image_colors,
127 const core::Tensor& points,
128 utility::optional<std::reference_wrapper<const core::Tensor>> colors,
129 const core::Tensor& intrinsics,
130 const core::Tensor& extrinsics,
131 float depth_scale,
132 float depth_max);
133
134void GetPointMaskWithinAABBCUDA(const core::Tensor& points,
135 const core::Tensor& min_bound,
136 const core::Tensor& max_bound,
137 core::Tensor& mask);
138
139void GetPointMaskWithinOBBCUDA(const core::Tensor& points,
140 const core::Tensor& center,
141 const core::Tensor& rotation,
142 const core::Tensor& extent,
143 core::Tensor& mask);
144
145void ComputeBoundaryPointsCUDA(const core::Tensor& points,
146 const core::Tensor& normals,
147 const core::Tensor& indices,
148 const core::Tensor& counts,
149 core::Tensor& mask,
150 double angle_threshold);
151#endif
152
154 core::Tensor& covariances,
155 const double& radius,
156 const int64_t& max_nn);
157
159 core::Tensor& covariances,
160 const int64_t& max_nn);
161
163 core::Tensor& covariances,
164 const double& radius);
165
166void EstimateNormalsFromCovariancesCPU(const core::Tensor& covariances,
167 core::Tensor& normals,
168 const bool has_normals);
169
171 const core::Tensor& normals,
172 const core::Tensor& colors,
173 core::Tensor& color_gradient,
174 const double& radius,
175 const int64_t& max_nn);
176
178 const core::Tensor& normals,
179 const core::Tensor& colors,
180 core::Tensor& color_gradient,
181 const int64_t& max_nn);
182
184 const core::Tensor& normals,
185 const core::Tensor& colors,
186 core::Tensor& color_gradient,
187 const double& radius);
188
189#ifdef BUILD_CUDA_MODULE
190void EstimateCovariancesUsingHybridSearchCUDA(const core::Tensor& points,
191 core::Tensor& covariances,
192 const double& radius,
193 const int64_t& max_nn);
194
195void EstimateCovariancesUsingKNNSearchCUDA(const core::Tensor& points,
196 core::Tensor& covariances,
197 const int64_t& max_nn);
198
199void EstimateCovariancesUsingRadiusSearchCUDA(const core::Tensor& points,
200 core::Tensor& covariances,
201 const double& radius);
202
203void EstimateNormalsFromCovariancesCUDA(const core::Tensor& covariances,
204 core::Tensor& normals,
205 const bool has_normals);
206
207void EstimateColorGradientsUsingHybridSearchCUDA(const core::Tensor& points,
208 const core::Tensor& normals,
209 const core::Tensor& colors,
210 core::Tensor& color_gradient,
211 const double& radius,
212 const int64_t& max_nn);
213
214void EstimateColorGradientsUsingKNNSearchCUDA(const core::Tensor& points,
215 const core::Tensor& normals,
216 const core::Tensor& colors,
217 core::Tensor& color_gradient,
218 const int64_t& max_nn);
219
220void EstimateColorGradientsUsingRadiusSearchCUDA(const core::Tensor& points,
221 const core::Tensor& normals,
222 const core::Tensor& colors,
223 core::Tensor& color_gradient,
224 const double& radius);
225#endif
226
227} // namespace pointcloud
228} // namespace kernel
229} // namespace geometry
230} // namespace t
231} // namespace open3d
size_t stride
Definition: TriangleMeshBuffers.cpp:184
Definition: Tensor.h:51
Definition: Optional.h:278
bool has_normals
Definition: FilePCD.cpp:80
int points
Definition: FilePCD.cpp:73
void EstimateCovariancesUsingHybridSearchCPU(const core::Tensor &points, core::Tensor &covariances, const double &radius, const int64_t &max_nn)
Definition: PointCloudImpl.h:418
void GetPointMaskWithinAABB(const core::Tensor &points, const core::Tensor &min_bound, const core::Tensor &max_bound, core::Tensor &mask)
Definition: PointCloud.cpp:119
void Project(core::Tensor &depth, utility::optional< std::reference_wrapper< core::Tensor > > image_colors, const core::Tensor &points, utility::optional< std::reference_wrapper< const core::Tensor > > colors, const core::Tensor &intrinsics, const core::Tensor &extrinsics, float depth_scale, float depth_max)
Definition: PointCloud.cpp:81
void EstimateCovariancesUsingRadiusSearchCPU(const core::Tensor &points, core::Tensor &covariances, const double &radius)
Definition: PointCloudImpl.h:468
void EstimateNormalsFromCovariancesCPU(const core::Tensor &covariances, core::Tensor &normals, const bool has_normals)
Definition: PointCloudImpl.h:835
void UnprojectCPU(const core::Tensor &depth, utility::optional< std::reference_wrapper< const core::Tensor > > image_colors, core::Tensor &points, utility::optional< std::reference_wrapper< core::Tensor > > colors, const core::Tensor &intrinsics, const core::Tensor &extrinsics, float depth_scale, float depth_max, int64_t stride)
Definition: PointCloudImpl.h:63
void GetPointMaskWithinAABBCPU(const core::Tensor &points, const core::Tensor &min_bound, const core::Tensor &max_bound, core::Tensor &mask)
Definition: PointCloudImpl.h:161
void ComputeBoundaryPointsCPU(const core::Tensor &points, const core::Tensor &normals, const core::Tensor &indices, const core::Tensor &counts, core::Tensor &mask, double angle_threshold)
Definition: PointCloudImpl.h:276
void EstimateColorGradientsUsingKNNSearchCPU(const core::Tensor &points, const core::Tensor &normals, const core::Tensor &colors, core::Tensor &color_gradient, const int64_t &max_nn)
Definition: PointCloudImpl.h:1041
void ProjectCPU(core::Tensor &depth, utility::optional< std::reference_wrapper< core::Tensor > > image_colors, const core::Tensor &points, utility::optional< std::reference_wrapper< const core::Tensor > > colors, const core::Tensor &intrinsics, const core::Tensor &extrinsics, float depth_scale, float depth_max)
Definition: PointCloudCPU.cpp:37
void GetPointMaskWithinOBB(const core::Tensor &points, const core::Tensor &center, const core::Tensor &rotation, const core::Tensor &extent, core::Tensor &mask)
void EstimateColorGradientsUsingRadiusSearchCPU(const core::Tensor &points, const core::Tensor &normals, const core::Tensor &colors, core::Tensor &color_gradient, const double &radius)
Definition: PointCloudImpl.h:1096
void GetPointMaskWithinOBBCPU(const core::Tensor &points, const core::Tensor &center, const core::Tensor &rotation, const core::Tensor &extent, core::Tensor &mask)
void EstimateColorGradientsUsingHybridSearchCPU(const core::Tensor &points, const core::Tensor &normals, const core::Tensor &colors, core::Tensor &color_gradient, const double &radius, const int64_t &max_nn)
Definition: PointCloudImpl.h:989
void Unproject(const core::Tensor &depth, utility::optional< std::reference_wrapper< const core::Tensor > > image_colors, core::Tensor &points, utility::optional< std::reference_wrapper< core::Tensor > > colors, const core::Tensor &intrinsics, const core::Tensor &extrinsics, float depth_scale, float depth_max, int64_t stride)
Definition: PointCloud.cpp:42
void EstimateCovariancesUsingKNNSearchCPU(const core::Tensor &points, core::Tensor &covariances, const int64_t &max_nn)
Definition: PointCloudImpl.h:517
Definition: PinholeCameraIntrinsic.cpp:35