/*
此结构体可存储2种类型的特征点
FEATURE_OXFD表示牛津大学VGG提供的源码中的特征点格式
FEATURE_LOWE表示David.Lowe提供的源码中的特征点格式。
如果是OXFD类型的特征点,结构体中的a,b,c成员描述了特征点南园的偏向区域(椭圆的参数),即领域。
如果是LOWE类型的特征点,结构体中的scl和ori成员描述了特征点的大小和方向。
fwd_match,bck_match,mdl_match一般同时只有一个起作用,用来指明此特征点对应的匹配点
/*
struct feature
{
double x; /**< x coord */ //特征点的x坐标
double y; /**< y coord */ //特征点的y坐标
double a; /**< Oxford-type affine region parameter */ //OXFD特征点中椭圆的参数
double b; /**< Oxford-type affine region parameter */ //OXFD特征点中椭圆的参数
double c; /**< Oxford-type affine region parameter */ //OXFD特征点中椭圆的参数
double scl; /**< scale of a Lowe-style feature *///LOWE特征点的尺度
double ori; /**< orientation of a Lowe-style feature */ //LOWE特征点的方向
int d; /**< descriptor length */ //特征描述子的长度,即维数,一般是128
double descr[FEATURE_MAX_D]; /**< descriptor */ //128维的特征描述子,即一个double数组
int type; /**< feature type, OXFD or LOWE */ //特征点类型
int category; /**< all-purpose feature category */
struct feature* fwd_match; /**< matching feature from forward image */ //指明此特征点对应的匹配点
struct feature* bck_match; /**< matching feature from backmward image */ //指明此特征点对应的匹配点
struct feature* mdl_match; /**< matching feature from model */ //指明此特征点对应的匹配点
CvPoint2D64f img_pt; /**< location in image */ //特征点的坐标,等于(x,y)
CvPoint2D64f mdl_pt; /**< location in model */ //当匹配类型是mdl_match时用到
void* feature_data; /**< user-definable data */ //用户定义的数据:
//在SIFT极值点检测中,是detection_data结构的指针
//在k-d树搜索中,是bbf_data结构的指针
//在RANSAC算法中,是ransac_data结构的指针
};