Во-первых, разве вы не должны использовать vl_sift вместо sift?
Во-вторых, вы можете использовать сопоставление функций SIFT, чтобы найти соответствия в двух изображениях. Вот пример кода:
I = imread('p1.jpg');
J = imread('p2.jpg');
I = single(rgb2gray(I)); % Conversion to single is recommended
J = single(rgb2gray(J)); % in the documentation
[F1 D1] = vl_sift(I);
[F2 D2] = vl_sift(J);
% Where 1.5 = ratio between euclidean distance of NN2/NN1
[matches score] = vl_ubcmatch(D1,D2,1.5);
subplot(1,2,1);
imshow(uint8(I));
hold on;
plot(F1(1,matches(1,:)),F1(2,matches(1,:)),'b*');
subplot(1,2,2);
imshow(uint8(J));
hold on;
plot(F2(1,matches(2,:)),F2(2,matches(2,:)),'r*');
vl_ubcmatch () по сути делает следующее:
Предположим, у вас есть точка P в F1, и вы хотите найти «лучшее» совпадение в F2. Один из способов сделать это - сравнить дескриптор P в F1 со всеми дескрипторами в D2. Для сравнения я имею в виду найти евклидово расстояние (или L2-норму разности двух дескрипторов).
Затем я нахожу две точки в F2, скажем U & V, которые имеют самое низкое и второе самое низкое расстояние (скажем, Du и Dv) от P соответственно.
Вот что рекомендовал Лоу: если Dv / Du> = порог (я использовал 1,5 в примере кода), то это соответствие приемлемо; в противном случае, он неоднозначно сопоставляется и отклоняется как корреспонденция, и мы не сопоставляем ни одного пункта в F2 с P. По существу, если существует большая разница между лучшим и вторым лучшим совпадениями, вы можете ожидать, что это будет качественное совпадение.
Это важно, поскольку в изображении имеется много возможностей для неоднозначных совпадений: представьте точки совпадения в озере или здании с несколькими окнами, дескрипторы могут выглядеть очень похожими, но соответствие, очевидно, неверное.
Вы можете выполнить сопоставление любым количеством способов. Вы можете сделать это самостоятельно с помощью MATLAB или ускорить его с помощью KD-дерева или приблизительного поиска ближайшего номера, например FLANN который был реализован в OpenCV .
EDIT: Также в MATLAB .
есть несколько реализаций
kd-дерева.