struct feature_config {
int detector_type = SIFT_MODE;
union {
struct {
int nfeatures;
int nOctaveLayers;
double contrastThreshold;
double edgeThreshold;
double sigma;
} sift;
struct {
int nfeatures;
float scaleFactor;
int nlevels;
int edgeThreshold;
int firstLevel;
int WTA_K;
int scoreType;
int patchSize;
int fastThreshold;
} orb;
struct {
int descriptor_type;
int descriptor_size;
int descriptor_channels;
int threshold;
int nOctaves;
int nOctaveLayers;
int diffusivity;
int max_points;
} akaze;
} params;
};