Proposals:Adding MINC File Format: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
Line 41: Line 41:
== Limitations ==
== Limitations ==


* You have to use the API to write tools, there are some who haven't and reverse engineered it and suffered... (They shall remain nameless).
* 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 ==
== How to use it ==

Revision as of 04:40, 18 May 2007

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

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

Questions for ITK devs

 - Documentation: 
     Include Doxygen docs in code?  -- This seems to be the status quo for ITK from what I can see.

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

 - I want <this> feature included.