RView: What and Why 

The first version of RView was originally patched together over one weekend in March 1995 to illustrate the problem of 3D volume medical image registration for a British science week event at the Science Museum in London, using code and ideas developed over the previous 3 years of working in medical image segmentation and registration at Guys Hospital. It turned out to be a handy utility and, along with the multi-modality registration algorithms developed during my PhD, it has proved useful for a great many projects. The basic idea was to have a display program that could create arbitrary slices from any number of arbitrarily sampled 3D datasets 'on the fly' to show the changing orientation of MRI and CT data as a registration program brought them into alignment. One of the underlying strengths of rview is that it treats all data as true 3D volumes in order to create an arbitrary display of that data via a set of linear transformations. It does not simply display an acquired 'slice' of a 3D volume, it interpolates a slice from a given point and orientation in space, and that slice does not need to have the same orientation that the underlying data was acquired in. However, unlike basic slice display programs (which simply display the slices as acquired) this means you need true 3D geometric information about the files (voxel size, slice thickness etc), in order to display them correctly and relate them to other volume datasets. The windows version of rview in 1998 integrated automated rigid volume registration into rview and tried to address some of the main problems I've found in implementing and using registration algorithms in clinical research situations. Many of these problems are introduced by converting image data between various intermediate file formats using different software packages, so I've tried to ensure that rview can read the raw scanner data directly to get access to such information as image voxel dimensions and slicing direction. In particular, the increased use of DICOM and its support within rview has made rview a much more easily applicable tool.

Here is a summary of the basic functionality rview currently provides:

  1. General purpose slice display and fused (subtraction, colour overlay, contour) displays of multiple (upto 50) 3D or 4D datasets. (No use of graphics hardware for rendering so the number and size of data volumes is usually limited only by physical memory)
  2. Nearest Neighbour, linear and cubic interpolation options for most display types.
  3. 3D rigid registration driven by normalised mutual information, and the ability to save transformed images created using linear, nearest neighbor or sinc interpolation.
  4. 2D ROI stats of any region in any slice display for all datasets.
  5. 3D semi-interactive and manual tracing on multiple 3D volume datasets+ basic region statistics calculations.
  6. ISO surface volume rendering,  normal fusion rendering and maximum/minimum intensity projection.
  7. Combined displays of complex data types such as vector fields or manifolds shown as deformation grids or displacement vectors.

Please read the Acknowledgments .