Lab member Joan Comenge took some really nice Transmission Electron Microscopy (TEM) images of our gold nanoparticles, which look something like this:
The manufacturers’ claim that the SmartFlares are about 13nm in diameter. Can we check that and also get some more information at the same time? You bet we can. Here’s how:
NOTE: I’m going to jump straight into using two of my favourite pieces of software, Fiji and in Part 2, MATLAB. I’m a huge fan of the free and open-source Fiji (and by extension ImageJ) and I expect that practically every post at this blog will involve some mention of it. There may even be a few posts devoted to it. OK, back to work.
Step 1: Calibrating the image
In order to make accurate measurements we need to calibrate the image so that we know what physical size is represented by a particular number of pixels. The EM gives us an overlay scale bar, so the first step is to draw a line selection the length of the bar (I held SHIFT to make the line straight):
Run [Analyze > Set Scale…] on the Fiji menubar (this is the nomenclature I’ll use to describe the location of commands). The dialog is fairly self-explanatory. The Distance In Pixels is already filled in based on the length of the line, we just need to fill in the Known Distance (200nm in this case) and the units.
The calibration is calculated and shown at the bottom of the dialog (1.8675 pixels/nm). Hit OK and it’s applied to the image. This a great time to save a copy of your image (always keep your original data!).
Step 2: Making a mask
We’re eventually going to use the Analyze Particles tool (spoiler!) to measure the properties of the NanoFlares. To do this, however we need to make a binary mask. This is a 1-bit image, that has only two colours – black and white (or True/False, 1/0 or 255/0). Here’s how:
Run [Image > Adjust > Threshold], select the Default auto threshold and hit apply. Your image should be converted to 1 bit based on the threshold.
Step 3: Refining the mask
There remains two problems with this image:
- We still have the scale bar, which may confound our analysis
- There are large lumps of particles (for example, towards the top left).
The first point is easily remedied. Draw a box around the scale bar and run [Edit > Clear].
The second point is a little more complicated. Normally when we have particles touching, we can (and will) use a Watershed algorithm to split touching objects. This works well when objects are only touching slightly (see below for an example).
The problem is when you have large clumps that can’t be easily separated. You end up with something like this which distorts both the size and shape of the particles.
To get around this problem, before we run a Watershed filter to separate low-overlap particles, we’re going to filter out the large blobs using the Analyze Particles tool at [Analyze > Analyze Particles]. But first we need an estimate of how big the big blobs are.
To do that, use the magic wand tool and select the smallest of the big blobs that you want to remove and hit ‘m’ to measure the area.
Armed with that information, run [Analyze > Analyze Particles] and restrict the size of the particles between 20-2000. Here the 20nm lower limit is to remove any specks of noise in the image. Uncheck the options and make sure the “Show:” box is set to “Masks”. Hit OK and you’ll have your refined mask (you may want to run [Image > Lookup Tables > Invert LUT] to flip the image back to white on black so Fiji doesn’t get confused.)
Now you can run [Process > Binary > Watershed] to separate the low-overlap particles.
Step 4: Measuring Particles
In order to select which parameters the “Analyze Particles” tool will return, run [Analyze > Set Measurements] and check “Area”, “Shape Descriptors” and “Fit Ellipse”. “Display Label” is also nice to have a record of the image that you’re measuring. Hit OK.
We’re now ready to run [Analyze > Analyze Particles] and measure the particles. You can leave the size at 20-2000 or change it to 0-Infinity. It makes no difference as we’ve already refined the mask to these parameters. Set “Show:” to “Nothing” (unless you want to visually see the counted objects in which case Outlines is quite nice), and make sure to Check “Display Results”. Hit OK for Data!
Every particle has a row. You can save these data as a comma separated value file or copy them out to your favourite spreadsheet application.
I’ll continue in Part 2 where we’ll talk about Data Analysis to look at the distribution of these data and make some boss-impressing graphs.