Ich möchte Features in zwei Bildern zuordnen, um Kopierfehler zu erkennen. Ich habe die PCA-SIFT code verwendet, um Bildmerkmale zu erkennen. Aber ich habe Probleme mit den PCA-SIFT Funktionen. Laut mehreren Papieren wird für PCA-SIFT ein ähnlicher Matching-Prozess verwendet wie in SIFT. Ich habe das folgende Code-Snippet verwendet, um Features zu vergleichen.Übereinstimmende Funktionen von Bildern mit PCA-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
Der obige Code funktioniert für SIFT Funktionen in Ordnung. Aber ich bin nicht in der Lage, korrekte Ergebnisse für PCA-SIFT-Funktionen zu erhalten, selbst nachdem ich mehrere Werte von distRatio(0-1)
ausprobiert habe. Ich bin mir auch nicht sicher, ob der Matlab-Zentralcode für PCA-SIFT (oben erwähnt) den genauen Prozess ausführt, wie in this paper erwähnt. Wenn jemand eine Idee über das obige Problem hat, dann kommentieren Sie bitte.