This is a code for calculating histogram error of a selected image to all images of a folder. I want to retrieve images which are similar to the selected image. Like: all the tree images of the folder, or bird images, or people images.
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
fontSize = 25;format long g; % Read in a standard MATLAB gray scale demo image.
%folder = fullfile(matlabroot, '\toolbox\images\imdemos\new');
folder = fullfile('E:\4-2\Thesis_codes\similar');baseFileName = 't5.jpg';% Get the full filename, with path prepended.
fullFileName = fullfile(folder, baseFileName);% Check if file exists.
if ~exist(fullFileName, 'file') % File doesn't exist -- didn't find it there. Check the search path for it.
fullFileNameOnSearchPath = baseFileName; % No path this time.
if ~exist(fullFileNameOnSearchPath, 'file') % Still didn't find it. Alert user.
errorMessage = sprintf('Error: %s does not exist in the search path folders.', fullFileName); uiwait(warndlg(errorMessage)); return; endendreferenceGrayImage = imread(fullFileName);% Get the dimensions of the image.
% numberOfColorBands should be = 1.
[rows, columns, numberOfColorBands] = size(referenceGrayImage);if numberOfColorBands > 1 % It's not really gray scale like we expected - it's color.
% Convert it to gray scale by taking only the green channel.
referenceGrayImage = referenceGrayImage(:, :, 2); % Take green channel.
end% Display the original gray scale image.
%subplot(2, 2, 1);
%imshow(referenceGrayImage, []);
%title('Original Grayscale Image', 'FontSize', fontSize);
% Enlarge figure to full screen.
%set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);
% Give a name to the title bar.
%set(gcf, 'Name', 'Demo by ImageAnalyst', 'NumberTitle', 'Off')
% Let's compute and display the histogram.
[pixelCount, grayLevels] = imhist(referenceGrayImage);%subplot(2, 2, 2);
%bar(grayLevels, pixelCount);
%grid on;
%title('Histogram of original image', 'FontSize', fontSize);
%xlim([0 grayLevels(end)]); % Scale x axis manually.
srcFiles = dir(fullfile(folder, '*.jpg')); %directory of the source folder
Im1 = im2double(referenceGrayImage); % Calculate the Normalized Histogram
hn1 = imhist(referenceGrayImage)./numel(referenceGrayImage); for i = 1 : length(srcFiles) % determins how many images are there in the folder,
filename = fullfile(folder,srcFiles(i).name) thisImage = imread(filename); % Display the original gray scale image. %subplot(2, 2, 3);
%imshow(thisImage);
%title(filename, 'FontSize', fontSize);
%drawnow;
Im2=rgb2gray(thisImage); Im2 = im2double(Im2); hn2 = imhist(Im2)./numel(Im2); % Calculate the histogram error
f(i) = sum((hn1 - hn2).^2);% Calculate the histogram error f(i) %display the result to consol
%image=imread(fullfile(folder,srcFiles(i).name));
%figure, imshow(image);title ('The image you have selected is an image of jute');
if((f(i)>=0.009)&&(f(i) <=0.3)) f(i) %display the result to consol image=imread(fullfile(folder,srcFiles(i).name)); figure, imshow(image); %promptMessage =sprintf('f=%f',f(i));
endend
Can anyone please help me???
Best Answer