00001
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #ifndef ASRL_GPU_GLOBALS_FTK_H
00043 #define ASRL_GPU_GLOBALS_FTK_H
00044
00050 #define ASRL_SURF_MAX_INTERVALS 8
00051
00057 #define ASRL_SURF_MAX_OCTAVES 8
00058
00064 #define ASRL_SURF_MAX_FEATURES 4096
00065
00071 #define ASRL_SURF_MAX_CANDIDATES 6120
00072
00078 #define ASRL_SURF_DESCRIPTOR_DIM 64
00079
00080 namespace asrl
00081 {
00082
00083 class GpuSurfOctave;
00084
00090 struct SurfOctaveParameters
00091 {
00093 int x_size;
00095 int y_size;
00097 int nIntervals;
00099 int border;
00101 int step;
00102
00104 float mask_width;
00106 float mask_height;
00108 float dxy_center_offset;
00110 float dxy_half_width;
00112 float dxy_scale;
00113 };
00114
00115
00116
00125 class Keypoint
00126 {
00127 public:
00128 Keypoint():
00129 x(0.f), y(0.f),size(0.f),response(0.f),angle(0.f),octave(0){}
00130 float x;
00131 float y;
00132 float size;
00133 float response;
00134 float angle;
00135 int octave;
00136 };
00137
00142 enum KeypointLayout {
00143 SF_X,
00144 SF_Y,
00145 SF_SIZE,
00146 SF_RESPONSE,
00147 SF_ANGLE,
00148 SF_OCTAVE,
00149 SF_FEATURE_STRIDE
00150 };
00151
00152
00153
00161 void init_globals(int imWidth, int imHeight, GpuSurfOctave * octaves, int nOctaves);
00162
00166 bool & get_s_initialized();
00167
00172 int & get_s_initWidth();
00173
00178 int & get_s_initHeight();
00179
00184 SurfOctaveParameters * get_d_octave_params();
00185
00191 float * get_d_hessian_scale();
00192
00197 int * get_d_hessian_stride();
00198
00199
00200 }
00201
00202
00203
00204
00205
00206 #endif // ASRL_GPU_GLOBALS_FTK_H