root / rgbdslam / external / siftgpu / src / SiftGPU / ProgramCU.h @ 9240aaa3
History | View | Annotate | Download (3.34 KB)
1 |
////////////////////////////////////////////////////////////////////////////
|
---|---|
2 |
// File: ProgramCU.h
|
3 |
// Author: Changchang Wu
|
4 |
// Description : interface for the ProgramCU classes.
|
5 |
// It is basically a wrapper around all the CUDA kernels
|
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 |
//
|
21 |
////////////////////////////////////////////////////////////////////////////
|
22 |
|
23 |
#ifndef _PROGRAM_CU_H
|
24 |
#define _PROGRAM_CU_H
|
25 |
#if defined(CUDA_SIFTGPU_ENABLED)
|
26 |
|
27 |
class CuTexImage; |
28 |
|
29 |
class ProgramCU |
30 |
{ |
31 |
public:
|
32 |
//GPU FUNCTIONS
|
33 |
static void FinishCUDA(); |
34 |
static int CheckErrorCUDA(const char* location); |
35 |
static int CheckCudaDevice(int device); |
36 |
public:
|
37 |
////SIFTGPU FUNCTIONS
|
38 |
static void CreateFilterKernel(float sigma, float* kernel, int& width); |
39 |
template<int KWIDTH> static void FilterImage(CuTexImage *dst, CuTexImage *src, CuTexImage* buf); |
40 |
static void FilterImage(CuTexImage *dst, CuTexImage *src, CuTexImage* buf, float sigma); |
41 |
static void ComputeDOG(CuTexImage* gus, CuTexImage* dog, CuTexImage* got); |
42 |
static void ComputeKEY(CuTexImage* dog, CuTexImage* key, float Tdog, float Tedge); |
43 |
static void InitHistogram(CuTexImage* key, CuTexImage* hist); |
44 |
static void ReduceHistogram(CuTexImage*hist1, CuTexImage* hist2); |
45 |
static void GenerateList(CuTexImage* list, CuTexImage* hist); |
46 |
static void ComputeOrientation(CuTexImage*list, CuTexImage* got, CuTexImage*key, |
47 |
float sigma, float sigma_step, int existing_keypoint); |
48 |
static void ComputeDescriptor(CuTexImage*list, CuTexImage* got, CuTexImage* dtex, int rect = 0, int stream = 0); |
49 |
|
50 |
//data conversion
|
51 |
static void SampleImageU(CuTexImage *dst, CuTexImage *src, int log_scale); |
52 |
static void SampleImageD(CuTexImage *dst, CuTexImage *src, int log_scale = 1); |
53 |
static void ReduceToSingleChannel(CuTexImage* dst, CuTexImage* src, int convert_rgb); |
54 |
static void ConvertByteToFloat(CuTexImage*src, CuTexImage* dst); |
55 |
|
56 |
//visualization
|
57 |
static void DisplayConvertDOG(CuTexImage* dog, CuTexImage* out); |
58 |
static void DisplayConvertGRD(CuTexImage* got, CuTexImage* out); |
59 |
static void DisplayConvertKEY(CuTexImage* key, CuTexImage* dog, CuTexImage* out); |
60 |
static void DisplayKeyPoint(CuTexImage* ftex, CuTexImage* out); |
61 |
static void DisplayKeyBox(CuTexImage* ftex, CuTexImage* out); |
62 |
|
63 |
//SIFTMATCH FUNCTIONS
|
64 |
static void MultiplyDescriptor(CuTexImage* tex1, CuTexImage* tex2, CuTexImage* texDot, CuTexImage* texCRT); |
65 |
static void MultiplyDescriptorG(CuTexImage* texDes1, CuTexImage* texDes2, |
66 |
CuTexImage* texLoc1, CuTexImage* texLoc2, CuTexImage* texDot, CuTexImage* texCRT, |
67 |
float H[3][3], float hdistmax, float F[3][3], float fdistmax); |
68 |
static void GetRowMatch(CuTexImage* texDot, CuTexImage* texMatch, float distmax, float ratiomax); |
69 |
static void GetColMatch(CuTexImage* texCRT, CuTexImage* texMatch, float distmax, float ratiomax); |
70 |
}; |
71 |
|
72 |
#endif
|
73 |
#endif
|
74 |
|