Pipeline for skeletonization

Hi there,

I’m new with CellProfiler. I need some help with the module “Measure Neurons”. I created a pipeline to study some pictures of neurons and get the neurite length from a stack of images.

ColorToGray
IdentifyPrimaryObjects
Morph (Skel)
Measure neurons
ExportToSpreadsheet

I think something is wrong with the measurement. Is it supposed to look like this? I’m very new with CellProfiler any help would be highly appreciated. Do you guys have a Pipeline that I can modify and adapt to my pictures please?

Attached you can see pictures of morph and measureneurons.
Thank you so much for your help

Welcome!

To clarify, you are not thrilled with the accuracy of the output of Morph, is that right?

Before IdentifyPrimaryObjects, you could try EnhanceOrSuppressFeatures, and within that choose Neurites as the feature type. Then, adjust IdentifyPrimaryObjects to use the output of the Enhance module as its input. That should do a better job of properly identifying the neurites prior to the rest of the pipeline.

Secondarily, I’m not actually sure about using Morph - in CellProfiler you sometimes have to pay attention to whether you are working with objects or images - of course both are represented as images but some modules care about the type of input and output.

I mention this because I don’t know whether it’s okay to use Morph with objects as input (IdentifyPrimaryObjects definitely produces objects) and I also don’t know whether MeasureNeurons is expecting to receive objects as input. Perhaps someone else can address that or you can figure it out.

Hi,

Thank you so much for reply, and congratulation for the software and your hard work.
I totally modified the pipeline and went with a different approach:

  • ColorToGray
  • EnhanceOrSuppressFeatures: I enanched neurites in the appropriate way.
  • EnhanceOrSuppressFeatures: suppressed neurites and enanched this time cell bodies of neurons.
  • ApplyThreshold using the “Enhanced neurites” as input.
  • IdentifyPrimaryObject: in this case, I tried to identify the bodies of neurons and exclude everything else using the right threshold.
  • MeasureNeurons: I finally used the bodies as seed objects and the thresholded enhanced neurites as the “skeletonized image”.

Results are not perfect but way better than before I think.

Still, I think I can improve the MeasureNeurons analysis. Why are the neurites not continuous lines but weird fragmented pieces? Is that normal?
Thank you so much for your help.

Gianluca

Perhaps others will have ideas on this. But here are some comments.

You haven’t shown the output of ApplyThreshold but I guess it’s a bunch of fragmented pieces? MeasureNeurons is simply doing its function on whatever you have fed to it - so if you see neurites being split into pieces, then the main work you need to do is in adjusting settings in EnhanceOrSuppressFeatures, and possible in ApplyThreshold as well (in the latter case I suggest using the Adaptive thresholding option) in order to yield nice long neurites.

I suggest reading the help carefully for the settings in those two modules and see how you do adjusting them.