Open3D (C++ API)  0.18.0
GeneralizedICP.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - Open3D: www.open3d.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2023 www.open3d.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 // @author Ignacio Vizzo [ivizzo@uni-bonn.de]
8 //
9 // Copyright (c) 2021 Ignacio Vizzo, Cyrill Stachniss, University of Bonn.
10 // ----------------------------------------------------------------------------
11 
12 #pragma once
13 
14 #include <Eigen/Core>
15 #include <memory>
16 
20 
21 namespace open3d {
22 namespace pipelines {
23 namespace registration {
24 
25 class RegistrationResult;
26 
28  : public TransformationEstimation {
29 public:
31 
33  const override {
34  return type_;
35  };
40  double epsilon = 1e-3,
41  std::shared_ptr<RobustKernel> kernel = std::make_shared<L2Loss>())
42  : epsilon_(epsilon), kernel_(std::move(kernel)) {}
43 
44 public:
45  double ComputeRMSE(const geometry::PointCloud &source,
46  const geometry::PointCloud &target,
47  const CorrespondenceSet &corres) const override;
48 
49  Eigen::Matrix4d ComputeTransformation(
50  const geometry::PointCloud &source,
51  const geometry::PointCloud &target,
52  const CorrespondenceSet &corres) const override;
53 
54 public:
56  double epsilon_ = 1e-3;
57 
59  std::shared_ptr<RobustKernel> kernel_ = std::make_shared<L2Loss>();
60 
61 private:
62  const TransformationEstimationType type_ =
64 };
65 
69 // A. Segal, D .Haehnel, S. Thrun
79  const geometry::PointCloud &source,
80  const geometry::PointCloud &target,
81  double max_correspondence_distance,
82  const Eigen::Matrix4d &init = Eigen::Matrix4d::Identity(),
86 
87 } // namespace registration
88 } // namespace pipelines
89 } // namespace open3d
A point cloud consists of point coordinates, and optionally point colors and point normals.
Definition: PointCloud.h:36
Class that defines the convergence criteria of ICP.
Definition: Registration.h:36
TransformationEstimationType GetTransformationEstimationType() const override
Definition: GeneralizedICP.h:32
double epsilon_
Small constant representing covariance along the normal.
Definition: GeneralizedICP.h:56
Eigen::Matrix4d ComputeTransformation(const geometry::PointCloud &source, const geometry::PointCloud &target, const CorrespondenceSet &corres) const override
Definition: GeneralizedICP.cpp:98
double ComputeRMSE(const geometry::PointCloud &source, const geometry::PointCloud &target, const CorrespondenceSet &corres) const override
Definition: GeneralizedICP.cpp:76
std::shared_ptr< RobustKernel > kernel_
shared_ptr to an Abstract RobustKernel that could mutate at runtime.
Definition: GeneralizedICP.h:59
TransformationEstimationForGeneralizedICP(double epsilon=1e-3, std::shared_ptr< RobustKernel > kernel=std::make_shared< L2Loss >())
Constructor that takes as input a RobustKernel.
Definition: GeneralizedICP.h:39
Definition: TransformationEstimation.h:42
RegistrationResult RegistrationGeneralizedICP(const geometry::PointCloud &source, const geometry::PointCloud &target, double max_correspondence_distance, const Eigen::Matrix4d &init, const TransformationEstimationForGeneralizedICP &estimation, const ICPConvergenceCriteria &criteria)
Function for Generalized ICP registration.
Definition: GeneralizedICP.cpp:150
std::vector< Eigen::Vector2i > CorrespondenceSet
Definition: Feature.h:25
TransformationEstimationType
Definition: TransformationEstimation.h:29
Definition: PinholeCameraIntrinsic.cpp:16
Definition: Device.h:107