使用预先计算的功能在PCL中进行点云注册

时间:2018-05-20 21:30:06

标签: computer-vision point-cloud-library point-clouds

我打算在PCL中使用RANSAC在两个云之间进行注册,我已经有了从另一个程序计算的功能。我可以以某种方式将这些功能加载到PCL中以用于注册吗?

1 个答案:

答案 0 :(得分:1)

让我们以PCL的prerejective alignment tutorial为例,使用FPFH功能并进行调整。

下面的代码(从教程中提取)定义了要素类型,计算它并传递给对齐对象。

typedef pcl::FPFHSignature33 FeatureT;
typedef pcl::PointCloud<FeatureT> FeatureCloudT;
FeatureCloudT::Ptr scene_features (new FeatureCloudT);
...
fest.compute (*scene_features);
...
pcl::SampleConsensusPrerejective<PointNT,PointNT,FeatureT> align;
align.setTargetFeatures (scene_features);

pcl::SampleConsensusPrerejective的第三个模板参数是要素类型(在示例pcl::FPFHSignature33中)。所以我们需要做的就是用一些自定义功能类型替换它。

由于Histogram point type,这很容易。要定义N维特征点类型:

typedef pcl::Histogram<N> FeatureT;
FeatureT feature_vector;

feature_vector.histogram是一个float [N]数组。