Premature segmentation of elongated cells


#1

Hi CellProfiler community,

I’m in the process of developing a pipeline for the automatic identification and measurement of fission yeast cells, based on a cytoplasmic fluorescent protein and DIC image subtraction. The pipeline keeps wanting to split cells into two prematurely, and I was wondering if you guys have any ideas how I could fix this. (Example picture is below).

My basic pipeline is this:

LoadImages
InvertIntensity
Multiply
IdentifyPrimAutomatic
MeasureObjectAreaShape
OverlayOutlines
SaveImages

Which corresponds to loading a GFP and DIC image, inverting DIC image, and multiplying GFP and inverted DIC to get crisper edges around the fluorescent image (which aids in the segmentation of clumped cells). I then use IdentifyPrimAutomatic module, the code for which I’ve pasted at the end of this post.

Any ideas? I’m wondering if IdentifyPrimAutomatic is biased for round objects, and the elongated fission yeast cells are throwing it for a loop. Another idea I’ve considered is using a nuclear marker and then using IdentifySecondaryObjects, which will prevent pre-mature splitting of the cell if there is only one nuclear (primary) object.

Thanks in advance for any input.

Best,
Chris

IdentifyPrimAutomatic module:

Module #6: IdentifyPrimAutomatic revision - 12
What did you call the images you want to process? Multiplied
What do you want to call the objects identified by this module? Cells
Typical diameter of objects, in pixel units (Min,Max): 45,100
Discard objects outside the diameter range? Yes
Try to merge too small objects with nearby larger objects? No
Discard objects touching the border of the image? Yes
Select an automatic thresholding method or enter an absolute threshold in the range [0,1]. To choose a binary image, select “Other” and type its name. Choosing ‘All’ will use the Otsu Global method to calculate a single threshold for the entire image group. The other methods calculate a threshold for each image individually. “Set interactively” will allow you to manually adjust the threshold during the first cycle to determine what will work well. Set interactively
Threshold correction factor 1
Lower and upper bounds on threshold, in the range [0,1] 0,1
For MoG thresholding, what is the approximate fraction of image covered by objects? 0.01
Method to distinguish clumped objects (see help for details): Intensity
Method to draw dividing lines between clumped objects (see help for details): Intensity
Size of smoothing filter, in pixel units (if you are distinguishing between clumped objects). Enter 0 for low resolution images with small objects (~< 5 pixel diameter) to prevent any image smoothing. Automatic
Suppress local maxima within this distance, (a positive integer, in pixel units) (if you are distinguishing between clumped objects) Automatic
Speed up by using lower-resolution image to find local maxima? (if you are distinguishing between clumped objects) Yes
Enter the following information, separated by commas, if you would like to use the Laplacian of Gaussian method for identifying objects instead of using the above settings: Size of neighborhood(height,width),Sigma,Minimum Area,Size for Wiener Filter(height,width),Threshold Do not use
What do you want to call the outlines of the identified objects (optional)? CellOutlines
Do you want to fill holes in identified objects? Yes
Do you want to run in test mode where each method for distinguishing clumped objects is compared? No


#2

Hi Chris,

The two relevant settings are these:

[quote]
Size of smoothing filter, in pixel units (if you are distinguishing between clumped objects). Enter 0 for low resolution images with small objects (~< 5 pixel diameter) to prevent any image smoothing. Automatic
Suppress local maxima within this distance, (a positive integer, in pixel units) (if you are distinguishing between clumped objects) Automatic[/quote]

They are used for “declumping” objects, which, in your case, you want to avoid. The “Automatic” setting is often OK, but in many cases we need to tweak these parameters. You can see from the image you attached that the “Automatic” settings were calculated to be to 30.2 and 32, respectively, but your objects are larger and so you need to raise these values manually. Try something like 50 and 75 for these, respectively, and see if that improves the segmentation. Please read the module’s help text on these settings for more detailed info regarding their function.

Hope this helps,
David

P.S. I like your idea of inverting the DIC image and multiplying it by the GFP image to enhance the edges!


#3

Hi David,

Thanks! Playing with those two settings seemed to fix the problem. I did notice a problem with the TrackObjects module, however. The option “How do you want to display the tracked object” does not allow me to export an image for each frame that contains the cell number. The exported image only contains the color of the cell, which is strange because the dialogue box that appears contains both the color and number. (The number is very useful for cell tracking experiments to make sure I’m analyzing the same cell).

Here are two example screenshots, one of the Tracked Object dialogue box and one of the exported image. I’ve also included my pipeline in .mat format.

Thanks for your help!

Best,
Chris
AutomaticPIPE.mat (1.52 KB)





#4

Hi Chris,

TrackObjects in the current 5811 Bugfix release is in a beta form, and hence has some bugs. However, we have continued work on the module to fix many of these issues and added some features.

If you want, I can either (a) compile our current developers version as a stand-alone package, or (b) send you the m-files if are running your own license of MATLAB, and you can give it a try. Let me if this works for you and I’ll give you an FTP address you can download it from.

Regards,
-Mark


#5

Hi Mark,

The m-files would be great. Thanks for your help.

Best,
Chris


#6

Hi Mark,

The updated code fixed the bug where the ObjectID numbers didn’t appear on the saved images. However, the double array that contained the position information for each object in the data array (previously in handles.Measurements.Cells.TrackObjects_ObjectID) is no longer in that folder, and I can’t find it in the MATLAB output. Was it moved somewhere else?

  • Chris

#7

Actually, that problem was caused by a failure to correctly import my previous pipeline settings. (Calculate statistics set to “Yes”). The new module works great; thanks for your help.

  • Chris

#8

That’s great to hear! Let us know if you have any other issues with the module.

Regards,
-Mark