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:
Computer Vision functions are in planning for a later stage of development.
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.
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.
Image information shows the image properties including colour space and basic colour statistics.
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.
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.
Images can be cropped, with optional constrained aspect. Images can also be expanded by setting negative borders or offsets.
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.
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
Functions available include
Colour channel manipulations can be performed, e.g. RGB to BGR, remove a channel, etc.
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.
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.
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.