ETRI IVCL 1.0.0
Acceleration SW Platform for Ondevice
Classes | Macros | Functions
__SIFT.hpp File Reference
#include <opencv2/opencv.hpp>
#include <vector>
#include <queue>

Classes

struct  Feature
 Detected features. More...
 
struct  oclFeature
 OpenCL Detected features. More...
 

Macros

#define SIFT_INIT_SIGMA   0.5
 
#define SIFT_IMG_BORDER   5
 
#define SIFT_MAX_INTERP_STEPS   5
 
#define SIFT_ORI_HIST_BINS   36
 
#define SIFT_ORI_SIG_FCTR   1.5
 
#define SIFT_ORI_RADIUS   3.0 * SIFT_ORI_SIG_FCTR
 
#define SIFT_ORI_SMOOTH_PASSES   2
 
#define SIFT_ORI_PEAK_RATIO   0.8
 
#define SIFT_DESCR_SCL_FCTR   3.0
 
#define SIFT_DESCR_MAG_THR   0.2
 
#define SIFT_INT_DESCR_FCTR   512.0
 
#define SIFT_KEYPOINT_DIAMETER   2.0
 
#define VERBOSE   false
 
#define MAX_KP   5000
 
#define REMOVE_DUPLICATED_ORI   true
 

Functions

void __feats2KeyPoints (const vector< Feature > &feats, vector< KeyPoint > &keypoints)
 
void __featsVec2Mat (const vector< Feature > &feats, Mat &mat)
 
void __buildDogPyramid (const vector< Mat > &gaussian_pyramid, vector< Mat > &dog_pyramid, int octaves, int intervals)
 
bool __isExtremum (const vector< Mat > &dog_pyramid, int idx, int r, int c)
 
bool __interpExtremum (const vector< Mat > &dog_pyramid, Feature &feat, int idx, int r, int c, int intervals, double contrast_thres)
 
bool __isTooEdgeLike (const Mat &dog, int r, int c, int curvature_thres)
 

Macro Definition Documentation

◆ MAX_KP

#define MAX_KP   5000

◆ REMOVE_DUPLICATED_ORI

#define REMOVE_DUPLICATED_ORI   true

◆ SIFT_DESCR_MAG_THR

#define SIFT_DESCR_MAG_THR   0.2

◆ SIFT_DESCR_SCL_FCTR

#define SIFT_DESCR_SCL_FCTR   3.0

◆ SIFT_IMG_BORDER

#define SIFT_IMG_BORDER   5

◆ SIFT_INIT_SIGMA

#define SIFT_INIT_SIGMA   0.5

SIFT PARAMS SETDOWN

◆ SIFT_INT_DESCR_FCTR

#define SIFT_INT_DESCR_FCTR   512.0

◆ SIFT_KEYPOINT_DIAMETER

#define SIFT_KEYPOINT_DIAMETER   2.0

◆ SIFT_MAX_INTERP_STEPS

#define SIFT_MAX_INTERP_STEPS   5

◆ SIFT_ORI_HIST_BINS

#define SIFT_ORI_HIST_BINS   36

◆ SIFT_ORI_PEAK_RATIO

#define SIFT_ORI_PEAK_RATIO   0.8

◆ SIFT_ORI_RADIUS

#define SIFT_ORI_RADIUS   3.0 * SIFT_ORI_SIG_FCTR

◆ SIFT_ORI_SIG_FCTR

#define SIFT_ORI_SIG_FCTR   1.5

◆ SIFT_ORI_SMOOTH_PASSES

#define SIFT_ORI_SMOOTH_PASSES   2

◆ VERBOSE

#define VERBOSE   false

Function Documentation

◆ __buildDogPyramid()

void __buildDogPyramid ( const vector< Mat > &  gaussian_pyramid,
vector< Mat > &  dog_pyramid,
int  octaves,
int  intervals 
)

[Build Difference of Gaussian Pyramid]

Parameters
gaussian_pyramid[gaussian pyramid]
dog_pyramid[returned dog pyramid, size : octaves x (intervals + 2)]
octaves[number of octaves]
intervals[number of intervals per octave]

◆ __feats2KeyPoints()

void __feats2KeyPoints ( const vector< Feature > &  feats,
vector< KeyPoint > &  keypoints 
)

[convert features to keypoints]

Parameters
feats[features in vector]
keypoints[returned keypoint vector]

◆ __featsVec2Mat()

void __featsVec2Mat ( const vector< Feature > &  feats,
Mat &  mat 
)

[convert features from vector to Mat]

Parameters
feats[features in vector]
mat[returned Mat]

◆ __interpExtremum()

bool __interpExtremum ( const vector< Mat > &  dog_pyramid,
Feature feat,
int  idx,
int  r,
int  c,
int  intervals,
double  contrast_thres 
)

[Interpolates a scale-space extremum's location]

Parameters
dog_pyramid[Dog pyramid]
feat[returned feature]
idx[index of intervals]
r[pixel's image row]
c[pixel's image col]
intervals[number of intervals per octave]
contrast_thres[low threshold on feature contrast]
Returns
[is a feature?]

◆ __isExtremum()

bool __isExtremum ( const vector< Mat > &  dog_pyramid,
int  idx,
int  r,
int  c 
)

[Determines whether a pixel is a scale-space extremum]

Parameters
dog_pyramid[Dog pyramid]
idx[index of intervals]
r[pixel's image row]
c[pixel's image col]
Returns
[extremum?]

◆ __isTooEdgeLike()

bool __isTooEdgeLike ( const Mat &  dog,
int  r,
int  c,
int  curvature_thres 
)

[Is a feature too edge like?]

Parameters
dog[Dog layer]
r[row]
c[col]
curvature_thres[high threshold on ratio of principal curvatures]
Returns
[edge?]