46 namespace pointcloud {
48 #if defined(__CUDACC__) 64 const bool have_colors = image_colors.has_value();
80 const auto& imcol = image_colors.value().get();
82 colors.value().get() =
89 #if defined(__CUDACC__) 92 int* count_ptr =
count.GetDataPtr<
int>();
94 std::atomic<int> count_atomic(0);
95 std::atomic<int>* count_ptr = &count_atomic;
98 int64_t n = rows_strided * cols_strided;
99 #if defined(__CUDACC__) 100 core::kernel::CUDALauncher launcher;
107 int64_t workload_idx) {
108 int64_t y = (workload_idx / cols_strided) *
stride;
109 int64_t x = (workload_idx % cols_strided) *
stride;
111 float d = *depth_indexer.
GetDataPtr<scalar_t>(x, y) / depth_scale;
112 if (d > 0 && d < depth_max) {
115 float x_c = 0, y_c = 0, z_c = 0;
116 ti.
Unproject(static_cast<float>(x), static_cast<float>(y), d,
119 float* vertex = point_indexer.GetDataPtr<
float>(idx);
123 float* pcd_pixel = colors_indexer.
GetDataPtr<
float>(idx);
126 *pcd_pixel = *image_pixel;
127 *(pcd_pixel + 1) = *(image_pixel + 1);
128 *(pcd_pixel + 2) = *(image_pixel + 2);
133 #if defined(__CUDACC__) 134 int total_pts_count =
count.Item<
int>();
136 int total_pts_count = (*count_ptr).load();
142 points = points.Slice(0, 0, total_pts_count);
144 colors.value().get() =
145 colors.value().get().Slice(0, 0, total_pts_count);
Definition: GeometryIndexer.h:168
Definition: CPULauncher.h:42
#define OPEN3D_CUDA_CHECK(err)
Definition: CUDAUtils.h:59
Device GetDevice() const
Definition: Tensor.cpp:1098
Dtype GetDtype() const
Definition: Tensor.h:1025
#define OPEN3D_DEVICE
Definition: CUDAUtils.h:57
#define OPEN3D_ATOMIC_ADD(X, Y)
Definition: GeometryMacros.h:37
static const Dtype Int32
Definition: Dtype.h:46
OPEN3D_HOST_DEVICE T * GetDataPtr(int64_t x) const
Definition: GeometryIndexer.h:324
core::Tensor InverseTransformation(const core::Tensor &T)
TODO(wei): find a proper place for such functionalities.
Definition: Utility.h:36
OPEN3D_HOST_DEVICE int64_t GetShape(int i) const
Definition: GeometryIndexer.h:319
size_t stride
Definition: TriangleMeshBuffers.cpp:183
int count
Definition: FilePCD.cpp:61
static const Dtype Float32
Definition: Dtype.h:42
Definition: Optional.h:54
static void LaunchGeneralKernel(int64_t n, func_t element_kernel)
General kernels with non-conventional indexers.
Definition: CPULauncher.h:176
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:53
#define DISPATCH_DTYPE_TO_TEMPLATE(DTYPE,...)
Definition: Dispatch.h:49
int points
Definition: FilePCD.cpp:73
Definition: PinholeCameraIntrinsic.cpp:35