How to calculate diameter from side view?

4 views (last 30 days)
Steven on 6 Jan 2014
Edited: Steven on 7 Jan 2014
Hi!
Imagine we have a side view of a circular object such as a coin. How can I accurately calculate the diameter of an object from side view image?
The simple thing is that the user determines the two sides (left and right) of the object as the diameter, but is there another way that MATLAB can detect it automatically and accurately?
Thanks!
Steven

Walter Roberson on 6 Jan 2014
Could you post a couple of sample images?
Jan on 6 Jan 2014
To calculate the diameter accurately, you need the parameter of the optical system and the distance also, when you want the real extent.
Steven on 7 Jan 2014
Thanks all. The sample is posted here.

Image Analyst on 6 Jan 2014
I don't know what you mean by side view. Do you mean like front side and back side (head side and tail side), or do you mean like an "edge-on" view, so that it looks like a rod or stick? Either way, you need to get a binary image of the object and then use regionprops to get the length or diameter of it. Post an image so we can see it. regionprops gives the answer in pixels. If you need real world units, like Jan brought up, then see my attached spatial calibration demo, below in blue text.

Image Analyst on 7 Jan 2014
It can if you can get the tilted disk by itself. For example you can ask regionprops to get the majoraxislength. Can you improve your image capture at all so it's not blurry and dark? Can you make it so that the disk is surrounded by a solid black border?
Steven on 7 Jan 2014
I am afraid I can't. Maybe I just crop it and adjust the contrast to do so.
Image Analyst on 7 Jan 2014
How can you crop if you don't know what size it is yet? Anyway, adjusting contrast by a linear stretch like imadjust() or non-linearly with histeq() won't help at all. You'd need more sophisticated things, like morphological filters like imopen().