1M-ECAT(4)                  Kernel Interfaces Manual                  M-ECAT(4)
2
3
4

NAME

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

DESCRIPTION

9  This  is  a  painful format. You should check the source code for more info.
10  There is only read support for ECAT 7. Below you will find the specs for the
11  ECAT  6 format. The ECAT 7 format differs a little in header definitions and
12  there is only one matrix entry per volume, while for ECAT 6 files  there  is
13  one  matrix  entry  per  plane. All ECAT 6 image data is written in one file
14  with `.img' extension.
15
16    -----------------------------------------------------------------------
17                             Important Definitions
18    -----------------------------------------------------------------------
19
20  typedef struct mat_main_header {
21          char            original_file_name[20];
22          Int16           sw_version;
23          Int16           data_type;
24          Int16           system_type;
25          Int16           file_type;
26          char            node_id[10];
27          Int16           scan_start_day,
28                          scan_start_month,
29                          scan_start_year,
30                          scan_start_hour,
31                          scan_start_minute,
32                          scan_start_second;
33          char            isotope_code[8];
34          float           isotope_halflife;
35          char            radiopharmaceutical[32];
36          float           gantry_tilt,
37                          gantry_rotation,
38                          bed_elevation;
39          Int16           rot_source_speed,
40                          wobble_speed,
41                          transm_source_type;
42          float           axial_fov,
43                          transaxial_fov;
44          Int16           transaxial_samp_mode,
45                          coin_samp_mode,
46                          axial_samp_mode;
47          float           calibration_factor;
48          Int16           calibration_units,
49                          compression_code;
50          char            study_name[12],
51                          patient_id[16],
52                          patient_name[32],
53                          patient_sex,
54                          patient_age[10],
55                          patient_height[10],
56                          patient_weight[10],
57                          patient_dexterity,
58                          physician_name[32],
59                          operator_name[32],
60                          study_description[32];
61          Int16           acquisition_type,
62                          bed_type,
63                          septa_type;
64          char            facility_name[20];
65          Int16           num_planes,
66                          num_frames,
67                          num_gates,
68                          num_bed_pos;
69          float           init_bed_position,
70                          bed_offset[15],
71                          plane_separation;
72          Int16           lwr_sctr_thres,
73                          lwr_true_thres,
74                          upr_true_thres;
75          float           collimator;
76          char            user_process_code[10];
77          Int16           acquisition_mode;
78
79  } Main_header;
80
81  #define MH_64_SIZE 446
82
83  typedef struct mat_scan_subheader {
84          Int16           data_type,
85                          dimension_1,
86                          dimension_2,
87                          smoothing,
88                          processing_code;
89          float           sample_distance,
90                          isotope_halflife;
91          Int16           frame_duration_sec;
92          Int32           gate_duration,
93                          r_wave_offset;
94          float           scale_factor;
95          Int16           scan_min,
96                          scan_max;
97          Int32           prompts,
98                          delayed,
99                          multiples,
100                          net_trues;
101          float           cor_singles[16],
102                          uncor_singles[16],
103                          tot_avg_cor,
104                          tot_avg_uncor;
105          Int32           total_coin_rate,
106                          frame_start_time,
107                          frame_duration;
108          float           loss_correction_fctr;
109          Int32           phy_planes[8];
110
111  } Scan_subheader;
112
113  #define SSH_64_SIZE 236
114
115  typedef struct mat_image_subheader {
116          Int16           data_type,
117                          num_dimensions,
118                          dimension_1,
119                          dimension_2;
120          float           x_origin,
121                          y_origin,
122                          recon_scale,    /* Image ZOOM from reconstruction */
123                          quant_scale;    /* Scale Factor */
124          Int16           image_min,
125                          image_max;
126          float           pixel_size,
127                          slice_width;
128          Int32           frame_duration,
129                          frame_start_time;
130          Int16           slice_location,
131                          recon_start_hour,
132                          recon_start_minute,
133                          recon_start_sec;
134          Int32           gate_duration;
135          Int16           filter_code;
136          Int32           scan_matrix_num,
137                          norm_matrix_num,
138                          atten_cor_matrix_num;
139          float           image_rotation,
140                          plane_eff_corr_fctr,
141                          decay_corr_fctr,
142                          loss_corr_fctr,
143                          intrinsic_tilt ;
144          Int16           processing_code,
145                          quant_units,
146                          recon_start_day,
147                          recon_start_month,
148                          recon_start_year;
149          float           ecat_calibration_fctr,
150                          well_counter_cal_fctr,
151                          filter_params[6];
152          char            annotation[40];
153
154  } Image_subheader;
155
156  #define ISH_64_SIZE 172
157
158  typedef struct mat_norm_subheader {
159          Int16           data_type,
160                          dimension_1,
161                          dimension_2;
162          float           scale_factor;
163          Int16           norm_hour,
164                          norm_minute,
165                          norm_second,
166                          norm_day,
167                          norm_month,
168                          norm_year;
169          float           fov_source_width;
170          float           ecat_calib_factor;
171
172  } Norm_subheader;
173
174  #define NSH_64_SIZE 30
175
176  typedef struct mat_attn_subheader {
177          Int16           data_type,
178                          attenuation_type,
179                          dimension_1,
180                          dimension_2;
181          float           scale_factor,
182                          x_origin,
183                          y_origin,
184                          x_radius,
185                          y_radius,
186                          tilt_angle,
187                          attenuation_coeff,
188                          sample_distance;
189
190  } Attn_subheader;
191
192  #define ASH_64_SIZE 40
193
194  -----------------------------------------------------------------------
195
196  What does the format support or not support:
197
198  ===========================================================================
199  Item            Supported                             Not Supported
200  ===========================================================================
201  Color Map     : grayscale                                   -
202  File Endian   : big                                       little
203  Pixeltypes    : VAX Int16 (write)  | All (read)             -
204  ===========================================================================
205  Scaling factors  : quantify & calibrate factors/image  are supported
206  ---------------------------------------------------------------------------
207  Dimensions/Image : different dimensions for each image are NOT supported
208  ---------------------------------------------------------------------------
209  Pixeltypes/Image : different pixeltypes for each image are NOT supported
210  ===========================================================================
211
212

NOTES

214  The MedCon program also supports the reading of  sinogram,  attenuation  and
215  normalization  files for conversion purposes but it does not support writing
216  those file types. In fact, they will be considered as reconstructed data!
217
218  The format supports more pixeltypes. The reason for our restriction of writ‐
219  ing  only  the Int16 type was our ECAT software that only supports the Int16
220  type.
221
222  We consider three kinds of images (planes) in an ECAT file:
223
224     (1) plain pixel values [no unit]              (ppv = ppv)
225          - the planes/images are NOT normalized
226
227     (2) quantified  values [counts/second/pixel]  (qpv = ppv * quant_scale)
228          - the planes/images are normalized
229
230     (3) calibrated  values [uCi/ml]               (cpv = qpv * calibr_fctr)
231          - the planes/images are normalized
232
233  The float values in the header are stored as VAX format.
234

FILES

236  /usr/local/xmedcon/source/m-ecat64.h      The header file.
237  /usr/local/xmedcon/source/m-ecat64.c      The source file.
238  /usr/local/xmedcon/source/m-matrix64.h    CTI header file.
239  /usr/local/xmedcon/source/m-matrix64.c    CTI source file.
240

SEE ALSO

242  medcon(1), xmedcon(1), xmedcon-config(1)
243
244  m-acr(4), m-anlz(4), m-gif(4), m-inw(4), m-intf(4)
245
246  medcon(3)
247

AUTHOR

249  (X)MedCon project was originally written by Erik Nolf (eNlf) for the  former
250  PET-Centre at Ghent University (Belgium).
251
252  e-mail:   enlf-at-users.sourceforge.net   www:   http://xmedcon.sourceforge.net
253
254
255
256
257                                                                     M-ECAT(4)
Impressum