5 가지 가장 비슷한 이미지를 입력 이미지와 비교하고 싶습니다. 이렇게하려면 SIFT (VLFeat library)를 사용하여 각각의 설명자를 비교하는 것이 좋습니다. 그래서 vl_ubcmatch
(doc here) 방법을 사용하여 이미지 간의 유사성 측정 값을 계산합니다. 가장 비슷한 5 개의 이미지 가져 오기
이
코드입니다 : 당신이 코드에서 볼 수 있듯이, 내가 유사성의 척도로 평균을 사용하지만 얻을 만족스러운 결과를 얻지 생각path_dir = './img/';
imgs = dir(path_dir);
imgs = imgs(3 : end);
numImgs = size(imgs);
numImgs = numImgs(1);
path1 = './img/car01.jpg';
Ia = imread(path1);
Ia = single(rgb2gray(Ia));
[fa, da] = vl_sift(Ia);
results = struct;
m = 0;
j = 1; % indice dell'img (del for)
for img = imgs'
path = strcat(path_dir, img.name);
if(strcmp(path1, path) == 0)
Ib = imread(path);
Ib = single(rgb2gray(Ib));
[fb, db] = vl_sift(Ib);
[matches, scores] = vl_ubcmatch(da, db);
s = sum(scores);
[r, c] = size(scores);
m = s ./ c;
results(j).measure = m;
results(j).img = path;
j = j + 1;
end
end
(예를 들어, 알려줍니다 나는 컵의 입력 이미지가 다른 컵보다 나무와 더 비슷하다는 것을 알았다.)
당신에 따르면 더 많은 수의 동등한 서술자를 갖고 있지만 유사하거나 덜 유사한 서술자를 사용하는 것이 더 좋지만 유사성은 더 큽니까? 5 가지 카테고리 (컵, 나무, 사람, 테이블 및 자동차)의 50 개 이미지가 있으며 이미지를 입력하면 프로그램은 5 개의 가장 비슷한 이미지를 반환하고 선호하는 동일한 카테고리에 속합니다.
더 정확한 분류를 얻기 위해 평균 대신에 어떤 측정을 사용할 수 있습니까? 감사합니다.