Image Stabilizer

Authors: Kang Li (kangli AT cs.cmu.edu)
Steven Kang (sskang AT andrew.cmu.edu)
Requires:ImageJ 1.38q or later & Java Runtime Environment (JRE) 5.0 or later
History: 2008/02/07: First version
2008/02/10: Optimized for speed using gradient pyramids
2008/02/12: Performed further speed optimizations and bug fixes
2008/02/14: Added support for affine transformation
2008/03/15: Made user interface improvements
2008/05/02: Added support for macro recordering (thanks to Christophe Leterrier at univmed.fr)
2009/01/11: Added support for logging transformation coefficients
                  (can be reapplied to another stack using Image Stabilizer Log Applier)
2009/01/11: The stabilization process can be interrupted by pressing 'ESC' or by closing the image
2009/01/20: Fixed a runtime error when the user does not select the Log_Transformation_Coefficients checkbox
                  (thanks to Nico Stuurman at UCSF)
2009/06/12: Fixed a bug that affected 32-bit float input images (thanks to Derek Bailey)
2010/06/18: Fixed a null-pointer exception in Image Stabilizer Log Applier when running in batch mode
                  (thanks to Alexandre Ferrao Santos)
Source: Image_Stabilizer.java
Image_Stabilizer_Log_Applier.java
Installation:
Download Image_Stabilizer.class and Image_Stabilizer_Log_Applier.class to the plugins folder and restart ImageJ. Alternatively, download Image_Stabilizer.java and Image_Stabilizer_Log_Applier.java to the plugins folder or subfolder. Compile and run it using Plugins/Compile and Run. Restart ImageJ and there will be a new "Image Stabilizer" command and a new "Image Stabilizer Log Applier" command in the Plugins menu or its submenu.
Description:

This plugin stabilizes jittery image stacks using the Lucas-Kanade algorithm. It supports both grayscale and color images.

Cell Sequence Traffic Sequence

Here is how the plugin works:

  • It uses the currently shown slice in an image stack as the initial reference, or "template";
  • It estimates the geometrical transformation needed to best align each of the other slices with the "template". The estimation and alignment are performed using the Lucas-Kanade algorithm;
  • Once a slice is aligned, the "template" will be updated on the fly using the formula: new_template = a * old_template + (1 - a) * newly_aligned_slice, where "a" is the "template update coefficient" that can be adjusted when the plugin is run.

Hint: To process very large image stacks, import the stack with the "Use Virtual Stack" option enabled. The plugin will prompt you for an output directory to store the stabilized image sequence.

Copyright Notice & Disclaimer:

Copyright (C) 2008-2009 Kang Li. All rights reserved.

Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software. Any for profit use of this software is expressly forbidden without first obtaining the explicit consent of the author.

THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, THE AUTHOR DOES NOT MAKE ANY REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.

Please put the following reference in your publication if you use this plugin for your work:

Text Reference:

  • K. Li, "The image stabilizer plugin for ImageJ," http://www.cs.cmu.edu/~kangli/code/Image_Stabilizer.html, February, 2008.

BibTeX:


@misc{ImageStabilizer,
  author       = "Kang Li",
  title        = "The image stabilizer plugin for {ImageJ}",
  howpublished = "\url{http://www.cs.cmu.edu/~kangli/code/Image_Stabilizer.html}",
  month        = feb,
  year         = "2008",
};

[Back]

drupal statistics