3

This is a classical image segmentation problem: I need to make a visual measurement of particles. I've been using watershed, kmeans and mean shift but it doesn't work well on this image. Could you please recommend me some other methods/open source code?

P/S: Any manual/semi automatic segmentation is also ok with me. I just need the correct segmentation in a reasonable not time consuming way.

enter image description here

geometrikal
  • 3,616
  • 15
  • 27
Dzung Nguyen
  • 223
  • 2
  • 10
  • 7
    Could you manually segment a few particles to give us an idea of what you require? P.S. next time upload a smaller image to reduce page load time, I have adjusted this one for you :) – geometrikal May 02 '13 at 07:19
  • 6
    I don't even know how to count these particles with my eyes and brain. Which things are particles and which are just lumps on particles? – endolith May 03 '13 at 13:38
  • Maybe you want to try some form of trainable segmentation... – thang Mar 09 '15 at 23:53

1 Answers1

1

Since it is very hard to guess what result you need, proposing any automatic segmentation method is very hard.

Let me instead propose two different semi-automatic segmentation with markers.

  1. Segmentation using Minimum Spanning Forests with markers

    This method is based on a version of watershed [Cousty et. al.: Watershed Cuts: Minimum Spanning Forests and the Drop of Water Principle, 2009].

    Basically, you calculate a version of watershed (there are many versions), called watershed cuts, which gives you a (pretty severe) over-segmentation.

    After that, you mark your one object (or all of your objects, 1 marker per object + 1 for the background if there is any) you want to find, and it calculates the most likely segmentation based on pre-calculated watershed.

    I don't want to go into details, since there is pseudo-code and example images provided (one is even a cell image) in the article, but if you want me please leave a comment and I can add some more information.

  2. Segmentation using $\alpha$-trees (or $\alpha$-connected components) with markers

    Here, the "starting over-segmentation" is actually simply the segmentation to flat-zones (equal-intensity areas in the image). I am going to explain a little bit of theory here.

    An $\alpha$-connected component of a pixel $p$, or $\alpha$-$CC(p)$ is obtained as follows:

    • first you choose a connectivity (4- or 8-conn.; 4-conn simply means the neighbors of a pixel are up, down, left, and right)
    • if the intensity difference between two neighboring pixels is $\leq \alpha$, those pixels are connected
    • $\alpha$-$CC(p)$ contains all the pixels connected to pixel $p$ as well as all the pixels that can be reached from pixel $p$ through a connected path

    Now, for various reasons (I can expand the answer again if somebody asks), if you follow the $\alpha$-$CC$ around one pixel, its area usually grows slowly as you increase the $\alpha$, then at some point you have a sudden and rapid increase in the area, and then it continues to grow slowly. Usually, if you look at the $\alpha$-$CC$ just in the moment before the rapid size increase, it will give you your object.

    Again, you can use markers to mark which $\alpha$-$CC$'s you want to "follow". The advantage here is that you can calculate the $\alpha$-hierarchy once and then do all the calculations on the same hierarchy.

    I know it sounds a bit confusing with all the new terms unless you know something about $\alpha$-trees, but here's some references to help:

penelope
  • 3,676
  • 1
  • 26
  • 63