ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
cloudViewer::t::pipelines::registration Namespace Reference

Classes

class  ICPConvergenceCriteria
 Class that defines the convergence criteria of ICP. More...
 
class  RegistrationResult
 
class  RobustKernel
 
class  TransformationEstimation
 
class  TransformationEstimationPointToPoint
 
class  TransformationEstimationPointToPlane
 
class  TransformationEstimationForColoredICP
 
class  TransformationEstimationForDopplerICP
 
class  PyTransformationEstimation
 

Enumerations

enum class  RobustKernelMethod {
  L2Loss = 0 , L1Loss = 1 , HuberLoss = 2 , CauchyLoss = 3 ,
  GMLoss = 4 , TukeyLoss = 5 , GeneralizedLoss = 6
}
 
enum class  TransformationEstimationType {
  Unspecified = 0 , PointToPoint = 1 , PointToPlane = 2 , ColoredICP = 3 ,
  DopplerICP = 4
}
 

Functions

core::Tensor ComputeFPFHFeature (const geometry::PointCloud &input, const utility::optional< int > max_nn, const utility::optional< double > radius, const utility::optional< core::Tensor > &indices)
 
core::Tensor CorrespondencesFromFeatures (const core::Tensor &source_features, const core::Tensor &target_features, bool mutual_filter=false, float mutual_consistency_ratio=0.1)
 Function to find correspondences via 1-nearest neighbor feature matching. Target is used to construct a nearest neighbor search object, in order to query source. More...
 
static RegistrationResult ComputeRegistrationResult (const geometry::PointCloud &source, const core::nns::NearestNeighborSearch &target_nns, const double max_correspondence_distance, const core::Tensor &transformation)
 
RegistrationResult EvaluateRegistration (const geometry::PointCloud &source, const geometry::PointCloud &target, double max_correspondence_distance, const core::Tensor &transformation=core::Tensor::Eye(4, core::Float64, core::Device("CPU:0")))
 Function for evaluating registration between point clouds. More...
 
RegistrationResult ICP (const geometry::PointCloud &source, const geometry::PointCloud &target, const double max_correspondence_distance, const core::Tensor &init_source_to_target=core::Tensor::Eye(4, core::Float64, core::Device("CPU:0")), const TransformationEstimation &estimation=TransformationEstimationPointToPoint(), const ICPConvergenceCriteria &criteria=ICPConvergenceCriteria(), const double voxel_size=-1.0, const std::function< void(const std::unordered_map< std::string, core::Tensor > &)> &callback_after_iteration=nullptr)
 Functions for ICP registration. More...
 
static void AssertInputMultiScaleICP (const geometry::PointCloud &source, const geometry::PointCloud &target, const std::vector< double > &voxel_sizes, const std::vector< ICPConvergenceCriteria > &criterias, const std::vector< double > &max_correspondence_distances, const core::Tensor &init_source_to_target, const TransformationEstimation &estimation, const int64_t &num_iterations, const core::Device &device, const core::Dtype &dtype)
 
static std::tuple< std::vector< t::geometry::PointCloud >, std::vector< t::geometry::PointCloud > > InitializePointCloudPyramidForMultiScaleICP (const geometry::PointCloud &source, const geometry::PointCloud &target, const std::vector< double > &voxel_sizes, const double &max_correspondence_distance, const TransformationEstimation &estimation, const int64_t &num_iterations)
 
static std::tuple< RegistrationResult, int > DoSingleScaleICPIterations (geometry::PointCloud &source, const geometry::PointCloud &target, const core::nns::NearestNeighborSearch &target_nns, const ICPConvergenceCriteria &criteria, const double max_correspondence_distance, const TransformationEstimation &estimation, const int scale_idx, const int prev_iteration_count, const core::Device &device, const core::Dtype &dtype, const RegistrationResult &current_result, const std::function< void(std::unordered_map< std::string, core::Tensor > &)> &callback_after_iteration)
 
RegistrationResult MultiScaleICP (const geometry::PointCloud &source, const geometry::PointCloud &target, const std::vector< double > &voxel_sizes, const std::vector< ICPConvergenceCriteria > &criteria_list, const std::vector< double > &max_correspondence_distances, const core::Tensor &init_source_to_target=core::Tensor::Eye(4, core::Float64, core::Device("CPU:0")), const TransformationEstimation &estimation=TransformationEstimationPointToPoint(), const std::function< void(const std::unordered_map< std::string, core::Tensor > &)> &callback_after_iteration=nullptr)
 Functions for Multi-Scale ICP registration. It will run ICP on different voxel level, from coarse to dense. The vector of ICPConvergenceCriteria(relative fitness, relative rmse, max_iterations) contains the stopping condition for each voxel level. The length of voxel_sizes vector, criteria vector, max_correspondence_distances vector must be same, and voxel_sizes must contain positive values in strictly decreasing order [Lower the voxel size, higher is the resolution]. Only the last value of the voxel_sizes vector can be {-1}, as it allows to run on the original scale without downsampling. More...
 
core::Tensor GetInformationMatrix (const geometry::PointCloud &source, const geometry::PointCloud &target, const double max_correspondence_distance, const core::Tensor &transformation)
 Computes Information Matrix, from the transfromation between source and target pointcloud. It returns the Information Matrix of shape {6, 6}, of dtype Float64 on device CPU:0. More...
 
