You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							94 lines
						
					
					
						
							2.8 KiB
						
					
					
				
			
		
		
	
	
							94 lines
						
					
					
						
							2.8 KiB
						
					
					
				| ////////////////////////////////////////////////////////////////////////////
 | |
| //	File:		SiftMatch.h
 | |
| //	Author:		Changchang Wu
 | |
| //	Description :	interface for the SiftMatchGL
 | |
| ////
 | |
| //	Copyright (c) 2007 University of North Carolina at Chapel Hill
 | |
| //	All Rights Reserved
 | |
| //
 | |
| //	Permission to use, copy, modify and distribute this software and its
 | |
| //	documentation for educational, research and non-profit purposes, without
 | |
| //	fee, and without a written agreement is hereby granted, provided that the
 | |
| //	above copyright notice and the following paragraph appear in all copies.
 | |
| //
 | |
| //	The University of North Carolina at Chapel Hill make no representations
 | |
| //	about the suitability of this software for any purpose. It is provided
 | |
| //	'as is' without express or implied warranty.
 | |
| //
 | |
| //	Please send BUG REPORTS to ccwu@cs.unc.edu
 | |
| //
 | |
| ////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| 
 | |
| #ifndef GPU_SIFT_MATCH_H
 | |
| #define GPU_SIFT_MATCH_H
 | |
| class GLTexImage;
 | |
| class ProgramGPU;
 | |
| 
 | |
| class SiftMatchGL:public SiftMatchGPU
 | |
| {
 | |
| 	typedef GLint ParameterGL;
 | |
| private:
 | |
| 	//tex storage
 | |
| 	GLTexImage _texLoc[2];
 | |
| 	GLTexImage _texDes[2];
 | |
| 	GLTexImage _texDot;
 | |
| 	GLTexImage _texMatch[2];
 | |
| 
 | |
| 	//programs
 | |
| 	ProgramGPU * s_multiply;
 | |
| 	ProgramGPU * s_guided_mult;
 | |
| 	ProgramGPU * s_col_max;
 | |
| 	ProgramGPU * s_row_max;
 | |
| 
 | |
| 	//matching parameters
 | |
| 	ParameterGL _param_multiply_tex1;
 | |
| 	ParameterGL _param_multiply_tex2;
 | |
| 	ParameterGL _param_multiply_size;
 | |
| 	ParameterGL _param_rowmax_param;
 | |
| 	ParameterGL _param_colmax_param;
 | |
| 
 | |
| 	///guided matching
 | |
| 	ParameterGL _param_guided_mult_tex1;
 | |
| 	ParameterGL _param_guided_mult_tex2;
 | |
| 	ParameterGL _param_guided_mult_texl1;
 | |
| 	ParameterGL _param_guided_mult_texl2;
 | |
| 	ParameterGL _param_guided_mult_h;
 | |
| 	ParameterGL _param_guided_mult_f;
 | |
| 	ParameterGL _param_guided_mult_param;
 | |
| 	//
 | |
| 	int _num_sift[2];
 | |
| 	int _id_sift[2];
 | |
| 	int _have_loc[2];
 | |
| 
 | |
| 	//gpu parameter
 | |
| 	int _sift_per_stripe;
 | |
| 	int _sift_num_stripe;
 | |
| 	int	_sift_per_row;
 | |
| 	int	_pixel_per_sift;
 | |
| 	int _initialized;
 | |
| 	//
 | |
| 	vector<float> sift_buffer;
 | |
| private:
 | |
| 	void AllocateSiftMatch();
 | |
| 	void LoadSiftMatchShadersGLSL();
 | |
| 	int  GetBestMatch(int max_match, uint32_t match_buffer[][2], float distmax, float ratiomax, int mbm);
 | |
| public:
 | |
| 	SiftMatchGL(int max_sift, int use_glsl);
 | |
| 	virtual ~SiftMatchGL();
 | |
| public:
 | |
|   bool Allocate(int max_sift, int mbm) override;
 | |
| 	void InitSiftMatch();
 | |
| 	void SetMaxSift(int max_sift) override;
 | |
| 	void SetDescriptors(int index, int num, const unsigned char * descriptor, int id = -1);
 | |
| 	void SetDescriptors(int index, int num, const float * descriptor, int id = -1);
 | |
| 	void SetFeautreLocation(int index, const float* locatoins, int gap);
 | |
| 	int  GetSiftMatch(int max_match, uint32_t match_buffer[][2], float distmax, float ratiomax, int mbm);
 | |
| 	int  GetGuidedSiftMatch(int max_match, uint32_t match_buffer[][2], float* H, float* F,
 | |
| 		float distmax, float ratiomax, float hdistmax,float fdistmax, int mbm);
 | |
| };
 | |
| 
 | |
| 
 | |
| #endif
 | |
| 
 |