Membrane Analysis and Segmentation

Greetings all!

I am currently working with zebrafish in vivo and trying to use CellProfiler to make an analysis of epithelial tissue. So far we have had a problem with over-segmentation, particularly in the region of the notochord. It seems that CellProfiler does a wonderful job of finding cells towards the outer edges, but as it moves inward it sees objects which are not there at all.

We have had decent success with analyzing GFP, but we are unable to get good segmentation with E-cadherin stains. Oddly, the cadherin stains are visually easier to see, but CellProfiler does a better job with the GFP. Does anyone have any experience with membrane based segmentation and analysis that would be willing to provide some advice? I’ve spent many hours playing with the software, as has a rotating grad student in the lab, and neither of us has had much success with membrane analysis in CellProfiler. We have had good results from other software, but we would like to utilize the robustness and the stability of CellProfiler to achieve these analyses if possible.

Also, is there a way to quantify the area, height, and width of each identified cell in CellProfiler? Looking at the outputs from the standard modules seems to suggest that the software takes a measurement of the entire object (in our case, a section of in vivo zebrafish) then figures out the quantification of that, not the individual cells. Am I missing something? Is this capability built into CellProfiler?

Thank you for your time!

We could make an assessment of the problem, but you would need to post some representative images first. You can also post the pipeline that you devised thus far as well.

Provided that you are able to identify the idenvidual cells themselves with the proper combination of modules, then you would use the MeasureObjectSizeShape module to obtain the morphological measurements you’re looking for.


Hello Mark,

I am posting copies of our CK:GFP image (the one that works fairly well with minor over-segmentation) and the E-cadherin image which is heavily over-segmented. Thank you very much for your assistance!

Cell Segmentation Counter.cp (5.33 KB)

Hello again!

I just wanted to summarize what I’ve already done in case that helps at all.

-I’ve tried cropping to a small region to get the settings how I wanted them before expanding to the whole specimen. Whatever settings I do manage to get working are no longer accurate once the notochord comes into view.
-I’ve tried to use the Smooth module with the Gaussian Filter at various settings but this has had little or no effect with respect to increasing the accuracy of segmentation.
-Also tried the CorrectIlluminationCalculate and CorrectIlluminationApply modules together to try and even out the enhanced brightness in the notochord region, but this still did not increase our accuracy.
-Tried these modules together in various combinations and with different settings.
-Played around with the ‘Typical diameter of objects, in pixel units (Min,Max)’ which does help to a point as one would expect.
-Tried Otsu PerObject, Otsu Global, and Otsu Adaptive on two classes and three classes. Otsu PerObject seems to be the best, though at times there is no distinguishable difference between the three.
-Tried weighted variance and entropy, but I found that weighted variance gives us what we’re looking for.
-Tried dozens of threshold correction factors going from one extreme to another until I settled on 0.5.
-Tried Intensity, Shape, and Laplace of Gaussian for both ‘Method to draw dividing lines between clumped objects’ as well as ‘Method to distinguish clumped objects’ and have found Intensity to give the best results.
-Checked and unchecked all the boxes and tested the results to see what happens. :laughing:

At this point I feel that I’m stabbing at the problem blindly and that there may be something fundamental about the software that I’m missing when it comes to segmentation of membranes sans nuclei.

Thanks again for your help!


Hi Richard,

I’m attaching a pipeline that hopefully will get you a bit closer to your needs. Basically, it tries to detect the nuclei first and then uses the cadherin image to find the surrounding cells.

2013_08_12.cp (13.4 KB)

Hello Mark,

Thanks for your help! That pipeline definitely works much better than what I had managed. My only question would be: is this possible without nuclei? We have lots of vids and images where we stained only for membrane markers, and I’m wondering if it is essential for CP that we be able to first detect the nuclei in order to identify the cells.

Thank you again for all of your help!

This is a harder problem, since cell walls are so faint. I suggest an IdentifyPrimaryObjects module with the following settings (tweaks at your own discretion):

  • Input image: MaskedInverted Red, i.e, the inverted red image that was masked by the the tail object.
  • Typical diameter: 40, 100
  • Thresholding method: Otsu Global with 3-class thresholding and middle class set to foreground.
  • Declumping method: Intensity
  • Dividing line method: Intensity
  • Automatic smoothing: Unchecked
  • Smoothing filter size: 20
  • Automatic minimum allowed distance between maxima: Unchecked
  • Maxima separation distance: 20

Chances are the smoothing filter and maxima separation sizes may need some adjustment until you find a happy medium, as they both affect how readily unwanted object divisions/merging occurs.


Hey Mark,

Thank you very much for all of your help. We are going to roll with your suggestions and see how we do. I believe that our initial pipeline was somewhat similar to what you’ve advised, except that I had inverted the image in Gimp or PS on my own at one point to see if that would help. It’s good to know that this is a difficult problem and not just that we were on the wrong track.