Open3D (C++ API)  0.20.0
Loading...
Searching...
No Matches
Data Structures | Typedefs | Enumerations | Functions
open3d::pipelines::registration Namespace Reference

Data Structures

class  CauchyLoss
 
class  CorrespondenceChecker
 Base class that checks if two (small) point clouds can be aligned. More...
 
class  CorrespondenceCheckerBasedOnDistance
 Check if two aligned point clouds are close. More...
 
class  CorrespondenceCheckerBasedOnEdgeLength
 Check if two point clouds build the polygons with similar edge lengths. More...
 
class  CorrespondenceCheckerBasedOnNormal
 Class to check if two aligned point clouds have similar normals. More...
 
class  CorrespondenceCheckerBasedOnSourceRotation
 Class to limit the rotation of the source object. More...
 
class  FastGlobalRegistrationOption
 Options for FastGlobalRegistration. More...
 
class  Feature
 Class to store featrues for registration. More...
 
class  GlobalOptimizationConvergenceCriteria
 Convergence criteria of GlobalOptimization. More...
 
class  GlobalOptimizationGaussNewton
 Global optimization with Gauss-Newton algorithm. More...
 
class  GlobalOptimizationLevenbergMarquardt
 Global optimization with Levenberg-Marquardt algorithm. More...
 
class  GlobalOptimizationMethod
 Base class for global optimization method. More...
 
class  GlobalOptimizationOption
 Option for GlobalOptimization. More...
 
class  GMLoss
 
class  HuberLoss
 
class  ICPConvergenceCriteria
 Class that defines the convergence criteria of ICP. More...
 
struct  InformationMatrixReducer
 
class  L1Loss
 
class  L2Loss
 
class  NormalDistributionsTransformOption
 Class that defines options for 3D Normal Distributions Transform registration. More...
 
class  PoseGraph
 Data structure defining the pose graph. More...
 
class  PoseGraphEdge
 Edge of PoseGraph. More...
 
class  PoseGraphNode
 Node of PoseGraph. More...
 
class  RANSACConvergenceCriteria
 Class that defines the convergence criteria of RANSAC. More...
 
struct  RANSACCorrespondenceReduction
 
struct  RegistrationReduction
 
class  RegistrationResult
 
class  RobustKernel
 
class  TransformationEstimation
 
class  TransformationEstimationForColoredICP
 
class  TransformationEstimationForGeneralizedICP
 
class  TransformationEstimationPointToPlane
 
class  TransformationEstimationPointToPoint
 
class  TransformationEstimationSymmetric
 Estimates a source-to-target transformation with symmetric ICP. More...
 
class  TukeyLoss
 

Typedefs

typedef std::vector< Eigen::Vector2i > CorrespondenceSet
 

Enumerations

enum class  TransformationEstimationType {
  Unspecified = 0 , PointToPoint = 1 , PointToPlane = 2 , ColoredICP = 3 ,
  GeneralizedICP = 4 , SymmetricICP = 5
}
 

Functions

RegistrationResult RegistrationColoredICP (const geometry::PointCloud &source, const geometry::PointCloud &target, double max_distance, const Eigen::Matrix4d &init=Eigen::Matrix4d::Identity(), const TransformationEstimationForColoredICP &estimation=TransformationEstimationForColoredICP(), const ICPConvergenceCriteria &criteria=ICPConvergenceCriteria())
 Function for Colored ICP registration.
 
RegistrationResult FastGlobalRegistrationBasedOnCorrespondence (const geometry::PointCloud &source, const geometry::PointCloud &target, const CorrespondenceSet &corres, const FastGlobalRegistrationOption &option=FastGlobalRegistrationOption())
 Fast Global Registration based on a given set of correspondences.
 
RegistrationResult FastGlobalRegistrationBasedOnFeatureMatching (const geometry::PointCloud &source, const geometry::PointCloud &target, const Feature &source_feature, const Feature &target_feature, const FastGlobalRegistrationOption &option=FastGlobalRegistrationOption())
 Fast Global Registration based on a given set of FPFH features.
 
std::shared_ptr< FeatureComputeFPFHFeature (const geometry::PointCloud &input, const geometry::KDTreeSearchParam &search_param, const std::optional< std::vector< size_t > > &indices)
 
