2013-05-02 2 views
0

Я использую FLANN в matlab и использую дескриптор функции SIFT как мои данные. Существует функция:FLANN в matlab возвращает другое расстояние от моего собственного расчета

[result, ndists] = flann_search(index, testset, ...); 

Здесь index построен с кД дерева. В «Руководстве пользователя» сказано, что result возвращает ближайших соседей образцов в testset, а ndists содержит соответствующие расстояния между тестовыми образцами и ближайшими соседями. Я использовал эвклидовое расстояние и обнаружил, что расстояния в ndists отличаются от расстояний, вычисленных по данным orignal. И что еще более странно, все числа в ndists являются целыми числами, что часто невозможно для евклидова расстояния. Можете ли вы мне помочь объяснить это?

+0

если числа в 'ndists' являются целыми числами - может ли это так, что этот вывод фактически является показателем ближайших соседей? какой тип являются «результатом»? они двойные? являются ли они целыми числами? возможно ли, что есть другой выход, который вы опустили? – Shai

ответ

1

FLANN по умолчанию возвращает в квадрате евклидово расстояние. Вы можете изменить использованную метрику с помощью flann_set_distance_type(type, order) (см. manual).

Функции SIFT являются целыми числами, поэтому полученные расстояния также являются целыми числами в случае в квадрате эвклидовое расстояние.

Смежные вопросы