для моей магистерской диссертации, я выполняю некоторые тесты на SIFT SURF en FAST algoritms для обнаружения логотипов на смартфонах.Описание SURF быстрее с обнаружением FAST?
, когда я просто время обнаружения, описание en соответствия для некоторых методов, я получаю следующие результаты.
для детектора SURF и SURF дескриптора:
180 ключевых точек найдено
1994 секунд Keypoint время вычисления (SURF)
4516 секунд Описание Время (SURF)
0,282 секунды, соответствующее времени (SURF)
когда я использовать FAST, детектор вместо детектора SURF
319 ключевых точек найдено
0.023 секунды Keypoint время вычисления (FAST)
1,295 секунд Описание (SURF)
0,397 секунд соответствующее время (SURF)
Детектор FAST намного быстрее, чем детектор SURF, и даже обнаруживает почти в два раза больше ключевых точек в 100 раз быстрее. Эти результаты предсказуемы.
Следующий шаг, хотя и не предсказанный результат. Как возможно, что дескриптор SURF быстрее с ключевыми точками 319 FAST с 180 точками SURF?
Из того, что я знаю, описание не имеет никакого отношения к алгоритму обнаружения ... но эти результаты не так предсказаны.
Кто-нибудь знает, как это возможно?
вот код:
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));
не могли бы вы высказать некоторые ваши вопросы? :) – Codeman
некоторые из моего кода добавляются к вопросу! – piepie