static void AssertValidCorrespondences (const core::Tensor &correspondence_indices, const core::Tensor &source_points)
 
void LegacyComputeFPFHFeature (benchmark::State &state, utility::optional< int > max_nn, utility::optional< double > radius, utility::optional< double > ratio_indices)
 
void ComputeFPFHFeature (benchmark::State &state, const core::Device &device, const core::Dtype &dtype, utility::optional< int > max_nn, utility::optional< double > radius, utility::optional< double > ratio_indices)
 
 BENCHMARK_CAPTURE (LegacyComputeFPFHFeature, Legacy Hybrid[0.01|100], 100, 0.01, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (LegacyComputeFPFHFeature, Legacy Hybrid[0.02|50], 50, 0.02, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (LegacyComputeFPFHFeature, Legacy Hybrid[0.02|100], 100, 0.02, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (LegacyComputeFPFHFeature, Legacy KNN[50], 50, utility::nullopt, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (LegacyComputeFPFHFeature, Legacy KNN[100], 100, utility::nullopt, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (LegacyComputeFPFHFeature, Legacy Radius[0.01], utility::nullopt, 0.01, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (LegacyComputeFPFHFeature, Legacy Radius[0.02], utility::nullopt, 0.02, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (LegacyComputeFPFHFeature, Legacy Hybrid Indices[0.02|50|null], 50, 0.02, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (LegacyComputeFPFHFeature, Legacy Hybrid Indices[0.02|50|0.0001], 50, 0.02, 0.0001) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (LegacyComputeFPFHFeature, Legacy Hybrid Indices[0.02|50|0.001], 50, 0.02, 0.001) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (LegacyComputeFPFHFeature, Legacy Hybrid Indices[0.02|50|0.01], 50, 0.02, 0.01) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (LegacyComputeFPFHFeature, Legacy Hybrid Indices[0.02|50|0.1], 50, 0.02, 0.1) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (LegacyComputeFPFHFeature, Legacy Hybrid Indices[0.02|50|1.0], 50, 0.02, 1.0) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.01|100] Hybrid_Float32, core::Device("CPU:0"), core::Float32, 100, 0.01, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.01|100] Hybrid_Float64, core::Device("CPU:0"), core::Float64, 100, 0.01, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.02|50] Hybrid_Float32, core::Device("CPU:0"), core::Float32, 50, 0.02, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.02|50] Hybrid_Float64, core::Device("CPU:0"), core::Float64, 50, 0.02, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.02|100] Hybrid_Float32, core::Device("CPU:0"), core::Float32, 100, 0.02, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.02|100] Hybrid_Float64, core::Device("CPU:0"), core::Float64, 100, 0.02, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[50] KNN_Float32, core::Device("CPU:0"), core::Float32, 50, utility::nullopt, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[50] KNN_Float64, core::Device("CPU:0"), core::Float64, 50, utility::nullopt, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[100] KNN_Float32, core::Device("CPU:0"), core::Float32, 100, utility::nullopt, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[100] KNN_Float64, core::Device("CPU:0"), core::Float64, 100, utility::nullopt, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.01] Radius_Float32, core::Device("CPU:0"), core::Float32, utility::nullopt, 0.01, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.01] Radius_Float64, core::Device("CPU:0"), core::Float64, utility::nullopt, 0.01, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.02] Radius_Float32, core::Device("CPU:0"), core::Float32, utility::nullopt, 0.02, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.02] Radius_Float64, core::Device("CPU:0"), core::Float64, utility::nullopt, 0.02, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.02|50|null] Hybrid Indices_Float32, core::Device("CPU:0"), core::Float32, 50, 0.02, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.02|50|null] Hybrid Indices_Float64, core::Device("CPU:0"), core::Float64, 50, 0.02, utility::nullopt) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.02|50|0.0001] Hybrid Indices_Float32, core::Device("CPU:0"), core::Float32, 50, 0.02, 0.0001) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.02|50|0.0001] Hybrid Indices_Float64, core::Device("CPU:0"), core::Float64, 50, 0.02, 0.0001) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.02|50|0.001] Hybrid Indices_Float32, core::Device("CPU:0"), core::Float32, 50, 0.02, 0.001) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.02|50|0.001] Hybrid Indices_Float64, core::Device("CPU:0"), core::Float64, 50, 0.02, 0.001) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.02|50|0.01] Hybrid Indices_Float32, core::Device("CPU:0"), core::Float32, 50, 0.02, 0.01) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.02|50|0.01] Hybrid Indices_Float64, core::Device("CPU:0"), core::Float64, 50, 0.02, 0.01) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.02|50|0.1] Hybrid Indices_Float32, core::Device("CPU:0"), core::Float32, 50, 0.02, 0.1) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.02|50|0.1] Hybrid Indices_Float64, core::Device("CPU:0"), core::Float64, 50, 0.02, 0.1) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.02|50|1.0] Hybrid Indices_Float32, core::Device("CPU:0"), core::Float32, 50, 0.02, 1.0) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (ComputeFPFHFeature, CPU[0.02|50|1.0] Hybrid Indices_Float64, core::Device("CPU:0"), core::Float64, 50, 0.02, 1.0) -> Unit(benchmark::kMillisecond)
 
