Open3D (C++ API)  0.19.0
Loading...
Searching...
No Matches
GeneralizedICP.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// Copyright (c) 2018-2024 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
21namespace open3d {
22namespace pipelines {
23namespace registration {
24
25class RegistrationResult;
26
29public:
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
44public:
45 double ComputeRMSE(const geometry::PointCloud &source,
47 const CorrespondenceSet &corres) const override;
48
49 Eigen::Matrix4d ComputeTransformation(
50 const geometry::PointCloud &source,
52 const CorrespondenceSet &corres) const override;
53
54 std::tuple<std::shared_ptr<const geometry::PointCloud>,
55 std::shared_ptr<const geometry::PointCloud>>
57 const geometry::PointCloud &source,
59 double max_correspondence_distance) const override;
60
61public:
63 double epsilon_ = 1e-3;
64
66 std::shared_ptr<RobustKernel> kernel_ = std::make_shared<L2Loss>();
67
68private:
71};
72
76// A. Segal, D .Haehnel, S. Thrun
86 const geometry::PointCloud &source,
88 double max_correspondence_distance,
89 const Eigen::Matrix4d &init = Eigen::Matrix4d::Identity(),
93
94} // namespace registration
95} // namespace pipelines
96} // namespace open3d
Real target
Definition SurfaceReconstructionPoisson.cpp:267
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:63
std::tuple< std::shared_ptr< const geometry::PointCloud >, std::shared_ptr< const geometry::PointCloud > > InitializePointCloudsForTransformation(const geometry::PointCloud &source, const geometry::PointCloud &target, double max_correspondence_distance) const override
Definition GeneralizedICP.cpp:153
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:66
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:173
std::vector< Eigen::Vector2i > CorrespondenceSet
Definition Feature.h:25
TransformationEstimationType
Definition TransformationEstimation.h:29
Definition PinholeCameraIntrinsic.cpp:16
Definition Device.h:111