Before normalization
After normalization

Quantile Based Normalization

PlugIn for ImageJ


This is a ImageJ plugin for normaliziing the distribution of values in multiple images (or parts of identically sized images according to a mask.) This is based on the technique of "quantile normalization" commonly used in microarray analysis described in A comparison of normalization methods for high density oligonucleotide array data based on variance and bias. Dean Baker suggested to me that we should try the same approach on image stacks.

Essentially the idea is that for each image we rank all the values found in the image and divide them into a number of quantiles. Then we replace each of the values in a given quantile with the mean value in that quantile across all the images. The result of this is that all the images should have a very similar distribution of values if you look at their histograms. You can also apply this technique to just a small part of each image by supplying a mask file.

Another option offered by this plugin is to replace the values in each quantile by the rank of that quantile rather than the mean. This is equivalent to running histogram equalisation on each image, producing a flat distribution for each one. (If you are using this histogram equalization with a very small number of quantiles then you probably want to also check the "rescale" checkbox so that the values are distinguishable visually.)

Please let me know of any problems you have with this plugin or any suggestions you have. I hope this is of some use to you.


This plugin is now bundled as part of Fiji (a distribution of ImageJ with many useful plugins), and no longer supported as a standalone ImageJ plugin. Please download and install Fiji and you will find the plugin in "Plugins > Process > Quantile Based Normalization"


Starting the PlugIn

When starting the plugin from the Plugins -> Process -> Quantile Based Normalization menu option, you should be presented with a dialog like this:

You must add some files to the file list at the top. You can do this by drag-and-dropping onto the list window or add them by hand using the "Add to Files" button. (On some platforms you seem to need to hold the dragged files over the list for a moment before dropping them.)

Next you must choose an output directory to which the normalized files will be written.

If you wish to use a mask file to only normalize across a region of interest in each image then you must select "Use an image mask?" and then select a mask file.


Thanks to Benjamin Schmid, who wrote the useful file group dialog component.


This plugin is licensed under the GPL (the GNU General Public License version 3). The source code for the plugin is available from the Fiji git repository.