Although I am not new to math or programming, I am a total newbie to image segmentation. I have the following light microscope image

H&E Stail and I would like to segment it into cytoplasm (the magenta background) vs. the nuclei (the round-ish objects that look like cells). I am working in MATLAB.

I was hoping someone with segmentation or image processing experience could tell me what they thought would be an efficient approach.

First, do you see any issues with this image that I ought to pre-process out? E.g. non-uniform background illumination, noise, etc. I am not familiar with how to identify these things visually in an image.

Secondly, there are two dominant colors in this image, corresponding to two dyes (hematoxylin and eosin, or "H&E" for short). The cytoplasm and nuclei have different colors, which in principle we know the RGB values of. So I first tried a method of color deconvolution by Ruifrok to try to separate out the pink from the purple.

Once I did that, the cytoplasm and nuclei seem to have very different textures. I tried a range filter and got the result below:

enter image description here

Do you have any suggestions for where I can go from here? How can I eliminate the regions with cytoplasm and end up with clearly segmented nuclei?

I do not know much about graph cuts. Do you think they would be useful?

Please let me know if I need to clarify the question.


People were approaching similar problems with methods deriving from Watersheds thresholding. Here, is a sample of Nuclei Seperation, and here is an OpenCV sample. You might try it out.

  • $\begingroup$ Thanks! This is useful to know. I hadn't thought of using watershed-based methods here, because the nuclei are clear and contain nucleoli, so they aren't local extrema...maybe it's worth a quick try. $\endgroup$ – ccbb Feb 24 '16 at 19:53
  • $\begingroup$ It would be good if you share the results here so that people get an idea. $\endgroup$ – Tolga Birdal Feb 27 '16 at 15:07
  • $\begingroup$ Will do so...unfortunately have been a little busy right now with other things. :) I may try some kind of snakes type method first. $\endgroup$ – ccbb Mar 1 '16 at 14:41

There an algorithm in CellProfiler. It's basic, but it may help you if you are a beginner. The algorithm separates the channels, applies a threshold to detect roughly the nuclei, then use the result to feed a watershed constrained.

  • $\begingroup$ Thank you...this might be the color deconvolution algorithm by Ruifrok. This is a good suggestion. $\endgroup$ – ccbb Mar 1 '16 at 14:42
  • $\begingroup$ This algorithm might be used as a first step, but the end is thresholding+watershed. $\endgroup$ – FiReTiTi Mar 1 '16 at 18:24
  • $\begingroup$ Sorry I indeed just meant the first step $\endgroup$ – ccbb Mar 1 '16 at 20:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.