仅通过平移将两个点云与 PCL 对齐

问题描述 投票:0回答:1

我正在尝试对齐两个点云。为此,我使用 PCL 库的迭代最近点算法 (ICP)。到目前为止,这效果很好。

pcl::IterativeClosestPoint<PointT, PointT> icp; 
icp.setMaximumIterations(max_iterations);
icp.setMaxCorrespondenceDistance(max_correspondence_distance);
icp.setRANSACOutlierRejectionThreshold(outlier_rejection_threshold);
icp.setEuclideanFitnessEpsilon(euclidean_fitness_epsilon);
icp.setTransformationEpsilon(transformation_epsilon);
icp.setTransformationRotationEpsilon(transformation_rotation_epsilon);
icp.setInputSource(source); 
icp.setInputTarget(target); 
icp.align(*result);

但是,我的问题是旋转是针对某些点云确定的,但不应该存在。

有没有办法在安装过程中停用旋转?

到目前为止,我还没有在文档中找到任何有用的内容:
[1] http://pointclouds.org/documentation/classpcl_1_1_iterative_closest_point.html
[2] http://pointclouds.org/documentation/classpcl_1_1_registration.html

c++ point-cloud-library point-clouds pcl
1个回答
0
投票

实现此目的的一种方法可能是使用

TransformationEstimationLM
而不是 ICP 默认使用的
TransformationEstimationSVD
,并通过调整
WarpPointRigid
 创建自定义 
WarpPointRigid6D
类,该类估计 6 个变换参数(3 个旋转和 3 个变换参数)翻译)。另请参阅:
TransformationEstimationLM::setWarpFunction
icp.setTransformationEstimation

© www.soinside.com 2019 - 2024. All rights reserved.