00001 /******************************************************************************* 00002 * NNRMatcher.h 00003 * 00004 * (C) 2007 AG Aktives Sehen <agas@uni-koblenz.de> 00005 * Universitaet Koblenz-Landau 00006 * 00007 * Additional information: 00008 * $Id: $ 00009 *******************************************************************************/ 00010 00011 #ifndef NNRMatcher_H 00012 #define NNRMatcher_H 00013 00014 00015 #include <vector> 00016 #include <deque> 00017 #include <sstream> 00018 #include <list> 00019 00020 #include "Workers/Math/Math.h" 00021 #include "Workers/Math/Box2D.h" 00022 #include "Workers/KeyPointExtraction/KeyPoint.h" 00023 #include "Workers/KeyPointExtraction/KeyPointMatch.h" 00024 00030 class NNRMatcher 00031 { 00032 public: 00033 00037 NNRMatcher( std::vector< KeyPoint >* keyPointsA, std::vector< KeyPoint >* keyPointsB ); 00038 00040 ~NNRMatcher(); 00041 00047 void match( float maxDistRatio=0.7 ); 00048 00049 std::list< KeyPointMatch > getMatches() { return m_Matches; } 00050 00052 int getNumMatches() { return m_Matches.size(); } 00053 00055 std::vector< std::pair< KeyPoint, KeyPoint > > getMatchedKeyPoints(); 00056 00057 std::string getLog(); 00058 00059 private: 00060 00062 void eliminateMultipleMatches( ); 00063 00064 std::vector< KeyPoint >* m_KeyPointsA; 00065 std::vector< KeyPoint >* m_KeyPointsB; 00066 00067 //stores a list of matches 00068 typedef std::list< KeyPointMatch > MatchList; 00069 00070 //iterator for accessing and deleting elements of the match list 00071 typedef std::list<KeyPointMatch>::iterator MatchElem; 00072 00073 MatchList m_Matches; 00074 00075 std::ostringstream m_Log; 00076 }; 00077 00078 #endif