我计划在PCL中使用RANSAC在两个云之间进行注册,并且我已经从另一个程序计算了特征。是否可以以某种方式将这些功能加载到 PCL 中以用于注册?
让我们以 PCL 的预拒绝对齐教程为例,该教程使用 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
中(。因此,我们需要做的就是将其替换为一些自定义特征类型。
由于直方图点类型,这很容易。要定义 N 维特征点类型:
typedef pcl::Histogram<N> FeatureT;
FeatureT feature_vector;
feature_vector.histogram
是一个浮点[N] 数组。