Machine Intelligence Laboratory

Cambridge University Department of Engineering

Dr Graham Treece, Department of Engineering


Freely available software

Much of the research described in these pages has been implemented in software, and the binary executables are freely available for anyone to use for their own research or enjoyment. If you do use any of them for your own research, please let me know, and cite the appropriate paper. Also, I would welcome any feedback on the usefulness or otherwise of these packages - please tell me what you think! The various programs and utilities are:

  • Stradwin - Freehand 3d ultrasound acquisition and visualisation for clinical research
  • wxDicom - Image and DICOM viewer, Bitonic filtering and Refined Metal Artefact Reduction for CT
  • Bitonic filter - Linear filtering in an edge-preserving morphological framework
  • IsoSurf - Iso-surface extraction from a block of data
  • wxOCTdemo - Demo of time-domain and spectral Optical Coherence Tomography
  • EqnSurf - Visualisation of 3d equations
  • VolMorph - Real time 3d volume morphing of polygonal models

Stradwin

Stradwin is a user-friendly freehand 3-D ultrasound acquisition and visualisation package which can run under Windows, and implements many of the algorithms described in the research page. It has been developed with the aim of encouraging clinical research in this area.

Stradwin Screenshot

This is available free - see the stradwin documentation page for much more information about availability and technical content.

wxDicom

wxDicom Screenshot

wxDicom was originally written as a simple tool to demonstrate various image interpolation and filtering techniques in a teaching setting. It has since been expanded to allow it to load medical data from various sources (including DICOM) in addition to several standard image formats. Since it can also save sequences of images, it can be used to load, process, then save DICOM data to a standard image sequence. It also implements the Bitonic filter and Refined Metal Artefact Reduction for CT data. For more information, and to obtain the software, see the wxDicom page.

Bitonic filter

Example of bitonic filter

This is a filter for removing noise in signals and images whilst preserving edges and other bitonic data, ie. anything with either one local maximum or minimum within the range of the filter. It has better edge-preserving properties than a median filter, whilst also removing noise similarly to a Gaussian filter. It has wide applicability and very few parameters, with no need for training or prior knowledge of the noise variance, and is hence particularly suited to situations where the noise is varying.

IsoSurf

This can be used for extracting triangulated iso-surfaces from a block of data - for instance the skin and skeleton which have been extracted from the female cadaver of the Visible Human Project data set, shown below. This is an image of a full 3-D model.

Skeleton from Visible Human Project

The software implements Regularised Marching Tetrahedra to triangulate the iso-surface, and Maximal Disc Guided Shape Based Interpolation to interpolate the thresholded data if required. The input is from a regular block of data, which can be scaled differently in each direction, and the surface can be extracted at any resolution. The output is a surface triangulation and a set of cross-sectional contours. For more information, and to obtain the software, see the IsoSurf page.

wxOCTdemo

wxOCTdemo Screenshot

A simple application for looking at the effect of pulse shape and system parameters on time-domain and spectral optical coherence tomography. For more information, and to obtain the software, see the wxOCTdemo page.

EqnSurf

This can be used for generating triangulated surfaces from implicit functions, for instance those shown below.

Peak function 'Bubble' function \ 'Saddle' function \  

The function is given as a command line string, for instance the commands to generate these surfaces were (left to right):

eqnsurf "(3-3*x)^2*exp(-x^2-(y+1)^2) - 10*(x/5-x^3-y^5)*exp(-x^2-y^2) - 1/3*exp(-(x+1)^2-y^2) - 3*z" -c 0,0,2 -l 3,3,4 -r 0.1

eqnsurf "(x^2+y^2+z^2-0.5)*(x-0.2)*(y-0.1)" -t 0.01 -r 0.04

eqnsurf "cos(x^2) + ln(y^2) + z^2 - 0.9" -l 2,2,2 -r 0.07

The software implements Regularised Marching Tetrahedra to triangulate the iso-surface, which can be extracted at any resolution. The visualisation requires both the OpenGL (or Mesa) and GLUT libraries. For more information, and to obtain the software, see the EqnSurf page.

VolMorph

This uses the same algorithm as used in IsoSurf for interpolating cross-sections to surfaces, but this time applied to the interpolation of surfaces to form time sequences. This means it can be used to 'morph' one surface into another, for example the queen and pawn shown below, which was generated in less than two minutes from the original objects (click the middle image to see a low quality movie of this morph sequence):

Initial morph Middle morph \  Final morph \  

The surfaces are supplied as closed polygonal meshes in the OOGL format, however there is also a converter supplied from the more widely used 3DS format. Polygonal meshes are sampled (with antialias correction) to a volume, then interpolated, then re-triangulated using Regularised Marching Tetrahedra, before being displayed as a real time morph sequence that can be manipulated in 3D. The visualisation requires both the OpenGL (or Mesa) and GLUT libraries. For more information, and to obtain the software, see the VolMorph page.