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