Ich habe ein Programm für ein Projekt erstellt, das Bilder gegeneinander testet, um zu sehen, ob es das gleiche Bild ist oder nicht. Ich habe mich entschieden, die Korrelation zu verwenden, da die Bilder, die ich benutze, auf die gleiche Art und Weise gestaltet sind, und damit war ich in der Lage, alles bis zu diesem Punkt in Gang zu bringen.MatLab - Erstellen eines Arrays von Bildern abhängig von ihrer Korrelation
Ich möchte jetzt wieder eine Reihe von Bildern erstellen, aber diesmal in der Reihenfolge ihrer Korrelation. Wenn ich zum Beispiel eine 50-Pence-Münze teste und 50 Bilder gegen die 50-Pence-Münze teste, möchte ich, dass die höchsten 5 Korrelationen in einem Array gespeichert werden, das dann für die spätere Verwendung verwendet werden kann. Aber ich bin nicht sicher, wie dies zu tun ist, da jedes Element im Array mehr als eine Variable haben muss, die der Bildort/Name des Bildes und der Korrelationsprozentsatz ist.
%Program Created By Ben Parry, 2016.
clc(); %Simply clears the console window
%Targets the image the user picks
inputImage = imgetfile();
%Targets all the images inside this directory
referenceFolder = 'M:\Project\MatLab\Coin Image Processing\Saved_Images';
if ~isdir(referenceFolder)
errorMessage = print('Error: Folder does not exist!');
uiwait(warndlg(errorMessage)); %Displays an error if the folder doesn't exist
return;
end
filePattern = fullfile(referenceFolder, '*.jpg');
jpgFiles = dir(filePattern);
for i = 1:length(jpgFiles)
baseFileName = jpgFiles(i).name;
fullFileName = fullfile(referenceFolder, baseFileName);
fprintf(1, 'Reading %s\n', fullFileName);
imageArray = imread(fullFileName);
imshow(imageArray);
firstImage = imread(inputImage); %Reading the image
%Converting the images to Black & White
firstImageBW = im2bw(firstImage);
secondImageBW = im2bw(imageArray);
%Finding the correlation, then coverting it into a percentage
c = corr2(firstImageBW, secondImageBW);
corrValue = sprintf('%.0f%%',100*c);
%Custom messaging for the possible outcomes
corrMatch = sprintf('The images are the same (%s)',corrValue);
corrUnMatch = sprintf('The images are not the same (%s)',corrValue);
%Looping for the possible two outcomes
if c >=0.99 %Define a percentage for the correlation to reach
disp(' ');
disp('Images Tested:');
disp(inputImage);
disp(fullFileName);
disp (corrMatch);
disp(' ');
else
disp(' ');
disp('Images Tested:');
disp(inputImage);
disp(fullFileName);
disp(corrUnMatch);
disp(' ');
end;
imageArray = imread(fullFileName);
imshow(imageArray);
end