Open3D (C++ API)  0.20.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-2026 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
238void SmoothLaplacianCPU(const core::Tensor& points,
239 core::Tensor& smoothed_points,
240 size_t iterations,
241 double lambda,
242 int max_nn,
243 bool use_fixed_neighborhoods);
244
245void SmoothTaubinCPU(const core::Tensor& points,
246 core::Tensor& smoothed_points,
247 size_t iterations,
248 double lambda,
249 double mu,
250 int max_nn,
251 bool use_fixed_neighborhoods);
252
253void SmoothMLSCPU(const core::Tensor& points,
254 core::Tensor& smoothed_points,
255 core::Tensor& normals,
256 bool update_normals,
257 double radius,
258 int max_nn);
259
260void SmoothBilateralCPU(const core::Tensor& points,
261 const core::Tensor& normals,
262 core::Tensor& smoothed_points,
263 double radius,
264 int max_nn,
265 double sigma_s,
266 double sigma_r);
267
268#ifdef BUILD_SYCL_MODULE
270void EstimateColorGradientsUsingHybridSearchSYCL(const core::Tensor& points,
271 const core::Tensor& normals,
272 const core::Tensor& colors,
273 core::Tensor& color_gradient,
274 const double& radius,
275 const int64_t& max_nn);
276
278void EstimateColorGradientsUsingKNNSearchSYCL(const core::Tensor& points,
279 const core::Tensor& normals,
280 const core::Tensor& colors,
281 core::Tensor& color_gradient,
282 const int64_t& max_nn);
283
285void EstimateColorGradientsUsingRadiusSearchSYCL(const core::Tensor& points,
286 const core::Tensor& normals,
287 const core::Tensor& colors,
288 core::Tensor& color_gradient,
289 const double& radius);
290#endif
291
292#ifdef BUILD_CUDA_MODULE
293void EstimateCovariancesUsingHybridSearchCUDA(const core::Tensor& points,
294 core::Tensor& covariances,
295 const double& radius,
296 const int64_t& max_nn);
297
298void EstimateCovariancesUsingKNNSearchCUDA(const core::Tensor& points,
299 core::Tensor& covariances,
300 const int64_t& max_nn);
301
302void EstimateCovariancesUsingRadiusSearchCUDA(const core::Tensor& points,
303 core::Tensor& covariances,
304 const double& radius);
305
306void EstimateNormalsFromCovariancesCUDA(const core::Tensor& covariances,
307 core::Tensor& normals,
308 const bool has_normals);
309
310void EstimateColorGradientsUsingHybridSearchCUDA(const core::Tensor& points,
311 const core::Tensor& normals,
312 const core::Tensor& colors,
313 core::Tensor& color_gradient,
314 const double& radius,
315 const int64_t& max_nn);
316
317void EstimateColorGradientsUsingKNNSearchCUDA(const core::Tensor& points,
318 const core::Tensor& normals,
319 const core::Tensor& colors,
320 core::Tensor& color_gradient,
321 const int64_t& max_nn);
322
323void EstimateColorGradientsUsingRadiusSearchCUDA(const core::Tensor& points,
324 const core::Tensor& normals,
325 const core::Tensor& colors,
326 core::Tensor& color_gradient,
327 const double& radius);
328
329void SmoothLaplacianCUDA(const core::Tensor& points,
330 core::Tensor& smoothed_points,
331 size_t iterations,
332 double lambda,
333 int max_nn,
334 bool use_fixed_neighborhoods);
335
336void SmoothTaubinCUDA(const core::Tensor& points,
337 core::Tensor& smoothed_points,
338 size_t iterations,
339 double lambda,
340 double mu,
341 int max_nn,
342 bool use_fixed_neighborhoods);
343
344void SmoothMLSCUDA(const core::Tensor& points,
345 core::Tensor& smoothed_points,
346 core::Tensor& normals,
347 bool update_normals,
348 double radius,
349 int max_nn);
350
351void SmoothBilateralCUDA(const core::Tensor& points,
352 const core::Tensor& normals,
353 core::Tensor& smoothed_points,
354 double radius,
355 int max_nn,
356 double sigma_s,
357 double sigma_r);
358#endif
359
360#ifdef BUILD_SYCL_MODULE
362void EstimateCovariancesUsingHybridSearchSYCL(const core::Tensor& points,
363 core::Tensor& covariances,
364 const double& radius,
365 const int64_t& max_nn);
366
368void EstimateCovariancesUsingKNNSearchSYCL(const core::Tensor& points,
369 core::Tensor& covariances,
370 const int64_t& max_nn);
371
373void EstimateCovariancesUsingRadiusSearchSYCL(const core::Tensor& points,
374 core::Tensor& covariances,
375 const double& radius);
376
378void EstimateNormalsFromCovariancesSYCL(const core::Tensor& covariances,
379 core::Tensor& normals,
380 const bool has_normals);
381
382void SmoothLaplacianSYCL(const core::Tensor& points,
383 core::Tensor& smoothed_points,
384 size_t iterations,
385 double lambda,
386 int max_nn,
387 bool use_fixed_neighborhoods);
388
389void SmoothTaubinSYCL(const core::Tensor& points,
390 core::Tensor& smoothed_points,
391 size_t iterations,
392 double lambda,
393 double mu,
394 int max_nn,
395 bool use_fixed_neighborhoods);
396
397void SmoothMLSSYCL(const core::Tensor& points,
398 core::Tensor& smoothed_points,
399 core::Tensor& normals,
400 bool update_normals,
401 double radius,
402 int max_nn);
403
404void SmoothBilateralSYCL(const core::Tensor& points,
405 const core::Tensor& normals,
406 core::Tensor& smoothed_points,
407 double radius,
408 int max_nn,
409 double sigma_s,
410 double sigma_r);
411#endif
412
413} // namespace pointcloud
414} // namespace kernel
415} // namespace geometry
416} // namespace t
417} // namespace open3d
std::vector< int > indices
Definition PointCloudSmoothing.cpp:133
std::vector< int > counts
Definition PointCloudSmoothing.cpp:132
double t
Definition SurfaceReconstructionPoisson.cpp:175
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 SmoothMLSCPU(const core::Tensor &points, core::Tensor &smoothed_points, core::Tensor &normals, bool update_normals, double radius, int max_nn)
Definition PointCloudImpl.h:1504
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 SmoothTaubinCPU(const core::Tensor &points, core::Tensor &smoothed_points, size_t iterations, double lambda, double mu, int max_nn, bool use_fixed_neighborhoods)
Definition PointCloudImpl.h:1455
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:56
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 SmoothLaplacianCPU(const core::Tensor &points, core::Tensor &smoothed_points, size_t iterations, double lambda, int max_nn, bool use_fixed_neighborhoods)
Definition PointCloudImpl.h:1417
void SmoothBilateralCPU(const core::Tensor &points, const core::Tensor &normals, core::Tensor &smoothed_points, double radius, int max_nn, double sigma_s, double sigma_r)
Definition PointCloudImpl.h:1666
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:21
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