Find the euclidean distance

I want to find the euclidean distance of 1 specific feature in one image.Then the corresponding feature in the second image. How to find the euclidean distance of these two points? Any suggestions.

 Accepted Answer

I wouldn't use ginput() or pdist(). I'd use the function improfile() in the Image Processing Toolbox. It's a lot easier to use than imdistline(). Here's a snippet:
% Display sample image.
grayImage = imread('moon.tif');
imshow(grayImage);
title('Left click, then right click');
% Have user draw the line.
[x, y, grayLevels] = improfile();
% Re-Draw the line in the overlay (which normally vanishes)
line([x(1), x(end)], [y(1), y(end)]);
% Compute the distance between the endpoints.
dist = sqrt((x(end)-x(1))^2 + (y(end)-y(1))^2)

4 Comments

Image Analyst- As you said,improfile() is much easier than pdist(). Thanks alot for your guidance.
Image Analyst- i have RGB images. improfile function still works for RGB images, correct?
Do i have to edit the below portion of your snippet? (eg: from grey to color) [x, y, grayLevels] = improfile();
It will still work, as is. You might want to rename variables to make them more accurately descriptive, like rgbImage instead of grayImage.
Alright. Thanks alot for the response.

Sign in to comment.

More Answers (1)

use
dist_out = pdist(feature_array,'euclidean');
if u want to use b/w 2 images use this
dist_out = pdist2(i1, i2,'euclidean')

1 Comment

Deepesh- thank you so much for your rapid response. I know the qu that i am going to ask now is quite simple. But i just want to clarify.
Suppose i said as follows: S=ginput(2)
Then the outcome is as follows: S =
157.4501 208.9473
402.7736 205.8420
My qu is: 1st row refers to (x1,y1) and 2nd row denotes (x2,y2). Is that correct?

Sign in to comment.

Asked:

on 2 Dec 2014

Commented:

on 4 Dec 2014

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!