Я хочу сопоставить функции на двух изображениях, чтобы обнаружить подделку копирования и перемещения. Я использовал код PCA-SIFT для обнаружения особенностей изображения. Но у меня возникли проблемы с сопоставлением функций PCA-SIFT. Согласно нескольким документам, для PCA-SIFT используется аналогичный процесс сопоставления, который используется в SIFT. Я использовал следующий фрагмент кода для сопоставления функций.
%des1 and des2 are the PCA-SIFT descriptors obtained from two images
% Precompute matrix transpose
des2t = des2';
matchTable = zeros(1,size(des1,1));
cnt=0; %no. of matches
%ration of ditances
distRatio = 0.5;
%normalising features
m1=max(max(des1));
m2=max(max(des2));
m=max(m1,m2);
des1=des1./m;
des2=des2./m;
for i = 1 : size(des1,1)
%finding eucledian distance of a vector in one image to all features in second image
A=des1(i,:);
D = des2-repmat(A,size(des2,1),1);
[vals,indx] = sort((sum(D.^2,2)).^(1/2)); %sort distances
% Check if nearest neighbor has angle less than distRatio times 2nd.
if (vals(1) < distRatio * vals(2))
matchTable(i) = indx(1);
cnt=cnt+1;
else
matchTable(i) = 0;
end
end
cnt
Приведенный выше код отлично работает для функций SIFT. Но я не могу получить правильные результаты для функций PCA-SIFT даже после того, как попробовал несколько значений distRatio(0-1)
. Я также не уверен, выполняет ли центральный код Matlab для PCA-SIFT (упомянутый выше) точный процесс, как указано в эта статья Если у кого-то есть какие-либо идеи по поводу вышеуказанной проблемы, пожалуйста, прокомментируйте.