43 namespace registration {
62 double relative_rmse = 1e-6,
63 int max_iteration = 30)
64 : relative_fitness_(relative_fitness),
65 relative_rmse_(relative_rmse),
66 max_iteration_(max_iteration) {}
91 : transformation_(transformation), inlier_rmse_(0.0), fitness_(0.0) {}
124 double max_correspondence_distance,
141 double max_correspondence_distance,
172 const std::vector<double> &voxel_sizes,
173 const std::vector<ICPConvergenceCriteria> &criteria_list,
174 const std::vector<double> &max_correspondence_distances,
RegistrationResult RegistrationMultiScaleICP(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)
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 stoping 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.
Definition: Registration.cpp:140
int max_iteration_
Maximum iteration before iteration stops.
Definition: Registration.h:77
double relative_fitness_
Definition: Registration.h:72
Class that defines the convergence criteria of ICP.
Definition: Registration.h:49
RegistrationResult(const core::Tensor &transformation=core::Tensor::Eye(4, core::Dtype::Float64, core::Device("CPU:0")))
Parameterized Constructor.
Definition: Registration.h:89
std::pair< core::Tensor, core::Tensor > CorrespondenceSet
CorrespondenceSet: pair of 2x Int64 tensors of shape {C,}, where C is the number of good corresponden...
Definition: TransformationEstimation.h:55
core::Tensor transformation_
The estimated transformation matrix of dtype Float64 on CPU device.
Definition: Registration.h:102
RegistrationResult EvaluateRegistration(const geometry::PointCloud &source, const geometry::PointCloud &target, double max_correspondence_distance, const Eigen::Matrix4d &transformation)
Function for evaluating registration between point clouds.
Definition: Registration.cpp:118
double fitness_
Definition: Registration.h:110
ICPConvergenceCriteria(double relative_fitness=1e-6, double relative_rmse=1e-6, int max_iteration=30)
Parameterized Constructor. ICP algorithm stops if the relative change of fitness and rmse hit relativ...
Definition: Registration.h:61
double inlier_rmse_
RMSE of all inlier correspondences. Lower is better.
Definition: Registration.h:107
A pointcloud contains a set of 3D points.
Definition: PointCloud.h:95
bool IsBetterRANSACThan(const RegistrationResult &other) const
Definition: Registration.h:95
Definition: PinholeCameraIntrinsic.cpp:35
CorrespondenceSet correspondence_set_
Definition: Registration.h:105
~RegistrationResult()
Definition: Registration.h:93
~ICPConvergenceCriteria()
Definition: Registration.h:67
double relative_rmse_
Definition: Registration.h:75
static Tensor Eye(int64_t n, Dtype dtype, const Device &device)
Create an identity matrix of size n x n.
Definition: Tensor.cpp:252
RegistrationResult RegistrationICP(const geometry::PointCloud &source, const geometry::PointCloud &target, double max_correspondence_distance, const Eigen::Matrix4d &init, const TransformationEstimation &estimation, const ICPConvergenceCriteria &criteria)
Functions for ICP registration.
Definition: Registration.cpp:134
static const Dtype Float64
Definition: Dtype.h:43
Definition: Registration.h:83