/** 
* @file LocalFeature.h
* @brief Abstract class for Local Features ( ONLY DESCRIPTORS, NO DETECTORS )
* @author Erik Rodner, Alexander Freytag
* @date 02/05/2008

*/
#ifndef LOCALFEATUREINCLUDE
#define LOCALFEATUREINCLUDE

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

#include "core/vector/VVector.h"
  

namespace OBJREC {

    /** @class LocalFeature
  * @brief Abstract class for Local Features ( ONLY DESCRIPTORS, NO DETECTORS )
  *
  */
  class LocalFeature
  {

      protected:

      public:
    
    /** simple constructor */
    LocalFeature();
        
    /** simple destructor */
    virtual ~LocalFeature();

    virtual int getDescSize() const = 0;

    virtual int getDescriptors ( const NICE::Image & img, NICE::VVector & positions, NICE::VVector & descriptors) const = 0;
    
    virtual int getDescriptors ( const NICE::ColorImage & img, NICE::VVector & positions, NICE::VVector & descriptors) const;
    
    virtual void visualizeFeatures ( NICE::Image & mark,
          const NICE::VVector & positions,
          size_t color ) const;
      
  };


} // namespace

#endif
