29 #ifndef _SIFT_PYRAMID_H
30 #define _SIFT_PYRAMID_H
47 #define NO_DUPLICATE_DOWNLOAD
99 inline void PrepareBuffer();
100 inline void LimitFeatureCount(
int have_keylist = 0);
104 virtual void SaveSIFT(
const char * szFileName);
106 virtual void SetKeypointList(
int num,
const float * keys,
int run_on_current,
int skip_orientation);
142 for(
int i = 0; i < 8; ++i)
_timing[i] = 0;
170 void BeginDEBUG(
const char* imagepath);
171 void WriteTextureForDEBUG(
GLTexImage * tex,
const char * namet, ...);
175 #define SIFTGPU_ENABLE_REVERSE_ORDER
176 #ifdef SIFTGPU_ENABLE_REVERSE_ORDER
177 #define FIRST_OCTAVE(R) (R? _octave_num - 1 : 0)
178 #define NOT_LAST_OCTAVE(i, R) (R? (i >= 0) : (i < _octave_num))
179 #define GOTO_NEXT_OCTAVE(i, R) (R? (--i) : (++i))
180 #define FIRST_LEVEL(R) (R? param._dog_level_num - 1 : 0)
181 #define GOTO_NEXT_LEVEL(j, R) (R? (--j) : (++j))
182 #define NOT_LAST_LEVEL(j, R) (R? (j >= 0) : (j < param._dog_level_num))
183 #define FOR_EACH_OCTAVE(i, R) for(int i = FIRST_OCTAVE(R); NOT_LAST_OCTAVE(i, R); GOTO_NEXT_OCTAVE(i, R))
184 #define FOR_EACH_LEVEL(j, R) for(int j = FIRST_LEVEL(R); NOT_LAST_LEVEL(j, R); GOTO_NEXT_LEVEL(j, R))
186 #define FOR_EACH_OCTAVE(i, R) for(int i = 0; i < _octave_num; ++i)
187 #define FOR_EACH_LEVEL(j, R) for(int j = 0; j < param._dog_level_num; ++j)
const GLuint * GetFeatureDipslayVBO()
const int * GetLevelFeatureNum()
virtual void CopyFeatureVector(float *keys, float *descriptors)
virtual GLTexImage * GetLevelTexture(int octave, int level, int dataName)=0
virtual void GetSimplifiedOrientation()=0
virtual void BuildPyramid(GLTexInput *input)=0
virtual void GenerateFeatureDisplayVBO()=0
int _pyramid_octave_first
const GLuint * GetPointDisplayVBO()
virtual void ComputeGradient()=0
virtual void ResizePyramid(int w, int h)=0
GLuint * _featurePointVBO
virtual void GetFeatureDescriptors()=0
void GetPyramidTiming(float *timing)
virtual void DetectKeypointsEX()=0
virtual void ReshapeFeatureListCPU()=0
virtual void RunSIFT(GLTexInput *input)
virtual void InitPyramid(int w, int h, int ds=0)=0
SiftPyramid(SiftParam &sp)
GLuint * _featureDisplayVBO
static int GetRequiredOctaveNum(int inputsz)
virtual void GenerateFeatureListCPU()=0
virtual void SetKeypointList(int num, const float *keys, int run_on_current, int skip_orientation)
virtual void GenerateFeatureList()=0
virtual void GetFeatureOrientations()=0
virtual GLTexImage * GetLevelTexture(int octave, int level)=0
virtual void DownloadKeypoints()=0
virtual void CleanUpAfterSIFT()
virtual void GenerateFeatureListTex()=0
vector< int > _keypoint_index
virtual void SaveSIFT(const char *szFileName)
virtual int IsUsingRectDescription()
vector< float > _descriptor_buffer
vector< float > _keypoint_buffer
void SetFailStatus()
inline functions, shared by all implementations