ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
PyramidGL.h
Go to the documentation of this file.
1 // File: PyramidGL.h
3 // Author: Changchang Wu
4 // Description : interface for the PyramdGL
5 // class PyramidNaive and PyramidPacked are derived from PyramidGL
6 //
7 // Copyright (c) 2007 University of North Carolina at Chapel Hill
8 // All Rights Reserved
9 //
10 // Permission to use, copy, modify and distribute this software and its
11 // documentation for educational, research and non-profit purposes, without
12 // fee, and without a written agreement is hereby granted, provided that the
13 // above copyright notice and the following paragraph appear in all copies.
14 //
15 // The University of North Carolina at Chapel Hill make no representations
16 // about the suitability of this software for any purpose. It is provided
17 // 'as is' without express or implied warranty.
18 //
19 // Please send BUG REPORTS to ccwu@cs.unc.edu
20 //
22 
23 
24 
25 #ifndef _PYRAMID_GL_H
26 #define _PYRAMID_GL_H
27 
28 class GLTexImage;
29 class SiftParam;
30 class ProgramGPU;
31 class ShaderMan;
32 class GlobalUtil;
33 class SiftPyramid;
34 
35 class PyramidGL:public SiftPyramid
36 {
37 protected:
42 public:
43  void InitializeContext();
44  void SetLevelFeatureNum(int idx, int num);
45  void GetTextureStorageSize(int num, int &fw, int& fh);
46  void GetAlignedStorageSize(int num, int align, int &fw, int &fh);
47  static void InterlaceDescriptorF2(int w, int h, float* buf, float* pd, int step);
48  static void NormalizeDescriptor(int num, float*pd);
49  virtual void DownloadKeypoints();
50  virtual int ResizeFeatureStorage();
52  virtual void DestroyPerLevelData();
53  virtual void DestroySharedData();
54  virtual void GetFeatureDescriptors();
55  virtual void GenerateFeatureListTex();
56  virtual void ReshapeFeatureListCPU();
57  virtual void GenerateFeatureDisplayVBO();
58  virtual void CleanUpAfterSIFT();
59  virtual GLTexImage* GetBaseLevel(int octave, int dataName = DATA_GAUSSIAN)=0;
60 public:
61  PyramidGL(SiftParam&sp);
62  virtual ~PyramidGL();
63 };
64 
65 class PyramidNaive:public PyramidGL, public ShaderMan
66 {
67 protected:
70 public:
71  void DestroyPyramidData();
74  virtual void GetFeatureOrientations();
75  virtual void GenerateFeatureList();
76  void DetectKeypointsEX();
77  void ComputeGradient();
78  GLTexImage* GetLevelTexture(int octave, int level);
79  GLTexImage* GetBaseLevel(int octave, int dataName = DATA_GAUSSIAN);
80  GLTexImage* GetLevelTexture(int octave, int level, int dataName);
81  void BuildPyramid(GLTexInput * input);
82  void InitPyramid(int w, int h, int ds);
83  void FitPyramid(int w, int h);
84  void ResizePyramid(int w, int h);
85  void FitHistogramPyramid();
86  PyramidNaive(SiftParam & sp);
87  ~PyramidNaive();
88 private:
89  void GenerateFeatureList(int i, int j);
90 };
91 
92 
93 class PyramidPacked:public PyramidGL, public ShaderMan
94 {
95  GLTexPacked * _allPyramid;
96 public:
99  void DestroyPyramidData();
100  void DetectKeypointsEX();
101  void ComputeGradient();
102  void BuildPyramid(GLTexInput * input);
103  void InitPyramid(int w, int h, int ds);
104  void FitPyramid(int w, int h);
105  void ResizePyramid(int w, int h);
106  void FitHistogramPyramid();
107  void GenerateFeatureListCPU();
108  void GenerateFeatureList();
110  void GetFeatureOrientations();
111  GLTexImage* GetBaseLevel(int octave, int dataName = DATA_GAUSSIAN);
112  GLTexImage* GetLevelTexture(int octave, int level);
113  GLTexImage* GetLevelTexture(int octave, int level, int dataName);
115 private:
116  void GenerateFeatureList(int i, int j);
117 };
118 
119 #endif
PyramidGL(SiftParam &sp)
Definition: PyramidGL.cpp:159
void SetLevelFeatureNum(int idx, int num)
Definition: PyramidGL.cpp:1439
GLTexImage * _orientationTex
Definition: PyramidGL.h:41
virtual GLTexImage * GetBaseLevel(int octave, int dataName=DATA_GAUSSIAN)=0
virtual void GetFeatureDescriptors()
Definition: PyramidGL.cpp:1667
virtual void DownloadKeypoints()
Definition: PyramidGL.cpp:1790
virtual void GenerateFeatureListTex()
Definition: PyramidGL.cpp:1849
virtual void ReshapeFeatureListCPU()
Definition: PyramidGL.cpp:1263
virtual int ResizeFeatureStorage()
Definition: PyramidGL.cpp:467
virtual void DestroyPerLevelData()
Definition: PyramidGL.cpp:185
GLTexImage * _histoPyramidTex
Definition: PyramidGL.h:38
void GetAlignedStorageSize(int num, int align, int &fw, int &fh)
Definition: PyramidGL.cpp:71
virtual void GenerateFeatureDisplayVBO()
Definition: PyramidGL.cpp:1022
virtual ~PyramidGL()
Definition: PyramidGL.cpp:169
virtual void CleanUpAfterSIFT()
Definition: PyramidGL.cpp:1459
static void InterlaceDescriptorF2(int w, int h, float *buf, float *pd, int step)
Definition: PyramidGL.cpp:1583
static void NormalizeDescriptor(int num, float *pd)
Definition: PyramidGL.cpp:1541
GLTexImage * _featureTex
Definition: PyramidGL.h:39
virtual void DestroySharedData()
Definition: PyramidGL.cpp:223
void GetTextureStorageSize(int num, int &fw, int &fh)
Definition: PyramidGL.cpp:106
GLTexImage * _descriptorTex
Definition: PyramidGL.h:40
void InitializeContext()
Definition: PyramidGL.cpp:176
GLTexImage * _auxPyramid
Definition: PyramidGL.h:69
GLTexImage * GetLevelTexture(int octave, int level)
Definition: PyramidGL.cpp:654
void ComputeGradient()
Definition: PyramidGL.cpp:687
void ResizePyramid(int w, int h)
Definition: PyramidGL.cpp:380
virtual void GenerateFeatureList()
Definition: PyramidGL.cpp:966
GLTexImage * GetBaseLevel(int octave, int dataName=DATA_GAUSSIAN)
Definition: PyramidGL.cpp:662
virtual void GetFeatureOrientations()
Definition: PyramidGL.cpp:1126
void GenerateFeatureListCPU()
Definition: PyramidGL.cpp:1191
GLTexImage * _texPyramid
Definition: PyramidGL.h:68
void InitPyramid(int w, int h, int ds)
Definition: PyramidGL.cpp:307
void DestroyPyramidData()
Definition: PyramidGL.cpp:146
void FitHistogramPyramid()
Definition: PyramidGL.cpp:247
void BuildPyramid(GLTexInput *input)
Definition: PyramidGL.cpp:589
void FitPyramid(int w, int h)
Definition: PyramidGL.cpp:269
PyramidNaive(SiftParam &sp)
Definition: PyramidGL.cpp:59
void GetSimplifiedOrientation()
Definition: PyramidGL.cpp:1467
void DetectKeypointsEX()
Definition: PyramidGL.cpp:727
GLTexImage * GetLevelTexture(int octave, int level)
Definition: PyramidGL.cpp:2763
PyramidPacked(SiftParam &sp)
Definition: PyramidGL.cpp:1935
void FitPyramid(int w, int h)
Definition: PyramidGL.cpp:2613
void GenerateFeatureListCPU()
Definition: PyramidGL.cpp:2370
void DetectKeypointsEX()
Definition: PyramidGL.cpp:2051
void DestroyPyramidData()
Definition: PyramidGL.cpp:2745
void GetFeatureOrientations()
Definition: PyramidGL.cpp:2447
void ComputeGradient()
Definition: PyramidGL.cpp:1995
void GetSimplifiedOrientation()
Definition: PyramidGL.cpp:2506
virtual int IsUsingRectDescription()
Definition: PyramidGL.h:114
void FitHistogramPyramid()
Definition: PyramidGL.cpp:2781
void GenerateFeatureList()
Definition: PyramidGL.cpp:2317
void ResizePyramid(int w, int h)
Definition: PyramidGL.cpp:2661
GLTexImage * GetBaseLevel(int octave, int dataName=DATA_GAUSSIAN)
Definition: PyramidGL.cpp:2772
void InitPyramid(int w, int h, int ds)
Definition: PyramidGL.cpp:2539
void BuildPyramid(GLTexInput *input)
Definition: PyramidGL.cpp:1948
@ SIFT_RECT_DESCRIPTION
Definition: SiftPyramid.h:64
int _existing_keypoints
Definition: SiftPyramid.h:73