Rechercher une page de manuel

Chercher une autre page de manuel:

m-ecat

Langue: en

Version: 300484 (debian - 07/07/09)

Section: 4 (Pilotes et protocoles réseau)

NAME

m-ecat - CTI ECAT 6/7 medical image format (MedCon)

DESCRIPTION

This is a painful format. You should check the source code for more info. There is only read support for ECAT 7. Below you will find the specs for the ECAT 6 format. The ECAT 7 format differs a little in header definitions and there is only one matrix entry per volume, while for ECAT 6 files there is one matrix entry per plane. All ECAT 6 image data is written in one file with `.img' extension.

-----------------------------------------------------------------------
Important Definitions
-----------------------------------------------------------------------
 typedef struct mat_main_header {
         char            original_file_name[20];
         Int16           sw_version;
         Int16           data_type;
         Int16           system_type;
         Int16           file_type;
         char            node_id[10];
         Int16           scan_start_day,
                         scan_start_month,
                         scan_start_year,
                         scan_start_hour,
                         scan_start_minute,
                         scan_start_second;
         char            isotope_code[8];
         float           isotope_halflife;
         char            radiopharmaceutical[32];
         float           gantry_tilt,
                         gantry_rotation,
                         bed_elevation;
         Int16           rot_source_speed,
                         wobble_speed,
                         transm_source_type;
         float           axial_fov,
                         transaxial_fov;
         Int16           transaxial_samp_mode,
                         coin_samp_mode,
                         axial_samp_mode;
         float           calibration_factor;
         Int16           calibration_units,
                         compression_code;
         char            study_name[12],
                         patient_id[16],
                         patient_name[32],
                         patient_sex,
                         patient_age[10],
                         patient_height[10],
                         patient_weight[10],
                         patient_dexterity,
                         physician_name[32],
                         operator_name[32],
                         study_description[32];
         Int16           acquisition_type,
                         bed_type,
                         septa_type;
         char            facility_name[20];
         Int16           num_planes,
                         num_frames,
                         num_gates,
                         num_bed_pos;
         float           init_bed_position,
                         bed_offset[15],
                         plane_separation;
         Int16           lwr_sctr_thres,
                         lwr_true_thres,
                         upr_true_thres;
         float           collimator;
         char            user_process_code[10];
         Int16           acquisition_mode;
 
 } Main_header;
 
 #define MH_64_SIZE 446
 
 typedef struct mat_scan_subheader {
         Int16           data_type,
                         dimension_1,
                         dimension_2,
                         smoothing,
                         processing_code;
         float           sample_distance,
                         isotope_halflife;
         Int16           frame_duration_sec;
         Int32           gate_duration,
                         r_wave_offset;
         float           scale_factor;
         Int16           scan_min,
                         scan_max;
         Int32           prompts,
                         delayed,
                         multiples,
                         net_trues;
         float           cor_singles[16],
                         uncor_singles[16],
                         tot_avg_cor,
                         tot_avg_uncor;
         Int32           total_coin_rate,
                         frame_start_time,
                         frame_duration;
         float           loss_correction_fctr;
         Int32           phy_planes[8];
 
 } Scan_subheader;
 
 #define SSH_64_SIZE 236
 
 typedef struct mat_image_subheader {
         Int16           data_type,
                         num_dimensions,
                         dimension_1,
                         dimension_2;
         float           x_origin,
                         y_origin,
                         recon_scale,    /* Image ZOOM from reconstruction */
                         quant_scale;    /* Scale Factor */
         Int16           image_min,
                         image_max;
         float           pixel_size,
                         slice_width;
         Int32           frame_duration,
                         frame_start_time;
         Int16           slice_location,
                         recon_start_hour,
                         recon_start_minute,
                         recon_start_sec;
         Int32           gate_duration;
         Int16           filter_code;
         Int32           scan_matrix_num,
                         norm_matrix_num,
                         atten_cor_matrix_num;
         float           image_rotation,
                         plane_eff_corr_fctr,
                         decay_corr_fctr,
                         loss_corr_fctr,
                         intrinsic_tilt ;
         Int16           processing_code,
                         quant_units,
                         recon_start_day,
                         recon_start_month,
                         recon_start_year;
         float           ecat_calibration_fctr,
                         well_counter_cal_fctr,
                         filter_params[6];
         char            annotation[40];
 
 } Image_subheader;
 
 #define ISH_64_SIZE 172
 
 typedef struct mat_norm_subheader {
         Int16           data_type,
                         dimension_1,
                         dimension_2;
         float           scale_factor;
         Int16           norm_hour,
                         norm_minute,
                         norm_second,
                         norm_day,
                         norm_month,
                         norm_year;
         float           fov_source_width;
         float           ecat_calib_factor;
 
 } Norm_subheader; 
 
 #define NSH_64_SIZE 30
 
 typedef struct mat_attn_subheader {
         Int16           data_type,
                         attenuation_type,
                         dimension_1,
                         dimension_2;
         float           scale_factor,
                         x_origin,
                         y_origin,
                         x_radius,
                         y_radius,
                         tilt_angle,
                         attenuation_coeff,
                         sample_distance;
 
 } Attn_subheader;
 
 #define ASH_64_SIZE 40
 
 -----------------------------------------------------------------------
 What does the format support or not support:
 
 ===========================================================================
 Item            Supported                             Not Supported
 ===========================================================================
 Color Map     : grayscale                                   -
 File Endian   : big                                       little
 Pixeltypes    : VAX Int16 (write)  | All (read)             -
 ===========================================================================
 Scaling factors  : quantify & calibrate factors/image  are supported
 ---------------------------------------------------------------------------
 Dimensions/Image : different dimensions for each image are NOT supported
 ---------------------------------------------------------------------------
 Pixeltypes/Image : different pixeltypes for each image are NOT supported
 ===========================================================================
 

NOTES

The MedCon program also supports the reading of sinogram, attenuation and normalization files for conversion purposes but it does not support writing those file types. In fact, they will be considered as reconstructed data!

The format supports more pixeltypes. The reason for our restriction of writing only the Int16 type was our ECAT software that only supports the Int16 type.

We consider three kinds of images (planes) in an ECAT file:

(1) plain pixel values [no unit] (ppv = ppv)
  - the planes/images are NOT normalized

(2) quantified values [counts/second/pixel] (qpv = ppv * quant_scale)
  - the planes/images are normalized

(3) calibrated values [uCi/ml] (cpv = qpv * calibr_fctr)
  - the planes/images are normalized

The float values in the header are stored as VAX format.

FILES

 /usr/local/xmedcon/source/m-ecat64.h      The header file.
 /usr/local/xmedcon/source/m-ecat64.c      The source file.
 /usr/local/xmedcon/source/m-matrix64.h    CTI header file.
 /usr/local/xmedcon/source/m-matrix64.c    CTI source file.
 

SEE ALSO

medcon(1), xmedcon(1), xmedcon-config(1)

m-acr(4), m-anlz(4), m-gif(4), m-inw(4), m-intf(4)

medcon(3)

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
For a time I stood
pondering on circle sizes. The
large computer mainframe quietly
processed all of its assembly code. Inside my entire
hope lay for figuring out an elusive expansion. Value : pi.
Decimals expected soon. I nervously entered a format procedure.
The mainframe processed the request. Error. I, again entering it,
carefully retyped. This iteration gave zero error printouts in all - success.
Intently I waited. Soon, roused by thoughts within me, appeared narrative
mnemonics relating digits to verbiage ! The idea appeared to exist but only in
abbreviated fashion - little phrases typically. Pressing on I then resolved, deciding
firmly about a sum of decimals to use - likely around four hundred, presuming the
computer code soon halted ! Pondering these ideas, words appealed to me. But a
problem of zeros did exist. Pondering more, solution subsequently appeared. Zero
suggests a punctuation element. Very novel ! My thoughts were culminated. No periods, I
concluded. All residual marks of punctuation = zeros. First digit expansion answer then came
before me. On examining some problems unhappily arose. That imbecillic bug ! The printout I
processed showed four nine as foremost decimals. Manifestly troubling. Totally every number
looked wrong. Repairing the bug took much effort. A pi mnemonic with letters truly seemed
good. Counting of all the letters probably should suffice. Reaching for a record would be
helpful. Consequently, I continued, expecting a good final answer from computer. First
number slowly displayed on the flat screen -3. Good. Trailing digits apparently were right
also. Now my memory scheme must be probably implementable. The technique was
chosen, elegant in scheme : by self reference a tale mnemonically helpful was
ensured. An able title suddenly existed - "Circle Digits". Taking pen I began.
Words emanated uneasily. I desired more synonyms. Speedily I found my
(alongside me) Thesaurus. Rogets is probably an essential in doing this,
instantly I decided. I wrote and erased more. The Rogets clearly
assisted immensely. My story proceeded (how lovely !) faultlessly.
The end, above all, would soon joyfully overtake. So, this
memory helper story is incontestably complete. Soon I
will locate publisher. There a narrative will I
trust immediately appear producing
fame. The end.
-- Keith, Michael ; Circle digits : a self referential story