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

scoswriter
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: http://www.pcl-users.org/
_______________________________________________
PCL-users@pointclouds.org / http://pointclouds.org
http://pointclouds.org/mailman/listinfo/pcl-users
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

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

Cheers


_______________________________________________
[hidden email] / http://pointclouds.org
http://pointclouds.org/mailman/listinfo/pcl-users

signature.asc (849 bytes) Download Attachment