Size (and shape) matters – especially at the nanoscale (Part 1)

With the (semi-) inaugural post for the blog, I’m going to get right down to it. In the Lévy Lab, we’re experimenting with Open Notebook Science, currently with a project involving SmartFlares.

Lab member Joan Comenge took some really nice Transmission Electron Microscopy (TEM) images of our gold nanoparticles, which look something like this:

TEM of SmartFlares (Uptake Control)

TEM of SmartFlares (Uptake Control)

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:

  1. We still have the scale bar, which may confound our analysis
  2. 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).

Before (left) and after (right) Watershed processing

Before (left) and after (right) Watershed processing

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.

Before (left) and after (right) Watershed processing

Before (left) and after (right) Watershed processing

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.

2 thoughts on “Size (and shape) matters – especially at the nanoscale (Part 1)

  1. Pingback: TEM of SmartFlare Uptake Control | Rapha-z-lab-commons

  2. Pingback: TEM of VEGF and Scrambled Control SmartFlares | Rapha-z-lab-commons


Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.