![]() |
ACloudViewer
3.9.4
A Modern Library for 3D Data Processing
|
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 ¤t_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::PointCloud > | LoadTensorPointCloudFromFile (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::PointCloud > | LoadTensorDopplerPointCloudFromFile (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 |
| Enumerator | |
|---|---|
| L2Loss | |
| L1Loss | |
| HuberLoss | |
| CauchyLoss | |
| GMLoss | |
| TukeyLoss | |
| GeneralizedLoss | |
Definition at line 15 of file RobustKernel.h.
| Enumerator | |
|---|---|
| Unspecified | |
| PointToPoint | |
| PointToPlane | |
| ColoredICP | |
| DopplerICP | |
Definition at line 40 of file TransformationEstimation.h.
|
static |
Definition at line 109 of file Registration.cpp.
References AssertTensorDevice, AssertTensorDtype, AssertTensorShape, ColoredICP, DopplerICP, cloudViewer::core::Float64, cloudViewer::t::geometry::PointCloud::GetPointPositions(), cloudViewer::t::pipelines::registration::TransformationEstimation::GetTransformationEstimationType(), cloudViewer::t::geometry::PointCloud::HasPointAttr(), cloudViewer::t::geometry::PointCloud::HasPointColors(), cloudViewer::t::geometry::PointCloud::HasPointNormals(), cloudViewer::t::geometry::PointCloud::HasPointPositions(), cloudViewer::core::Device::IsCUDA(), LogDebug, LogError, and PointToPlane.
Referenced by MultiScaleICP().
|
static |
Definition at line 19 of file TransformationEstimation.cpp.
References AssertTensorDevice, AssertTensorDtype, cloudViewer::core::Tensor::GetDevice(), cloudViewer::core::Tensor::GetLength(), cloudViewer::core::Tensor::GetShape(), cloudViewer::core::Int64, LogError, and cloudViewer::core::SizeVector::ToString().
Referenced by cloudViewer::t::pipelines::registration::TransformationEstimationPointToPoint::ComputeRMSE(), cloudViewer::t::pipelines::registration::TransformationEstimationPointToPlane::ComputeRMSE(), cloudViewer::t::pipelines::registration::TransformationEstimationForDopplerICP::ComputeRMSE(), cloudViewer::t::pipelines::registration::TransformationEstimationPointToPoint::ComputeTransformation(), cloudViewer::t::pipelines::registration::TransformationEstimationPointToPlane::ComputeTransformation(), cloudViewer::t::pipelines::registration::TransformationEstimationForColoredICP::ComputeTransformation(), and cloudViewer::t::pipelines::registration::TransformationEstimationForDopplerICP::ComputeTransformation().
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | BenchmarkDopplerICP | , |
| "CPU:0" | DopplerICP_Float32, | ||
| core::Device("CPU:0") | , | ||
| core::Float32 | , | ||
| TransformationEstimationType::DopplerICP | |||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | BenchmarkDopplerICP | , |
| "CPU:0" | DopplerICP_Float64, | ||
| core::Device("CPU:0") | , | ||
| core::Float64 | , | ||
| TransformationEstimationType::DopplerICP | |||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | BenchmarkICP | , |
| "CPU:0" | ColoredICP_Float32, | ||
| core::Device("CPU:0") | , | ||
| core::Float32 | , | ||
| TransformationEstimationType::ColoredICP | |||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | BenchmarkICP | , |
| "CPU:0" | ColoredICP_Float64, | ||
| core::Device("CPU:0") | , | ||
| core::Float64 | , | ||
| TransformationEstimationType::ColoredICP | |||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | BenchmarkICP | , |
| "CPU:0" | PointToPlane_Float32, | ||
| core::Device("CPU:0") | , | ||
| core::Float32 | , | ||
| TransformationEstimationType::PointToPlane | |||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | BenchmarkICP | , |
| "CPU:0" | PointToPlane_Float64, | ||
| core::Device("CPU:0") | , | ||
| core::Float64 | , | ||
| TransformationEstimationType::PointToPlane | |||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | BenchmarkICP | , |
| "CPU:0" | PointToPoint_Float32, | ||
| core::Device("CPU:0") | , | ||
| core::Float32 | , | ||
| TransformationEstimationType::PointToPoint | |||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | BenchmarkICP | , |
| "CPU:0" | PointToPoint_Float64, | ||
| core::Device("CPU:0") | , | ||
| core::Float64 | , | ||
| TransformationEstimationType::PointToPoint | |||
| ) | -> Unit(benchmark::kMillisecond) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| 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) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | LegacyComputeFPFHFeature | , |
| Legacy Hybrid | Indices[0.02|50|0.0001], | ||
| 50 | , | ||
| 0. | 02, | ||
| 0. | 0001 | ||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | LegacyComputeFPFHFeature | , |
| Legacy Hybrid | Indices[0.02|50|0.001], | ||
| 50 | , | ||
| 0. | 02, | ||
| 0. | 001 | ||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | LegacyComputeFPFHFeature | , |
| Legacy Hybrid | Indices[0.02|50|0.01], | ||
| 50 | , | ||
| 0. | 02, | ||
| 0. | 01 | ||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | LegacyComputeFPFHFeature | , |
| Legacy Hybrid | Indices[0.02|50|0.1], | ||
| 50 | , | ||
| 0. | 02, | ||
| 0. | 1 | ||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | LegacyComputeFPFHFeature | , |
| Legacy Hybrid | Indices[0.02|50|1.0], | ||
| 50 | , | ||
| 0. | 02, | ||
| 1. | 0 | ||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | LegacyComputeFPFHFeature | , |
| Legacy Hybrid | Indices[0.02|50|null], | ||
| 50 | , | ||
| 0. | 02, | ||
| utility::nullopt | |||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | LegacyComputeFPFHFeature | , |
| Legacy | Hybrid[0.01|100], | ||
| 100 | , | ||
| 0. | 01, | ||
| utility::nullopt | |||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | LegacyComputeFPFHFeature | , |
| Legacy | Hybrid[0.02|100], | ||
| 100 | , | ||
| 0. | 02, | ||
| utility::nullopt | |||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | LegacyComputeFPFHFeature | , |
| Legacy | Hybrid[0.02|50], | ||
| 50 | , | ||
| 0. | 02, | ||
| utility::nullopt | |||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | LegacyComputeFPFHFeature | , |
| Legacy | KNN[100], | ||
| 100 | , | ||
| utility::nullopt | , | ||
| utility::nullopt | |||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | LegacyComputeFPFHFeature | , |
| Legacy | KNN[50], | ||
| 50 | , | ||
| utility::nullopt | , | ||
| utility::nullopt | |||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | LegacyComputeFPFHFeature | , |
| Legacy | Radius[0.01], | ||
| utility::nullopt | , | ||
| 0. | 01, | ||
| utility::nullopt | |||
| ) | -> Unit(benchmark::kMillisecond) |
| cloudViewer::t::pipelines::registration::BENCHMARK_CAPTURE | ( | LegacyComputeFPFHFeature | , |
| Legacy | Radius[0.02], | ||
| utility::nullopt | , | ||
| 0. | 02, | ||
| utility::nullopt | |||
| ) | -> Unit(benchmark::kMillisecond) |
|
static |
Definition at line 189 of file Registration.cpp.
References cloudViewer::core::eigen_converter::EigenMatrixToTensor(), cloudViewer::utility::Error, cloudViewer::core::Tensor::Eye(), cloudViewer::data::DemoDopplerICPSequence::GetCalibration(), cloudViewer::data::DemoDopplerICPSequence::GetPath(), ICP(), LoadTensorDopplerPointCloudFromFile(), max_correspondence_distance, max_iterations, cloudViewer::t::pipelines::registration::TransformationEstimationForDopplerICP::period_, relative_fitness, relative_rmse, cloudViewer::utility::SetVerbosityLevel(), cloudViewer::core::cuda::Synchronize(), cloudViewer::core::Tensor::To(), cloudViewer::t::pipelines::registration::TransformationEstimationForDopplerICP::transform_vehicle_to_sensor_, and voxel_downsampling_factor.
|
static |
Definition at line 85 of file Registration.cpp.
References ColoredICP, cloudViewer::utility::Error, cloudViewer::core::Float32, cloudViewer::data::DemoICPPointClouds::GetPaths(), ICP(), initial_transform_flat, LoadTensorPointCloudFromFile(), max_correspondence_distance, max_iterations, PointToPlane, PointToPoint, relative_fitness, relative_rmse, cloudViewer::utility::SetVerbosityLevel(), cloudViewer::core::cuda::Synchronize(), cloudViewer::t::geometry::kernel::image::To(), type, and voxel_downsampling_factor.
| core::Tensor cloudViewer::t::pipelines::registration::ComputeDirectionVectors | ( | const core::Tensor & | positions | ) |
Definition at line 126 of file Registration.cpp.
References cloudViewer::core::Tensor::Empty(), cloudViewer::core::Tensor::Fill(), cloudViewer::core::Tensor::GetDevice(), cloudViewer::core::Tensor::GetDtype(), cloudViewer::core::Tensor::GetLength(), cloudViewer::core::Tensor::GetShape(), cloudViewer::core::Tensor::Item(), and Sqrt().
Referenced by LoadTensorDopplerPointCloudFromFile().
| void cloudViewer::t::pipelines::registration::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 | ||
| ) |
Definition at line 70 of file Feature.cpp.
References ComputeFPFHFeature(), cloudViewer::utility::optional< T >::emplace(), cloudViewer::t::geometry::PointCloud::EstimateNormals(), cloudViewer::core::Tensor::GetLength(), cloudViewer::t::geometry::PointCloud::GetPointPositions(), cloudViewer::utility::optional< T >::has_value(), cloudViewer::core::Int64, cloudViewer::utility::nullopt, path, cloudViewer::t::io::ReadPointCloud(), cloudViewer::t::geometry::PointCloud::SetPointPositions(), cloudViewer::core::cuda::Synchronize(), cloudViewer::t::geometry::PointCloud::To(), cloudViewer::core::Tensor::To(), cloudViewer::t::geometry::PointCloud::UniformDownSample(), and cloudViewer::utility::optional< T >::value().
| 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.
| input | The 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]. |
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().
|
static |
Definition at line 25 of file Registration.cpp.
References AssertTensorShape, cloudViewer::core::Tensor::Eye(), cloudViewer::core::Float64, cloudViewer::core::Tensor::GetLength(), cloudViewer::t::geometry::PointCloud::GetPointPositions(), cloudViewer::core::nns::NearestNeighborSearch::HybridSearch(), cloudViewer::core::Int64, LogWarning, max_correspondence_distance, result, cloudViewer::core::Tensor::Sum(), cloudViewer::t::geometry::kernel::image::To(), and cloudViewer::core::Tensor::To().
Referenced by DoSingleScaleICPIterations(), EvaluateRegistration(), and MultiScaleICP().
| 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.
| source_feats | (N, D) tensor |
| target_feats | (M, D) tensor |
| mutual_filter | Boolean flag, only return correspondences (i, j) s.t. source_features[i] and target_features[j] are mutually the nearest neighbor. |
| mutual_consistency_ratio | Float threshold to decide whether the number of correspondences is sufficient. Only used when mutual_filter is set to True. |
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().
|
static |
Definition at line 258 of file Registration.cpp.
References abs(), ComputeRegistrationResult(), cloudViewer::t::pipelines::registration::TransformationEstimation::ComputeTransformation(), cloudViewer::t::pipelines::registration::RegistrationResult::fitness_, cloudViewer::core::Float64, cloudViewer::t::geometry::PointCloud::GetPointPositions(), cloudViewer::t::pipelines::registration::RegistrationResult::inlier_rmse_, LogDebug, cloudViewer::core::Tensor::Matmul(), max_correspondence_distance, cloudViewer::t::pipelines::registration::ICPConvergenceCriteria::max_iteration_, min(), cloudViewer::t::pipelines::registration::ICPConvergenceCriteria::relative_fitness_, cloudViewer::t::pipelines::registration::ICPConvergenceCriteria::relative_rmse_, result, cloudViewer::core::Tensor::To(), cloudViewer::t::geometry::PointCloud::Transform(), and cloudViewer::t::pipelines::registration::RegistrationResult::transformation_.
Referenced by MultiScaleICP().
| 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::Float64, core::Device("CPU:0")) |
||
| ) |
Function for evaluating registration between point clouds.
| source | The source point cloud. (Float32 or Float64 type). |
| target | The target point cloud. (Float32 or Float64 type). |
| max_correspondence_distance | Maximum correspondence points-pair distance. |
| transformation | The 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().
| 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.
| source | The source point cloud. (Float32 or Float64 type). |
| target | The target point cloud. (Float32 or Float64 type). |
| max_correspondence_distance | Maximum correspondence points-pair distance. |
| transformation | The 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().
| 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::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.
| source | The source point cloud. (Float32 or Float64 type). |
| target | The target point cloud. (Float32 or Float64 type). |
| max_correspondence_distance | Maximum correspondence points-pair distance. |
| init_source_to_target | Initial transformation estimation of type Float64 on CPU. |
| estimation | Estimation method. |
| criteria | Convergence criteria. |
| voxel_size | The 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_iteration | Optional 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().
|
static |
Definition at line 206 of file Registration.cpp.
References cloudViewer::t::geometry::PointCloud::Clone(), ColoredICP, cloudViewer::t::pipelines::registration::TransformationEstimation::GetTransformationEstimationType(), cloudViewer::t::geometry::PointCloud::HasPointAttr(), LogWarning, max_correspondence_distance, and cloudViewer::t::geometry::PointCloud::VoxelDownSample().
Referenced by MultiScaleICP().
| void cloudViewer::t::pipelines::registration::LegacyComputeFPFHFeature | ( | benchmark::State & | state, |
| utility::optional< int > | max_nn, | ||
| utility::optional< double > | radius, | ||
| utility::optional< double > | ratio_indices | ||
| ) |
Definition at line 27 of file Feature.cpp.
References cloudViewer::utility::ComputeFPFHFeature(), cloudViewer::io::CreatePointCloudFromFile(), cloudViewer::utility::optional< T >::emplace(), cloudViewer::utility::optional< T >::has_value(), cloudViewer::utility::nullopt, path, and cloudViewer::utility::optional< T >::value().
|
static |
Definition at line 149 of file Registration.cpp.
References ComputeDirectionVectors(), cloudViewer::t::geometry::PointCloud::EstimateNormals(), cloudViewer::t::geometry::PointCloud::GetPointAttr(), cloudViewer::t::geometry::PointCloud::GetPointPositions(), LogWarning, normals_max_neighbors, normals_search_radius, cloudViewer::t::io::ReadPointCloud(), cloudViewer::t::geometry::PointCloud::SetPointAttr(), cloudViewer::t::geometry::PointCloud::SetPointPositions(), cloudViewer::t::geometry::PointCloud::To(), cloudViewer::core::Tensor::To(), and cloudViewer::t::geometry::PointCloud::VoxelDownSample().
Referenced by BenchmarkDopplerICP().
|
static |
Definition at line 45 of file Registration.cpp.
References cloudViewer::core::Tensor::Div(), cloudViewer::t::geometry::PointCloud::GetPointColors(), cloudViewer::t::geometry::PointCloud::GetPointNormals(), cloudViewer::t::geometry::PointCloud::GetPointPositions(), cloudViewer::t::geometry::PointCloud::HasPointColors(), LogWarning, cloudViewer::t::io::ReadPointCloud(), cloudViewer::t::geometry::PointCloud::SetPointColors(), cloudViewer::t::geometry::PointCloud::SetPointNormals(), cloudViewer::t::geometry::PointCloud::SetPointPositions(), cloudViewer::t::geometry::PointCloud::To(), cloudViewer::core::Tensor::To(), and cloudViewer::t::geometry::PointCloud::VoxelDownSample().
Referenced by BenchmarkICP().
| 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::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.
| source | The source point cloud. (Float32 or Float64 type). |
| target | The target point cloud. (Float32 or Float64 type). |
| voxel_sizes | VectorDouble of voxel scales of type double. |
| criteria_list | Vector of ICPConvergenceCriteria objects for each scale. |
| max_correspondence_distances | VectorDouble 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_target | Initial transformation estimation of type Float64 on CPU. |
| estimation | Estimation method. |
| callback_after_iteration | Optional 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().
| 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().
| void cloudViewer::t::pipelines::registration::pybind_registration | ( | py::module & | m | ) |
Definition at line 452 of file registration.cpp.
References pybind_feature(), pybind_registration_class(), and pybind_robust_kernels().
Referenced by cloudViewer::t::pipelines::pybind_pipelines().
| 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().
| void cloudViewer::t::pipelines::registration::pybind_robust_kernels | ( | py::module & | m | ) |
Definition at line 19 of file robust_kernel.cpp.
References CauchyLoss, format, GeneralizedLoss, GMLoss, HuberLoss, L1Loss, L2Loss, cloudViewer::t::pipelines::registration::RobustKernel::scaling_parameter_, cloudViewer::t::pipelines::registration::RobustKernel::shape_parameter_, TukeyLoss, type, and cloudViewer::t::pipelines::registration::RobustKernel::type_.
Referenced by pybind_registration().
|
static |
Definition at line 40 of file Registration.cpp.
Referenced by BenchmarkICP().
|
static |
Definition at line 52 of file registration.cpp.
Referenced by pybind_registration_class().
|
static |
Definition at line 33 of file Registration.cpp.
Referenced by BenchmarkDopplerICP(), BenchmarkICP(), ComputeRegistrationResult(), DoSingleScaleICPIterations(), EvaluateRegistration(), GetInformationMatrix(), ICP(), and InitializePointCloudPyramidForMultiScaleICP().
|
static |
Definition at line 28 of file Registration.cpp.
Referenced by BenchmarkDopplerICP(), and BenchmarkICP().
|
static |
Definition at line 37 of file Registration.cpp.
Referenced by LoadTensorDopplerPointCloudFromFile().
|
static |
Definition at line 36 of file Registration.cpp.
Referenced by LoadTensorDopplerPointCloudFromFile().
|
static |
Definition at line 25 of file Feature.cpp.
Referenced by ComputeFPFHFeature(), and LegacyComputeFPFHFeature().
| data::BunnyMesh cloudViewer::t::pipelines::registration::pointcloud_ply |
Definition at line 24 of file Feature.cpp.
|
static |
Definition at line 26 of file Registration.cpp.
Referenced by BenchmarkDopplerICP(), and BenchmarkICP().
|
static |
Definition at line 27 of file Registration.cpp.
Referenced by BenchmarkDopplerICP(), and BenchmarkICP().
|
static |
Definition at line 30 of file Registration.cpp.
Referenced by BenchmarkDopplerICP(), and BenchmarkICP().