|
| |
PROPOSAL:
MINC extension to handle basic data types of Nuclear Medicine
József Varga, Univ. of Debrecen, 08/13/2002
Although the documentation of the MINC package claims that "it provides a
standard for dimension, variable and attribute names suitable for medical
imaging", in fact its use has been restricted to reconstructed tomographic data
sets, as MINC versions up to 1.0 handle only four dimension variables: xspace,
yspace, zspace and time.
The aim of the present extension is to provide and handle additional
dimension variables so that the MINC package be able to describe all the image
sets regularly used in nuclear medicine, including static, dynamic and gated
planar, (SPECT and PET) acquired tomographic, and gated tomographic studies.
The modifications and additions described below were added to and tested
under the Windows version of the MINC package; however, they should work on UNIX
platforms as well.
Dimension variables:
|
Axis type |
Code |
Name |
Special attribute |
New? |
|
X |
x |
xspace |
|
|
|
Y |
y |
yspace |
|
|
|
Z |
z |
zspace |
|
|
|
Time |
t |
time |
|
|
|
Gate |
t |
time |
recurrence=cyclic |
* |
|
Projection angle |
p |
projection |
|
* |
|
Energy |
e |
energy |
|
* |
|
View |
v |
view |
|
* |
|
Bin |
b |
bin |
|
* |
|
Compartment |
c |
compartment |
|
* |
Dimensions of different study types:
The slowest changing dimension is written first.
|
Planar |
Static |
e, v, y, x |
|
|
Dynamic |
e, t, y, x |
|
|
Gated |
e, t, y, x |
|
Tomographic, acquired |
Projections (SPECT) |
e, p, y, x |
|
|
Gated projections |
e, t, p,
y, x
e, p, t, y, x |
|
|
Sinogram (PET) |
z, p, b |
|
|
Dynamic sinogram |
t, z, p,
b |
|
|
Gated sinogram |
t, z,
p, b |
|
Tomographic, reconstructed |
Static, Whole body |
e, z, y, x |
|
|
Dynamic |
e, t, z, y, x |
|
|
Gated |
e, t, z, y, x |
|
|
Quantitative tomo |
c, z, y, x |
Limitations:
- Multiple detectors are not implemented yet
- Time sequence of gated studies is not implemented
- Overlapping views (acquisition for wholebody imaging) are not handled.
In all these cases multiple MINC files can be used.
- As in gated studies the "gate" dimension is in time units, only an
additional attribute (MIrecurrence) is used to label the "noncyclic" (default)
or "cyclic" nature of the time
dimension.
- "Projection" and "bin" are handled the same way as regular spatial
dimensions x,y,z, except that direction cosines are not applicable in this case.
- "Energy", "view" and "compartment" variables are string arrays,
implemented as 2D character blocks.
- "Time" and "time-width" variables can be present even if time is not a
dimension of the image variable.
In this case they represent the start time(s) and duration(s) of the images,
respectively.
- The content of the "time" variable can be either relative to the start
time of the first acquisition in a series (when "time" is a dimension),
or the time (in seconds) elapsed from Jan. 1, 1970 (e.g. for static planar and
tomo).
- We kept the principle of "one file - one image variable" so as not to
deviate too much from the original MINC package.
As a result, only images of the same matrix size can be stored in a single
MINC file.
- In all cases when the data cannot be handled even with the extended
dimensions, the use of several MINC files is suggested.
New source files:
Modifications:
- #include <minc_varlists_ext.h> // instead of minc_varlists.h
- "private" label of MI_is_in_list() has been removed
- #include <float.h>
- #define MI_EXTVAR "Extended MINC variable"
- #define MI_EXT_VERSION "MINC Version 1.01"
- /* MINC extension: Dimension names and names of associated variables */
#define MIprojection "projection"
#define MIpfrequency "pfrequency"
#define MIbin "bin"
#define MIbfrequency "bfrequency"
#define MIview "view"
#define MIenergy "energy"
#define MIcompartment "compartment"
#define MIprojection_width "projection_width"
#define MIpfrequency_width "pfrequency_width"
#define MIbin_width "projection_width"
#define MIbfrequency_width "pfrequency_width"
- /* For dimensions in the MINC extension */
#define MIrecurrence "recurrence"
- /* MIrecurrence */
#define MI_NONCYCLIC "noncyclic" // default
#define MI_CYCLIC "cyclic___"
- /* Units */
#define MI_sec "sec"
- /* Extensions to handle basic NM study types */
public int micreate_string_variable(int cdfid, char *name, int maxlen, int
dimid );
public int miwrite_string_variable( int cdfid, int tx_id, int recnum, char
*tx_val );
public int miread_string_variable( int cdfid, int tx_id, int recnum, char
*tx_val, int maxlen );
#define DEF_STEP DBL_MAX
#define DEF_START DBL_MAX
#define MAXLABELLENGTH 33
public int micreate_ext_dim_variable (int cdfid, char *name, nc_type datatype,
int dimlength, int irreg, char *unit, int *varidp, double dimstep, double
dimstart );
These examples were listed using the (modified) "ncdump.exe", included in the
binary package.
|