Measuring mitochondria size from TEM image

Hello everyone,

So I have got a TEM image for sub-cellular structures like the one shown below, and my task is to measure the size of the mitochondria (dark grey round shape structures; one of them is highlighted with red circle) in there.

I learned that I need to do some thresholding to the image to allow ImageJ/Fiji to distinguish the target (mitochondria) from the background. To begin with, I tried the build-in algorithm (Huang, intermodes, etc) from the drop-down window of the Threshold function, but none of them was able to efficiently separate the mitochondria from the background. So I manually set up some parameters. It worked in some cases, therefore I decided to use the same setting for batch processing by doing the macro below:

//setThreshold(72, 145);
setOption(“BlackBackground”, false);
run(“Convert to Mask”);
run(“Fill Holes”);
run(“Analyze Particles…”, “size=0.02-Infinity show=Outlines display exclude summarize”);

However, as soon as there is a slight change of image quality, i.e variations in contrast, the parameters starts to fail, and non-specific targets start to show up (like the large largest circle in the image below, which is obviously not a mitochondrion; and some of the mitochondria outlined are not even the right size):

So I was wondering if there is any algorithm anyone has tried for thresholding, or even measuring the size of mitochondria. Is there a way to train ImageJ/Fiji (i.e. build a numeric/data profile of mitochondria) to identify mitochondria.

I understand this involves highly complicated machine learning stuff, and it is going to take some effort to reach to that level of skills. But when you are facing with 30 images with each of them containing 100 mitochondria, and multiple groups of images of different genetic background, you would rather want to figure out how to do it the smart and reproducible way, the automatic style.

Has anyone encountered similar problems?



Welcome to the Forum!

I have just the tool you need… You can look into using the Fiji plugin Trainable Weka Segmentation (TWS) to locate/segment your mitochondria. That will give you a probability map that you can use to auto-threshold and then analyze particles… to get their size. TWS is referred to quite a lot on this Forum… so you can search for it here and read up on how others applied it to their work.

There is a helpful workshop on Segmentation in Fiji (and corresponding slides) - that goes over the basics of this plugin, but also other ways to develop segmentation workflows in ImageJ/Fiji that will help you in your analysis.

Too - you can batch process with TWS !!! So that should help with that issue as well… :slight_smile:

Hope this helps!

eta :slight_smile:


Thank you very much Ellen for bringing the TWS plugin to light. It is indeed the right tool I need!


Super @coconutMelon !!!

And if you need more help with it… just post here on the Forum again.

eta :slight_smile:

1 Like

Thanks again. I do have a non-technical question. It seems your primary background for your graduate study was microbiology, and I assumed you did not receive any training regarding computation or developing program for image analysis beforehand.

I was wondering how you came across plugins like TWS? I tried to google “mitochondira size analysis”; “imageJ”, etc, but plugins like TWS never showed up in the searching result. I don’t suppose you went through all the plugins by going through the ImageJ documentation. So how did it all start? What did you have to do to reach this point and how is the learning process going?



I really just learned as I went… the more image analysis work I did, the more I picked up. And the best thing to do is to ask questions - here on the Forum and at your workplace by finding others with a bit more image analysis expertise.

Regarding finding TWS - for your particular analysis question here - what you want to do is find objects (mitochondria) in your image essentially. So basically… you need to use Segmentation techniques. So if you were to google say “segmentation imagej” - this link I just provided is the first to pop up. It’s really just about learning the right terminology for the techniques you need to use - but that will come with more time/experience.

If you want a full “Starting with Image Analysis in ImageJ” - just move one-by-one through the following links:

Once you feel comfortable with working in ImageJ in general… then you can move on to the more ‘fun’ stuff like Scripting. And trust me - even if you have no experience writing code - ImageJ is a great place to start! So again - here is a list of helpful links to get you started with that:

Hope this helps a bit!

eta :slight_smile:


Thank you very much for the detailed information. It helped clarifying a lot of things!


A post was split to a new topic: Segment mitochondria using Trainable Weka Segmentation