static std::tuple< geometry::PointCloud, geometry::PointCloudLoadTensorPointCloudFromFile (const std::string &source_pointcloud_filename, const std::string &target_pointcloud_filename, const double voxel_downsample_factor, const core::Dtype &dtype, const core::Device &device)
 
static void BenchmarkICP (benchmark::State &state, const core::Device &device, const core::Dtype &dtype, const TransformationEstimationType &type)
 
core::Tensor ComputeDirectionVectors (const core::Tensor &positions)
 
static std::tuple< geometry::PointCloud, geometry::PointCloudLoadTensorDopplerPointCloudFromFile (const std::string &source_pointcloud_filename, const std::string &target_pointcloud_filename, const double voxel_downsample_factor, const core::Dtype &dtype, const core::Device &device)
 
static void BenchmarkDopplerICP (benchmark::State &state, const core::Device &device, const core::Dtype &dtype, const TransformationEstimationType &type)
 
 BENCHMARK_CAPTURE (BenchmarkICP, "CPU:0" PointToPoint_Float32, core::Device("CPU:0"), core::Float32, TransformationEstimationType::PointToPoint) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (BenchmarkICP, "CPU:0" PointToPoint_Float64, core::Device("CPU:0"), core::Float64, TransformationEstimationType::PointToPoint) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (BenchmarkICP, "CPU:0" PointToPlane_Float32, core::Device("CPU:0"), core::Float32, TransformationEstimationType::PointToPlane) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (BenchmarkICP, "CPU:0" PointToPlane_Float64, core::Device("CPU:0"), core::Float64, TransformationEstimationType::PointToPlane) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (BenchmarkICP, "CPU:0" ColoredICP_Float32, core::Device("CPU:0"), core::Float32, TransformationEstimationType::ColoredICP) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (BenchmarkICP, "CPU:0" ColoredICP_Float64, core::Device("CPU:0"), core::Float64, TransformationEstimationType::ColoredICP) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (BenchmarkDopplerICP, "CPU:0" DopplerICP_Float32, core::Device("CPU:0"), core::Float32, TransformationEstimationType::DopplerICP) -> Unit(benchmark::kMillisecond)
 
 BENCHMARK_CAPTURE (BenchmarkDopplerICP, "CPU:0" DopplerICP_Float64, core::Device("CPU:0"), core::Float64, TransformationEstimationType::DopplerICP) -> Unit(benchmark::kMillisecond)
 
void pybind_feature (py::module &m_registration)
 
void pybind_registration_class (py::module &m_registration)
 
void pybind_registration (py::module &m)
 
void pybind_robust_kernels (py::module &m)
 

Variables

data::BunnyMesh pointcloud_ply
 
static const std::string path = pointcloud_ply.GetPath()
 
static const double relative_fitness = 1e-6
 
static const double relative_rmse = 1e-6
 
static const int max_iterations = 10
 
static const double voxel_downsampling_factor = 0.02
 
static const double max_correspondence_distance = 0.05
 
static const double normals_search_radius = 10.0
 
static const int normals_max_neighbors = 30
 
static const std::vector< float > initial_transform_flat
 
static const std::unordered_map< std::string, std::string > map_shared_argument_docstrings
 

Enumeration Type Documentation

◆ RobustKernelMethod

Enumerator
L2Loss 
L1Loss 
HuberLoss 
CauchyLoss 
GMLoss 
TukeyLoss 
GeneralizedLoss 

Definition at line 15 of file RobustKernel.h.

◆ TransformationEstimationType

Enumerator
Unspecified 
PointToPoint 
PointToPlane 
ColoredICP 
DopplerICP 

Definition at line 40 of file TransformationEstimation.h.

Function Documentation

◆ AssertInputMultiScaleICP()

static void cloudViewer::t::pipelines::registration::AssertInputMultiScaleICP ( const geometry::PointCloud source,
const geometry::PointCloud target,
const std::vector< double > &  voxel_sizes,
const std::vector< ICPConvergenceCriteria > &  criterias,
const std::vector< double > &  max_correspondence_distances,
const core::Tensor init_source_to_target,
const TransformationEstimation estimation,
const int64_t &  num_iterations,
const core::Device device,
const core::Dtype dtype 
)
static

◆ AssertValidCorrespondences()

