PCL:将两个点云缩放到相同大小

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

我有两个点云,并尝试将它们缩放到相同大小。我的第一种方法是将特征值的平方根除掉:

pcl::PCA<pcl::PointNormal> pca;
pca.setInputCloud(model_cloud_ptr);
Eigen::Vector3f ev_M = pca.getEigenValues();

pca.setInputCloud(segmented_cloud_ptr);
Eigen::Vector3f ev_S = pca.getEigenValues();

double s = sqrt(ev_M[0])/sqrt(ev_S[0]);

这有助于我将模型云扩展到与分段云大致相同的大小。但是结果确实不是那么完美。这是一个简单的估计。我尝试使用TransformationEstimationSVDScale以及SampleConsensusModelRegistration中的this tutorial来做。但是这样做时,我得到一条信息,即源点/索引的数量与目标点/索引的数量不同。

当云中有不同数量的点时,将云缩放到相同大小的最佳方法是什么?

c++ point-cloud-library image-registration
1个回答
0
投票

似乎您应该能够:

  • 将所有内容投影到前两个特征向量上
  • 分别取最小和最大
  • 减去每个特征向量/数据集对的最大-最小
  • 采用两个范围的最大值(通常,但不总是第一个特征向量-如果不是,则要旋转最终显示)
  • 使用那些最大值的比例作为缩放常数
© www.soinside.com 2019 - 2024. All rights reserved.