How to segment image to detect small worms?

2 次查看(过去 30 天)
I have some images which have small worms in it which I want to find the total numbers of. But i am not sure how can I properly segment the image as the worms are very small plus there isn't good contrast between background and worms as well, any ideas or suggestions? Test image is attached as well,
  3 个评论
Mohsin Zubair
Mohsin Zubair 2021-11-20
Thanks for the suggestion @Star Strider but any ideas about how to proceed now after saving them in uncompressed format?
Star Strider
Star Strider 2021-11-20
See the Answer @Image Analyst posted.
(I could come up with something, although only after a few hours, since this is not my area of expertise.)

请先登录,再进行评论。

采纳的回答

Image Analyst
Image Analyst 2021-11-20
Some tips:
  1. I would try to get a more uniform background, not one with a texture like you're using.
  2. I'd also increase the exposure so that the middle of the white background is around 240 gray levels. This will give you better dynamic range and allow you to more accurately segment the worms.
  3. I'd take a blank background shot so that you can flatten the image and get rid of lens shading, which will allow for a global threshold. See attached background correction demo.
  4. After thresholding I'd find all the areas and see what a reasonable area is. Then I'd use bwareafilt() or bwareaopen() to throw out all blobs that are obviously too big, like the big clump of worms at the center. Then I'd regionprops() again to get the area of the individual worms. You can also get the count with bwlabel.
See my Image Segmentation Tutorial:
  1 个评论
Mohsin Zubair
Mohsin Zubair 2021-11-21
@Image Analyst I did last step approximately like you suggested but results aren't good but I will try your first 3 suggestions as well, Thanks

请先登录,再进行评论。

更多回答(0 个)

产品


版本

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by