/**
* @file LocalFeatureRGBSift.h
* @brief local feature with color sift
* @author Björn Fröhlich
* @date 03/10/2012 (Eric Bach)
*/

#ifndef LocalFeatureRGBSiftINCLUDE
#define LocalFeatureRGBSiftINCLUDE

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

#include "core/basics/Config.h"
#include "vislearning/features/localfeatures/LocalFeatureSift.h"

namespace OBJREC {

/** local feature with sift */
class LocalFeatureRGBSift : public LocalFeatureSift
{

  protected:
    int octaves;
    int levels;
    bool normalizeFeature;
    int first_octave;
    double magnif;

  public:

    /** simple constructor */
    LocalFeatureRGBSift ( const NICE::Config *conf );

    /** simple destructor */

    virtual ~LocalFeatureRGBSift();

    /**
     * returns the size of each the SIFT-Feature
     * @return 128
     */
    int getDescSize() const {
      return 384;
    };

    /**
     * get the descriptor
     * @param img input color image
     * @param positions positions for the SIFT features
     * @param descriptors output
     * @return 0
     */
    virtual int getDescriptors ( const NICE::ColorImage & cimg,
                                 NICE::VVector & positions,
                                 NICE::VVector & descriptors ) const;
};


} // namespace

#endif
