Help identifying circles besides using "imfindcircle" function
2 次查看(过去 30 天)
显示 更早的评论
I have an image of particles of which I am trying to identify whether they have bonded in the image or not by whether or not they are touching. I have already used the "imfindcircles 'function but have noticed it always comes up with some false positives or fails to pick up all the correct bonded particles. Therefore, I am attempting to come up with another way in which to identify circles and compare this to the previous "imfindcircle" function. I want to be able to possibly graph the intensity of the image and then take the integral of each peak to find the area of each circle, then if the area of the circle is within a certain range (area of two particles bonded) then it will be identified as a bonded particle. The only problem is I don't know if the graphing portion is possible? If anyone has ideas it would be greatly appreciated. (Below is the image im working with. The particles I need to tell are the smaller ones)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/160877/image.png)
0 个评论
回答(2 个)
Image Analyst
2017-2-19
Try imtophat() or imbothat().
1 个评论
Image Analyst
2017-2-20
编辑:Image Analyst
2017-2-20
See attached demo. It looks like imbothat() is the most promising.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/186232/image.png)
Walter Roberson
2017-2-19
You appear to have particles at different layers in a solution. You would have difficult discriminating between particles that happen to have similar x and y coordinates but different z, compared to particles that are touching (similar x and y and z).
With such a wide variety of circle shapes and intensities, I think even a human would have a quite difficult time finding all of the circles.
Some of your circles appear to have a bright center, but most of them appear to have a dark center. You also have bright circles.
I suggest that you could use imregionalmax on the image as-is to locate the bright spots. You can then regionprops() to examine the Solidity of each blob, eliminating the ones with low solidity (because those are the ones that are bright circles.), leaving only the small bright centers. Then, invert the image and repeat to find the small centers that are currently black dots. bwarealfit to remove the large blob in the center.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Processing Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!