00001 #ifndef __fovis_feature_matcher_hpp__ 00002 #define __fovis_feature_matcher_hpp__ 00003 00004 #include "feature_match.hpp" 00005 00006 namespace fovis 00007 { 00008 00012 class FeatureMatcher { 00013 public: 00014 FeatureMatcher (); 00015 virtual ~FeatureMatcher (); 00016 00017 #if 0 00018 // TODO 00019 void matchFeatures(PyramidLevel* ref_level, 00020 PyramidLevel* target_level, 00021 const std::binary_function<int, int, bool>& is_legal, 00022 std::vector<FeatureMatch>* matches); 00023 #endif 00024 00039 void matchFeatures(PyramidLevel* ref_level, 00040 PyramidLevel* target_level, 00041 const std::vector<std::vector<int> >& candidates, 00042 FeatureMatch* matches, 00043 int* num_matches); 00044 00045 private: 00046 FeatureMatcher (const FeatureMatcher& other); 00047 FeatureMatcher& operator=(const FeatureMatcher& other); 00048 00049 // how many features can be referenced in the temporary workspace buffers 00050 int _ref_feature_capacity; 00051 int _target_feature_capacity; 00052 00053 // temporary workspace buffers for feature matching 00054 int32_t* _ref_to_target_indices; 00055 int32_t* _ref_to_target_scores; 00056 int32_t* _target_to_ref_indices; 00057 int32_t* _target_to_ref_scores; 00058 }; 00059 00060 00061 00062 } /* */ 00063 00064 #endif /* end of include guard: __fovis_feature_matcher_hpp__ */