Я пытаюсь пройти и понять некоторые из кода VLFeat, чтобы увидеть, как они генерируют точки функции SIFT. Одна вещь, которая меня озадачила на ранней стадии, заключается в том, как они вычисляют количество октав в их вычислении SIFT.VLFeat: вычисление числа октав для SIFT
Таким образом, согласно документации, если вы указываете отрицательное значение для начального числа октав, она будет вычислять максимум, который задается log2 (min (ширина, высота)). Код для соответствующего бита:
if (noctaves < 0) {
noctaves = VL_MAX (floor (log2 (VL_MIN(width, height))) - o_min - 3, 1) ;
}
Этот код находится в функции находится в vl_sift_new функции. Здесь o_min должен быть индексом первой октавы (думаю, не нужно начинать с изображения с полным разрешением). Я предполагаю, что это может быть установлено в 0 в большинстве случаев использования.
Итак, все же я не понимаю, почему они вычитают 3 из этого значения. Это кажется очень запутанным. Я уверен, что есть веская причина, но я не смог понять это.
Ах да. В этом есть смысл. Я как бы понял это сегодня. Я установил минимальный размер патча 32 x32 и, похоже, дал неплохие результаты. – Luca
@ Luca - Ах круто! Это имеет смысл, что вы поняли это. Вы задали этот вопрос около 24 часов назад. Жаль, что я не понял этого раньше. BTW, 32 x 32 - хороший размер, поэтому придерживайтесь его, и спасибо за принятие! – rayryeng