root / rgbdslam / external / siftgpu / src / SiftGPU / SiftMatch.h @ 9240aaa3
History | View | Annotate | Download (2.77 KB)
1 |
////////////////////////////////////////////////////////////////////////////
|
---|---|
2 |
// File: SiftMatch.h
|
3 |
// Author: Changchang Wu
|
4 |
// Description : interface for the SiftMatchGL
|
5 |
////
|
6 |
// Copyright (c) 2007 University of North Carolina at Chapel Hill
|
7 |
// All Rights Reserved
|
8 |
//
|
9 |
// Permission to use, copy, modify and distribute this software and its
|
10 |
// documentation for educational, research and non-profit purposes, without
|
11 |
// fee, and without a written agreement is hereby granted, provided that the
|
12 |
// above copyright notice and the following paragraph appear in all copies.
|
13 |
//
|
14 |
// The University of North Carolina at Chapel Hill make no representations
|
15 |
// about the suitability of this software for any purpose. It is provided
|
16 |
// 'as is' without express or implied warranty.
|
17 |
//
|
18 |
// Please send BUG REPORTS to ccwu@cs.unc.edu
|
19 |
//
|
20 |
////////////////////////////////////////////////////////////////////////////
|
21 |
|
22 |
|
23 |
#ifndef GPU_SIFT_MATCH_H
|
24 |
#define GPU_SIFT_MATCH_H
|
25 |
class GLTexImage; |
26 |
class ProgramGPU; |
27 |
|
28 |
class SiftMatchGL:public SiftMatchGPU |
29 |
{ |
30 |
typedef GLint ParameterGL;
|
31 |
private:
|
32 |
//tex storage
|
33 |
GLTexImage _texLoc[2];
|
34 |
GLTexImage _texDes[2];
|
35 |
GLTexImage _texDot; |
36 |
GLTexImage _texMatch[2];
|
37 |
|
38 |
//programs
|
39 |
ProgramGPU * s_multiply; |
40 |
ProgramGPU * s_guided_mult; |
41 |
ProgramGPU * s_col_max; |
42 |
ProgramGPU * s_row_max; |
43 |
|
44 |
//matching parameters
|
45 |
ParameterGL _param_multiply_tex1; |
46 |
ParameterGL _param_multiply_tex2; |
47 |
ParameterGL _param_multiply_size; |
48 |
ParameterGL _param_rowmax_param; |
49 |
ParameterGL _param_colmax_param; |
50 |
|
51 |
///guided matching
|
52 |
ParameterGL _param_guided_mult_tex1; |
53 |
ParameterGL _param_guided_mult_tex2; |
54 |
ParameterGL _param_guided_mult_texl1; |
55 |
ParameterGL _param_guided_mult_texl2; |
56 |
ParameterGL _param_guided_mult_h; |
57 |
ParameterGL _param_guided_mult_f; |
58 |
ParameterGL _param_guided_mult_param; |
59 |
//
|
60 |
int _max_sift;
|
61 |
int _num_sift[2]; |
62 |
int _id_sift[2]; |
63 |
int _have_loc[2]; |
64 |
|
65 |
//gpu parameter
|
66 |
int _sift_per_stripe;
|
67 |
int _sift_num_stripe;
|
68 |
int _sift_per_row;
|
69 |
int _pixel_per_sift;
|
70 |
int _initialized;
|
71 |
//
|
72 |
vector<float> sift_buffer;
|
73 |
private:
|
74 |
void AllocateSiftMatch();
|
75 |
void LoadSiftMatchShadersGLSL();
|
76 |
int GetBestMatch(int max_match, int match_buffer[][2], float distmax, float ratiomax, int mbm); |
77 |
public:
|
78 |
SiftMatchGL(int max_sift, int use_glsl); |
79 |
virtual ~SiftMatchGL(); |
80 |
public:
|
81 |
void InitSiftMatch();
|
82 |
void SetMaxSift(int max_sift); |
83 |
void SetDescriptors(int index, int num, const unsigned char * descriptor, int id = -1); |
84 |
void SetDescriptors(int index, int num, const float * descriptor, int id = -1); |
85 |
void SetFeautreLocation(int index, const float* locatoins, int gap); |
86 |
int GetSiftMatch(int max_match, int match_buffer[][2], float distmax, float ratiomax, int mbm); |
87 |
int GetGuidedSiftMatch(int max_match, int match_buffer[][2], float H[3][3], float F[3][3], |
88 |
float distmax, float ratiomax, float hdistmax,float fdistmax, int mbm); |
89 |
}; |
90 |
|
91 |
|
92 |
#endif
|
93 |
|