Плотные ключевые точки SIFT и извлечение дескрипторов с использованием vlfeat

В настоящее время я использую Dense SIFT от vlfeat. Но я получил только одну ключевую точку и дескриптор из кода. Но количество возвращенных ключевых точек было больше. Как извлечь все ключевые точки и дескрипторы.

Также дескриптор был единственным значением, и он должен быть 128 X N.

Код выглядит следующим образом.

Размер vlkeypoints был всего один. Как извлечь все ключевые точки?

    img = imread("filename.jpg");

     // create filter
    vlf = vl_dsift_new(img.rows, img.cols, 1, 3);

    // transform image in cv::Mat to float vector
    std::vector<float> imgvec;
    for (int i = 0; i < img.rows; ++i){
      for (int j = 0; j < img.cols; ++j){
        imgvec.push_back(img.at<unsigned char>(i,j) / 255.0f);                                                                                                                                                                                                        
      }
    }
    // call processing function of vl
    vl_dsift_process(vlf, &imgvec[0]);

    // echo number of keypoints found
    std::cout << vl_dsift_get_keypoint_num(vlf) << std::endl;

    // Extract keypoints
    VlDsiftKeypoint * vlkeypoints;
    vlkeypoints = vl_dsift_get_keypoints(vlf);

person Sabarinathan Vadivelu    schedule 28.09.2014    source источник
comment
хорошо работает на VLFeat версии 0.9.17, а vl_dsift_get_keypoint_num(vlf) - разумное число.   -  person lanpa    schedule 30.09.2014