Я пытаюсь сравнить реализацию SIFT от OpenCV и VLFeat.Значения дескрипторов SIFT: OpenCV vs VLFeat
Я заметил, что значение дескрипторов для VLFeat являются целыми числами, такими как:
0 0 0 0 0 0 0 0 0 0 0 17 45 20 26 0 1 ...
While для OpenCV:
0.0391555 0 0 0.0998274 0.235747 0 0 0.0276871 0.156622 ...
Обратите внимание, что эти дескрипторы для 2-х разных изображений.
У меня есть два вопроса:
- Почему они имеют два различных значения?
- Если мне понадобится представление OpenCV для k-средств с использованием VLFeat (а затем VLAD-кодирования), нужно ли изменять эти значения?
'vl_sift'and' vl_dsift' * полностью * разные алгоритмы w.r.t. процедуры генерации ключевых точек, их нельзя сравнивать на основе значений дескрипторов (int или float). – justHelloWorld
Согласно VLFeat [documentation] (http://www.vlfeat.org/matlab/vl_dsift.html): «По умолчанию VL_DSIFT() вычисляет функции, эквивалентные VL_SIFT()». Существует также пример, описанный как «В этом примере производятся эквивалентные дескрипторы SIFT с использованием VL_DSIFT() и VL_SIFT():« –
Моя ошибка, я не знал, что поведение по умолчанию было одинаковым (я удалил -1;)). Однако DSIFT означает «Dense SIFT», а ключевые точки генерируются из стандартной сетки. Возможно, вы можете получить такое же поведение, но цель этих двух алгоритмов различна. – justHelloWorld