Feature detection, descriptors and matching
Overview
// typedefs typedef TKeyPoint_templ<mrpt::img::TPixelCoord> mrpt::vision::TKeyPoint; typedef TKeyPoint_templ<mrpt::img::TPixelCoordf> mrpt::vision::TKeyPointf; typedef TKeyPointList_templ<TKeyPoint> mrpt::vision::TKeyPointList; typedef TKeyPointList_templ<TKeyPointf> mrpt::vision::TKeyPointfList; // structs template <typename FEATURE_LIST> struct mrpt::vision::KeypointResponseSorter; template <typename FEATURE> struct mrpt::vision::TKeyPointList_templ; template <> struct mrpt::vision::TKeyPointTraits<TKeyPointf>; template <> struct mrpt::vision::TKeyPointTraits<TKeyPoint>; template <typename FEATURE> struct mrpt::vision::TKeyPointTraits; template <typename PIXEL_COORD_TYPE> struct mrpt::vision::TKeyPoint_templ; // classes class mrpt::vision::CFeature; class mrpt::vision::CFeatureExtraction; class mrpt::vision::CFeatureList; template <typename FEAT> class mrpt::vision::CFeatureListKDTree; class mrpt::vision::CMatchedFeatureList; // global functions template <class DESCRIPTOR_KDTREE> size_t mrpt::vision::find_descriptor_pairings( std::vector<std::vector<size_t>>* pairings_1_to_multi_2, std::vector<std::pair<size_t, size_t>>* pairings_1_to_2, const CFeatureList& feats_img1, const DESCRIPTOR_KDTREE& feats_img2_kdtree, const mrpt::vision::TDescriptorType descriptor = descSIFT, const size_t max_neighbors = 4, const double max_relative_distance = 1.2, const typename DESCRIPTOR_KDTREE::kdtree_t::DistanceType max_distance = std::numeric_limits<typename DESCRIPTOR_KDTREE::kdtree_t::DistanceType>::max() );
Typedefs
typedef TKeyPoint_templ<mrpt::img::TPixelCoord> mrpt::vision::TKeyPoint
Simple structure for image key points.
See also:
TKeyPointf, CFeature, TKeyPointList
typedef TKeyPoint_templ<mrpt::img::TPixelCoordf> mrpt::vision::TKeyPointf
A version of TKeyPoint with subpixel precision.
typedef TKeyPointList_templ<TKeyPoint> mrpt::vision::TKeyPointList
A list of image features using the structure TKeyPoint for each feature.
capable of KD-tree computations
typedef TKeyPointList_templ<TKeyPointf> mrpt::vision::TKeyPointfList
A list of image features using the structure TKeyPointf for each feature - capable of KD-tree computations.
Global Functions
template <class DESCRIPTOR_KDTREE> size_t mrpt::vision::find_descriptor_pairings( std::vector<std::vector<size_t>>* pairings_1_to_multi_2, std::vector<std::pair<size_t, size_t>>* pairings_1_to_2, const CFeatureList& feats_img1, const DESCRIPTOR_KDTREE& feats_img2_kdtree, const mrpt::vision::TDescriptorType descriptor = descSIFT, const size_t max_neighbors = 4, const double max_relative_distance = 1.2, const typename DESCRIPTOR_KDTREE::kdtree_t::DistanceType max_distance = std::numeric_limits<typename DESCRIPTOR_KDTREE::kdtree_t::DistanceType>::max() )
Search for pairings between two sets of visual descriptors (for now, only SURF and SIFT features are considered).
Pairings are returned in one of two formats (or both of them simultaneously), depending on the non-NULL output containers present in the call.
CFeatureList feats1, feats2; // Populate feature lists [...] // Create kd-tree for SIFT features of "feats2": TSIFTDescriptorsKDTreeIndex<double> feats2_kdtree(feats2); // Search correspondences: std::vector<std::vector<size_t>> pairings_1_to_multi_2; std::vector<std::pair<size_t,size_t> > pairings_1_to_2; mrpt::vision::find_descriptor_pairings( &pairings_1_to_multi_2, // Can be set to nullptr if not needed &pairings_1_to_2, // Can be set to nullptr if not needed feats1, feats2_kdtree, // The two sets of features mrpt::vision::descSIFT // Select descriptor to use // [further optional params] );
See also: