我目前正在尝试使用PCL库中的FLANN模块在其特征空间中找到该点的最近邻居。
我要比较的点是RIFT描述符,格式为pcl::Histogram<32>
,因为我使用4个bin作为距离,使用8个bin作为渐变(就像原始文章中一样)。
我想知道应该使用哪种距离度量,因为默认度量是L2范数,当在高维特征空间中匹配点时,它似乎有些虚弱。
我使用FLANN的KdTreeMultiIndexCreator
索引来加快搜索速度。
我一定要使用flann模块,如下所示:
// Useful types
typedef pcl::Histogram<32> FeatureT;
typedef flann::L2<float> DistanceT;
typedef pcl::search::FlannSearch<FeatureT, DistanceT> SearchT;
typedef typename SearchT::FlannIndexCreatorPtr CreatorPtrT;
typedef typename SearchT::KdTreeMultiIndexCreator IndexT;
typedef typename SearchT::PointRepresentationPtr RepresentationPtrT;
// Instantiate search object with 4 randomized trees and 128 checks
SearchT search (true, CreatorPtrT (new IndexT (4)));
search.setPointRepresentation (RepresentationPtrT (new DefaultFeatureRepresentation<FeatureT>));
search.setChecks (128); // The more checks the more precise the solution
// search_cloud is filled with the keypoints to match
search.setInputCloud (search_cloud);
search.nearestKSearch(point_to_match, 1, indices, distances);
那么,FLANN中最适合我的问题的距离测量方法是什么?