MultiscaleFeaturePersistence on PointFeatures other than FPFH

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view

MultiscaleFeaturePersistence on PointFeatures other than FPFH

This post was updated on .
I have been trying to use the MultiscaleFeaturePersistence class using PFH
estimation yet it seems like MultiscaleFeaturePersistence has been
implemented to only handle FPFH descriptors.

For my clouds PFH generally provides better end to end rough registration
for the keypoints I extract so I'd much rather stick to this approach.

Is there a trivial means to correct this.  I'm using PCL version 1.8.1?

The following generates a link error against its associated lib.
MultiscaleFeaturePersistence<PointXYZ, PFHSignature125> multiscale_pfh_est;

Yet this is fine
MultiscaleFeaturePersistence<PointXYZ, FPFHSignature33> multiscale_pfh_est;

Another poster had a similar issue with SHOT yet no response.

The link error on MSVC 14
error LNK2001: unresolved external symbol "private: virtual void __cdecl pcl::MultiscaleFeaturePersistence<struct pcl::PointXYZ,struct pcl::PFHSignature125>::computeFeatureAtScale(float &,class boost::shared_ptr<class pcl::PointCloud<struct pcl::PFHSignature125> > &)" (?computeFeatureAtScale@?$MultiscaleFeaturePersistence@UPointXYZ@pcl@@UPFHSignature125@2@@pcl@@EEAAXAEAMAEAV?$shared_ptr@V?$PointCloud@UPFHSignature125@pcl@@@pcl@@@boost@@@Z)

Sent from:
_______________________________________________ /
Reply | Threaded
Open this post in threaded view

Re: MultiscaleFeaturePersistence on PointFeatures other than FPFH

Sérgio Agostinho

PCL relies heavily on templates as you might have noticed. Templates are slow to compile and tend to take a lot of memory. In order to prevent downstream project using PCL from taking too long to compile, we ship the library with a couple of types precompiled types in advance. For the MultiscaleFeaturePersistence class, it comes precompiled with FPFHSignature33 as you can see here.

In order to override this behavior there's a very simple thing you can do: before including any PCL headers add the following define to your source code

Here's an example in which I had to do exactly the same because I defined a new custom point type.


[hidden email] /

signature.asc (849 bytes) Download Attachment