Вопрос

Для моей магистерской диссертации я бегаю тест на Sift Surf en Fast Algoritms для обнаружения логотипа на смартфонах.

Когда я просто время обнаружения, описание EN сопоставление для некоторых методов, я получаю следующие результаты.

Для детектора серфинга и дескриптора прибоя:

180 Keypoints Найдено

    .
  • 1 994 секунды Время расчета Keypoint (Surf)

  • 4,516 секунд Описание времени (прибой)

  • 0.282 секунды Время соответствия (прибой)

Когда я использую быстрый детектор вместо детектора прибоя

319 Keypoints Найдено

    .
  • 0,023 секунды. Время расчета Keypoint (быстро)

  • 1.295 секунд Описание времени (прибой)

  • 0,397 секунды Время соответствия (прибой)

Бывший детектор гораздо быстрее, чем детектор прибоя и даже определяет почти в два раза больше, чем многие клавиатуры в 100 раз быстрее. Эти результаты предсказуются.

Следующий шаг, хотя не предсказанный результат. Как это возможно, что дескриптор DE Serf является быстрее с быстрыми клавиатурами 319, а затем с Keypoints 180 серфинга?

Из того, что я знаю, описание не имеет отношения с алгоритмом обнаружения ... но эти результаты не так прогнозируются.

Один из них знает, как это возможно?

Вот код:

    FeatureDetector detector = FeatureDetector.create(FeatureDetector.SURF);
    //FeatureDetector detector = FeatureDetector.create(FeatureDetector.FAST);
    Imgproc.cvtColor(image1, image1, Imgproc.COLOR_RGBA2RGB);
    Imgproc.cvtColor(image2, image2, Imgproc.COLOR_RGBA2RGB);

    DescriptorExtractor SurfExtractor = DescriptorExtractor
    .create(DescriptorExtractor.SURF);


    //extract keypoints
    long time= System.currentTimeMillis();
    detector.detect(image1, keypoints);
    Log.d("LOG!", "number of query Keypoints= " + keypoints.size());
    detector.detect(image2, logoKeypoints);
    Log.d("LOG!", "number of logo Keypoints= " + logoKeypoints.size());
    Log.d("LOG!", "keypoint calculation time elapsed" + (System.currentTimeMillis() -time));

    //Descript keypoints
    long time2 = System.currentTimeMillis();
    Mat descriptors = new Mat();
    Mat logoDescriptors = new Mat();
    Log.d("LOG!", "logo type" + image2.type() + "  intype" + image1.type());
    SurfExtractor.compute(image1, keypoints, descriptors);
    SurfExtractor.compute(image2, logoKeypoints, logoDescriptors);
    Log.d("LOG!", "Description time elapsed" + (System.currentTimeMillis()- time2));
.

Это было полезно?

Решение

afaik Самая трудовая часть экстракции дескриптора серфинга представляет собой субпическую добычу патча (2,8 * keypoint.size x 2,8 * keypoint.size) размером вокруг каждой кипопрятки.

Так вот мое предположение: Keypoints, найденные быстрым детектором, всегда имеют свой генеракодицетагкод, равный 7, но детектор серфинга может найти клавиатуру намного большего размера.Таким образом, 180 «большие» клавиатуры обрабатываются длиннее 319 «маленькие».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top