CorrespondenceSet CorrespondencesFromFeatures (const Feature &source_features, const Feature &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.
 
RegistrationResult RegistrationGeneralizedICP (const geometry::PointCloud &source, const geometry::PointCloud &target, double max_correspondence_distance, const Eigen::Matrix4d &init=Eigen::Matrix4d::Identity(), const TransformationEstimationForGeneralizedICP &estimation=TransformationEstimationForGeneralizedICP(), const ICPConvergenceCriteria &criteria=ICPConvergenceCriteria())
 Function for Generalized ICP registration.
 
std::shared_ptr< PoseGraphCreatePoseGraphWithoutInvalidEdges (const PoseGraph &pose_graph, const GlobalOptimizationOption &option)
 
void GlobalOptimization (PoseGraph &pose_graph, const GlobalOptimizationMethod &method, const GlobalOptimizationConvergenceCriteria &criteria, const GlobalOptimizationOption &option)
 
RegistrationResult RegistrationNDT (const geometry::PointCloud &source, const geometry::PointCloud &target, const NormalDistributionsTransformOption &option=NormalDistributionsTransformOption(), const Eigen::Matrix4d &init=Eigen::Matrix4d::Identity())
 Function for 3D Normal Distributions Transform registration.
 
RegistrationResult EvaluateRegistration (const geometry::PointCloud &source, const geometry::PointCloud &target, double max_correspondence_distance, const Eigen::Matrix4d &transformation=Eigen::Matrix4d::Identity())
 Function for evaluating registration between point clouds.
 
RegistrationResult RegistrationICP (const geometry::PointCloud &source, const geometry::PointCloud &target, double max_correspondence_distance, const Eigen::Matrix4d &init=Eigen::Matrix4d::Identity(), const TransformationEstimation &estimation=TransformationEstimationPointToPoint(false), const ICPConvergenceCriteria &criteria=ICPConvergenceCriteria())
 Functions for ICP registration.
 
template<typename T >
void atomic_min (std::atomic< T > &min_val, const T &val) noexcept
 
RegistrationResult RegistrationRANSACBasedOnCorrespondence (const geometry::PointCloud &source, const geometry::PointCloud &target, const CorrespondenceSet &corres, double max_correspondence_distance, const TransformationEstimation &estimation=TransformationEstimationPointToPoint(false), int ransac_n=3, const std::vector< std::reference_wrapper< const CorrespondenceChecker > > &checkers={}, const RANSACConvergenceCriteria &criteria=RANSACConvergenceCriteria())
 Function for global RANSAC registration based on a given set of correspondences.
 
RegistrationResult RegistrationRANSACBasedOnFeatureMatching (const geometry::PointCloud &source, const geometry::PointCloud &target, const Feature &source_features, const Feature &target_features, bool mutual_filter, double max_correspondence_distance, const TransformationEstimation &estimation=TransformationEstimationPointToPoint(false), int ransac_n=3, const std::vector< std::reference_wrapper< const CorrespondenceChecker > > &checkers={}, const RANSACConvergenceCriteria &criteria=RANSACConvergenceCriteria())
 Function for global RANSAC registration based on feature matching.
 
Eigen::Matrix6d GetInformationMatrixFromPointClouds (const geometry::PointCloud &source, const geometry::PointCloud &target, double max_correspondence_distance, const Eigen::Matrix4d &transformation)
 
RegistrationResult RegistrationSymmetricICP (const geometry::PointCloud &source, const geometry::PointCloud &target, double max_correspondence_distance, const Eigen::Matrix4d &init=Eigen::Matrix4d::Identity(), const TransformationEstimationSymmetric &estimation=TransformationEstimationSymmetric(), const ICPConvergenceCriteria &criteria=ICPConvergenceCriteria())
 Registers source to target with symmetric point-to-plane ICP.
 
Eigen::Matrix4d TransformSymmetricPoseToMatrix4d (const Eigen::Vector6d &pose, const Eigen::Vector3d &source_mean, const Eigen::Vector3d &target_mean)
 

Typedef Documentation

◆ CorrespondenceSet

typedef std::vector< Eigen::Vector2i > open3d::pipelines::registration::CorrespondenceSet

Enumeration Type Documentation

◆ TransformationEstimationType

Enumerator
Unspecified 
PointToPoint 
PointToPlane 
ColoredICP 
GeneralizedICP 
SymmetricICP 

Function Documentation

◆ atomic_min()

template<typename T >
void open3d::pipelines::registration::atomic_min ( std::atomic< T > &  min_val,
const T &  val 
)
noexcept

Atomically store val into min_val if it is smaller. Retries while the compare-exchange loses a race against another thread (which refreshes prev_val), and stops once another thread has already stored a value <= val.

Relaxed ordering is sufficient: min_val is only an optimization hint (the RANSAC iteration bound) and does not publish any other data, so no happens-before relationship with surrounding accesses is required.

◆ ComputeFPFHFeature()

std::shared_ptr< Feature > open3d::pipelines::registration::ComputeFPFHFeature ( const geometry::PointCloud input,
const geometry::KDTreeSearchParam search_param = geometry::KDTreeSearchParamKNN(),
const std::optional< std::vector< size_t > > &  indices = std::nullopt 
)

Function to compute FPFH feature for a point cloud.

Parameters
inputThe Input point cloud.
search_paramKDTree KNN search parameter.
indicesIndices of the points to compute FPFH features on. If not set, compute features for the whole point cloud.

◆ CorrespondencesFromFeatures()

CorrespondenceSet open3d::pipelines::registration::CorrespondencesFromFeatures ( const Feature source_features,
const Feature 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.

Parameters
source_features(D, N) feature
target_features(D, M) feature
mutual_filterBoolean flag, only return correspondences (i, j) s.t. source_features[i] and target_features[j] are mutually the nearest neighbor.
mutual_consistency_ratioFloat threshold to decide whether the number of correspondences is sufficient. Only used when mutual_filter is set to True.
Returns
A CorrespondenceSet. When mutual_filter is disabled: the first column is arange(0, N) of source, and the second column is the corresponding index of target. When mutual_filter is enabled, return the filtering subset of the aforementioned correspondence set where source[i] and target[j] are mutually the nearest neighbor. If the subset size is smaller than mutual_consistency_ratio * N, return the unfiltered set.

◆ CreatePoseGraphWithoutInvalidEdges()

std::shared_ptr< PoseGraph > open3d::pipelines::registration::CreatePoseGraphWithoutInvalidEdges ( const PoseGraph pose_graph,
const GlobalOptimizationOption option 
)

Function to prune out uncertain edges having confidence_ < .edge_prune_threshold_

◆ EvaluateRegistration()

RegistrationResult open3d::pipelines::registration::EvaluateRegistration ( const geometry::PointCloud source,
const geometry::PointCloud target,
double  max_correspondence_distance,
const Eigen::Matrix4d &  transformation = Eigen::Matrix4d::Identity() 
)

Function for evaluating registration between point clouds.

Parameters
sourceThe source point cloud.
targetThe target point cloud.
max_correspondence_distanceMaximum correspondence points-pair distance.
transformationThe 4x4 transformation matrix to transform source to target. Default value: array([[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]]).

◆ FastGlobalRegistrationBasedOnCorrespondence()

RegistrationResult open3d::pipelines::registration::FastGlobalRegistrationBasedOnCorrespondence ( const geometry::PointCloud source,
const geometry::PointCloud target,
const CorrespondenceSet corres,
const FastGlobalRegistrationOption option = FastGlobalRegistrationOption() 
)

Fast Global Registration based on a given set of correspondences.

Parameters
sourceThe source point cloud.
targetThe target point cloud.
corresCorrespondence indices between source and target point clouds.
optionFGR options

◆ FastGlobalRegistrationBasedOnFeatureMatching()

RegistrationResult open3d::pipelines::registration::FastGlobalRegistrationBasedOnFeatureMatching ( const geometry::PointCloud source,
const geometry::PointCloud target,
const Feature source_feature,
const Feature target_feature,
const FastGlobalRegistrationOption option = FastGlobalRegistrationOption() 
)

Fast Global Registration based on a given set of FPFH features.

Parameters
sourceThe source point cloud.
targetThe target point cloud.
corresCorrespondence indices between source and target point clouds.
optionFGR options

◆ GetInformationMatrixFromPointClouds()

Eigen::Matrix6d open3d::pipelines::registration::GetInformationMatrixFromPointClouds ( const geometry::PointCloud source,
const geometry::PointCloud target,
double  max_correspondence_distance,
const Eigen::Matrix4d &  transformation 
)
Parameters
sourceThe source point cloud.
targetThe target point cloud.
max_correspondence_distanceMaximum correspondence points-pair distance.
transformationThe 4x4 transformation matrix to transform source to target.

◆ GlobalOptimization()

void open3d::pipelines::registration::GlobalOptimization ( PoseGraph pose_graph,
const GlobalOptimizationMethod method = GlobalOptimizationLevenbergMarquardt(),
const GlobalOptimizationConvergenceCriteria criteria = GlobalOptimizationConvergenceCriteria(),
const GlobalOptimizationOption option = GlobalOptimizationOption() 
)

Function to optimize a PoseGraph Reference: [Kümmerle et al 2011] R Kümmerle, G. Grisetti, H. Strasdat, K. Konolige, W. Burgard g2o: A General Framework for Graph Optimization, ICRA 2011 [Choi et al 2015] S. Choi, Q.-Y. Zhou, V. Koltun, Robust Reconstruction of Indoor Scenes, CVPR 2015 [M. Lourakis 2009] M. Lourakis, SBA: A Software Package for Generic Sparse Bundle Adjustment, Transactions on Mathematical Software, 2009

◆ RegistrationColoredICP()

RegistrationResult open3d::pipelines::registration::RegistrationColoredICP ( const geometry::PointCloud source,
const geometry::PointCloud target,
double  max_distance,
const Eigen::Matrix4d &  init = Eigen::Matrix4d::Identity(),
const TransformationEstimationForColoredICP estimation = TransformationEstimationForColoredICP(),
const ICPConvergenceCriteria criteria = ICPConvergenceCriteria() 
)

Function for Colored ICP registration.

This is implementation of following paper J. Park, Q.-Y. Zhou, V. Koltun, Colored Point Cloud Registration Revisited, ICCV 2017.

Parameters
sourceThe source point cloud.
targetThe target point cloud.
max_distanceMaximum correspondence points-pair distance.
initInitial transformation estimation. Default value: array([[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]]).
estimationTransformationEstimationForColoredICP method. Can only change the lambda_geometric value and the robust kernel used in the optimization
criteriaConvergence criteria.

◆ RegistrationGeneralizedICP()

RegistrationResult open3d::pipelines::registration::RegistrationGeneralizedICP ( const geometry::PointCloud source,
const geometry::PointCloud target,
double  max_correspondence_distance,
const Eigen::Matrix4d &  init = Eigen::Matrix4d::Identity(),
const TransformationEstimationForGeneralizedICP estimation = TransformationEstimationForGeneralizedICP(),
const ICPConvergenceCriteria criteria = ICPConvergenceCriteria() 
)

Function for Generalized ICP registration.

This is implementation of following paper Generalized-ICP, RSS 2009.

Parameters
sourceThe source point cloud.
targetThe target point cloud.
max_distanceMaximum correspondence points-pair distance.
initInitial transformation estimation. Default value: array([[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]]).
estimationEstimation method for transformation.
criteriaConvergence criteria.

◆ RegistrationICP()

RegistrationResult open3d::pipelines::registration::RegistrationICP ( const geometry::PointCloud source,
const geometry::PointCloud target,
double  max_correspondence_distance,
const Eigen::Matrix4d &  init = Eigen::Matrix4d::Identity(),
const TransformationEstimation estimation = TransformationEstimationPointToPoint(false),
const ICPConvergenceCriteria criteria = ICPConvergenceCriteria() 
)

Functions for ICP registration.

Parameters
sourceThe source point cloud.
targetThe target point cloud.
max_correspondence_distanceMaximum correspondence points-pair distance.
initInitial transformation estimation. Default value: array([[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]])
estimationEstimation method.
criteriaConvergence criteria.

◆ RegistrationNDT()

RegistrationResult open3d::pipelines::registration::RegistrationNDT ( const geometry::PointCloud source,
const geometry::PointCloud target,
const NormalDistributionsTransformOption option = NormalDistributionsTransformOption(),
const Eigen::Matrix4d &  init = Eigen::Matrix4d::Identity() 
)

Function for 3D Normal Distributions Transform registration.

This implementation builds a voxelized Gaussian model from the target point cloud and optimizes the rigid source-to-target transformation with Gauss-Newton iterations. The returned correspondence set uses the target point closest to each accepted voxel mean as its representative, and the inlier RMSE is computed from those representative point correspondences.

Parameters
sourceThe source point cloud.
targetThe target point cloud.
optionNDT voxel model and optimization options.
initInitial transformation estimation.

◆ RegistrationRANSACBasedOnCorrespondence()

RegistrationResult open3d::pipelines::registration::RegistrationRANSACBasedOnCorrespondence ( const geometry::PointCloud source,
const geometry::PointCloud target,
const CorrespondenceSet corres,
double  max_correspondence_distance,
const TransformationEstimation estimation = TransformationEstimationPointToPoint(false),
int  ransac_n = 3,
const std::vector< std::reference_wrapper< const CorrespondenceChecker > > &  checkers = {},
const RANSACConvergenceCriteria criteria = RANSACConvergenceCriteria() 
)

Function for global RANSAC registration based on a given set of correspondences.

Parameters
sourceThe source point cloud.
targetThe target point cloud.
corresCorrespondence indices between source and target point clouds.
max_correspondence_distanceMaximum correspondence points-pair distance.
estimationEstimation method.
ransac_nFit ransac with ransac_n correspondences.
checkersCorrespondence checker.
criteriaConvergence criteria.

◆ RegistrationRANSACBasedOnFeatureMatching()

RegistrationResult open3d::pipelines::registration::RegistrationRANSACBasedOnFeatureMatching ( const geometry::PointCloud source,
const geometry::PointCloud target,
const Feature source_features,
const Feature target_features,
bool  mutual_filter,
double  max_correspondence_distance,
const TransformationEstimation estimation = TransformationEstimationPointToPoint(false),
int  ransac_n = 3,
const std::vector< std::reference_wrapper< const CorrespondenceChecker > > &  checkers = {},
const RANSACConvergenceCriteria criteria = RANSACConvergenceCriteria() 
)

Function for global RANSAC registration based on feature matching.

Parameters
sourceThe source point cloud.
targetThe target point cloud.
source_featuresSource point cloud feature.
target_featuresTarget point cloud feature.
mutual_filterEnables mutual filter such that the correspondence of the source point's correspondence is itself.
max_correspondence_distanceMaximum correspondence points-pair distance.
ransac_nFit ransac with ransac_n correspondences.
checkersCorrespondence checker.
criteriaConvergence criteria.

◆ RegistrationSymmetricICP()

RegistrationResult open3d::pipelines::registration::RegistrationSymmetricICP ( const geometry::PointCloud source,
const geometry::PointCloud target,
double  max_correspondence_distance,
const Eigen::Matrix4d &  init = Eigen::Matrix4d::Identity(),
const TransformationEstimationSymmetric estimation = TransformationEstimationSymmetric(),
const ICPConvergenceCriteria criteria = ICPConvergenceCriteria() 
)

Registers source to target with symmetric point-to-plane ICP.

For each correspondence in the current aligned frame, \(p\) and \(n_p\) denote the source point and normal, while \(q\) and \(n_q\) denote the target point and normal. After aligning normal directions, the objective uses the single residual \((p-q)^T(n_p+n_q)\).

Parameters
sourceSource point cloud with normals.
targetTarget point cloud with normals.
max_correspondence_distanceMaximum correspondence distance.
initInitial source-to-target transformation.
estimationSymmetric transformation estimator.
criteriaICP convergence criteria.
Returns
The registration result with a source-to-target transformation.
Exceptions
std::runtime_errorIf either point cloud lacks normals.

◆ TransformSymmetricPoseToMatrix4d()

Eigen::Matrix4d open3d::pipelines::registration::TransformSymmetricPoseToMatrix4d ( const Eigen::Vector6d &  pose,
const Eigen::Vector3d &  source_mean,
const Eigen::Vector3d &  target_mean 
)
inline