00001 /******************************************************************************* 00002 * HoughClusterer.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 HoughClusterer_H 00012 #define HoughClusterer_H 00013 00014 #include "Workers/KeyPointExtraction/KeyPoint.h" 00015 #include <vector> 00016 #include <deque> 00017 #include <sstream> 00018 #include <list> 00019 00020 #include "Workers/ObjectRecognition/HoughAccumulator.h" 00021 #include "Workers/KeyPointExtraction/KeyPointMatch.h" 00022 #include "Workers/Puma2/ColorImageRGB8.h" 00023 #include "Workers/Math/Math.h" 00024 #include "Workers/Math/Box2D.h" 00025 00026 class ImageProperties; 00027 00033 class HoughClusterer 00034 { 00035 public: 00036 00037 HoughClusterer(){} 00038 00044 HoughClusterer( std::vector< KeyPoint >* sceneKeyPoints, std::vector< KeyPoint >* objectImageKeyPoints, Point2D center, int imageWidth, int imageHeight); 00045 00047 ~HoughClusterer(); 00048 00049 std::string getLog(); 00050 00051 void getImage( puma2::ColorImageRGB8& target ); 00052 00053 float getVariance(); 00054 00055 void setNNMatches(std::list< KeyPointMatch > nnrMatches); 00056 std::vector< std::list< KeyPointMatch> > clusterAccumulator(); 00057 00058 private: 00059 00060 void incrAccumulatorValue(KeyPoint scenePoint, KeyPoint objectPoint, KeyPointMatch match); 00061 //Get highest accumulator value for keypoint values for rotation, scale and position; if nothing found return -1 00062 bool getAccumulatorValue(KeyPoint scenePoint, KeyPoint objectPoint, unsigned int& value); 00063 00064 std::vector< KeyPoint >* m_SceneKeyPoints; 00065 std::vector< KeyPoint >* m_ObjectImageKeyPoints; 00066 00067 Point2D m_Center; 00068 00069 std::ostringstream m_Log; 00070 00071 HoughAccumulator* m_HoughAccumulator; 00072 00073 int m_ScaleBins; 00074 int m_OrientationBins; 00075 int m_XLocationBins; 00076 int m_YLocationBins; 00077 00078 int m_ImageWidth; 00079 int m_ImageHeight; 00080 }; 00081 00082 #endif