| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| #ifndef _PROGRAM_CU_H |
| #define _PROGRAM_CU_H |
| #if defined(CUDA_SIFTGPU_ENABLED) |
|
|
| class CuTexImage; |
|
|
| class ProgramCU |
| { |
| public: |
| |
| static void FinishCUDA(); |
| static int CheckErrorCUDA(const char* location); |
| static int CheckCudaDevice(int device); |
| public: |
| |
| static void CreateFilterKernel(float sigma, float* kernel, int& width); |
| template<int KWIDTH> static void FilterImage(CuTexImage *dst, CuTexImage *src, CuTexImage* buf); |
| static void FilterImage(CuTexImage *dst, CuTexImage *src, CuTexImage* buf, float sigma); |
| static void ComputeDOG(CuTexImage* gus, CuTexImage* dog, CuTexImage* got); |
| static void ComputeKEY(CuTexImage* dog, CuTexImage* key, float Tdog, float Tedge); |
| static void InitHistogram(CuTexImage* key, CuTexImage* hist); |
| static void ReduceHistogram(CuTexImage*hist1, CuTexImage* hist2); |
| static void GenerateList(CuTexImage* list, CuTexImage* hist); |
| static void ComputeOrientation(CuTexImage*list, CuTexImage* got, CuTexImage*key, |
| float sigma, float sigma_step, int existing_keypoint); |
| static void ComputeDescriptor(CuTexImage*list, CuTexImage* got, CuTexImage* dtex, int rect = 0, int stream = 0); |
|
|
| |
| static void SampleImageU(CuTexImage *dst, CuTexImage *src, int log_scale); |
| static void SampleImageD(CuTexImage *dst, CuTexImage *src, int log_scale = 1); |
| static void ReduceToSingleChannel(CuTexImage* dst, CuTexImage* src, int convert_rgb); |
| static void ConvertByteToFloat(CuTexImage*src, CuTexImage* dst); |
|
|
| |
| static void DisplayConvertDOG(CuTexImage* dog, CuTexImage* out); |
| static void DisplayConvertGRD(CuTexImage* got, CuTexImage* out); |
| static void DisplayConvertKEY(CuTexImage* key, CuTexImage* dog, CuTexImage* out); |
| static void DisplayKeyPoint(CuTexImage* ftex, CuTexImage* out); |
| static void DisplayKeyBox(CuTexImage* ftex, CuTexImage* out); |
|
|
| |
| static void MultiplyDescriptor(CuTexImage* tex1, CuTexImage* tex2, CuTexImage* texDot, CuTexImage* texCRT); |
| static void MultiplyDescriptorG(CuTexImage* texDes1, CuTexImage* texDes2, |
| CuTexImage* texLoc1, CuTexImage* texLoc2, CuTexImage* texDot, CuTexImage* texCRT, |
| float* H, float hdistmax, float* F, float fdistmax); |
| static void GetRowMatch(CuTexImage* texDot, CuTexImage* texMatch, float distmax, float ratiomax); |
| static void GetColMatch(CuTexImage* texCRT, CuTexImage* texMatch, float distmax, float ratiomax); |
| }; |
|
|
| #endif |
| #endif |
|
|
|
|