◆ BENCHMARK_CAPTURE() [1/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( BenchmarkDopplerICP  ,
"CPU:0"  DopplerICP_Float32,
core::Device("CPU:0")  ,
core::Float32  ,
TransformationEstimationType::DopplerICP   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [2/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( BenchmarkDopplerICP  ,
"CPU:0"  DopplerICP_Float64,
core::Device("CPU:0")  ,
core::Float64  ,
TransformationEstimationType::DopplerICP   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [3/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( BenchmarkICP  ,
"CPU:0"  ColoredICP_Float32,
core::Device("CPU:0")  ,
core::Float32  ,
TransformationEstimationType::ColoredICP   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [4/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( BenchmarkICP  ,
"CPU:0"  ColoredICP_Float64,
core::Device("CPU:0")  ,
core::Float64  ,
TransformationEstimationType::ColoredICP   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [5/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( BenchmarkICP  ,
"CPU:0"  PointToPlane_Float32,
core::Device("CPU:0")  ,
core::Float32  ,
TransformationEstimationType::PointToPlane   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [6/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( BenchmarkICP  ,
"CPU:0"  PointToPlane_Float64,
core::Device("CPU:0")  ,
core::Float64  ,
TransformationEstimationType::PointToPlane   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [7/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( BenchmarkICP  ,
"CPU:0"  PointToPoint_Float32,
core::Device("CPU:0")  ,
core::Float32  ,
TransformationEstimationType::PointToPoint   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [8/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( BenchmarkICP  ,
"CPU:0"  PointToPoint_Float64,
core::Device("CPU:0")  ,
core::Float64  ,
TransformationEstimationType::PointToPoint   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [9/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU  Radius_Float32[0.01],
core::Device("CPU:0")  ,
core::Float32  ,
utility::nullopt  ,
0.  01,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [10/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU  Radius_Float64[0.01],
core::Device("CPU:0")  ,
core::Float64  ,
utility::nullopt  ,
0.  01,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [11/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU  Hybrid_Float32[0.01|100],
core::Device("CPU:0")  ,
core::Float32  ,
100  ,
0.  01,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [12/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU  Hybrid_Float64[0.01|100],
core::Device("CPU:0")  ,
core::Float64  ,
100  ,
0.  01,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [13/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU  Radius_Float32[0.02],
core::Device("CPU:0")  ,
core::Float32  ,
utility::nullopt  ,
0.  02,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [14/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU  Radius_Float64[0.02],
core::Device("CPU:0")  ,
core::Float64  ,
utility::nullopt  ,
0.  02,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [15/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU  Hybrid_Float32[0.02|100],
core::Device("CPU:0")  ,
core::Float32  ,
100  ,
0.  02,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [16/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU  Hybrid_Float64[0.02|100],
core::Device("CPU:0")  ,
core::Float64  ,
100  ,
0.  02,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [17/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU  Hybrid_Float32[0.02|50],
core::Device("CPU:0")  ,
core::Float32  ,
50  ,
0.  02,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [18/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU  Hybrid_Float64[0.02|50],
core::Device("CPU:0")  ,
core::Float64  ,
50  ,
0.  02,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [19/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU Hybrid  Indices_Float32[0.02|50|0.0001],
core::Device("CPU:0")  ,
core::Float32  ,
50  ,
0.  02,
0.  0001 
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [20/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU Hybrid  Indices_Float64[0.02|50|0.0001],
core::Device("CPU:0")  ,
core::Float64  ,
50  ,
0.  02,
0.  0001 
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [21/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU Hybrid  Indices_Float32[0.02|50|0.001],
core::Device("CPU:0")  ,
core::Float32  ,
50  ,
0.  02,
0.  001 
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [22/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU Hybrid  Indices_Float64[0.02|50|0.001],
core::Device("CPU:0")  ,
core::Float64  ,
50  ,
0.  02,
0.  001 
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [23/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU Hybrid  Indices_Float32[0.02|50|0.01],
core::Device("CPU:0")  ,
core::Float32  ,
50  ,
0.  02,
0.  01 
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [24/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU Hybrid  Indices_Float64[0.02|50|0.01],
core::Device("CPU:0")  ,
core::Float64  ,
50  ,
0.  02,
0.  01 
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [25/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU Hybrid  Indices_Float32[0.02|50|0.1],
core::Device("CPU:0")  ,
core::Float32  ,
50  ,
0.  02,
0.  1 
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [26/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU Hybrid  Indices_Float64[0.02|50|0.1],
core::Device("CPU:0")  ,
core::Float64  ,
50  ,
0.  02,
0.  1 
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [27/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU Hybrid  Indices_Float32[0.02|50|1.0],
core::Device("CPU:0")  ,
core::Float32  ,
50  ,
0.  02,
1.  0 
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [28/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU Hybrid  Indices_Float64[0.02|50|1.0],
core::Device("CPU:0")  ,
core::Float64  ,
50  ,
0.  02,
1.  0 
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [29/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU Hybrid  Indices_Float32[0.02|50|null],
core::Device("CPU:0")  ,
core::Float32  ,
50  ,
0.  02,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [30/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU Hybrid  Indices_Float64[0.02|50|null],
core::Device("CPU:0")  ,
core::Float64  ,
50  ,
0.  02,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [31/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU  KNN_Float32[100],
core::Device("CPU:0")  ,
core::Float32  ,
100  ,
utility::nullopt  ,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [32/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU  KNN_Float64[100],
core::Device("CPU:0")  ,
core::Float64  ,
100  ,
utility::nullopt  ,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [33/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU  KNN_Float32[50],
core::Device("CPU:0")  ,
core::Float32  ,
50  ,
utility::nullopt  ,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [34/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( ComputeFPFHFeature  ,
CPU  KNN_Float64[50],
core::Device("CPU:0")  ,
core::Float64  ,
50  ,
utility::nullopt  ,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [35/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( LegacyComputeFPFHFeature  ,
Legacy Hybrid  Indices[0.02|50|0.0001],
50  ,
0.  02,
0.  0001 
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [36/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( LegacyComputeFPFHFeature  ,
Legacy Hybrid  Indices[0.02|50|0.001],
50  ,
0.  02,
0.  001 
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [37/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( LegacyComputeFPFHFeature  ,
Legacy Hybrid  Indices[0.02|50|0.01],
50  ,
0.  02,
0.  01 
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [38/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( LegacyComputeFPFHFeature  ,
Legacy Hybrid  Indices[0.02|50|0.1],
50  ,
0.  02,
0.  1 
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [39/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( LegacyComputeFPFHFeature  ,
Legacy Hybrid  Indices[0.02|50|1.0],
50  ,
0.  02,
1.  0 
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [40/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( LegacyComputeFPFHFeature  ,
Legacy Hybrid  Indices[0.02|50|null],
50  ,
0.  02,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [41/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( LegacyComputeFPFHFeature  ,
Legacy  Hybrid[0.01|100],
100  ,
0.  01,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [42/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( LegacyComputeFPFHFeature  ,
Legacy  Hybrid[0.02|100],
100  ,
0.  02,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [43/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( LegacyComputeFPFHFeature  ,
Legacy  Hybrid[0.02|50],
50  ,
0.  02,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [44/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( LegacyComputeFPFHFeature  ,
Legacy  KNN[100],
100  ,
utility::nullopt  ,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [45/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( LegacyComputeFPFHFeature  ,
Legacy  KNN[50],
50  ,
utility::nullopt  ,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [46/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( LegacyComputeFPFHFeature  ,
Legacy  Radius[0.01],
utility::nullopt  ,
0.  01,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BENCHMARK_CAPTURE() [47/47]

cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE ( LegacyComputeFPFHFeature  ,
Legacy  Radius[0.02],
utility::nullopt  ,
0.  02,
utility::nullopt   
) -> Unit(benchmark::kMillisecond)

◆ BenchmarkDopplerICP()

◆ BenchmarkICP()

◆ ComputeDirectionVectors()

◆ ComputeFPFHFeature() [1/2]

◆ ComputeFPFHFeature() [2/2]

core::Tensor cloudViewer::t::pipelines::registration::ComputeFPFHFeature ( const geometry::PointCloud input,
const utility::optional< int >  max_nn = 100,
const utility::optional< double >  radius = utility::nullopt,
const utility::optional< core::Tensor > &  indices = utility::nullopt 
)

Function to compute FPFH feature for a point cloud. It uses KNN search (Not recommended to use on GPU) if only max_nn parameter is provided, Radius search (Not recommended to use on GPU) if only radius parameter is provided, and Hybrid search (Recommended) if both are provided.

Parameters
inputThe input point cloud with data type float32 or float64.
max_nn[optional] Neighbor search max neighbors parameter. [Default = 100].
radius[optional] Neighbor search radius parameter. [Recommended ~5x voxel size].
indices[optional] Tensor with the indices of the points to compute " FPFH features on. [Default = None].
Returns
A Tensor of FPFH feature of the input point cloud with shape {N, 33}, data type and device same as input.

Definition at line 23 of file Feature.cpp.

References cloudViewer::core::Tensor::Arange(), AssertTensorDtypes, cloudViewer::core::Bool, cloudViewer::t::pipelines::kernel::ComputeFPFHFeature(), cloudViewer::core::nns::NearestNeighborSearch::FixedRadiusIndex(), cloudViewer::core::nns::NearestNeighborSearch::FixedRadiusSearch(), cloudViewer::core::Tensor::Full(), cloudViewer::core::Tensor::GetDevice(), cloudViewer::core::Tensor::GetDtype(), cloudViewer::core::Tensor::GetItem(), cloudViewer::core::Tensor::GetLength(), cloudViewer::t::geometry::PointCloud::GetPointNormals(), cloudViewer::t::geometry::PointCloud::GetPointPositions(), cloudViewer::core::Tensor::GetShape(), cloudViewer::utility::optional< T >::has_value(), cloudViewer::t::geometry::PointCloud::HasPointNormals(), cloudViewer::core::nns::NearestNeighborSearch::HybridIndex(), cloudViewer::core::nns::NearestNeighborSearch::HybridSearch(), cloudViewer::core::TensorKey::Index(), cloudViewer::core::Tensor::IndexGet(), cloudViewer::core::Tensor::IndexSet(), cloudViewer::core::Int32, cloudViewer::core::Int64, cloudViewer::core::nns::NearestNeighborSearch::KnnIndex(), cloudViewer::core::nns::NearestNeighborSearch::KnnSearch(), LogDebug, LogError, cloudViewer::core::Tensor::NonZero(), cloudViewer::core::Tensor::Ones(), cloudViewer::core::SmallVectorBase< Size_T >::size(), size, cloudViewer::t::geometry::kernel::image::To(), cloudViewer::core::Tensor::To(), cloudViewer::utility::optional< T >::value(), and cloudViewer::core::Tensor::Zeros().

Referenced by ComputeFPFHFeature(), and pybind_feature().

◆ ComputeRegistrationResult()

◆ CorrespondencesFromFeatures()

core::Tensor cloudViewer::t::pipelines::registration::CorrespondencesFromFeatures ( const core::Tensor source_features,
const core::Tensor target_features,
bool  mutual_filter = false,
float  mutual_consistency_ratio = 0.1 
)

Function to find correspondences via 1-nearest neighbor feature matching. Target is used to construct a nearest neighbor search object, in order to query source.

Parameters
source_feats(N, D) tensor
target_feats(M, D) tensor
mutual_filterBoolean flag, only return correspondences (i, j) s.t. source_features[i] and target_features[j] are mutually the nearest neighbor.
mutual_consistency_ratioFloat threshold to decide whether the number of correspondences is sufficient. Only used when mutual_filter is set to True.
Returns
(K, 2, Int64) tensor. When mutual_filter is disabled: the first column is arange(0, N) of source, and the second column is the corresponding index of target. When mutual_filter is enabled, return the filtering subset of the aforementioned correspondence set where source[i] and target[j] are mutually the nearest neighbor. If the subset size is smaller than mutual_consistency_ratio * N, return the unfiltered set.

Definition at line 280 of file Feature.cpp.

References cloudViewer::core::Append(), cloudViewer::core::Tensor::Arange(), cloudViewer::core::Tensor::Eq(), cloudViewer::utility::EstimateMaxThreads(), cloudViewer::core::Tensor::GetLength(), cloudViewer::core::Tensor::IndexGet(), cloudViewer::core::Dtype::Int64, cloudViewer::core::nns::NearestNeighborSearch::KnnIndex(), cloudViewer::core::nns::NearestNeighborSearch::KnnSearch(), LogDebug, LogWarning, min(), result, and cloudViewer::core::Tensor::View().

Referenced by pybind_feature().

◆ DoSingleScaleICPIterations()

static std::tuple<RegistrationResult, int> cloudViewer::t::pipelines::registration::DoSingleScaleICPIterations ( geometry::PointCloud source,
const geometry::PointCloud target,
const core::nns::NearestNeighborSearch target_nns,
const ICPConvergenceCriteria criteria,
const double  max_correspondence_distance,
const TransformationEstimation estimation,
const int  scale_idx,
const int  prev_iteration_count,
const core::Device device,
const core::Dtype dtype,
const RegistrationResult current_result,
const std::function< void(std::unordered_map< std::string, core::Tensor > &)> &  callback_after_iteration 
)
static

◆ EvaluateRegistration()

RegistrationResult cloudViewer::t::pipelines::registration::EvaluateRegistration ( const geometry::PointCloud source,
const geometry::PointCloud target,
double  max_correspondence_distance,
const core::Tensor transformation = core::Tensor::Eye(4, core::Float64core::Device("CPU:0")) 
)

Function for evaluating registration between point clouds.

Parameters
sourceThe source point cloud. (Float32 or Float64 type).
targetThe target point cloud. (Float32 or Float64 type).
max_correspondence_distanceMaximum correspondence points-pair distance.
transformationThe 4x4 transformation matrix to transform source to target of dtype Float64 on CPU device.

Definition at line 65 of file Registration.cpp.

References AssertTensorDevice, AssertTensorDtype, AssertTensorDtypes, cloudViewer::t::geometry::PointCloud::Clone(), ComputeRegistrationResult(), cloudViewer::t::geometry::PointCloud::GetDevice(), cloudViewer::core::Tensor::GetDtype(), cloudViewer::t::geometry::PointCloud::GetPointPositions(), cloudViewer::t::geometry::PointCloud::HasPointPositions(), cloudViewer::core::nns::NearestNeighborSearch::HybridIndex(), LogError, max_correspondence_distance, and cloudViewer::t::geometry::PointCloud::Transform().

Referenced by pybind_registration_class().

◆ GetInformationMatrix()

core::Tensor cloudViewer::t::pipelines::registration::GetInformationMatrix ( const geometry::PointCloud source,
const geometry::PointCloud target,
const double  max_correspondence_distance,
const core::Tensor transformation 
)

Computes Information Matrix, from the transfromation between source and target pointcloud. It returns the Information Matrix of shape {6, 6}, of dtype Float64 on device CPU:0.

Parameters
sourceThe source point cloud. (Float32 or Float64 type).
targetThe target point cloud. (Float32 or Float64 type).
max_correspondence_distanceMaximum correspondence points-pair distance.
transformationThe 4x4 transformation matrix to transform source to target.

Definition at line 429 of file Registration.cpp.

References AssertTensorDevice, AssertTensorDtype, AssertTensorDtypes, cloudViewer::t::geometry::PointCloud::Clone(), cloudViewer::t::pipelines::kernel::ComputeInformationMatrix(), cloudViewer::t::geometry::PointCloud::GetDevice(), cloudViewer::core::Tensor::GetDtype(), cloudViewer::t::geometry::PointCloud::GetPointPositions(), cloudViewer::t::geometry::PointCloud::HasPointPositions(), cloudViewer::core::nns::NearestNeighborSearch::HybridIndex(), cloudViewer::core::nns::NearestNeighborSearch::HybridSearch(), cloudViewer::core::Int64, LogError, max_correspondence_distance, cloudViewer::core::Tensor::Sum(), cloudViewer::core::Tensor::To(), and cloudViewer::t::geometry::PointCloud::Transform().

Referenced by pybind_registration_class().

◆ ICP()

RegistrationResult cloudViewer::t::pipelines::registration::ICP ( const geometry::PointCloud source,
const geometry::PointCloud target,
const double  max_correspondence_distance,
const core::Tensor init_source_to_target = core::Tensor::Eye(4, core::Float64core::Device("CPU:0")),
const TransformationEstimation estimation = TransformationEstimationPointToPoint(),
const ICPConvergenceCriteria criteria = ICPConvergenceCriteria(),
const double  voxel_size = -1.0,
const std::function< void(const std::unordered_map< std::string, core::Tensor > &)> &  callback_after_iteration = nullptr 
)

Functions for ICP registration.

Parameters
sourceThe source point cloud. (Float32 or Float64 type).
targetThe target point cloud. (Float32 or Float64 type).
max_correspondence_distanceMaximum correspondence points-pair distance.
init_source_to_targetInitial transformation estimation of type Float64 on CPU.
estimationEstimation method.
criteriaConvergence criteria.
voxel_sizeThe input pointclouds will be down-sampled to this voxel_size scale. If voxel_size < 0, original scale will be used. However it is highly recommended to down-sample the point-cloud for performance. By default original scale of the point-cloud will be used.
callback_after_iterationOptional lambda function, saves string to tensor map of attributes such as "iteration_index", "scale_index", "scale_iteration_index", "inlier_rmse", "fitness", "transformation", on CPU device, updated after each iteration.

Definition at line 95 of file Registration.cpp.

References max_correspondence_distance, and MultiScaleICP().

Referenced by BenchmarkDopplerICP(), BenchmarkICP(), and pybind_registration_class().

◆ InitializePointCloudPyramidForMultiScaleICP()

static std::tuple<std::vector<t::geometry::PointCloud>, std::vector<t::geometry::PointCloud> > cloudViewer::t::pipelines::registration::InitializePointCloudPyramidForMultiScaleICP ( const geometry::PointCloud source,
const geometry::PointCloud target,
const std::vector< double > &  voxel_sizes,
const double &  max_correspondence_distance,
const TransformationEstimation estimation,
const int64_t &  num_iterations 
)
static

◆ LegacyComputeFPFHFeature()

void cloudViewer::t::pipelines::registration::LegacyComputeFPFHFeature ( benchmark::State &  state,
utility::optional< int >  max_nn,
utility::optional< double >  radius,
utility::optional< double >  ratio_indices 
)

◆ LoadTensorDopplerPointCloudFromFile()

◆ LoadTensorPointCloudFromFile()

◆ MultiScaleICP()

RegistrationResult cloudViewer::t::pipelines::registration::MultiScaleICP ( const geometry::PointCloud source,
const geometry::PointCloud target,
const std::vector< double > &  voxel_sizes,
const std::vector< ICPConvergenceCriteria > &  criteria_list,
const std::vector< double > &  max_correspondence_distances,
const core::Tensor init_source_to_target = core::Tensor::Eye(4, core::Float64core::Device("CPU:0")),
const TransformationEstimation estimation = TransformationEstimationPointToPoint(),
const std::function< void(const std::unordered_map< std::string, core::Tensor > &)> &  callback_after_iteration = nullptr 
)

Functions for Multi-Scale ICP registration. It will run ICP on different voxel level, from coarse to dense. The vector of ICPConvergenceCriteria(relative fitness, relative rmse, max_iterations) contains the stopping condition for each voxel level. The length of voxel_sizes vector, criteria vector, max_correspondence_distances vector must be same, and voxel_sizes must contain positive values in strictly decreasing order [Lower the voxel size, higher is the resolution]. Only the last value of the voxel_sizes vector can be {-1}, as it allows to run on the original scale without downsampling.

Parameters
sourceThe source point cloud. (Float32 or Float64 type).
targetThe target point cloud. (Float32 or Float64 type).
voxel_sizesVectorDouble of voxel scales of type double.
criteria_listVector of ICPConvergenceCriteria objects for each scale.
max_correspondence_distancesVectorDouble of maximum correspondence points-pair distances of type double, for each iteration. Must be of same length as voxel_sizes and criterias.
init_source_to_targetInitial transformation estimation of type Float64 on CPU.
estimationEstimation method.
callback_after_iterationOptional lambda function, saves string to tensor map of attributes such as "iteration_index", "scale_index", "scale_iteration_index", "inlier_rmse", "fitness", "transformation", on CPU device, updated after each iteration.

Definition at line 345 of file Registration.cpp.

References AssertInputMultiScaleICP(), AssertTensorDtypes, ComputeRegistrationResult(), DoSingleScaleICPIterations(), cloudViewer::core::Float64, cloudViewer::t::geometry::PointCloud::GetDevice(), cloudViewer::core::Tensor::GetDtype(), cloudViewer::t::geometry::PointCloud::GetPointPositions(), cloudViewer::core::nns::NearestNeighborSearch::HybridIndex(), InitializePointCloudPyramidForMultiScaleICP(), LogError, min(), result, and cloudViewer::core::Tensor::To().

Referenced by ICP(), and pybind_registration_class().

◆ pybind_feature()

void cloudViewer::t::pipelines::registration::pybind_feature ( py::module &  m_registration)

Definition at line 20 of file feature.cpp.

References ComputeFPFHFeature(), and CorrespondencesFromFeatures().

Referenced by pybind_registration().

◆ pybind_registration()

void cloudViewer::t::pipelines::registration::pybind_registration ( py::module &  m)

◆ pybind_registration_class()

void cloudViewer::t::pipelines::registration::pybind_registration_class ( py::module &  m_registration)

Definition at line 94 of file registration.cpp.

References cloudViewer::docstring::ClassMethodDocInject(), cloudViewer::t::pipelines::registration::TransformationEstimation::ComputeRMSE(), cloudViewer::t::pipelines::registration::TransformationEstimation::ComputeTransformation(), cloudViewer::t::pipelines::registration::RegistrationResult::converged_, cloudViewer::t::pipelines::registration::RegistrationResult::correspondences_, cloudViewer::t::pipelines::registration::TransformationEstimationForDopplerICP::doppler_kernel_, EvaluateRegistration(), cloudViewer::core::Tensor::Eye(), cloudViewer::t::pipelines::registration::RegistrationResult::fitness_, cloudViewer::core::Float64, format, cloudViewer::docstring::FunctionDocInject(), cloudViewer::t::pipelines::registration::TransformationEstimationForDopplerICP::geometric_kernel_, GetInformationMatrix(), cloudViewer::core::Tensor::GetLength(), ICP(), cloudViewer::t::pipelines::registration::RegistrationResult::inlier_rmse_, cloudViewer::t::pipelines::registration::TransformationEstimationPointToPlane::kernel_, cloudViewer::t::pipelines::registration::TransformationEstimationForColoredICP::kernel_, cloudViewer::t::pipelines::registration::TransformationEstimationForDopplerICP::lambda_doppler_, cloudViewer::t::pipelines::registration::TransformationEstimationForColoredICP::lambda_geometric_, map_shared_argument_docstrings, cloudViewer::t::pipelines::registration::ICPConvergenceCriteria::max_iteration_, MultiScaleICP(), cloudViewer::t::pipelines::registration::RegistrationResult::num_iterations_, cloudViewer::t::pipelines::registration::TransformationEstimationForDopplerICP::period_, cloudViewer::t::pipelines::registration::ICPConvergenceCriteria::relative_fitness_, cloudViewer::t::pipelines::registration::ICPConvergenceCriteria::relative_rmse_, patch::to_string(), and cloudViewer::t::pipelines::registration::RegistrationResult::transformation_.

Referenced by pybind_registration().

◆ pybind_robust_kernels()

Variable Documentation

◆ initial_transform_flat

const std::vector<float> cloudViewer::t::pipelines::registration::initial_transform_flat
static
Initial value:
{
0.862, 0.011, -0.507, 0.5, -0.139, 0.967, -0.215, 0.7,
0.487, 0.255, 0.835, -1.4, 0.0, 0.0, 0.0, 1.0}

Definition at line 40 of file Registration.cpp.

Referenced by BenchmarkICP().

◆ map_shared_argument_docstrings

const std::unordered_map<std::string, std::string> cloudViewer::t::pipelines::registration::map_shared_argument_docstrings
static

Definition at line 52 of file registration.cpp.

Referenced by pybind_registration_class().

◆ max_correspondence_distance

const double cloudViewer::t::pipelines::registration::max_correspondence_distance = 0.05
static

◆ max_iterations

const int cloudViewer::t::pipelines::registration::max_iterations = 10
static

Definition at line 28 of file Registration.cpp.

Referenced by BenchmarkDopplerICP(), and BenchmarkICP().

◆ normals_max_neighbors

const int cloudViewer::t::pipelines::registration::normals_max_neighbors = 30
static

Definition at line 37 of file Registration.cpp.

Referenced by LoadTensorDopplerPointCloudFromFile().

◆ normals_search_radius

const double cloudViewer::t::pipelines::registration::normals_search_radius = 10.0
static

Definition at line 36 of file Registration.cpp.

Referenced by LoadTensorDopplerPointCloudFromFile().

◆ path

const std::string cloudViewer::t::pipelines::registration::path = pointcloud_ply.GetPath()
static

Definition at line 25 of file Feature.cpp.

Referenced by ComputeFPFHFeature(), and LegacyComputeFPFHFeature().

◆ pointcloud_ply

data::BunnyMesh cloudViewer::t::pipelines::registration::pointcloud_ply

Definition at line 24 of file Feature.cpp.

◆ relative_fitness

const double cloudViewer::t::pipelines::registration::relative_fitness = 1e-6
static

Definition at line 26 of file Registration.cpp.

Referenced by BenchmarkDopplerICP(), and BenchmarkICP().

◆ relative_rmse

const double cloudViewer::t::pipelines::registration::relative_rmse = 1e-6
static

Definition at line 27 of file Registration.cpp.

Referenced by BenchmarkDopplerICP(), and BenchmarkICP().

◆ voxel_downsampling_factor

const double cloudViewer::t::pipelines::registration::voxel_downsampling_factor = 0.02
static

Definition at line 30 of file Registration.cpp.

Referenced by BenchmarkDopplerICP(), and BenchmarkICP().