我打算在PCL中使用RANSAC在两个云之间进行注册,我已经有了从另一个程序计算的功能。我可以以某种方式将这些功能加载到PCL中以用于注册吗?
答案 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]数组。