How to find euclidean distance

Plz help me to find euclidean distance between two pixels within same image without using direct matlab command

2 comentarios

What is a "direct MATLAB command"? Even
3 + 5
is considered a command and invokes a MATLAB function ("plus")
Fahim Ahmed
Fahim Ahmed el 23 de Feb. de 2020
i guess he meant a matlab in-built command

Iniciar sesión para comentar.

 Respuesta aceptada

David Sanchez
David Sanchez el 20 de En. de 2014
pix_1 = [p11,p12];
pix_2 = [p21,p22];
distance = sqrt( (p21-p11)^2 + (p22-p12)^2 );

10 comentarios

aarti sawant
aarti sawant el 20 de En. de 2014
thanku David for that answer but can you please elaborate how to write complete for loop for the same??
Walter Roberson
Walter Roberson el 20 de En. de 2014
What complete for loop? You asked for euclidean distance between two pixels. That is a single distance.
If you want euclidean distance between groups of pixels, the method might be different.
aarti sawant
aarti sawant el 20 de En. de 2014
i just want alternative to bwdist in matlab
Walter Roberson
Walter Roberson el 20 de En. de 2014
Editada: Walter Roberson el 20 de En. de 2014
For Euclidean distance transforms, bwdist uses the fast algorithm described in
[1] Maurer, Calvin, Rensheng Qi, and Vijay Raghavan, "A Linear Time Algorithm for Computing Exact Euclidean Distance Transforms of Binary Images in Arbitrary Dimensions," IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 25, No. 2, February 2003, pp. 265-270.
You can retrieve the paper and implement the algorithm.
Image Analyst
Image Analyst el 20 de En. de 2014
bwdist() does not really compute the distance between two pixels, like you asked initially. Not exactly. It computes the distance of all pixels in the background to the nearest object . It also produces an image where the pixel values are the distances of that pixel to the nearest foreground pixel. It does not produce a single number like imdistline().
aarti sawant
aarti sawant el 21 de En. de 2014
so if i want to replace bwdist() by some commands then what it should be??
Image Analyst
Image Analyst el 21 de En. de 2014
Like we've been telling you, use sqrt(). Period. In your initial question you said "two points" so you would not use bwdist which computes the distance between millions of points. There is no bwdist to replace because you are not using it.
aarti sawant
aarti sawant el 21 de En. de 2014
but if i want to compute distance between millions of points without using bwdist then how to implement it??
bwdist() does not compute distance between millions of points. bwdist() finds the points that are not part of objects, and calculates the distance from each point to the closest point that is part of some object.
If you want to operate on multiple points, then the small change to the formula already given is
distance = sqrt( (p21-p11).^2 + (p22-p12).^2 );
where the variables given there are all vectors.
If you want to calculate the distance of each point to every other point then you can use pdist() from the Stats toolbox.
William
William el 19 de Mayo de 2023
Doesn't the dist(W,P) function also help with this?

Iniciar sesión para comentar.

Más respuestas (1)

Geetika
Geetika el 21 de En. de 2014

2 votos

if you have two vectors with any number of point, for instance, x1=[1 2 3 4 5] and x2=[2 3 4 5 6], then Euc_dist = norm( x1 - x2 ) ;

Preguntada:

el 20 de En. de 2014

Comentada:

el 19 de Mayo de 2023

Community Treasure Hunt

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

Start Hunting!

Translated by