Open3D (C++ API)  0.19.0
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 
14 namespace open3d {
15 namespace t {
16 namespace geometry {
17 namespace kernel {
18 namespace pointcloud {
19 
20 void 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 
31 void 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 void GetPointMaskWithinAABB(const core::Tensor& points,
41  const core::Tensor& min_bound,
42  const core::Tensor& max_bound,
43  core::Tensor& mask);
44 
45 void GetPointMaskWithinOBB(const core::Tensor& points,
46  const core::Tensor& center,
47  const core::Tensor& rotation,
48  const core::Tensor& extent,
49  core::Tensor& mask);
50 
51 void UnprojectCPU(
52  const core::Tensor& depth,
53  std::optional<std::reference_wrapper<const core::Tensor>> image_colors,
54  core::Tensor& points,
55  std::optional<std::reference_wrapper<core::Tensor>> colors,
56  const core::Tensor& intrinsics,
57  const core::Tensor& extrinsics,
58  float depth_scale,
59  float depth_max,
60  int64_t stride);
61 
62 void ProjectCPU(
63  core::Tensor& depth,
64  std::optional<std::reference_wrapper<core::Tensor>> image_colors,
65  const core::Tensor& points,
66  std::optional<std::reference_wrapper<const core::Tensor>> colors,
67  const core::Tensor& intrinsics,
68  const core::Tensor& extrinsics,
69  float depth_scale,
70  float depth_max);
71 
72 void GetPointMaskWithinAABBCPU(const core::Tensor& points,
73  const core::Tensor& min_bound,
74  const core::Tensor& max_bound,
75  core::Tensor& mask);
76 
77 void GetPointMaskWithinOBBCPU(const core::Tensor& points,
78  const core::Tensor& center,
79  const core::Tensor& rotation,
80  const core::Tensor& extent,
81  core::Tensor& mask);
82 
83 void NormalizeNormalsCPU(core::Tensor& normals);
84 
85 void OrientNormalsToAlignWithDirectionCPU(core::Tensor& normals,
86  const core::Tensor& direction);
87 
88 void OrientNormalsTowardsCameraLocationCPU(const core::Tensor& points,
89  core::Tensor& normals,
90  const core::Tensor& camera);
91 
92 void ComputeBoundaryPointsCPU(const core::Tensor& points,
93  const core::Tensor& normals,
94  const core::Tensor& indices,
95  const core::Tensor& counts,
96  core::Tensor& mask,
97  double angle_threshold);
98 
99 #ifdef BUILD_CUDA_MODULE
100 void UnprojectCUDA(
101  const core::Tensor& depth,
102  std::optional<std::reference_wrapper<const core::Tensor>> image_colors,
103  core::Tensor& points,
104  std::optional<std::reference_wrapper<core::Tensor>> colors,
105  const core::Tensor& intrinsics,
106  const core::Tensor& extrinsics,
107  float depth_scale,
108  float depth_max,
109  int64_t stride);
110 
111 void ProjectCUDA(
112  core::Tensor& depth,
113  std::optional<std::reference_wrapper<core::Tensor>> image_colors,
114  const core::Tensor& points,
115  std::optional<std::reference_wrapper<const core::Tensor>> colors,
116  const core::Tensor& intrinsics,
117  const core::Tensor& extrinsics,
118  float depth_scale,
119  float depth_max);
120 
121 void GetPointMaskWithinAABBCUDA(const core::Tensor& points,
122  const core::Tensor& min_bound,
123  const core::Tensor& max_bound,
124  core::Tensor& mask);
125 
126 void GetPointMaskWithinOBBCUDA(const core::Tensor& points,
127  const core::Tensor& center,
128  const core::Tensor& rotation,
129  const core::Tensor& extent,
130  core::Tensor& mask);
131 
132 void NormalizeNormalsCUDA(core::Tensor& normals);
133 
134 void OrientNormalsToAlignWithDirectionCUDA(core::Tensor& normals,
135  const core::Tensor& direction);
136 
137 void OrientNormalsTowardsCameraLocationCUDA(const core::Tensor& points,
138  core::Tensor& normals,
139  const core::Tensor& camera);
140 
141 void ComputeBoundaryPointsCUDA(const core::Tensor& points,
142  const core::Tensor& normals,
143  const core::Tensor& indices,
144  const core::Tensor& counts,
145  core::Tensor& mask,
146  double angle_threshold);
147 #endif
148 
149 void EstimateCovariancesUsingHybridSearchCPU(const core::Tensor& points,
150  core::Tensor& covariances,
151  const double& radius,
152  const int64_t& max_nn);
153 
154 void EstimateCovariancesUsingKNNSearchCPU(const core::Tensor& points,
155  core::Tensor& covariances,
156  const int64_t& max_nn);
157 
158 void EstimateCovariancesUsingRadiusSearchCPU(const core::Tensor& points,
159  core::Tensor& covariances,
160  const double& radius);
161 
162 void EstimateNormalsFromCovariancesCPU(const core::Tensor& covariances,
163  core::Tensor& normals,
164  const bool has_normals);
165 
166 void EstimateColorGradientsUsingHybridSearchCPU(const core::Tensor& points,
167  const core::Tensor& normals,
168  const core::Tensor& colors,
169  core::Tensor& color_gradient,
170  const double& radius,
171  const int64_t& max_nn);
172 
173 void EstimateColorGradientsUsingKNNSearchCPU(const core::Tensor& points,
174  const core::Tensor& normals,
175  const core::Tensor& colors,
176  core::Tensor& color_gradient,
177  const int64_t& max_nn);
178 
179 void EstimateColorGradientsUsingRadiusSearchCPU(const core::Tensor& points,
180  const core::Tensor& normals,
181  const core::Tensor& colors,
182  core::Tensor& color_gradient,
183  const double& radius);
184 
185 #ifdef BUILD_CUDA_MODULE
186 void EstimateCovariancesUsingHybridSearchCUDA(const core::Tensor& points,
187  core::Tensor& covariances,
188  const double& radius,
189  const int64_t& max_nn);
190 
191 void EstimateCovariancesUsingKNNSearchCUDA(const core::Tensor& points,
192  core::Tensor& covariances,
193  const int64_t& max_nn);
194 
195 void EstimateCovariancesUsingRadiusSearchCUDA(const core::Tensor& points,
196  core::Tensor& covariances,
197  const double& radius);
198 
199 void EstimateNormalsFromCovariancesCUDA(const core::Tensor& covariances,
200  core::Tensor& normals,
201  const bool has_normals);
202 
203 void EstimateColorGradientsUsingHybridSearchCUDA(const core::Tensor& points,
204  const core::Tensor& normals,
205  const core::Tensor& colors,
206  core::Tensor& color_gradient,
207  const double& radius,
208  const int64_t& max_nn);
209 
210 void EstimateColorGradientsUsingKNNSearchCUDA(const core::Tensor& points,
211  const core::Tensor& normals,
212  const core::Tensor& colors,
213  core::Tensor& color_gradient,
214  const int64_t& max_nn);
215 
216 void EstimateColorGradientsUsingRadiusSearchCUDA(const core::Tensor& points,
217  const core::Tensor& normals,
218  const core::Tensor& colors,
219  core::Tensor& color_gradient,
220  const double& radius);
221 #endif
222 
223 } // namespace pointcloud
224 } // namespace kernel
225 } // namespace geometry
226 } // namespace t
227 } // namespace open3d
double t
Definition: SurfaceReconstructionPoisson.cpp:172
size_t stride
Definition: TriangleMeshBuffers.cpp:165
bool has_normals
Definition: FilePCD.cpp:61
int points
Definition: FilePCD.cpp:54
void EstimateCovariancesUsingHybridSearchCPU(const core::Tensor &points, core::Tensor &covariances, const double &radius, const int64_t &max_nn)
Definition: PointCloudImpl.h:561
void GetPointMaskWithinAABB(const core::Tensor &points, const core::Tensor &min_bound, const core::Tensor &max_bound, core::Tensor &mask)
Definition: PointCloud.cpp:97
void EstimateCovariancesUsingRadiusSearchCPU(const core::Tensor &points, core::Tensor &covariances, const double &radius)
Definition: PointCloudImpl.h:611
void EstimateNormalsFromCovariancesCPU(const core::Tensor &covariances, core::Tensor &normals, const bool has_normals)
Definition: PointCloudImpl.h:978
void OrientNormalsTowardsCameraLocationCPU(const core::Tensor &points, core::Tensor &normals, const core::Tensor &camera)
Definition: PointCloudImpl.h:285
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:45
void GetPointMaskWithinAABBCPU(const core::Tensor &points, const core::Tensor &min_bound, const core::Tensor &max_bound, core::Tensor &mask)
Definition: PointCloudImpl.h:142
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:420
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:60
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 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:1184
void NormalizeNormalsCPU(core::Tensor &normals)
Definition: PointCloudImpl.h:220
void GetPointMaskWithinOBB(const core::Tensor &points, const core::Tensor &center, const core::Tensor &rotation, const core::Tensor &extent, core::Tensor &mask)
Definition: PointCloud.cpp:122
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:1239
void GetPointMaskWithinOBBCPU(const core::Tensor &points, const core::Tensor &center, const core::Tensor &rotation, const core::Tensor &extent, core::Tensor &mask)
Definition: PointCloudImpl.h:176
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:1132
void OrientNormalsToAlignWithDirectionCPU(core::Tensor &normals, const core::Tensor &direction)
Definition: PointCloudImpl.h:251
void EstimateCovariancesUsingKNNSearchCPU(const core::Tensor &points, core::Tensor &covariances, const int64_t &max_nn)
Definition: PointCloudImpl.h:660
Definition: PinholeCameraIntrinsic.cpp:16