如何将多个视图的层组合成360度视图的单个对象

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

我有一个对象的 8 个层文件,但每个文件都有不同的视图。我需要整合所有这些场景并形成 360 度网格。 pcl 中有没有一种技术可以整合所有这些场景? icp可以用于集成场景吗?如果是这样,如果有人提供集成它的示例代码将会很有用。

我需要集成单个场景的不同视图。我尝试了 icp 但无法集成它。我不确定源和目标是如何固定的以及如何对齐。 icp可以用来整合场景吗?

view cloud point pcl ply-file-format
2个回答
0
投票

您要做的就是注册。 PCL 教程可能是您的一个很好的起点:https://pcl.readthedocs.io/projects/tutorials/en/master/#registration 是的,ICP 是一种可能的方法。是否会成功取决于您选择的参数、对象本身以及您给 ICP 的起始猜测有多好。


0
投票

这是示例代码。但它没有整合两种不同的观点。

pcl::IterativeClosestPoint<pcl::PointXYZRGB, pcl::PointXYZRGB> icp;
icp.setMaximumIterations(500);
icp.setInputSource(mls_points_with_normals);
icp.setInputTarget(mls_points_with_normals2);
// icp.setMaxCorrespondenceDistance (0.05);
icp.setEuclideanFitnessEpsilon(1);
icp.setTransformationEpsilon(1);
pcl::PointCloud<pcl::PointXYZRGB>::Ptr aligned_cloud(new pcl::PointCloud<pcl::PointXYZRGB>);
icp.align(*aligned_cloud);

Eigen::Matrix4f transformation_matrix = icp.getFinalTransformation();
pcl::PointCloud<pcl::PointXYZRGB>::Ptr transformed_cloud(new pcl::PointCloud<pcl::PointXYZRGB>);
pcl::transformPointCloud(*mls_points_with_normals, *transformed_cloud, transformation_matrix);
pcl::PointCloud<pcl::PointXYZRGB>::Ptr integrated_cloud(new pcl::PointCloud<pcl::PointXYZRGB>);
*integrated_cloud = *transformed_cloud + *mls_points_with_normals2;
© www.soinside.com 2019 - 2024. All rights reserved.