MATLAB is a software package designed for (among other things) data processing. It has a large amount of numerical algorithms, an intuitive script language and good data-visualization abilities. It is an ideal tool for rapid prototyping, since it uses a compact but simple notation, and it is very easy to add functions to it. All of this makes it a great basis for our toolbox DIPimage.
DIPimage is a MATLAB toolbox for scientific image processing and analysis. It is a tool for teaching and research in image processing. The principal design ideas behind the toolbox are:
- ease of use,
- simple expandability, and
- compact notation.
Most operations are independent of dimensionality, and are defined for any data type that MATLAB can store. Many functions are available through a GUI, which makes them more accessible to novices. The interactive image display windows, to which images can be automatically displayed after each operation, provide great insight into the image data.
Most image processing operations are deferred to DIPlib, a dedicated library written in C. In this way we extend MATLAB with new core functions, and thereby overcoming speed limitations of interpreted scrips. Due to the use of DIPlib, MATLAB is useful for image processing beyond the prototyping stage. Together, MATLAB and DIPimage yield a powerful workbench for working with scalar and vector images in any number of dimensions.
The MATLAB/DIPimage combination has been in use since the year 2000 at the Quantitative Imaging Group (formerly the Pattern Recognition Group), both as a research tool and as a teaching environment for all image processing courses offered by the group. It has since been adopted for research and teaching around the world.
We know from experience that novices accomplish a task quicker using DIPimage than using other image-processing environments. Image processing/analysis specialists prefer it over other packages, because they too can implement a new algorithm quicker and with less hassle. Being able to process measurement results without switching environments has also been noted as a big advantage.
Graphical User Interface
- Contains most functions in the high-level interface
- Easy parameter selection
- Useful for using unfamiliar functions
- Useful for novice users (who don't know the commands yet)
- Easy to add functions to
MATLAB Command Line
- Intuitive language
- Easy but powerful manipulation of images (images are encapsulated in an object, which makes using them more natural)
- Quick for calling familiar functions
- Seamless integration with other toolboxes and MATLAB’s own matrix-processing and display functions
- Automatic image display
- Interactive display for 1D, 2D, 3D and 4D, binary, grey-value and color images
- Many interactive tools: pixel value examination, zooming, local orientation examination, linking of 3D displays, R.O.I. definition, cropping, ...
- Powerful indexing modes
for exaple: c(1:3:end,:) extracts one in every three columns from an image; and c(0,0)=100 sets the top-left pixel to 100
- Mask images (for R.O.I. processing)
for exaple: c(m) extracts the pixels selected by the mask
- Pixel arithmetic through operators, not functions
for exaple: c>100 thresholds the image at 100; c+d adds two images; and c/max(c) normalizes the image intensities
- Functions for shifting, scaling, rotating, ...
- Generation of band-limited test objects
- Support for tensor and color images
- Support for many data types (binary, integer, floating-point, complex)
- Most functions are dimensionality-independent
- Gaussian derivatives up to any order order (and of any dimensionality)
- Mathematical morphology (rectangular, elliptic, parabolic and arbitrary flat structuring elements)
- Many other filters: median, percentile, variance, Kuwahara, bilateral, ...
- Point operations: clip, stretch, histogram equalization, table lookup, ...
- Advanced tools such as grey-weighted distance transforms, scale spaces, structure tensor, optic flow, ...
- Large collection of measurement functions
- One-dimensional and multi-dimensional histograms
- Segmentation functions: threshold, Canny, watershed, ...
- Statistics and visualization of measurement results are easily done in MATLAB
- Seamless integration with PRTOOLS pattern recognition toolbox
Image File Support
- ICS (read and write) - images of any data type and any dimensionality
- TIFF (read and write) - 2D images of any data type, grey-value or color
- JPEG (read and write) - 2D images with 8 or 16 bits per pixel, grey-value or color
- GIF (read and write) - 2D, 8-bit grey-value images
- Comma separated values (read and write) - 2D grey-value images only
- Zeiss LSM (read) - Zeiss confocal microscope images
- BioRad PIC (read) - BioRad confocal microscope images
- AVS FLD (write) - images of any data type and any dimensionality
- Postscript (write) - 2D, 8-bit images, grey-value or color
- ...plus all image file types supported by MATLAB