[ASK] Euclidean Distance
2 views (last 30 days)
Show older comments
how to find the distance between a webcam with an object ..?
0 Comments
Accepted Answer
Walter Roberson
on 10 Nov 2013
Take a snapshot. Convert to grayscale. threshold it. Use regionprops() on it to find the MajorAxisLength. If the MajorAxisLength is greater than a pre-determined value, but less than another pre-determined value, then the card is between 30cm and 10cm, so work with that image. Otherwise go back and try again.
To the two "pre-determined value", take a snapshot when you know that the ID card is 30 cm away, and determine the regionprops MajorAxisLength; the other pre-determined value should be found from a snapshot taken 10 cm away.
The Euclidean distance calculation will be done within the regionprops MajorAxisLength request.
3 Comments
Walter Roberson
on 10 Nov 2013
Example for MajorAxisLength: http://blogs.mathworks.com/steve/2010/07/30/visualizing-regionprops-ellipse-measurements/
More Answers (3)
Christopher Jones
on 29 Oct 2013
That's a rather general and open ended question. Care to elaborate?
11 Comments
Image Analyst
on 8 Nov 2013
Malta, like I said, just use a ruler to position your webcam about 10 cm from your card. Make sure that that you can still get an image that is in focus, because that is pretty close and it might be blurry. So once you have that you need to spatially calibrate your scene before you can make laterla measurements from it. For that, please see my calibration demo attached below (simply copy and paste and run).
3 Comments
Sean de Wolski
on 8 Nov 2013
doc bwdist
bwdist has a euclidean option. I don't see how it'll help you (as IA has pointed out).
Image Analyst
on 8 Nov 2013
Malta: In the code you'll see the line:
lineLength = round(sqrt((xi(1)-xi(2))^2 + (yi(1)-yi(2))^2))
so I did use Euclidean distance.
At this point I don't know how to help you because after many questions we still don't know what you want to take the Euclidean distance of: the distance from your camera to the card, or laterally between two points on the card.
Moreover, I don't know what level of coding I can give you. If I give you something simple, like the line above, it's basically useless because you'll need other code to get the x and y coordinates. But if I give you code for that, like in the attached short and simple example, you say it's too complicated for your to understand. I don't know how to give you anything in between that would be usable by you. For example I could hard code x and y like this:
x = [2 4];
y = [5 9];
lineLength = sqrt((x(1)-x(2))^2 + (y(1)-y(2))^2))
but that's not really any help to you because those x and y are not what you'll be using, so then you're basically going to have to do something like I gave in the example, which you said was too difficult to understand. I'm sorry that I'm not able to find the right level of complexity that you will be able to understand, and at the same time be useful to you.
Walter Roberson
on 8 Nov 2013
With that set-up it is not possible to find "distance between webcam with an object", "using euclidean distance". If an object in an image is 100 pixels long, you cannot tell if the object was 100 units long photographed at 10 cm, or 200 units long photographed at 20 cm.
0 Comments
See Also
Categories
Find more on National Instruments Frame Grabbers in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!