Asked by FIR
on 20 Dec 2011

I have 100 images and i have to find the euclidean distance for it,and i have to take a query image and find the euclidean distance and retrieve the image ,i have extracted an feature of an image and have stored it in .mat file,please help

Answer by Junaid
on 22 Dec 2011

Accepted answer

Dear FIR, Sorry FIR I can't overview your code you sent to me. To compute the Euclidean distance between images or image features, your vector length or matrix should have same dimensions. Let say your first image has 1 x 460 vector then your query should be of same length. If that is the case then you can easily find Euclidean distance by the code I have written below. You just have to ensure that the dimensions are the same. I give you example of Histogram feature of two images.

I = imread('myimage.jpg'); I = rgb2gray(I); h = imhist(I); % this will have default bins 256 % now second image J = imread('myimage1.jpg'); J = rgb2gray(J); h1 = imhist(J); % this will have default bins 256 E_distance = sqrt(sum((h-h1).^2));

You can do it for 1000 images as well. Let say now your 1000 images histogram are concatenated into **h1**. where each column is one histogram. Then your query image histogram is **h**. Then distance can be computed as follow.

h_new = repmat(h,1,size(h1,2)); E_distance = sqrt(sum((h_new-h1).^2));

Aziz
on 3 Oct 2012

nice share Junaid... can i ask question similar to this one... i also have problem to compare 2 image at onetime, example of 2 simple image... http://i50.tinypic.com/259e5hh.jpg http://i47.tinypic.com/21m6q9c.jpg

so it is possible to get the x and y axis value for this difference?

Answer by Junaid
on 21 Dec 2011

Dear FIR,

Similar question was asked by one fellow. The solution you can see from following URL. I hope it might help you.

http://mathworks.com/matlabcentral/answers/22844-how-to-find-euclidean-distance-in-matlab

Junaid
on 22 Dec 2011

Dear FIR,

Sorry FIR I can't overview your code you sent to me. To compute the Euclidean distance between images or image features, your vector length or matrix should have same dimensions. Let say your first image has 1 x 460 vector then your query should be of same length. If that is the case then you can easily find Euclidean distance by the code I have written below. You just have to ensure that the dimensions are the same. I give you example of Histogram feature of image.

I = imread('myimage.jpg');

I = rgb2gray(I);

h = imhist(I); % this will have default bins 256

% now second image

J = imread('myimage1.jpg');

J = rgb2gray(J);

h1 = imhist(J); % this will have default bins 256

E_distance = sqrt(sum((h-h1).^2));

You can do it for 1000 images as well.

Answer by Junaid
on 21 Dec 2011

Dear Fir,

You have Query image Q, you want to compute euclidean distance of Q with all images in database. Is that you want ? If yes then Let say query Image Q is grayscale image so you can present it as feature vector

Q = Q(:); % this is one [size(Q,1) x size(Q,2) by 1]

all the images in database should have same dimensions. Let say every image and query image should have same number of pixels.

Now you load your database

D = load('Database.mat');

we assume that each column is one image and your number of columns should be size of Database. or if you want to present each row as image then simply take the transpose.

Q= repmat(Q,1,size(D,2)); E_distance = sqrt(sum((Q-D).^2));

Now E_distance have euclidean distance of Q with all images in database D.

Do let me know if It solved your problem.

Image Analyst
on 21 Dec 2011

Answer by Sean de Wolski
on 20 Dec 2011

doc bwdist doc graydist

might be some places to start.

Answer by Image Analyst
on 21 Dec 2011

The Euclidean distance is another image. What do you mean "query image by Euclidean distance"? I don't even know what that means. Please explain.

Show 3 older comments

Image Analyst
on 21 Dec 2011

I don't understand that. What is that? Is your feature vector actually a cell array where the first cell has a 487 element row vector, same for the second cell, the third cell has a 359 element row vector, etc. Do you have 100 cells in your cell array? Feature vectors virtually never have thousands of features in them like that. I think you've chosen the wrong features. What does each feature represent? They should be things like the mean, standard deviation (for each color), perhaps the area fraction of edges or of "skin" pixels, maybe the presence of certain shapes, etc. Here's a nice database comparison that gets color feature vectors and retrieves images with those colors you select in it:

http://labs.ideeinc.com/multicolr/

Image Analyst
on 21 Dec 2011

I probably won't get to it. I'm leaving on 9 day vacation to Florida in a couple of hours.

Opportunities for recent engineering grads.

## 3 Comments

## Naz (view profile)

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/24399#comment_54105

Amazing. You have such diverse questions. I wonder how you manage to work on so many different things at a time.

## Joel (view profile)

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/24399#comment_136121

Dear FIR, could you please send me the files to this project so I can have a better look and see if I might be able to help.

Thanks

## Image Analyst (view profile)

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/24399#comment_136122

Joel, did you notice that FIR posted this 15 months ago? I doubt he still needs your help on it. Besides, he accepted an answer already.