Open3D (C++ API)  0.19.0
Loading...
Searching...
No Matches
PointCloud.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// Copyright (c) 2018-2024 www.open3d.org
5// SPDX-License-Identifier: MIT
6// ----------------------------------------------------------------------------
7
8#pragma once
9
10#include <optional>
11
12#include "open3d/core/Tensor.h"
13
14namespace open3d {
15namespace t {
16namespace geometry {
17namespace kernel {
18namespace pointcloud {
19
20void Unproject(
21 const core::Tensor& depth,
22 std::optional<std::reference_wrapper<const core::Tensor>> image_colors,
23 core::Tensor& points,
24 std::optional<std::reference_wrapper<core::Tensor>> colors,
25 const core::Tensor& intrinsics,
26 const core::Tensor& extrinsics,
27 float depth_scale,
28 float depth_max,
29 int64_t stride);
30
31void Project(core::Tensor& depth,
32 std::optional<std::reference_wrapper<core::Tensor>> image_colors,
33 const core::Tensor& points,
34 std::optional<std::reference_wrapper<const core::Tensor>> colors,
35 const core::Tensor& intrinsics,
36 const core::Tensor& extrinsics,
37 float depth_scale,
38 float depth_max);
39
40#ifdef BUILD_SYCL_MODULE
42void ProjectSYCL(
43 core::Tensor& depth,
44 std::optional<std::reference_wrapper<core::Tensor>> image_colors,
45 const core::Tensor& points,
46 std::optional<std::reference_wrapper<const core::Tensor>> colors,
47 const core::Tensor& intrinsics,
48 const core::Tensor& extrinsics,
49 float depth_scale,
50 float depth_max);
51#endif
52
53void GetPointMaskWithinAABB(const core::Tensor& points,
54 const core::Tensor& min_bound,
55 const core::Tensor& max_bound,
56 core::Tensor& mask);
57
58void GetPointMaskWithinOBB(const core::Tensor& points,
59 const core::Tensor& center,
60 const core::Tensor& rotation,
61 const core::Tensor& extent,
62 core::Tensor& mask);
63
64void UnprojectCPU(
65 const core::Tensor& depth,
66 std::optional<std::reference_wrapper<const core::Tensor>> image_colors,
67 core::Tensor& points,
68 std::optional<std::reference_wrapper<core::Tensor>> colors,
69 const core::Tensor& intrinsics,
70 const core::Tensor& extrinsics,
71 float depth_scale,
72 float depth_max,
73 int64_t stride);
74
75void ProjectCPU(
76 core::Tensor& depth,
77 std::optional<std::reference_wrapper<core::Tensor>> image_colors,
78 const core::Tensor& points,
79 std::optional<std::reference_wrapper<const core::Tensor>> colors,
80 const core::Tensor& intrinsics,
81 const core::Tensor& extrinsics,
82 float depth_scale,
83 float depth_max);
84
85void GetPointMaskWithinAABBCPU(const core::Tensor& points,
86 const core::Tensor& min_bound,
87 const core::Tensor& max_bound,
88 core::Tensor& mask);
89
90void GetPointMaskWithinOBBCPU(const core::Tensor& points,
91 const core::Tensor& center,
92 const core::Tensor& rotation,
93 const core::Tensor& extent,
94 core::Tensor& mask);
95
96void NormalizeNormalsCPU(core::Tensor& normals);
97
99 const core::Tensor& direction);
100
101void OrientNormalsTowardsCameraLocationCPU(const core::Tensor& points,
102 core::Tensor& normals,
103 const core::Tensor& camera);
104
105void ComputeBoundaryPointsCPU(const core::Tensor& points,
106 const core::Tensor& normals,
107 const core::Tensor& indices,
108 const core::Tensor& counts,
109 core::Tensor& mask,
110 double angle_threshold);
111
112#ifdef BUILD_SYCL_MODULE
113void UnprojectSYCL(
114 const core::Tensor& depth,
115 std::optional<std::reference_wrapper<const core::Tensor>> image_colors,
116 core::Tensor& points,
117 std::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 GetPointMaskWithinAABBSYCL(const core::Tensor& points,
125 const core::Tensor& min_bound,
126 const core::Tensor& max_bound,
127 core::Tensor& mask);
128
129void GetPointMaskWithinOBBSYCL(const core::Tensor& points,
130 const core::Tensor& center,
131 const core::Tensor& rotation,
132 const core::Tensor& extent,
133 core::Tensor& mask);
134
135void NormalizeNormalsSYCL(core::Tensor& normals);
136
137void OrientNormalsToAlignWithDirectionSYCL(core::Tensor& normals,
138 const core::Tensor& direction);
139
140void OrientNormalsTowardsCameraLocationSYCL(const core::Tensor& points,
141 core::Tensor& normals,
142 const core::Tensor& camera);
143
144void ComputeBoundaryPointsSYCL(const core::Tensor& points,
145 const core::Tensor& normals,
146 const core::Tensor& indices,
147 const core::Tensor& counts,
148 core::Tensor& mask,
149 double angle_threshold);
150#endif
151
152#ifdef BUILD_CUDA_MODULE
153void UnprojectCUDA(
154 const core::Tensor& depth,
155 std::optional<std::reference_wrapper<const core::Tensor>> image_colors,
156 core::Tensor& points,
157 std::optional<std::reference_wrapper<core::Tensor>> colors,
158 const core::Tensor& intrinsics,
159 const core::Tensor& extrinsics,
160 float depth_scale,
161 float depth_max,
162 int64_t stride);
163
164void ProjectCUDA(
165 core::Tensor& depth,
166 std::optional<std::reference_wrapper<core::Tensor>> image_colors,
167 const core::Tensor& points,
168 std::optional<std::reference_wrapper<const core::Tensor>> colors,
169 const core::Tensor& intrinsics,
170 const core::Tensor& extrinsics,
171 float depth_scale,
172 float depth_max);
173
174void GetPointMaskWithinAABBCUDA(const core::Tensor& points,
175 const core::Tensor& min_bound,
176 const core::Tensor& max_bound,
177 core::Tensor& mask);
178
179void GetPointMaskWithinOBBCUDA(const core::Tensor& points,
180 const core::Tensor& center,
181 const core::Tensor& rotation,
182 const core::Tensor& extent,
183 core::Tensor& mask);
184
185void NormalizeNormalsCUDA(core::Tensor& normals);
186
187void OrientNormalsToAlignWithDirectionCUDA(core::Tensor& normals,
188 const core::Tensor& direction);
189
190void OrientNormalsTowardsCameraLocationCUDA(const core::Tensor& points,
191 core::Tensor& normals,
192 const core::Tensor& camera);
193
194void ComputeBoundaryPointsCUDA(const core::Tensor& points,
195 const core::Tensor& normals,
196 const core::Tensor& indices,
197 const core::Tensor& counts,
198 core::Tensor& mask,
199 double angle_threshold);
200#endif
201
202void EstimateCovariancesUsingHybridSearchCPU(const core::Tensor& points,
203 core::Tensor& covariances,
204 const double& radius,
205 const int64_t& max_nn);
206
207void EstimateCovariancesUsingKNNSearchCPU(const core::Tensor& points,
208 core::Tensor& covariances,
209 const int64_t& max_nn);
210
211void EstimateCovariancesUsingRadiusSearchCPU(const core::Tensor& points,
212 core::Tensor& covariances,
213 const double& radius);
214
215void EstimateNormalsFromCovariancesCPU(const core::Tensor& covariances,
216 core::Tensor& normals,
217 const bool has_normals);
218
220 const core::Tensor& normals,
221 const core::Tensor& colors,
222 core::Tensor& color_gradient,
223 const double& radius,
224 const int64_t& max_nn);
225
226void EstimateColorGradientsUsingKNNSearchCPU(const core::Tensor& points,
227 const core::Tensor& normals,
228 const core::Tensor& colors,
229 core::Tensor& color_gradient,
230 const int64_t& max_nn);
231
233 const core::Tensor& normals,
234 const core::Tensor& colors,
235 core::Tensor& color_gradient,
236 const double& radius);
237
238#ifdef BUILD_SYCL_MODULE
240void EstimateColorGradientsUsingHybridSearchSYCL(const core::Tensor& points,
241 const core::Tensor& normals,
242 const core::Tensor& colors,
243 core::Tensor& color_gradient,
244 const double& radius,
245 const int64_t& max_nn);
246
248void EstimateColorGradientsUsingKNNSearchSYCL(const core::Tensor& points,
249 const core::Tensor& normals,
250 const core::Tensor& colors,
251 core::Tensor& color_gradient,
252 const int64_t& max_nn);
253
255void EstimateColorGradientsUsingRadiusSearchSYCL(const core::Tensor& points,
256 const core::Tensor& normals,
257 const core::Tensor& colors,
258 core::Tensor& color_gradient,
259 const double& radius);
260#endif
261
262#ifdef BUILD_CUDA_MODULE
263void EstimateCovariancesUsingHybridSearchCUDA(const core::Tensor& points,
264 core::Tensor& covariances,
265 const double& radius,
266 const int64_t& max_nn);
267
268void EstimateCovariancesUsingKNNSearchCUDA(const core::Tensor& points,
269 core::Tensor& covariances,
270 const int64_t& max_nn);
271
272void EstimateCovariancesUsingRadiusSearchCUDA(const core::Tensor& points,
273 core::Tensor& covariances,
274 const double& radius);
275
276void EstimateNormalsFromCovariancesCUDA(const core::Tensor& covariances,
277 core::Tensor& normals,
278 const bool has_normals);
279
280void EstimateColorGradientsUsingHybridSearchCUDA(const core::Tensor& points,
281 const core::Tensor& normals,
282 const core::Tensor& colors,
283 core::Tensor& color_gradient,
284 const double& radius,
285 const int64_t& max_nn);
286
287void EstimateColorGradientsUsingKNNSearchCUDA(const core::Tensor& points,
288 const core::Tensor& normals,
289 const core::Tensor& colors,
290 core::Tensor& color_gradient,
291 const int64_t& max_nn);
292
293void EstimateColorGradientsUsingRadiusSearchCUDA(const core::Tensor& points,
294 const core::Tensor& normals,
295 const core::Tensor& colors,
296 core::Tensor& color_gradient,
297 const double& radius);
298#endif
299
300#ifdef BUILD_SYCL_MODULE
302void EstimateCovariancesUsingHybridSearchSYCL(const core::Tensor& points,
303 core::Tensor& covariances,
304 const double& radius,
305 const int64_t& max_nn);
306
308void EstimateCovariancesUsingKNNSearchSYCL(const core::Tensor& points,
309 core::Tensor& covariances,
310 const int64_t& max_nn);
311
313void EstimateCovariancesUsingRadiusSearchSYCL(const core::Tensor& points,
314 core::Tensor& covariances,
315 const double& radius);
316
318void EstimateNormalsFromCovariancesSYCL(const core::Tensor& covariances,
319 core::Tensor& normals,
320 const bool has_normals);
321#endif
322
323} // namespace pointcloud
324} // namespace kernel
325} // namespace geometry
326} // namespace t
327} // namespace open3d
double t
Definition SurfaceReconstructionPoisson.cpp:172
size_t stride
Definition TriangleMeshBuffers.cpp:163
bool has_normals
Definition FilePCD.cpp:62
int points
Definition FilePCD.cpp:55
void Project(core::Tensor &depth, std::optional< std::reference_wrapper< core::Tensor > > image_colors, const core::Tensor &points, std::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:67
void EstimateCovariancesUsingHybridSearchCPU(const core::Tensor &points, core::Tensor &covariances, const double &radius, const int64_t &max_nn)
Definition PointCloudImpl.h:595
void GetPointMaskWithinAABB(const core::Tensor &points, const core::Tensor &min_bound, const core::Tensor &max_bound, core::Tensor &mask)
Definition PointCloud.cpp:111
void EstimateCovariancesUsingRadiusSearchCPU(const core::Tensor &points, core::Tensor &covariances, const double &radius)
Definition PointCloudImpl.h:647
void EstimateNormalsFromCovariancesCPU(const core::Tensor &covariances, core::Tensor &normals, const bool has_normals)
Definition PointCloudImpl.h:1018
void OrientNormalsTowardsCameraLocationCPU(const core::Tensor &points, core::Tensor &normals, const core::Tensor &camera)
Definition PointCloudImpl.h:304
void ProjectSYCL(core::Tensor &depth, std::optional< std::reference_wrapper< core::Tensor > > image_colors, const core::Tensor &points, std::optional< std::reference_wrapper< const core::Tensor > > colors, const core::Tensor &intrinsics, const core::Tensor &extrinsics, float depth_scale, float depth_max)
Definition PointCloudSYCL.cpp:22
void GetPointMaskWithinAABBCPU(const core::Tensor &points, const core::Tensor &min_bound, const core::Tensor &max_bound, core::Tensor &mask)
Definition PointCloudImpl.h:153
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:450
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:1230
void UnprojectCPU(const core::Tensor &depth, std::optional< std::reference_wrapper< const core::Tensor > > image_colors, core::Tensor &points, std::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:49
void NormalizeNormalsCPU(core::Tensor &normals)
Definition PointCloudImpl.h:235
void GetPointMaskWithinOBB(const core::Tensor &points, const core::Tensor &center, const core::Tensor &rotation, const core::Tensor &extent, core::Tensor &mask)
Definition PointCloud.cpp:142
void ProjectCPU(core::Tensor &depth, std::optional< std::reference_wrapper< core::Tensor > > image_colors, const core::Tensor &points, std::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:18
void Unproject(const core::Tensor &depth, std::optional< std::reference_wrapper< const core::Tensor > > image_colors, core::Tensor &points, std::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:21
void EstimateColorGradientsUsingRadiusSearchCPU(const core::Tensor &points, const core::Tensor &normals, const core::Tensor &colors, core::Tensor &color_gradient, const double &radius)
Definition PointCloudImpl.h:1287
void GetPointMaskWithinOBBCPU(const core::Tensor &points, const core::Tensor &center, const core::Tensor &rotation, const core::Tensor &extent, core::Tensor &mask)
Definition PointCloudImpl.h:189
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:1176
void OrientNormalsToAlignWithDirectionCPU(core::Tensor &normals, const core::Tensor &direction)
Definition PointCloudImpl.h:268
void EstimateCovariancesUsingKNNSearchCPU(const core::Tensor &points, core::Tensor &covariances, const int64_t &max_nn)
Definition PointCloudImpl.h:698
Definition PinholeCameraIntrinsic.cpp:16
const core::Tensor * normals
Definition TriangleMesh.cpp:2126
const core::Tensor * indices
Definition TriangleMesh.cpp:2128