Опция A : Рассчитать упрощенную гистограмму (8 бит).Сортируйте ваши изображения по сходству гистограммы.
Я использовал это в классе обработки изображений.Это довольно простительный способ сравнения изображений.Небольшие изменения в освещении или ориентации не помешают сравнению.Вы даже можете перевернуть изображение на 90 ° или 180 °.
У меня все еще есть код, даже если он был matlab, он может быть полезен:
// image to compare:
QueryPicture = imread(strcat('E:\Users\user98\Images\',num2str(floor(result/10)),num2str(mod(result,10)),'.jpg'));
sums = zeros(50,2);
h = zeros(64,50);
// do a simpified histogram:
for n=1:50
img=double(imread(strcat('E:\Users\user98\Images\',num2str(floor(n/10)),num2str(mod(n,10)),'.jpg')));
for i=1:200
for j=1:200
x1 = bitshift(img(i,j,1), -6);
x2 = bitshift(img(i,j,2), -6) * 4;
x3 = bitshift(img(i,j,3), -6) * 16;
x = x1 + x2 + x3;
h(x+1, n) = (h(x+1, n) + 1);
end
end
end
// compare histograms:
for n=1:50
tmpVec = zeros(64,1);
for i=1:64
tmpVec(i) = abs(h(i,n) - h(i,result));
end
for j=1:64
sums(n,1) = sums(n,1)+tmpVec(j);
end
sums(n,2) = n;
end
sortedImages = sortrows(sums,1)
// Show compare-image:
subplot(2,3,1); image(uint8(QueryPicture));
// show 3 best matches for compare-image:
sortedImages(1);
sortedImages(2);
sortedImages(3);
img1=double(imread(strcat('E:\Users\user98\Images\',num2str(floor(sortedImages(2,2)/10)),num2str(mod(sortedImages(2,2),10)),'.jpg')));
img2=double(imread(strcat('E:\Users\user98\Images\',num2str(floor(sortedImages(3,2)/10)),num2str(mod(sortedImages(3,2),10)),'.jpg')));
img3=double(imread(strcat('E:\Users\user98\Images\',num2str(floor(sortedImages(4,2)/10)),num2str(mod(sortedImages(4,2),10)),'.jpg')));
subplot(2,3,4); image(uint8(img1));
subplot(2,3,5); image(uint8(img2));
subplot(2,3,6); image(uint8(img3));
Опция B: :
ИспользуйтеGPS-данные с изображения (exif), если они доступны.
Опция C: :
Google Lens - это приложение, которое может классифицировать изображения и обнаруживать объекты.