我正在阅读有关如何使用VLFeat提取SIFT功能的this code。特别是相对于方向key
的关键点angles
的描述符保存在f.desc
中:
vl_sift_calc_keypoint_descriptor(filt, &f.desc[0], key, angles[q]) ;
BOOST_FOREACH(float &v, f.desc) {
/*
v = round(v * SIFT_RANGE);
if (v > SIFT_RANGE) v = SIFT_RANGE;
*/
v *= 2;
if (v > 1.0) v = 1.0;
}
我不明白的是FOREACH
循环:为什么每个描述符值加倍?为什么最大值设置为1.0
?