Open3D (C++ API)  0.17.0
TransformationEstimation.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
8#pragma once
9
10#include <Eigen/Core>
11#include <memory>
12#include <string>
13#include <utility>
14#include <vector>
15
17
18namespace open3d {
19
20namespace geometry {
21class PointCloud;
22}
23
24namespace pipelines {
25namespace registration {
26
27typedef std::vector<Eigen::Vector2i> CorrespondenceSet;
28
30 Unspecified = 0,
31 PointToPoint = 1,
32 PointToPlane = 2,
33 ColoredICP = 3,
35};
36
43public:
47
48public:
50 const = 0;
57 virtual double ComputeRMSE(const geometry::PointCloud &source,
58 const geometry::PointCloud &target,
59 const CorrespondenceSet &corres) const = 0;
66 virtual Eigen::Matrix4d ComputeTransformation(
67 const geometry::PointCloud &source,
68 const geometry::PointCloud &target,
69 const CorrespondenceSet &corres) const = 0;
70};
71
76public:
81 TransformationEstimationPointToPoint(bool with_scaling = false)
82 : with_scaling_(with_scaling) {}
84
85public:
87 const override {
88 return type_;
89 };
90 double ComputeRMSE(const geometry::PointCloud &source,
91 const geometry::PointCloud &target,
92 const CorrespondenceSet &corres) const override;
93 Eigen::Matrix4d ComputeTransformation(
94 const geometry::PointCloud &source,
95 const geometry::PointCloud &target,
96 const CorrespondenceSet &corres) const override;
97
98public:
105 bool with_scaling_ = false;
106
107private:
108 const TransformationEstimationType type_ =
110};
111
116public:
120
124 std::shared_ptr<RobustKernel> kernel)
125 : kernel_(std::move(kernel)) {}
126
127public:
129 const override {
130 return type_;
131 };
132 double ComputeRMSE(const geometry::PointCloud &source,
133 const geometry::PointCloud &target,
134 const CorrespondenceSet &corres) const override;
135 Eigen::Matrix4d ComputeTransformation(
136 const geometry::PointCloud &source,
137 const geometry::PointCloud &target,
138 const CorrespondenceSet &corres) const override;
139
140public:
142 std::shared_ptr<RobustKernel> kernel_ = std::make_shared<L2Loss>();
143
144private:
145 const TransformationEstimationType type_ =
147};
148
149} // namespace registration
150} // namespace pipelines
151} // namespace open3d
A point cloud consists of point coordinates, and optionally point colors and point normals.
Definition: PointCloud.h:36
Definition: TransformationEstimation.h:42
virtual double ComputeRMSE(const geometry::PointCloud &source, const geometry::PointCloud &target, const CorrespondenceSet &corres) const =0
virtual Eigen::Matrix4d ComputeTransformation(const geometry::PointCloud &source, const geometry::PointCloud &target, const CorrespondenceSet &corres) const =0
virtual TransformationEstimationType GetTransformationEstimationType() const =0
virtual ~TransformationEstimation()
Definition: TransformationEstimation.h:46
TransformationEstimation()
Default Constructor.
Definition: TransformationEstimation.h:45
double ComputeRMSE(const geometry::PointCloud &source, const geometry::PointCloud &target, const CorrespondenceSet &corres) const override
Definition: TransformationEstimation.cpp:45
TransformationEstimationPointToPlane()
Default Constructor.
Definition: TransformationEstimation.h:118
Eigen::Matrix4d ComputeTransformation(const geometry::PointCloud &source, const geometry::PointCloud &target, const CorrespondenceSet &corres) const override
Definition: TransformationEstimation.cpp:59
~TransformationEstimationPointToPlane() override
Definition: TransformationEstimation.h:119
std::shared_ptr< RobustKernel > kernel_
shared_ptr to an Abstract RobustKernel that could mutate at runtime.
Definition: TransformationEstimation.h:142
TransformationEstimationType GetTransformationEstimationType() const override
Definition: TransformationEstimation.h:128
TransformationEstimationPointToPlane(std::shared_ptr< RobustKernel > kernel)
Constructor that takes as input a RobustKernel.
Definition: TransformationEstimation.h:123
TransformationEstimationPointToPoint(bool with_scaling=false)
Parameterized Constructor.
Definition: TransformationEstimation.h:81
double ComputeRMSE(const geometry::PointCloud &source, const geometry::PointCloud &target, const CorrespondenceSet &corres) const override
Definition: TransformationEstimation.cpp:19
Eigen::Matrix4d ComputeTransformation(const geometry::PointCloud &source, const geometry::PointCloud &target, const CorrespondenceSet &corres) const override
Definition: TransformationEstimation.cpp:31
TransformationEstimationType GetTransformationEstimationType() const override
Definition: TransformationEstimation.h:86
bool with_scaling_
Set to True to estimate scaling, False to force scaling to be 1.
Definition: TransformationEstimation.h:105
~TransformationEstimationPointToPoint() override
Definition: TransformationEstimation.h:83
TransformationEstimationType
Definition: TransformationEstimation.h:29
std::vector< Eigen::Vector2i > CorrespondenceSet
Definition: TransformationEstimation.h:27
Definition: PinholeCameraIntrinsic.cpp:16
Definition: Device.h:107