DESCRIPTION

This is a very simple format. The basic headers are written in one file with extension `.hdr', the image data in another file with extension `.img'.

The basic defines for the format:

---------------------------------------------------------------------------

typedef struct Header_Key_t{
        Int32  sizeof_hdr;               /* 348 or 148                 */
        char data_type[10];              /* "dsr"                      */
        char db_name[18];                /* filename without extension */
        Int32 extents;                   /* 16384                      */
        Int16 session_error;
        char regular;                    /* 'r'                        */
        char hkey_un0;
} MDC_ANLZ_HEADER_KEY;

#define MDC_ANLZ_HK_SIZE 40

typedef struct Image_Dimensions_t{
        Int16 dim[8];                    /* [0] = # of dimensions      */
                                         /* [1] = X-dim                */
                                         /* [2] = Y-dim                */
                                         /* [3] = Z-dim                */
                                         /* [4] = t-dim                */
                                         /* ...                        */
        Int16 unused[7];
        Int16 datatype;                  /* pixel type                 */
                                         /*  0 = Unknown   1 = one-bit */
                                         /*  2 = Uint8     4 = Int16   */
                                         /*  8 = Int32    16 = float   */
                                         /* 32 = complex  64 = double  */
                                         /*128 = RGB     255 = all     */

        Int16 bitpix;                    /* bits per pixel             */
        Int16 dim_un0;
        float pixdim[8];                 /* [0] = # of dimensions      */
                                         /* [1] = X-dim (mm)           */
                                         /* [2] = Y-dim (mm)           */
                                         /* [3] = Z-dim (mm)           */
                                         /* [4] = t-dim (ms)           */
                                         /* ...                        */
        float funused[6];
        float compressed;
        float verified;
        Int32 glmax,glmin;
} MDC_ANLZ_IMAGE_DIMS;

#define MDC_ANLZ_IMD_SIZE 108

typedef struct Data_History_t{
        char descrip[80];
        char aux_file[24];
        char orient;                     /* patient orientation        */
                                         /* 0 = transverse unflipped   */
                                         /* 1 = coronal unflipped      */
                                         /* 2 = sagittal unflipped     */
                                         /* 3 = transverse flipped     */
                                         /* 4 = coronal flipped        */
                                         /* 5 = sagittal flipped       */

        char originator[10];
        char generated[10];
        char scannum[10];
        char patient_id[10];
        char exp_date[10];
        char exp_time[10];
        char hist_un0[3];
        Int32 views;
        Int32 vols_added;
        Int32 start_field;
        Int32 field_skip;
        Int32 omax, omin;
        Int32 smax, smin;
} MDC_ANLZ_DATA_HIST;

#define MDC_ANLZ_DH_SIZE 200

---------------------------------------------------------------------------

The structures are defined in the order as they should be found in the file. The Data_History header is not obliged. The SPM Analyze format, intended for the SPM software, differs a little from the normal Analyze format.

What does the format support or not support:

===========================================================================
Item            Supported                             Not Supported
===========================================================================
Color Map     : grayscale                                   -
File Endian   : little & big                                -
Pixeltypes    : 1-bit, Uint8, Int16, Int32           Int8,Uint16,Uint32
                float, double, (complex)               Int64,Uint64
===========================================================================
Scaling factors  : quantify & calibrate factors/image  are NOT supported
---------------------------------------------------------------------------
Dimensions/Image : different dimensions for each image are NOT supported
---------------------------------------------------------------------------
Pixeltypes/Image : different pixeltypes for each image are NOT supported
---------------------------------------------------------------------------
SPM remarks      : 1) imd.funused[0] = the offset
                   2) imd.funused[1] = one global scaling factor
                   3) (Int16)dh.originator[0...1] \
                      (Int16)dh.originator[2...3]  } =  origin (X, Y, Z)
                      (Int16)dh.originator[4...5] /
===========================================================================

NOTES

A note about the image (patient) orientation in SPM:

X-axis

increases from leftside (hand) to rightside (hand).

Y-axis

increases from posterior (back) to anterior (front).

Z-axis

increases from inferior (feet) to superior (head).

FILES

/usr/local/xmedcon/source/m-anlz.h      The header file.
/usr/local/xmedcon/source/m-anlz.c      The source file.

RELATED TO m-anlz…

AUTHOR

(X)MedCon project was originally written by Erik Nolf (eNlf) for the former PET-Centre at Ghent University (Belgium).

e-mail: enlf-at-users.sourceforge.net www: http://xmedcon.sourceforge.net