2016-12-19 2 views
0

У меня проблема с сопоставлением результатов двух дескрипторов. Я использую дескриптор FPFH библиотеки Point Cloud, как показано ниже.PCL desciptors соответствует

// Compute the normals 
pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> normalEstimation; 
normalEstimation.setInputCloud(source_cloud); 
normalEstimation.setSearchMethod(tree); 

pcl::PointCloud<pcl::Normal>::Ptr source_normals(new pcl::PointCloud< pcl::Normal>); 
normalEstimation.setRadiusSearch(0.1); 
normalEstimation.compute(*source_normals); 

pcl::PointCloud<pcl::FPFHSignature33>::Ptr source_features(new pcl::PointCloud<pcl::FPFHSignature33>()); 
pcl::FPFHEstimation<pcl::PointXYZ, pcl::Normal, pcl::FPFHSignature33> fpfh; 
fpfh.setInputCloud(source_cloud); 
fpfh.setInputNormals(source_normals); 
boost::shared_ptr<std::vector<int> > indicesptr(new std::vector<int>(Source_keypoint_indices)); 
fpfh.setIndices(indicesptr); 
fpfh.setSearchMethod(tree); 
fpfh.setRadiusSearch(0.1); 
fpfh.compute(*source_features); 

и тот же используется для целевого облака Однако при использовании оценки соответствий PCL, как показано ниже результат является неправильным соответствует

pcl::registration::CorrespondenceEstimation<pcl::FPFHSignature33, pcl::FPFHSignature33> est; 
pcl::CorrespondencesPtr correspondences(new pcl::Correspondences()); 
est.setInputSource(source_features); 
est.setInputTarget(target_features); 
est.determineCorrespondences(*correspondences); 

Так есть любой другой способ можно использовать для согласования возможностей ??

Наконец, спасибо за ваше время, учитывая мой вопрос .. :)

ответ

0

Вы уверены, что ваши Feautures правильно? Для оценки функции fpfh вы должны установить радиус поиска>, чем обычный радиус оценки.

Также вы можете попробовать некоторые методы переписки, чтобы получить лучшие результаты для матчей.