Proposals:Adding MINC File Format

From KitwarePublic
Jump to navigationJump to search

Adding support for MINC File Format

The plan is to incorporate a fully functional (support all headers in both directions) MINC2.0 IO read/write module for ITK. The module should also read MINC 1.0 files, but not write them for compatibility.

What is MINC ?

MINC is an Image File Format, 3 level API and an Image Processing toolkit that has been developed over the past 15 years at the Brain Imaging Centre (or Centre) at the Montreal Neurological Institute. You can read more about it here and here.

MINC 1.X was originally called Medical Image NetCDF, but things have changed since given the use of large datasets as the BIC (>4GB), this necessitated a shift away from netCDF and as such HDF5 was chosen for MINC2.X. The ITK MINC library will be based upon MINC 2.X with planned support for reading MINC 1.X files.

Note, that there are readily available tools that are included in the MINC 2.X distribution (mincconvert) that will convert between the two formats.

There is already a complete MINC2.0 IO module by Leila Baghdadi of the mICE imaging Center in Toronto, this has resulted in this Insight Article

Capabilities

There have been a number of well used Medical Imaging "things" developed around MINC including N3 - Inhomogeneity Correction, registration, brainweb, the ICBM, average 305 and colin 27 models to name a few.

A short-list of things that the MINC tools can do:

  • Non Unifority Correction (John Sled)
  • linear and nonlinear (grid-transform based) registration (Louis Collins)
  • MATLAB interface (EMMA)
  • Partial Volue Estimation (PVE - Jussi Tohka)
  • Segmentation (Alex Zijdenbos, Louis Collins, Chris Cocosco and others)
  • Cortical Surface Extraction (lots, just about everyone in Alan Evans Lab for the past 15 years)
  • Diffusion, Perfusion (Andrew Janke)
  • Deformation Analysis
  • GLM Modeling
  • fMRIstat (Keith Worsley)
  • MINC Toolbox: resampling, math, arbitrary calculus across images, resampling, reshaping, lookup tables, image generation via ImageMagick,
  • MINC file format: "limitless" arbitrary named dimensions, direction cosines, abstracted range calculations from multiple underlying data formats dependant on precision, separation of voxel and world co-ordinates, automated history storage for provenance of data, "limitless" user defined header fields
  • MINC API: 2/3 levels of programming, minc_simple (slurp it all in), volume_io (more low-level), minc proper. There are also programming interfaces such as voxel_loop that allow buffered processing of multiple files (>100) with a very small memory footprint.


Limitations

  • only MINC2.0 files are supported by the module. For philosophical reasons there are no plans to support the reading of MINC1.X files as there is no reason to stick with them. There is a converter tool (mincconvert) included in the base MINC2.0 distribution that will perform the conversion with (consummate) ease. Perhaps if there is sufficient backlash, MINC1.X reading will be supported in some sort of fall-back mode.

How to use it

Download the latest release http://hdl.handle.net/1926/191, then do Cmake incantations.

  • more details to follow in here once I streamline the build -- Andrew Janke

Roadmap to get this included

MINC2ImageIO

  1. Write test-cases for all parts of the reader/writer and get them into Dashboard.
  2. Fix problems with Build process on at least the platforms that MINC is built on (Debian, Mac, Winderz, Cygwin, Redhat, IRIX).
  3. Write lots of lovely examples

Third party libraries

These classes require the following libraries:

Heading1 Home Page Size Kb License
MINC2 http://www.bic.mni.mcgill.ca/software/minc/ 7,663 Kb BSD-Like (according to COPYING file in the source code)
NetCDF http://www.unidata.ucar.edu/software/netcdf 581 Kb BSD-Like
HDF5 http://hdfgroup.com/HDF5 5,282 Kb BSD-Like

The current size of ITK source code is 98Mb, and the size of the Utilities subdirectory is 28.8Mb

Questions for ITK devs

  • Documentation:
    • Include Doxygen docs in code? -- This seems to be the status quo for ITK from what I can see.
    • Answer: YES, doxygen documentation must be included in the code. Ibanez 13:01, 27 August 2007 (EDT)

Example Code

 - ExampleFileScript - a script to generate the test MINC data used for the reader
 - MINCExample01 - the first example bit of code for how to use the reader (And test)

Place for ITK MINC users to whinge/complain/send flowers/request things

  • I want <this> feature included.
  • One limitation I noticed when testing early releases related to scaling support.
    • It seems that certain types of minc image allow a scale factor to be included, but there didn't appear to be a way to access that factor from ITK, or apply it to the data.