| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| |
|
| |
|
| | #ifndef _PYRAMID_GL_H |
| | #define _PYRAMID_GL_H |
| |
|
| | class GLTexImage; |
| | class SiftParam; |
| | class ProgramGPU; |
| | class ShaderMan; |
| | class GlobalUtil; |
| | class SiftPyramid; |
| |
|
| | class PyramidGL:public SiftPyramid |
| | { |
| | protected: |
| | GLTexImage* _histoPyramidTex; |
| | GLTexImage* _featureTex; |
| | GLTexImage* _descriptorTex; |
| | GLTexImage* _orientationTex; |
| | public: |
| | void InitializeContext(); |
| | void SetLevelFeatureNum(int idx, int num); |
| | void GetTextureStorageSize(int num, int &fw, int& fh); |
| | void GetAlignedStorageSize(int num, int align, int &fw, int &fh); |
| | static void InterlaceDescriptorF2(int w, int h, float* buf, float* pd, int step); |
| | static void NormalizeDescriptor(int num, float*pd); |
| | virtual void DownloadKeypoints(); |
| | virtual int ResizeFeatureStorage(); |
| | |
| | virtual void DestroyPerLevelData(); |
| | virtual void DestroySharedData(); |
| | virtual void GetFeatureDescriptors(); |
| | virtual void GenerateFeatureListTex(); |
| | virtual void ReshapeFeatureListCPU(); |
| | virtual void GenerateFeatureDisplayVBO(); |
| | virtual void CleanUpAfterSIFT(); |
| | virtual GLTexImage* GetBaseLevel(int octave, int dataName = DATA_GAUSSIAN)=0; |
| | public: |
| | PyramidGL(SiftParam&sp); |
| | virtual ~PyramidGL(); |
| | }; |
| |
|
| | class PyramidNaive:public PyramidGL, public ShaderMan |
| | { |
| | protected: |
| | GLTexImage * _texPyramid; |
| | GLTexImage * _auxPyramid; |
| | public: |
| | void DestroyPyramidData(); |
| | void GetSimplifiedOrientation(); |
| | void GenerateFeatureListCPU(); |
| | virtual void GetFeatureOrientations(); |
| | virtual void GenerateFeatureList(); |
| | void DetectKeypointsEX(); |
| | void ComputeGradient(); |
| | GLTexImage* GetLevelTexture(int octave, int level); |
| | GLTexImage* GetBaseLevel(int octave, int dataName = DATA_GAUSSIAN); |
| | GLTexImage* GetLevelTexture(int octave, int level, int dataName); |
| | void BuildPyramid(GLTexInput * input); |
| | void InitPyramid(int w, int h, int ds); |
| | void FitPyramid(int w, int h); |
| | void ResizePyramid(int w, int h); |
| | void FitHistogramPyramid(); |
| | PyramidNaive(SiftParam & sp); |
| | ~PyramidNaive(); |
| | private: |
| | void GenerateFeatureList(int i, int j); |
| | }; |
| |
|
| |
|
| | class PyramidPacked:public PyramidGL, public ShaderMan |
| | { |
| | GLTexPacked * _allPyramid; |
| | public: |
| | PyramidPacked(SiftParam& sp); |
| | ~PyramidPacked(); |
| | void DestroyPyramidData(); |
| | void DetectKeypointsEX(); |
| | void ComputeGradient(); |
| | void BuildPyramid(GLTexInput * input); |
| | void InitPyramid(int w, int h, int ds); |
| | void FitPyramid(int w, int h); |
| | void ResizePyramid(int w, int h); |
| | void FitHistogramPyramid(); |
| | void GenerateFeatureListCPU(); |
| | void GenerateFeatureList(); |
| | void GetSimplifiedOrientation(); |
| | void GetFeatureOrientations(); |
| | GLTexImage* GetBaseLevel(int octave, int dataName = DATA_GAUSSIAN); |
| | GLTexImage* GetLevelTexture(int octave, int level); |
| | GLTexImage* GetLevelTexture(int octave, int level, int dataName); |
| | virtual int IsUsingRectDescription(){return _existing_keypoints & SIFT_RECT_DESCRIPTION; } |
| | private: |
| | void GenerateFeatureList(int i, int j); |
| | }; |
| |
|
| | #endif |
| |
|