- 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?
3 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(1 个)
Alex Mcaulley
2020-1-10
One approach would be:
diameter = perimeter/pi
6 个评论
Matt J
2020-1-10
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
2020-1-10
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 %.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!