Orfeo Toolbox  3.16
itkSiemensVisionImageIO.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Insight Segmentation & Registration Toolkit
4  Module: $RCSfile: itkSiemensVisionImageIO.h,v $
5  Language: C++
6  Date: $Date: 2009-06-14 12:30:13 $
7  Version: $Revision: 1.13 $
8 
9  Copyright (c) Insight Software Consortium. All rights reserved.
10  See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
11 
12  This software is distributed WITHOUT ANY WARRANTY; without even
13  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14  PURPOSE. See the above copyright notices for more information.
15 
16 =========================================================================*/
30 #ifndef __itkSiemensVisionImageIO_h
31 #define __itkSiemensVisionImageIO_h
32 
33 #ifdef _MSC_VER
34 #pragma warning ( disable : 4786 )
35 #endif
36 
37 #include "itkIPLCommonImageIO.h"
38 
39 namespace itk
40 {
49 {
50 public:
55 
57  itkNewMacro(Self);
58 
60  itkTypeMacro(SiemensVisionImageIO, Superclass);
61 
62  /*-------- This part of the interfaces deals with reading data. ----- */
63 
70  virtual bool CanReadFile(const char* FileNameToRead);
71 
72  /* * Set the spacing and dimension information for the set filename. */
73  // Implemented in superclass
74  // virtual void ReadImageInformation();
75 
76  /* * Get the type of the pixel. */
77  // Implemented in superclass
78  // virtual const std::type_info& GetPixelType() const;
79 
80  /* * Reads the data from disk into the memory buffer provided. */
81  // Implemented in superclass
82  // virtual void Read(void* buffer);
83 
84  /* * Compute the size (in bytes) of the components of a pixel. For
85  * example, and RGB pixel of unsigned char would have a
86  * component size of 1 byte. */
87  // Implemented in superclass
88  // virtual unsigned int GetComponentSize() const;
89 
90  /*-------- This part of the interfaces deals with writing data. ----- */
91 
92  /* * Determine if the file can be written with this ImageIO implementation.
93  * \param FileNameToWrite The name of the file to test for writing.
94  * \author Hans J. Johnson
95  * \post Sets classes ImageIOBase::m_FileName variable to be FileNameToWrite
96  * \return Returns true if this ImageIO can write the file specified.
97  */
98  // Implemented in superclass
99  // virtual bool CanWriteFile(const char * FileNameToWrite);
100 
101  /* * Set the spacing and dimension information for the set filename. */
102  // Implemented in superclass
103  // virtual void WriteImageInformation();
104 
105  /* * Writes the data to disk from the memory buffer provided. Make sure
106  * that the IORegions has been set properly. */
107  // Implemented in superclass
108  // virtual void Write(const void* buffer);
109 protected:
112  // Implemented in superclass
113  // void PrintSelf(std::ostream& os, Indent indent) const;
114  virtual GEImageHeader *ReadHeader(const char *FileNameToRead);
115 private:
116  typedef enum {
117  HDR_STUDY_YEAR= 0, // Study date year, u_int
118  HDR_STUDY_YEAR_LEN= 4,
119  HDR_STUDY_MONTH= 4, // Study date month, u_int
120  HDR_STUDY_MONTH_LEN= 4,
121  HDR_STUDY_DAY= 8, // Study date day, u_int
122  HDR_STUDY_DAY_LEN= 4,
123  HDR_ACQ_YEAR= 12, // Acquisition date year, u_int
124  HDR_ACQ_YEAR_LEN= 4,
125  HDR_ACQ_MONTH= 16, // Acquisition date month, u_int
126  HDR_ACQ_MONTH_LEN= 4,
127  HDR_ACQ_DAY= 20, // Acquisition date day, u_int
128  HDR_ACQ_DAY_LEN= 4,
129  HDR_IMAGE_YEAR= 24, // Image date year, u_int
130  HDR_IMAGE_YEAR_LEN= 4,
131  HDR_IMAGE_MONTH= 28, // Image date month, u_int
132  HDR_IMAGE_MONTH_LEN= 4,
133  HDR_IMAGE_DAY= 32, // Image date day, u_int
134  HDR_IMAGE_DAY_LEN= 4,
135  HDR_STUDY_HOUR= 36, // Study time hour, u_int
136  HDR_STUDY_HOUR_LEN= 4,
137  HDR_STUDY_MIN= 40, // Study time minute, u_int
138  HDR_STUDY_MIN_LEN= 4,
139  HDR_STUDY_SEC= 44, // Study time second, u_int
140  HDR_STUDY_SEC_LEN= 4,
141  HDR_ACQ_HOUR= 52, // Acquisition time second, u_int
142  HDR_ACQ_HOUR_LEN= 4,
143  HDR_ACQ_MIN= 56, // Acquisition time second, u_int
144  HDR_ACQ_MIN_LEN= 4,
145  HDR_ACQ_SEC= 60, // Acquisition time second, u_int
146  HDR_ACQ_SEC_LEN= 4,
147  HDR_IMAGE_HOUR= 68, // Image Creation time second, u_int
148  HDR_IMAGE_HOUR_LEN= 4,
149  HDR_IMAGE_MIN= 72, // Image Creation time second, u_int
150  HDR_IMAGE_MIN_LEN= 4,
151  HDR_IMAGE_SEC= 76, // Image Creation time second, u_int
152  HDR_IMAGE_SEC_LEN= 4,
153  HDR_MANUFAC= 96, // Scanner Manufacturer, char
154  HDR_MANUFAC_LEN= 7,
155  HDR_INSTUTE_NAME= 105, // Institution Name, char
156  HDR_INSTUTE_NAME_LEN= 25,
157  HDR_ANNOTATION= 186, // Annotation, char
158  HDR_ANNOTATION_LEN= 32,
159  HDR_MODEL_NAME= 281, // Scanner Model Name, char
160  HDR_MODEL_NAME_LEN= 12,
161  HDR_LMOVE_YEAR= 412, // Date of Last Image Move - year, u_int
162  HDR_LMOVE_YEAR_LEN= 4,
163  HDR_LMOVE_MONTH= 416, // Date of Last Image Move - month, u_int
164  HDR_LMOVE_MONTH_LEN= 4,
165  HDR_LMOVE_DAY= 420, // Date of Last Image Move - day, u_int
166  HDR_LMOVE_DAY_LEN= 4,
167  HDR_LMOVE_HOUR= 424, // Date of Last Image Move - hour, u_int
168  HDR_LMOVE_HOUR_LEN= 4,
169  HDR_LMOVE_MIN= 428, // Date of Last Image Move - minute, u_int
170  HDR_LMOVE_MIN_LEN= 4,
171  HDR_LMOVE_SEC= 432, // Date of Last Image Move - second, u_int
172  HDR_LMOVE_SEC_LEN= 4,
173  HDR_PAT_NAME= 768, // Patient Name, char
174  HDR_PAT_NAME_LEN= 25,
175  HDR_PAT_ID= 795, // Patient ID Number, char
176  HDR_PAT_ID_LEN= 12,
177  HDR_DOB_YEAR= 808, // Date of Birth year, u_int
178  HDR_DOB_YEAR_LEN= 4,
179  HDR_DOB_MONTH= 812, // Date of Birth month, u_int
180  HDR_DOB_MONTH_LEN= 4,
181  HDR_DOB_DAY= 816, // Date of Birth day, u_int
182  HDR_DOB_DAY_LEN= 4,
183  HDR_PAT_AGE= 851, // Patient Age, char
184  HDR_PAT_AGE_LEN= 3,
185  HDR_AGE_UNIT= 854, // Patient Age Unit, char
186  HDR_AGE_UNIT_LEN= 1,
187  HDR_REG_YEAR= 1052, // Registration Date year, u_int
188  HDR_REG_YEAR_LEN= 4,
189  HDR_REG_MONTH= 1056, // Registration Date month, u_int
190  HDR_REG_MONTH_LEN= 4,
191  HDR_REG_DAY= 1060, // Registration Date day, u_int
192  HDR_REG_DAY_LEN= 4,
193  HDR_REG_HOUR= 1064, // Registration Time hour, u_int
194  HDR_REG_HOUR_LEN= 4,
195  HDR_REG_MIN= 1068, // Registration Time minute, u_int
196  HDR_REG_MIN_LEN= 4,
197  HDR_REG_SEC= 1072, // Registration Time second, u_int
198  HDR_REG_SEC_LEN= 4,
199  HDR_SLICE_THCK= 1544, // Slice thickness, double
200  HDR_SLICE_THCK_LEN= 8,
201  HDR_TR= 1560, // TR, double
202  HDR_TR_LEN= 8,
203  HDR_TE= 1568, // TE, double
204  HDR_TE_LEN= 8,
205  HDR_FREQ= 1592, // Center Frequency, double
206  HDR_FREQ_LEN= 8,
207  HDR_STATION= 1639, // Station Name, char
208  HDR_STATION_LEN= 5,
209  HDR_CAL_YEAR= 1712, // Calibration Date - year, u_int
210  HDR_CAL_YEAR_LEN= 4,
211  HDR_CAL_MONTH= 1716, // Calibration Date - month, u_int
212  HDR_CAL_MONTH_LEN= 4,
213  HDR_CAL_DAY= 1720, // Calibration Date - day, u_int
214  HDR_CAL_DAY_LEN= 4,
215  HDR_CAL_HOUR= 1724, // Calibration Time - hour, u_int
216  HDR_CAL_HOUR_LEN= 4,
217  HDR_CAL_MIN= 1728, // Calibration Time - minute, u_int
218  HDR_CAL_MIN_LEN= 4,
219  HDR_CAL_SEC= 1732, // Calibration Time - second, u_int
220  HDR_CAL_SEC_LEN= 4,
221  HDR_COIL= 1767, // Recieve Coil, char
222  HDR_COIL_LEN= 16,
223  HDR_IMAGE_NUC= 1828, // Imaged Nucleus, char
224  HDR_IMAGE_NUC_LEN= 4,
225  HDR_FLIP_ANGLE= 2112, // Flip Angle, double
226  HDR_FLIP_ANGLE_LEN= 8,
227  HDR_FIELD= 2560, // Field Strength, double
228  HDR_FIELD_LEN= 8,
229  HDR_DISPLAY_SIZE= 2864, // Displayed Matrix Size, u_int
230  HDR_DISPLAY_SIZE_LEN= 4,
231  HDR_SEQPROG_NAME= 2944, // Pulse Sequence Program Name, cha
232  HDR_SEQPROG_NAME_LEN= 65,
233  HDR_WKC_NAME= 3009, // Pulse Sequence Name, char
234  HDR_WKC_NAME_LEN= 65,
235  HDR_AUTHOR= 3074, // Pulse Sequence Author, char
236  HDR_AUTHOR_LEN= 9,
237  HDR_SEQUENCE_TYPE= 3083, // Pulse Sequence Type, char
238  HDR_SEQUENCE_TYPE_LEN= 8,
239  HDR_FOV_ROW= 3744, // Row FOV, double
240  HDR_FOV_ROW_LEN= 8,
241  HDR_FOV_COLUMN= 3752, // Column FOV, double
242  HDR_FOV_COLUMN_LEN= 8,
243  HDR_CENTER_X= 3768, // X Center Point, double
244  HDR_CENTER_X_LEN= 8,
245  HDR_CENTER_Y= 3776, // Y Center Point, double
246  HDR_CENTER_Y_LEN= 8,
247  HDR_CENTER_Z= 3784, // Z Center Point, double
248  HDR_CENTER_Z_LEN= 8,
249  HDR_NORMV_X= 3792, // Nornal Vector X, double
250  HDR_NORMV_X_LEN= 8,
251  HDR_NORMV_Y= 3800, // Nornal Vector Y, double
252  HDR_NORMV_Y_LEN= 8,
253  HDR_NORMV_Z= 3808, // Nornal Vector Z, double
254  HDR_NORMV_Z_LEN= 8,
255  HDR_DIST_ISO= 3816, // Distance from Isocenter, double
256  HDR_DIST_ISO_LEN= 8,
257  HDR_ROWV_X= 3832, // Row vector X, double
258  HDR_ROWV_X_LEN= 8,
259  HDR_ROWV_Y= 3840, // Row vector Y, double
260  HDR_ROWV_Y_LEN= 8,
261  HDR_ROWV_Z= 3848, // Row vector Z, double
262  HDR_ROWV_Z_LEN= 8,
263  HDR_COLMNV_X= 3856, // Column vector X, double
264  HDR_COLMNV_X_LEN= 8,
265  HDR_COLMNV_Y= 3864, // Column vector Y, double
266  HDR_COLMNV_Y_LEN= 8,
267  HDR_COLMNV_Z= 3872, // Column vector Z, double
268  HDR_COLMNV_Z_LEN= 8,
269  HDR_ORNT_SET1X= 3880, // Orientation Set 1 - X, char
270  HDR_ORNT_SET1X_LEN= 3,
271  HDR_ORNT_SET1Y= 3884, // Orientation Set 1 - Y, char
272  HDR_ORNT_SET1Y_LEN= 3,
273  HDR_ORNT_SET1Z= 3888, // Orientation Set 1 - Z, char
274  HDR_ORNT_SET1Z_LEN= 3,
275  HDR_ORNT_SET2X= 3892, // Orientation Set 2 - X, char
276  HDR_ORNT_SET2X_LEN= 3,
277  HDR_ORNT_SET2Y= 3896, // Orientation Set 2 - Y, char
278  HDR_ORNT_SET2Y_LEN= 3,
279  HDR_ORNT_SET2Z= 3900, // Orientation Set 2 - Z, char
280  HDR_ORNT_SET2Z_LEN= 3,
281  HDR_PROTOCOL_NAME= 2944, // Pulse Sequence Name, char
282  HDR_PROTOCOL_NAME_LEN= 64,
283  HDR_PIXELSIZE_ROW= 5000, // Row Pixel Size, double
284  HDR_PIXELSIZE_ROW_LEN= 8,
285  HDR_PIXELSIZE_CLMN= 5008, // Column Pixel Size, double
286  HDR_PIXELSIZE_CLMN_LEN= 8,
287  TEXT_PAT_ID= 5504, // Text Patient ID, char
288  TEXT_PAT_ID_LEN= 12,
289  TEXT_PAT_SEX= 5517, // Text Patient Sex, char
290  TEXT_PAT_SEX_LEN= 1,
291  TEXT_PAT_AGE= 5518, // Text Patient Age, char
292  TEXT_PAT_AGE_LEN= 3,
293  TEXT_AGE_UNIT= 5521, // Text Patient Age Unit (Y=year), char
294  TEXT_AGE_UNIT_LEN= 1,
295  TEXT_PAT_POS= 5529, // Text Patient Postion, char
296  TEXT_PAT_POS_LEN= 7,
297  TEXT_IMG_FLAG= 5541, // Text Image Flag (IMAGE=image), char
298  TEXT_IMG_FLAG_LEN= 5,
299  TEXT_IMG_NUMBER= 5546, // Text Image Number, char
300  TEXT_IMG_NUMBER_LEN= 4,
301  TEXT_IMG_DAY= 5559, // Text Date - Day, char
302  TEXT_IMG_DAY_LEN= 2,
303  TEXT_IMG_MONTH= 5562, // Text Date - Month, char
304  TEXT_IMG_MONTH_LEN= 3,
305  TEXT_IMG_YEAR= 5566, // Text Date - Year, char
306  TEXT_IMG_YEAR_LEN= 4,
307  TEXT_IMG_HOUR= 5571, // Text Time - hour, char
308  TEXT_IMG_HOUR_LEN= 2,
309  TEXT_IMG_MIN= 5574, // Text Time - minute, char
310  TEXT_IMG_MIN_LEN= 2,
311  TEXT_ACQ_FLAG= 5577, // Text Acq. Time Flag (TA=time of acq), char
312  TEXT_ACQ_FLAG_LEN= 2,
313  TEXT_ACQ_MIN= 5583, // Text Acq Time - minute, char
314  TEXT_ACQ_MIN_LEN= 2,
315  TEXT_ACQ_SEC= 5586, // Text Acq Time - second, char
316  TEXT_ACQ_SEC_LEN= 2,
317  TEXT_ANNOTATION= 5601, // Text Annotation, char
318  TEXT_ANNOTATION_LEN= 32,
319  TEXT_ORGANIZATION= 5655, // Text Organization, char
320  TEXT_ORGANIZATION_LEN= 25,
321  TEXT_STATION= 5682, // Text Station Name, char
322  TEXT_STATION_LEN= 5,
323  TEXT_ACQ_MTRX_PHASE= 5695, // Acq. Matrix Phase Axis, char
324  TEXT_ACQ_MTRX_PHASE_LEN= 3,
325  TEXT_ACQ_PHASE_DIR= 5698, // Acq. phase direction (h=hor, v=vert), char
326  TEXT_ACQ_PHASE_DIR_LEN= 1,
327  TEXT_ACQ_MTRX_FREQ= 5700, // Acq. matrix Freq Axis, char
328  TEXT_ACQ_MTRX_FREQ_LEN= 3,
329  TEXT_ACQ_MTRX_FREQO= 5703, // Acq freq (o=o " "=blank), char
330  TEXT_ACQ_MTRX_FREQO_LEN= 1,
331  TEXT_ACQ_MTRX_FREQS= 5704, // Acq freq (s=s " "=blank), char
332  TEXT_ACQ_MTRX_FREQS_LEN= 1,
333  TEXT_SEQUENCE= 5706, // Sequence Type, char
334  TEXT_SEQUENCE_LEN= 8,
335  TEXT_FLIP_ANGLE= 5714, // Flip Angle, char
336  TEXT_FLIP_ANGLE_LEN= 3,
337  TEXT_SCAN_FLAG= 5718, // Scan flag ("SCAN"), char */
338  TEXT_SCAN_FLAG_LEN= 4,
339  TEXT_SCANA_NUM= 5723, // Scan Number A, char
340  TEXT_SCANA_NUM_LEN= 3,
341  TEXT_SCANB_NUM= 5726, // Scan Number B, char
342  TEXT_SCANB_NUM_LEN= 3,
343  TEXT_TR_FLAG= 5730, // TR flag ("TR"), char
344  TEXT_TR_FLAG_LEN= 2,
345  TEXT_TR= 5734, // TR, char
346  TEXT_TR_LEN= 7,
347  TEXT_TE_FLAG= 5742, // TE flag ("TE"), char
348  TEXT_TE_FLAG_LEN= 2,
349  TEXT_TE= 5746, // TE, char
350  TEXT_TE_LEN= 5,
351  TEXT_ECHO_NUM= 5752, // Echo number, char
352  TEXT_ECHO_NUM_LEN= 1,
353  TEXT_THCK_FLAG= 5790, // SLice thickness flag ("SL"), char
354  TEXT_THCK_FLAG_LEN= 2,
355  TEXT_SLICE_THCK= 5794, // Slice thickness
356  TEXT_SLICE_THCK_LEN= 7,
357  TEXT_POS_FLAG= 5802, // Slice postion flag ("SP"), char
358  TEXT_POS_FLAG_LEN= 2,
359  TEXT_SLICE_POS= 5806, // Slice postion, char
360  TEXT_SLICE_POS_LEN= 7,
361  TEXT_ANGLE_FLAG1= 5814, // Angle flag 1 ("Sag","Cor",or,"Tra"), char
362  TEXT_ANGLE_FLAG1_LEN= 3,
363  TEXT_ANGLE_FLAG2= 5817, // Angle flag 2 ("<", or ">"), char
364  TEXT_ANGLE_FLAG2_LEN= 1,
365  TEXT_ANGLE_FLAG3= 5818, // Angle flag 3 ("Sag","Cor",or,"Tra"), char
366  TEXT_ANGLE_FLAG3_LEN= 3,
367  TEXT_ANGLE= 5821, // Angle, char
368  TEXT_ANGLE_LEN= 4,
369  TEXT_FOV_FLAG= 5838, // FOV flag ("FOV"), char
370  TEXT_FOV_FLAG_LEN= 3,
371  TEXT_FOVH= 5842, // Horizontal FOV, char
372  TEXT_FOVH_LEN= 3,
373  TEXT_FOVV= 5846, // Vertical FOV, char
374  TEXT_FOVV_LEN= 3,
375  TEXT_TABLEPOS_FLAG= 5874, // Table Postion flag ("TP"), char
376  TEXT_TABLEPOS_FLAG_LEN= 2,
377  TEXT_TABLE_POS= 5878, // Table postion
378  TEXT_TABLE_POS_LEN= 7,
379  TEXT_STUDY_FLAG= 5938, // Study flag ("STUDY"), char
380  TEXT_STUDY_FLAG_LEN= 5,
381  TEXT_STUDY_NUM= 5943, // Study number, char
382  TEXT_STUDY_NUM_LEN= 2,
383  TEXT_DOB_DAY= 5956, // Date of Birth - day, char
384  TEXT_DOB_DAY_LEN= 2,
385  TEXT_DOB_MONTH= 5959, // Date of Birth - month, char
386  TEXT_DOB_MONTH_LEN= 3,
387  TEXT_DOB_YEAR= 5963, // Date of Birth - year, char
388  TEXT_DOB_YEAR_LEN= 4,
389  TEXT_STUDY_FLAG2= 5992, // Study flag 2 ("STU"), char
390  TEXT_STUDY_FLAG2_LEN= 3,
391  TEXT_IMAGE_FLAG2= 5996, // Image flag 2 ("IMA"), char
392  TEXT_IMAGE_FLAG2_LEN= 3,
393  TEXT_STUDY_NUM2= 5999, // Study number 2, char
394  TEXT_STUDY_NUM2_LEN= 2,
395  TEXT_IMAGE_NUM2= 6002, // Image number 2, char
396  TEXT_IMAGE_NUM2_LEN= 2,
397  TEXT_IMAGE_NUM3= 6013, // Image number 3, char
398  TEXT_IMAGE_NUM3_LEN= 5,
399  TEXT_MODEL_NAME= 6031, // Model Name, char
400  TEXT_MODEL_NAME_LEN= 15,
401  TEXT_PAT_NAME= 6058, // Patient Name, char
402  TEXT_PAT_NAME_LEN= 25,
403  TEXT_START_HOUR= 6085, // Scan start time - hour, char
404  TEXT_START_HOUR_LEN= 2,
405  TEXT_START_MIN= 6088, // Scan start time - minute, char
406  TEXT_START_MIN_LEN= 2,
407  TEXT_START_SEC= 6091, // Scan start time - second, char
408  TEXT_START_SEC_LEN= 2,
409  HDR_TOTAL_LENGTH= 6144 // Total length of Siemens Header
410  } SiemensVisionHeaderInfo;
411  SiemensVisionImageIO(const Self&); //purposely not implemented
412  void operator=(const Self&); //purposely not implemented
413 };
414 
415 } // end namespace itk
416 
417 #endif // __itkSiemensVisionImageIO_h

Generated at Sun Feb 3 2013 00:06:53 for Orfeo Toolbox with doxygen 1.8.1.1