- First, you need to segment the objects you want using any segmentation function, for example imbinarize, or a manual threshold.
- Then, Using regionprops you can obtain the perimeter of each segmented object
- Finally, to obtain the diameters is just:
Find the diameter of the parts in an image processing?
2 views (last 30 days)
Show older comments
Hello,
Does anybody have any idea how can I calculate the average diameter of the parts attached here? The white parts ar cylinders actually with diameters in Nano size.
Would you please help me to write a code such that I can catch the diameters?
Thanks
0 Comments
Answers (1)
Alex Mcaulley
on 10 Jan 2020
One approach would be:
diameter = perimeter/pi
6 Comments
Matt J
on 10 Jan 2020
Torkan's answer converted to comment:
I used stats = regionprops('table',BW,'Centroid','MajorAxisLength','MinorAxisLength') and it gives nothing for major and minor axis. It seems that as you said the resolution makes problem.
Guillaume
on 10 Jan 2020
As I said, use imtool or imshow to look at the image.
resolution is a bit of an overloaded word. You have the optical resolution, i.e. physical unit/pixel (in your case ) which you can determine by measuring the length of the line in your image (not the most accurate method but of it's all you have...). Resolution is also used for the size of the image in pixels. If your images are only 170x315, then that's a very low resolution. In that image your white cylinders are only 2 or 3 pixels in diameter, so an error of meaurement of one pixel is a 50 % mesurement error. The only way to reduce that error is to have a sensor with more pixels or increase the optical magnification so that the cylinders take more pixel. An error of 1 pixel for a cylinder of diameter 20 pixels drops the measurement error to 5 %.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!