Surf Описание Быстрее с быстрой обнаружением?
Вопрос
Для моей магистерской диссертации я бегаю тест на 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 «маленькие».