Как вычислить дескрипторы SIFT поверх эллипсоидов MSER в VLFeat? - PullRequest
0 голосов
/ 18 марта 2020

У меня есть изображение в градациях серого (одно значение на пиксель от 0 до 255), и я хочу обнаружить ключевые точки, используя алгоритм MSER (то есть эллипсоиды), и описать эти ключевые точки, используя дескрипторы SIFT. Я использую функции из библиотеки VLFeat.

Сначала я получаю центроиды и эллипсоиды, используя функции vl_mser_get_regions (возвращает вектор значений, указывающих положение центроида на изображении) и vl_mser_get_ell (возвращает вектор измерения 9, описывающий эллипсоид). Затем я хочу применить функцию vl_sift_calc_raw_descriptor к каждому из предыдущих эллипсоидов, чтобы получить SIFT-дескриптор для каждого эллипсоида.

Я покажу пример того, что я делал до сих пор (опуская нетрансцендентный код ):

/*********** MSER *************/
vl_mser_process (filter, image) ; //mser filter creation

number_regions         = vl_mser_get_regions_num (filter) ; //number of ellipsoids
regions                = vl_mser_get_regions     (filter) ; //centroids of the ellipsoids

vl_mser_ell_fit (filt) ;

dimension_ellipsoids     = vl_mser_get_ell_dof (filter) ; //dimension of the vector that describes the ellipsoids: 9
number_frames            = vl_mser_get_ell_num (filter) ; //number of ellipsoids
frames                   = vl_mser_get_ell     (filter) ; //ellipsoids



/*********** SIFT *************/
sift_filter = vl_sift_new (image_width, image_height octaves, levels, omin) ; //sift filter creation

for(int i=0; i < number_frames; i++){ //iterate over each ellipsoid

    // HERE is the problem, I do not what input parameters I have 
    //to pass to this function except the first one (they must surely
    //be obtained from the ellipsoids vector)
    vl_sift_calc_raw_descriptor (   sift_filter,
            vl_sift_pix const *     grad,
            vl_sift_pix *           descr,
            int                     width,
            int                     height,
            double                  x,
            double                  y,
            double                  sigma,
            double                  angle0 ) 
}

Проблема в том, что я не знаю, как использовать 9-мерный вектор, описывающий каждый эллипсоид в функции vl_sift_calc_raw_descriptor.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...