2013-05-02 2 views
0

matlab에서 FLANN을 사용하고 SIFT 피처 설명자를 데이터로 사용하고 있습니다. 여기matlab의 FLANN이 내 계산과 다른 거리를 반환합니다

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

index는 KD-트리 구축 : 함수가있다. "사용자 매뉴얼"은 result이 샘플의 가장 가까운 이웃을 testset으로 반환하고 ndists은 테스트 샘플과 가장 가까운 이웃 사이의 해당 거리를 포함한다고 말했습니다. 나는 유클리드 거리를 사용하여 ndists의 거리가 orignal 데이터에 의해 계산 된 거리와 다른 것을 발견했습니다. 그리고 더욱 이상한 점은 ndists에있는 모든 숫자가 유클리드 거리에 대해 종종 불가능한 정수입니다. 이것을 설명하도록 도와 주시겠습니까?

+0

'ndists'의 숫자가 모두 정수 인 경우 -이 출력이 실제로 가장 가까운 이웃의 색인 인 경우 일 수 있습니까? 어떤 타입이'result' 숫자입니까? 그들은 두 배입니까? 정수입니까? 당신이 생략 한 또 다른 결과가있을 수 있습니까? – Shai

답변

1

기본적으로 FLANN은 제곱을 유클리드 거리로 반환합니다. flann_set_distance_type(type, order) (manual 참조)으로 사용 된 측정 항목을 변경할 수 있습니다.

SIFT 기능은 정수이므로 제곱의 경우 유클리드 거리의 경우 결과 거리가 정수가됩니다.