1M-ECAT(4) Kernel Interfaces Manual M-ECAT(4)
2
3
4
6 m-ecat - CTI ECAT 6/7 medical image format (MedCon)
7
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
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
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
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
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)