Ix is a research tool for investigating images with useful image processing functions.

Ix, pronounced "icks", is a research tool for viewing images and some image processing tasks, particularly comparisons. Ix is intended to be fast, small and optimised for research work, unlike The GIMP or Photoshop.

Ix is being developed simultaneously on Mac and Linux but porting to Windows would be straightforward. Most of what you see below is partially or fully functional. All GUI and icon designs are temporary.


The primary functions of Ix are:

Image comparison
Switching between images to visually compare, generating difference images and computing metrics
Image study
Viewing pixel values, looking at high or low frequency details, visualising block boundaries, measuring distances
Basic image manipulations
Scaling, cropping, rotations, projections
Basic image processing
Filtering, colour modifications, histogram processing
Advanced image processing functions
Red eye removal, white balance, etc.

Computer Vision functions are in planning for a later stage of development.


Main Window

Main Window

Image files can be dropped onto the list for loading. Ix supports loading/saving high bit depth images, JPEG, PNG, TIFF, TGA, PNM (PGM/PPM/PAM), JPEG-2000, BMP, GIF, WebP formats and SRIM (my proprietary RAW image format). The arrow buttons on the right hand side allow you to rearrange the viewing order. At the bottom is a status line.

From this window you can rotate images in 90 degree increments, mirror horizontally/vertically and edit the order in which images can be viewed.

Image files can be given a label, for example, so that you may refer to img2071.jpg as "Reference Image" and img2071_edited.png as "Proposed Edit"; for convenience.

Viewing Window

Ix is designed so that you can quickly flip back and forth between images for comparisons. This is complemented by independent viewing parameters and global view locking.

Each image has independent interactive viewing transform parameters of scale and translation. For example, you can open image 1, scale and shift it, then switch to image 2, modify scale and position, then switch back and image 1 will be as you viewed it last.

With global view lock enabled, any changes to the interactive viewing parameters are applied to all images. For example, you can open image 1, zoom in centred on a co-ordinate, switch to image 2 and it will also be zoomed in on the same co-ordinate.

Image co-ordinates can be shown for the mouse pointer position as well as pixel values. Interpolation can be disabled for zooming.


Info dialog

Image information shows the image properties including colour space and basic colour statistics.

Process List

History dialog

The process list is an editable list of operations that have been performed on the image. This allows images that have changed on disk to be reloaded and the same operations to be performed. Operations can be undone simply by 'popping' from the list. All image operations are performed in the native colour space (e.g. RGB, YCbCr) and colour standard (e.g. Rec 601, 709, 2020, etc). Some algorithms work in the L*a*b* space. Cropping information is shown with the same format as used by ImageMagick *.

Lists may be saved as recipes (macros) and applied to other images. The list is automatically reduced where applicable; e.g. rotate 90 degrees left followed by rotate 90 degrees right results in no rotation.

Further list manipulations, such as re-ordering of operations could possibly be implemented.

* Note: Ix is not based on ImageMagick.


Scale dialog

Images can be scaled by giving new dimensions or setting a scaling factor. Dimensions can be constrained to fit a particular aspect. The interpolation kernel is selectable, with automatic anti-alias filtering.


Crop dialog

Images can be cropped, with optional constrained aspect. Images can also be expanded by setting negative borders or offsets.

Geometric Transform

Transform dialog

Images can be projected using a perspective transform, parameters are set using the 3×3 matrix convention. Some useful functions for normalising and inverting matrices are provided.

Matrices can be input via the number widgets or into the text box using Matlab, CSV or white space separated formats.

Image Processing


Various filters help to find detail, hide unwanted detail/noise and detect edges. Noise can be added for testing purposes.

Lena image after Sobel filter:
the edges are in colour because the filter is applied to each colour channel separately


Lena image after 5x5 Mean filter


Lena image after 60% Sharpen filter


Advanced Functions

FFT of Lena image


Abstraction of Lena image


Colour Editor

Colour Editor

Functions available include

Colour channel manipulations can be performed, e.g. RGB to BGR, remove a channel, etc.

Lena image after CLAHE



Comparison dialog

The distance between images can be found as MSE, PSNR, MSSIM and also NICE *. Difference images can be generated.

Automatic alignment via Phase Correlation can be used to overlap images for visual comparison or images can be manually aligned.

* NICE = Natural Image Contour Evaluation, see Rouse and Hemami, ICIP 2009.

SBS Comparison

Images of coffee beans compared side by side in the viewer: the left half of the image shows one image, the right half the other image. The co-ordinates of the mouse pointer and the colour values of the pixel at that position are shown beneath the image.

Block Explorer

Block Explorer

The block explorer is a tool for investigating block transform coding, to help find which block a pixel belongs to.


The name "Ix" is a reference to Dune and furthermore IX looks like roman numerals, just like xv, which is intentional. Ix was inspired by xv but is not intended to be a copy.


Real image processing experts only use the Lena image for illustrative purposes, not quantitative evaluations.