imaging articles code

ImageJ macro to synchronize and combine image stacks

The embryos I study rarely develop in perfect synchrony. That means that when I film them under the microscope some embryos will be younger—or older—than others. For this reason, I often need to synchronize the recordings to make sure they all begin at the same embryonic stage.

When the movies are synchronized I can combine them side-by-side, and it becomes much easier to compare and spot differences between two embryos.

Combining movies in Fiji/ImageJ is straightforward using the Combine... command. But synchronizing is way harder. It depends on human classification, and involves some calculations and stack juggling that can (and will) become tedious.

To help me out, I wrote a small ImageJ macro available here: SyncAndCombineStacks.ijm. Follow below to see how it works.

That’s how unsynchronized movies look like. I combined them fresh off the microscope without any synchronization:

Two embryos of the fruit fly Drosophila melanogaster. Both acquired in the same microscopy session. The top embryo is older than the bottom embryo.

And here are the same two movies now synchronized by embryonic stage:

The same two embryos, now synchronized.

The macro performs the hard work. It calculates how many frames to trim from each stack. Then it duplicates the selected range of frames common to both stacks. Finally, it combines the synchronized recordings into a single image stack.

All you need to do is to select the corresponding frames between the two stacks. Here are the instructions step-by-step:

  1. Open both image stacks in ImageJ.
  2. Adjust contrast if needed (before running the macro).
  3. Select a reference frame in the top stack (e.g. stage easy to recognize).
  4. Select the correspondent frame in the bottom stack.
  5. Run the macro and fill in the dialog parameters.
  6. Click OK, wait a few seconds, and check if the synchronization is good. Otherwise, re-run with different parameters.

I’ve recorded a small screencast:

Note! The macro does not touch the original stacks, but it outputs an RGB Color stack. There are a couple of reasons for that. Converting to RGB avoids contrast issues when the stacks have different pixel intensities. It also prevents quirks in video players that can’t handle 16-bit movies. But if you need to perform image analyses on the final stack, remove this option. I may add a checkbox for that in the future.

By Bruno C. Vellutini

Evolutionary biologist interested in embryos and larvae of marine invertebrates.

Leave a Reply

Your email address will not be published. Required fields are marked *