/** 
* @file LFGenericLocal.h
* @brief generic local features ( Random Sampling of POIs and SIFT as descriptor)
* @author Erik Rodner
* @date 02/05/2008
*/
#ifndef LFGENERICLOCALINCLUDE
#define LFGENERICLOCALINCLUDE

#include "core/vector/VectorT.h"
#include "core/vector/MatrixT.h"
#include "core/image/ImageT.h"
 
#include "core/basics/Config.h"

#include "LocalFeatureRepresentation.h"
#include "InterestDetector.h"
#include "LocalFeature.h"


namespace OBJREC {

  /** generic local features */
  /** @class LFGenericLocal
 * @brief Generic local features ( actually: Random Sampling of POIs followed by SIFT as descriptor)
 */  
  class LFGenericLocal : public LocalFeatureRepresentation
  {

      protected:
    LocalFeature *lf;
    InterestDetector *id;

      public:
    
    /** simple constructor */
    LFGenericLocal( const NICE::Config *conf, int numFeatures );
        
    /** simple destructor */
    virtual ~LFGenericLocal();
      
    int getDescSize () const;

    int extractFeatures ( const NICE::Image & img, 
              NICE::VVector & features, 
              NICE::VVector & positions) const;
              
    void visualizeFeatures ( NICE::Image & mark,
          const NICE::VVector & positions,
          size_t color ) const;

  };


} // namespace

#endif
