/** * @file LocalFeatureSift.h * @brief local feature with sift (without detector) * @author Erik Rodner * @date 02/05/2008 */ #ifndef LOCALFEATURESIFTINCLUDE #define LOCALFEATURESIFTINCLUDE #include "core/vector/VectorT.h" #include "core/vector/MatrixT.h" #include "core/image/ImageT.h" #include "core/imagedisplay/ImageDisplay.h" #include "core/basics/Config.h" #include "LocalFeature.h" namespace OBJREC { /** local feature with sift */ class LocalFeatureSift : public LocalFeature { protected: int octaves; int levels; bool normalizeFeature; int first_octave; double magnif; bool deletemode; bool integerValues; float threshold; float edgeThreshold; public: /** simple constructor */ LocalFeatureSift ( const NICE::Config *conf ); /** simple destructor */ virtual ~LocalFeatureSift(); /** * returns the size of each the SIFT-Feature * @return 128 */ int getDescSize() const { return 128; }; /** * get the descriptor * @param img input image * @param positions positions for the SIFT features * @param descriptors output * @return 0 */ virtual int getDescriptors ( const NICE::Image & img, NICE::VVector & positions, NICE::VVector & descriptors ) const; /** * computes the descriptor for a single image * @param img * @param positions * @param descriptors */ void computeDesc( const NICE::Image & img, NICE::VVector & positions, NICE::VVector & descriptors ) const; /** * sort positions by scales for faster computing of the Keypoint orientation * @param positions */ void sortPositions(NICE::VVector & positions) const; void visualizeFeatures ( NICE::Image & mark, const NICE::VVector & positions, size_t color ) const; }; } // namespace #endif