Count muscle fibers stained with HE

Now I am counting total fiber numbers of rats’ soleus muscles at different ages on cross-section of muscles stained with hematoxylin-eosin. So the size of fibers are variable. I used ImageJ to count manually. Recently I found CellProfiler. I tried to adopt CellProfiler to count automatically but the pipeline is a little bit difficult and confusing for me. Could someone please provide some expertise suggestions about it? Is it possible? I chose Loadimage, IdentifyprimaryObject and IdentifySecondaryObject. Is it right?
Best wishes,

Hi Lingzhan,

The image you sent me is tricky. I was unable to simply invert the image and then find the fibers, partly due to the uneven illumination across the image (which you should try to correct for during image acquisition) and the fact that spaces between the fibers are sometimes dark rather than light in places, making it difficult to separate adjacent fibers in those areas.

It turned out that identifying the light areas first and then using this as a mask for the original achieved better results. It still does not get the exact number of fibers but at least it’s better than what it has before.

Hopefully this gets you moving in the right direction!
2011_11_13.cp (8.6 KB)

Hi, Mark,
Thank you very much for your directions and help. :smiley: You are right that my image had some problems.
I have been deeming that I had been ignored.
In the course of waiting, I have been trying to find the pipeline adaptable to my test. I carefully read your previous suggestions for another person and modified the parameters of pipeline. In the end I managed to build a pipeline whose counting results approximated to actual number. First I handled the image with process→sharpen in ImageJ and then input it into the pipeline. I tried to apply this method to your pipeline but error popped up. Now I attached my pipeline and handled image with ImageJ. Could you please check it and give me some improvement for it at your convenience? Another question, can I set scale in the pipeline?
Best wishes,

My Pipeline for fiber counting.mat (5.89 KB)

Hi Lingzhan,

[quote="wlzh"I tried to apply this method to your pipeline but error popped up. [/quote]
Please describe the error you are getting or attach a screenshot. I do not get an error when I run your pipeline with your image.

The only suggestions that I have are to uncheck the “Automatically calculate size of smoothing filter” and “Automatically calculate minimum allowed distance between local minima” and start adjusting those two settings. Various combinations of those values have the effect of breaking objects apart or merging them together. You may want to look at the automatic settings (by checking those two boxes and looking at the lower-right table in the IdentifyPrimaryObjects display window) and take those as a starting point.

I’ll refer you to this FAQ answer here.

Also, one final note: the proper extension for a pipeline is .cp, rather than .mat.

Hi, Mark,
Thank you for your speedy reply and guide.
I shall try to adjust those settings and optimize the pipeline.
Best regards,