how to find euclidean distance

2 views (last 30 days)
deepika m
deepika m on 7 Feb 2013
Commented: Image Analyst on 2 Mar 2017
I want to find the relative Euclidean distance of a pixel to its 8 neighbours. Kindly help me with the function or relative formula.
a=imread('duck.png');
max=std2(a);
b=rgb2ycbcr(a);
sdy=std2(b);
N=sdy/max;
H=1-N;
di=dist(b);
The error message is:
??? Error using ==> ctranspose
Transpose on ND array is not defined.
Error in ==> boiler_weight at 36
if nargin < 2,b=a; a=a'; end
Error in ==> dist at 90
boiler_weight
Error in ==> roughuse at 7
di=dist(b);
Kindly help me to solve this.

Answers (2)

cr
cr on 7 Feb 2013
your matrix b is 3-D. try using dist function on 2D slices of matrix b.

Image Analyst
Image Analyst on 7 Feb 2013
Your question is not clear. The Euclidean distance of a pixel to it's neighbors in x-y space is either 1 or sqrt(2). But it looks like maybe you wanted the distance in Y-Cb-Cr color space, which is quite different. For that you'd need to extract the Y, Cb, and Cr component of each pixel and use the formula sqrt((y2-y1)^2 + (Cb2-Cb1)^2 + (Cr2-Cr1)^2).
By the way, don't use "max" as a variable name because you'll destroy the built in max() function!!!!!!!!!!!!!!!!
  3 Comments
Walter Roberson
Walter Roberson on 2 Mar 2017
pdist() to find Euclidean distance.
Image Analyst
Image Analyst on 2 Mar 2017
That distance, the distance between two points in a colorimetric space, is called "Delta E". I have a tutorial for it in my File Exchange http://www.mathworks.com/matlabcentral/fileexchange/?term=authorid%3A31862

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!