• Created by xbee on Jan 12, 2012
  • Last update by xbee on Sep 04, 2014

Current features
Supported platforms
Todo list
Available command line arguments


Several years ago, I'd search a simple image difference tool with a user friendly GUI, but my googling was unsuccesfull. So I decided to write my own one. 
DiffImg is a simple image comparison tool which take two images with the same size as input. Some statitics are computed and the positions where pixel differ are displayed as a color mask.
Why check for image difference ?
  • Compression level comparison
  • Raytracing parametrization optimisation
  • Non regression tests for 3D engine
  • Just for fun !!
DifffImg use OpenCV as backend so it can read and compare 8/16/24/32 bits images without problem but only single channel and RGB image has been take into account, so alpha channel isn't supported.
Because DiffImg is written with Qt, it runs on Windows and Linux (MacOSX isn't tested yet) and OS/2. It can read basic formats as BMP, PNG, JPG but also  Tiff and OpenExR.

Current Features

  • Image difference display : a yellow/red mask can overlay the original/modified images.
  • Single/Dual panels mode.
  • Statistic computation: Mean error, RMS error and min/max are computed.
  • Several metrics can be used for computing image difference.
  • Histogram of error.
  • "Slideshow" : DiffImg can compare directory of image, so you can switch to the previous/next comparison if you have two folders with the same image list.
  • Supported files :DifffImg uses Qt plugins to load images, so by default it can read basic formats as BMP, PNG, JPG and OpenCV supported formats (Tiff, OpenExR). Some YUV format is also take into account.
  • Basic batch mode

Current Supported Plaforms

  • Windows XP, Vista, Seven, 8 (with provided installer)
  • Linux (with recompilation).
  • OS/2.
  • Mac OSX: why not ? (but not tested)

Known limitations

Mac OSX will works with some corrections in the building files but the author hasn't the ability to test this configuration (Help wanted !!).


DiffImg is available on SourceForge in setup.exe for windows (32 and 64bits) and source archive for other platforms (qmake and cmake configurations included).

DiffImg review

Also available in a portable way:

at WinPenPack.com

at PortableApps.com

Todo list

  • More translations (help wanted !!)
  • MAC OSX effective support (help wanted !!)
  • .deb, .rpm, .dmg delivery
  • Adding other difference metrics.
  • more features ?


If you have suggestions, problems or questions about this tool, you can:

  • send me directly a mail at xbee at xbee dot net
  • use the SourceForge forum here
  • create a ticket on SourceForge (here)

Don't hesitate to send me your creation, I will create a specific gallery for that soon.

If you want to help with translation, you can send me the translated Qt Linguist file (*.ts) or use the Transifex website (you need to create a free account as translator).


If you find this tool helpful and want support its development, you can pay what you want.

Your donation


Main Interface

Main Interface with thumbnail view

Difference panel


DiffImg is quite straightforward to use. The main interface  is described below:

  1. The Quit button
  2. Show the image selector
  3. Save the image difference.
  4. Reload the input files
  5. Select the image displayed in the center panel (source, modified and difference).
  6. Swith on/off the two panels display.
  7. Toggle to the "wipe" view. In this view, you can display the new image over the old one by right clicking and draging mouse over the image.
  8. Enable/Disable the error overlay on the center panel.
  9. Show/Hide image comment
  10. Zoom management
  11. DiffImg keep in mind all the images found in the input directories and sort them alphabetically. By pressing Next/Previous, DiffImg try to find the same name in the both input directories (if different).
  12. Display the parameters panel.
  13. Go to the online help or display informations on DiffImg.
  14. Original button. You can display the original image in the center panel by clicking on the image. The red rectangle is the current displayed area.
  15. Modified image button. Same action as the previous one.
  16. Difference button. Same action as the previous one.
  17. Gain. You can modify the gain on the displayed image (mainly interesting on difference image).
  18. Offset. Add a constant value to the image pixel (mainly interesting on difference image).
  19. Overview (you can pan the current view by clicking & move on it.
  20. Difference summary
  21. Difference histogramme

Main interface description

The preference panel is described below:

  1. Startup options. User can show/hide the splashscreen.
  2. Wipe effect axis. Currently, you can choose between horizontal or vertical effect.
  3. Langage settings. Auto use the detected locale, or you can force the translation to the desired value.
  4. Modification of the error mask transparency if displayed [0-100] %
  5. Metric chosen.
  6. Specific parameter values for the chosen metric (depends on the metric)
  7. Error result parameters
  8. Specific parameters for some image format. Currently only available for YUV image.
  9. If you change a parameter value, you must apply it to be considered.
Préférence panel description

Available command line arguments

DiffImg have some options available with the command line. Following options are known:

Usage: diffimg [options] [img1 img2]
--help: displays this help.
--reset-config: clear the saved preference parameters.
--list: list all metrics with their parameters..
--batch: batch mode. Differences are computed without GUI and return code is used as result.
--output filename: save difference image. The difference is only saved when the input files aren't strictly identical.
--metric  name: metric tag name. Display list of metrics with --list option.
 --in  name=value: input parameter update.
 --threshold name=value:- output parameter used to define comparison batch mode. If you set several threshold parameters, only the last one will be kept.

How to use batch mode:

Example 1: --batch --metric PerChannelMeanMetric img1 img2 : Use of per channel mean metric
Example 2: --batch --metric PerChannelMetric --threshold ErrorNum=250 img1 img2 : Use of per channel metric and exit with error if pixel with difference number is upper to 250
Example 3: --batch --metric PerceptualMetric --in Gamma=1.8 --in FOV=75 --threshold ErrorNum=250 img1 img2  : Use of perceptual metric with some input parameters set and exit with error if pixel with difference number is upper to 250.