35 if (map_info_idx_to_point_idx.
has_value()) {
36 const bool is_radius_search = indices.
GetShape().
size() == 1;
38 map_info_idx_to_point_idx.
value(),
39 {counts.GetLength() - (is_radius_search ? 1 : 0)});
44 if (points_d.
IsCPU()) {
46 fpfhs, mask, map_info_idx_to_point_idx);
49 CUDA_CALL(ComputeFPFHFeatureCUDA, points_d, normals_d, indices,
50 distance2, counts_d, fpfhs, mask, map_info_idx_to_point_idx);
53 "[ComputeFPFHFeature] Computed {:d} features from "
54 "input point cloud with {:d} points.",
#define CUDA_CALL(cuda_function,...)
#define AssertTensorShape(tensor,...)
When CUDA is not enabled, this is a dummy class.
int64_t GetLength() const
SizeVector GetShape() const
Tensor To(Dtype dtype, bool copy=false) const
constexpr bool has_value() const noexcept
constexpr T const & value() const &
void ComputeFPFHFeature(const core::Tensor &points, const core::Tensor &normals, const core::Tensor &indices, const core::Tensor &distance2, const core::Tensor &counts, core::Tensor &fpfhs, const utility::optional< core::Tensor > &mask, const utility::optional< core::Tensor > &map_info_idx_to_point_idx)
void ComputeFPFHFeatureCPU(const core::Tensor &points, const core::Tensor &normals, const core::Tensor &indices, const core::Tensor &distance2, const core::Tensor &counts, core::Tensor &fpfhs, const utility::optional< core::Tensor > &mask=utility::nullopt, const utility::optional< core::Tensor > &map_batch_info_idx_to_point_idx=utility::nullopt)
Generic file read and write utility for python interface.