core
vil
file_formats
vil_dicom_header.h
Go to the documentation of this file.
1
#ifndef vil_dicom_header_h_
2
#define vil_dicom_header_h_
3
//:
4
// \file
5
// \brief DICOM Header reader and writer.
6
// \author Chris Wolstenholme - Manchester
7
// Modified by Ian Scott to work with vil loader.
8
9
#include <ostream>
10
#include <string>
11
#include <vector>
12
#ifdef _MSC_VER
13
# include <vcl_msvc_warnings.h>
14
#endif
15
#include <vxl_config.h>
16
#include <
vil/vil_stream.h
>
17
18
//: DICOM types
19
// Defines the type of the dicom file being loaded. A
20
// dicom file can be a Part10 file a non-Part10 file or an unknown
21
// file type (possibly not dicom)
22
23
enum
vil_dicom_header_type
24
{
25
VIL_DICOM_HEADER_DTUNKNOWN
=0,
/*!< Value for unknown dicom types */
26
VIL_DICOM_HEADER_DTPART10
,
/*!< Value for Part10 dicom files */
27
VIL_DICOM_HEADER_DTNON_PART10
/*!< Value for non Part10 dicom files */
28
};
29
30
//: Endian types
31
enum
vil_dicom_header_endian
32
{
33
VIL_DICOM_HEADER_DEUNKNOWN
=0,
/*!< If the endian is unknown */
34
VIL_DICOM_HEADER_DELITTLEENDIAN
,
/*!< Value for little endian */
35
VIL_DICOM_HEADER_DEBIGENDIAN
/*!< Value for big endian */
36
};
37
38
//: Encapsulated image types
39
enum
vil_dicom_header_image_type
40
{
41
VIL_DICOM_HEADER_DITUNKNOWN
=0,
/*!< Value for unknown (or non-encapsulated) file types */
42
VIL_DICOM_HEADER_DITJPEGBASE
,
/*!< Value for encapsulated jpeg baseline files */
43
VIL_DICOM_HEADER_DITJPEGEXTLOSSY
,
/*!< Value for encapsulated jpeg, extended lossy files */
44
VIL_DICOM_HEADER_DITJPEGSPECNH
,
/*!< Value for encapsulated jpeg, spectral selection non-hierarchical files */
45
VIL_DICOM_HEADER_DITJPEGFULLNH
,
/*!< Value for encapsulated jpeg, full progression non-hierarchical files */
46
VIL_DICOM_HEADER_DITJPEGLOSSLNH
,
/*!< Value for encapsulated jpeg, lossless non-hierarchical files */
47
VIL_DICOM_HEADER_DITJPEGEXTHIER
,
/*!< Value for encapsulated jpeg, extended hierarchical files */
48
VIL_DICOM_HEADER_DITJPEGSPECHIER
,
/*!< Value for encapsulated jpeg, spectral selection, hierarchical files */
49
VIL_DICOM_HEADER_DITJPEGFULLHIER
,
/*!< Value for encapsulated jpeg, full progression, hierarchical files */
50
VIL_DICOM_HEADER_DITJPEGLOSSLHIER
,
/*!< Value for encapsulated jpeg, lossless, hierarchical files */
51
VIL_DICOM_HEADER_DITJPEGLOSSLDEF
,
/*!< Value for encapsulated jpeg, default lossless files */
52
VIL_DICOM_HEADER_DITRLE
/*!< Value for encapsulated RLE files */
53
};
54
55
// Max size (number of groups/elements)
56
constexpr
unsigned
VIL_DICOM_HEADER_MAXHEADERSIZE
= 100;
57
58
// Define the dicom groups
59
const
vxl_uint_16
VIL_DICOM_HEADER_COMMANDGROUP
=0x0000;
60
const
vxl_uint_16
VIL_DICOM_HEADER_METAFILEGROUP
=0x0002;
61
const
vxl_uint_16
VIL_DICOM_HEADER_BASICDIRGROUP
=0x0004;
62
const
vxl_uint_16
VIL_DICOM_HEADER_IDENTIFYINGGROUP
=0x0008;
63
const
vxl_uint_16
VIL_DICOM_HEADER_PATIENTINFOGROUP
=0x0010;
64
const
vxl_uint_16
VIL_DICOM_HEADER_ACQUISITIONGROUP
=0x0018;
65
const
vxl_uint_16
VIL_DICOM_HEADER_RELATIONSHIPGROUP
=0x0020;
66
const
vxl_uint_16
VIL_DICOM_HEADER_IMAGEGROUP
=0x0028;
67
const
vxl_uint_16
VIL_DICOM_HEADER_STUDYGROUP
=0x0032;
68
const
vxl_uint_16
VIL_DICOM_HEADER_VISITGROUP
=0x0038;
69
const
vxl_uint_16
VIL_DICOM_HEADER_WAVEFORMGROUP
=0x003a;
70
const
vxl_uint_16
VIL_DICOM_HEADER_PROCEDUREGROUP
=0x0040;
71
const
vxl_uint_16
VIL_DICOM_HEADER_DEVICEGROUP
=0x0050;
72
const
vxl_uint_16
VIL_DICOM_HEADER_NMIMAGEGROUP
=0x0054;
73
const
vxl_uint_16
VIL_DICOM_HEADER_MEDIAGROUP
=0x0088;
74
const
vxl_uint_16
VIL_DICOM_HEADER_BASICFILMSESSIONGROUP
=0x2000;
75
const
vxl_uint_16
VIL_DICOM_HEADER_BASICFILMBOXGROUP
=0x2010;
76
const
vxl_uint_16
VIL_DICOM_HEADER_BASICIMAGEBOXGROUP
=0x2020;
77
const
vxl_uint_16
VIL_DICOM_HEADER_BASICANNOTATIONBOXGROUP
=0x2030;
78
const
vxl_uint_16
VIL_DICOM_HEADER_BASICIMAGEOVERLAYBOXGROUP
=0x2040;
79
const
vxl_uint_16
VIL_DICOM_HEADER_PRINTJOBGROUP
=0x2100;
80
const
vxl_uint_16
VIL_DICOM_HEADER_PRINTERGROUP
=0x2110;
81
const
vxl_uint_16
VIL_DICOM_HEADER_TEXTGROUP
=0x4000;
82
const
vxl_uint_16
VIL_DICOM_HEADER_RESULTSGROUP
=0x4008;
83
const
vxl_uint_16
VIL_DICOM_HEADER_CURVEGROUP
=0x5000;
84
const
vxl_uint_16
VIL_DICOM_HEADER_OVERLAYGROUP
=0x6000;
85
const
vxl_uint_16
VIL_DICOM_HEADER_PIXELGROUP
=0x7fe0;
86
const
vxl_uint_16
VIL_DICOM_HEADER_PADGROUP
=0xfffc;
87
const
vxl_uint_16
VIL_DICOM_HEADER_DELIMITERGROUP
=0xfffe;
88
89
const
vxl_uint_16
VIL_DICOM_HEADER_NSPHILIPSGROUP
=0x2005;
90
91
// Useful elements of the Meta File group
92
const
vxl_uint_16
VIL_DICOM_HEADER_MFGROUPLENGTH
=0x0000;
93
const
vxl_uint_16
VIL_DICOM_HEADER_MFTRANSFERSYNTAX
=0x0010;
94
95
// Useful elements of the Identifying group
96
const
vxl_uint_16
VIL_DICOM_HEADER_IDGROUPLENGTH
=0x0000;
// UL
97
const
vxl_uint_16
VIL_DICOM_HEADER_IDLENGTHTOEND
=0x0001;
// RET
98
const
vxl_uint_16
VIL_DICOM_HEADER_IDSPECIFICCHARACTER
=0x0005;
// CS
99
const
vxl_uint_16
VIL_DICOM_HEADER_IDIMAGETYPE
=0x0008;
// CS
100
const
vxl_uint_16
VIL_DICOM_HEADER_IDSOPCLASSID
=0x0016;
// UI
101
const
vxl_uint_16
VIL_DICOM_HEADER_IDSOPINSTANCEID
=0x0018;
// UI
102
const
vxl_uint_16
VIL_DICOM_HEADER_IDSTUDYDATE
=0x0020;
// DA
103
const
vxl_uint_16
VIL_DICOM_HEADER_IDSERIESDATE
=0x0021;
// DA
104
const
vxl_uint_16
VIL_DICOM_HEADER_IDACQUISITIONDATE
=0x0022;
// DA
105
const
vxl_uint_16
VIL_DICOM_HEADER_IDIMAGEDATE
=0x0023;
// DA
106
const
vxl_uint_16
VIL_DICOM_HEADER_IDSTUDYTIME
=0x0030;
// TM
107
const
vxl_uint_16
VIL_DICOM_HEADER_IDSERIESTIME
=0x0031;
// TM
108
const
vxl_uint_16
VIL_DICOM_HEADER_IDACQUISITIONTIME
=0x0032;
// TM
109
const
vxl_uint_16
VIL_DICOM_HEADER_IDIMAGETIME
=0x0033;
// TM
110
const
vxl_uint_16
VIL_DICOM_HEADER_IDACCESSIONNUMBER
=0x0050;
// SH
111
const
vxl_uint_16
VIL_DICOM_HEADER_IDMODALITY
=0x0060;
// CS
112
const
vxl_uint_16
VIL_DICOM_HEADER_IDMANUFACTURER
=0x0070;
// LO
113
const
vxl_uint_16
VIL_DICOM_HEADER_IDINSTITUTIONNAME
=0x0080;
// LO
114
const
vxl_uint_16
VIL_DICOM_HEADER_IDINSTITUTIONADDRESS
=0x0081;
// ST
115
const
vxl_uint_16
VIL_DICOM_HEADER_IDREFERRINGPHYSICIAN
=0x0090;
// PN
116
const
vxl_uint_16
VIL_DICOM_HEADER_IDSTATIONNAME
=0x1010;
// SH
117
const
vxl_uint_16
VIL_DICOM_HEADER_IDSTUDYDESCRIPTION
=0x1030;
// LO
118
const
vxl_uint_16
VIL_DICOM_HEADER_IDSERIESDESCRIPTION
=0x103E;
// LO
119
const
vxl_uint_16
VIL_DICOM_HEADER_IDATTENDINGPHYSICIAN
=0x1050;
// PN
120
const
vxl_uint_16
VIL_DICOM_HEADER_IDOPERATORNAME
=0x1070;
// PN
121
const
vxl_uint_16
VIL_DICOM_HEADER_IDMANUFACTURERMODEL
=0x1090;
// LO
122
123
// Useful elements from the Patient Info group
124
const
vxl_uint_16
VIL_DICOM_HEADER_PIGROUPLENGTH
=0x0000;
// UL
125
const
vxl_uint_16
VIL_DICOM_HEADER_PIPATIENTNAME
=0x0010;
// PN
126
const
vxl_uint_16
VIL_DICOM_HEADER_PIPATIENTID
=0x0020;
// LO
127
const
vxl_uint_16
VIL_DICOM_HEADER_PIPATIENTBIRTHDATE
=0x0030;
// DA
128
const
vxl_uint_16
VIL_DICOM_HEADER_PIPATIENTSEX
=0x0040;
// CS
129
const
vxl_uint_16
VIL_DICOM_HEADER_PIPATIENTAGE
=0x1010;
// AS
130
const
vxl_uint_16
VIL_DICOM_HEADER_PIPATIENTWEIGHT
=0x1030;
// DS
131
const
vxl_uint_16
VIL_DICOM_HEADER_PIPATIENTHISTORY
=0x21B0;
// LT
132
133
// Useful elements from the Acquisition group
134
const
vxl_uint_16
VIL_DICOM_HEADER_AQSCANNINGSEQUENCE
=0x0020;
// CS
135
const
vxl_uint_16
VIL_DICOM_HEADER_AQSEQUENCEVARIANT
=0x0021;
// CS
136
const
vxl_uint_16
VIL_DICOM_HEADER_AQSCANOPTIONS
=0x0022;
// CS
137
const
vxl_uint_16
VIL_DICOM_HEADER_AQMRACQUISITIONTYPE
=0x0023;
// CS
138
const
vxl_uint_16
VIL_DICOM_HEADER_AQSEQUENCENAME
=0x0024;
// SH
139
const
vxl_uint_16
VIL_DICOM_HEADER_AQANGIOFLAG
=0x0025;
// CS
140
const
vxl_uint_16
VIL_DICOM_HEADER_AQSLICETHICKNESS
=0x0050;
// DS
141
const
vxl_uint_16
VIL_DICOM_HEADER_AQREPETITIONTIME
=0x0080;
// DS
142
const
vxl_uint_16
VIL_DICOM_HEADER_AQECHOTIME
=0x0081;
// DS
143
const
vxl_uint_16
VIL_DICOM_HEADER_AQINVERSIONTIME
=0x0082;
// DS
144
const
vxl_uint_16
VIL_DICOM_HEADER_AQNUMBEROFAVERAGES
=0x0083;
// DS
145
const
vxl_uint_16
VIL_DICOM_HEADER_AQECHONUMBERS
=0x0086;
// IS
146
const
vxl_uint_16
VIL_DICOM_HEADER_AQMAGNETICFIELDSTRENGTH
=0x0087;
// DS
147
const
vxl_uint_16
VIL_DICOM_HEADER_AQSLICESPACING
=0x0088;
// DS
148
const
vxl_uint_16
VIL_DICOM_HEADER_AQECHOTRAINLENGTH
=0x0091;
// IS
149
const
vxl_uint_16
VIL_DICOM_HEADER_AQPIXELBANDWIDTH
=0x0095;
// DS
150
const
vxl_uint_16
VIL_DICOM_HEADER_AQSOFTWAREVERSION
=0x1020;
// LO
151
const
vxl_uint_16
VIL_DICOM_HEADER_AQPROTOCOLNAME
=0x1030;
// LO
152
const
vxl_uint_16
VIL_DICOM_HEADER_AQTRIGGERTIME
=0x1060;
// DS
153
const
vxl_uint_16
VIL_DICOM_HEADER_AQHEARTRATE
=0x1088;
// IS
154
const
vxl_uint_16
VIL_DICOM_HEADER_AQCARDIACNUMBEROFIMAGES
=0x1090;
// IS
155
const
vxl_uint_16
VIL_DICOM_HEADER_AQTRIGGERWINDOW
=0x1094;
// IS
156
const
vxl_uint_16
VIL_DICOM_HEADER_AQRECONTRUCTIONDIAMETER
=0x1100;
// DS
157
const
vxl_uint_16
VIL_DICOM_HEADER_AQIMAGERPIXELSPACING
=0x1164;
// DS
158
const
vxl_uint_16
VIL_DICOM_HEADER_AQRECEIVINGCOIL
=0x1250;
// SH
159
const
vxl_uint_16
VIL_DICOM_HEADER_AQPHASEENCODINGDIRECTION
=0x1312;
// CS
160
const
vxl_uint_16
VIL_DICOM_HEADER_AQFLIPANGLE
=0x1314;
// DS
161
const
vxl_uint_16
VIL_DICOM_HEADER_AQSAR
=0x1316;
// DS
162
const
vxl_uint_16
VIL_DICOM_HEADER_AQPATIENTPOSITION
=0x5100;
// CS
163
164
// Useful elements from the Relationship group
165
const
vxl_uint_16
VIL_DICOM_HEADER_RSSTUDYINSTANCEUID
=0x000D;
// UI
166
const
vxl_uint_16
VIL_DICOM_HEADER_RSSERIESINSTANCEUID
=0x000E;
// UI
167
const
vxl_uint_16
VIL_DICOM_HEADER_RSSTUDYID
=0x0010;
// SH
168
const
vxl_uint_16
VIL_DICOM_HEADER_RSSERIESNUMBER
=0x0011;
// IS
169
const
vxl_uint_16
VIL_DICOM_HEADER_RSAQUISITIONNUMBER
=0x0012;
// IS
170
const
vxl_uint_16
VIL_DICOM_HEADER_RSIMAGENUMBER
=0x0013;
// IS
171
const
vxl_uint_16
VIL_DICOM_HEADER_RSPATIENTORIENTATION
=0x0020;
// CS
172
const
vxl_uint_16
VIL_DICOM_HEADER_RSIMAGEPOSITION
=0x0032;
// DS
173
const
vxl_uint_16
VIL_DICOM_HEADER_RSIMAGEORIENTATION
=0x0037;
// DS
174
const
vxl_uint_16
VIL_DICOM_HEADER_RSFRAMEOFREFERENCEUID
=0x0052;
// UI
175
const
vxl_uint_16
VIL_DICOM_HEADER_RSIMAGESINACQUISITION
=0x1002;
// IS
176
const
vxl_uint_16
VIL_DICOM_HEADER_RSPOSITIONREFERENCE
=0x1040;
// LO
177
const
vxl_uint_16
VIL_DICOM_HEADER_RSSLICELOCATION
=0x1041;
// DS
178
const
vxl_uint_16
VIL_DICOM_HEADER_RSIMAGECOMMENTS
=0x4000;
// LT
179
180
// Useful elements from the Image group
181
const
vxl_uint_16
VIL_DICOM_HEADER_IMSAMPLESPERPIXEL
=0x0002;
// US
182
const
vxl_uint_16
VIL_DICOM_HEADER_IMPHOTOMETRICINTERP
=0x0004;
// CS
183
const
vxl_uint_16
VIL_DICOM_HEADER_IMROWS
=0x0010;
// US
184
const
vxl_uint_16
VIL_DICOM_HEADER_IMCOLUMNS
=0x0011;
// US
185
const
vxl_uint_16
VIL_DICOM_HEADER_IMPLANES
=0x0012;
// US
186
const
vxl_uint_16
VIL_DICOM_HEADER_IMPIXELSPACING
=0x0030;
// DS
187
const
vxl_uint_16
VIL_DICOM_HEADER_IMBITSALLOCATED
=0x0100;
// US
188
const
vxl_uint_16
VIL_DICOM_HEADER_IMBITSSTORED
=0x0101;
// US
189
const
vxl_uint_16
VIL_DICOM_HEADER_IMHIGHBIT
=0x0102;
// US
190
const
vxl_uint_16
VIL_DICOM_HEADER_IMPIXELREPRESENTATION
=0x0103;
// US
191
const
vxl_uint_16
VIL_DICOM_HEADER_IMSMALLIMPIXELVALUE
=0x0106;
// US
192
const
vxl_uint_16
VIL_DICOM_HEADER_IMLARGEIMPIXELVALUE
=0x0107;
// US
193
const
vxl_uint_16
VIL_DICOM_HEADER_IMPIXELPADDINGVALUE
=0x0120;
// US
194
const
vxl_uint_16
VIL_DICOM_HEADER_IMWINDOWCENTER
=0x1050;
// DS
195
const
vxl_uint_16
VIL_DICOM_HEADER_IMWINDOWWIDTH
=0x1051;
// DS
196
const
vxl_uint_16
VIL_DICOM_HEADER_IMRESCALEINTERCEPT
=0x1052;
// DS
197
const
vxl_uint_16
VIL_DICOM_HEADER_IMRESCALESLOPE
=0x1053;
// DS
198
199
// Useful elements from the Pixel group
200
const
vxl_uint_16
VIL_DICOM_HEADER_PXGROUPLENGTH
=0x0000;
// UL
201
const
vxl_uint_16
VIL_DICOM_HEADER_PXPIXELDATA
=0x0010;
// OW
202
203
// Tags needed in the Delimiter group
204
const
vxl_uint_16
VIL_DICOM_HEADER_DLITEM
=0xe000;
205
const
vxl_uint_16
VIL_DICOM_HEADER_DLITEMDELIMITATIONITEM
=0xe00d;
206
const
vxl_uint_16
VIL_DICOM_HEADER_DLSEQDELIMITATIONITEM
=0xe0dd;
207
208
// Tags needed in the Procedure group
209
const
vxl_uint_16
VIL_DICOM_HEADER_PRREALWORLDVALUEINTERCEPT
=0x9224;
// FD
210
const
vxl_uint_16
VIL_DICOM_HEADER_PRREALWORLDVALUESLOPE
=0x9225;
// FD
211
const
vxl_uint_16
VIL_DICOM_HEADER_EXPOSEDAREA
=0x0303;
// US
212
213
// Tags from non-standard Philips group
214
const
vxl_uint_16
VIL_DICOM_HEADER_NSPHILIPSPRIVATEINTERCEPT
=0x100d;
// DS
215
const
vxl_uint_16
VIL_DICOM_HEADER_NSPHILIPSPRIVATESLOPE
=0x100e;
// DS
216
217
// Defines for the Value Representations for Part10 meta header
218
const
char
*
const
VIL_DICOM_HEADER_APPLICATIONENTRY
=
"AE"
;
219
const
char
*
const
VIL_DICOM_HEADER_AGESTRING
=
"AS"
;
220
const
char
*
const
VIL_DICOM_HEADER_ATTRIBUTETAG
=
"AT"
;
221
const
char
*
const
VIL_DICOM_HEADER_CODESTRING
=
"CS"
;
222
const
char
*
const
VIL_DICOM_HEADER_DATE
=
"DA"
;
223
const
char
*
const
VIL_DICOM_HEADER_DECIMALSTRING
=
"DS"
;
224
const
char
*
const
VIL_DICOM_HEADER_DATETIME
=
"DT"
;
225
const
char
*
const
VIL_DICOM_HEADER_FLOATINGPOINTDOUBLE
=
"FD"
;
226
const
char
*
const
VIL_DICOM_HEADER_FLOATINGPOINTSINGLE
=
"FL"
;
227
const
char
*
const
VIL_DICOM_HEADER_INTEGERSTRING
=
"IS"
;
228
const
char
*
const
VIL_DICOM_HEADER_LONGSTRING
=
"LO"
;
229
const
char
*
const
VIL_DICOM_HEADER_LONGTEXT
=
"LT"
;
230
const
char
*
const
VIL_DICOM_HEADER_OTHERBYTE
=
"OB"
;
231
const
char
*
const
VIL_DICOM_HEADER_OTHERWORD
=
"OW"
;
232
const
char
*
const
VIL_DICOM_HEADER_PERSONNAME
=
"PN"
;
233
const
char
*
const
VIL_DICOM_HEADER_SHORTSTRING
=
"SH"
;
234
const
char
*
const
VIL_DICOM_HEADER_SIGNEDLONG
=
"SL"
;
235
const
char
*
const
VIL_DICOM_HEADER_SEQUENCE
=
"SQ"
;
236
const
char
*
const
VIL_DICOM_HEADER_SIGNEDSHORT
=
"SS"
;
237
const
char
*
const
VIL_DICOM_HEADER_SHORTTEXT
=
"ST"
;
238
const
char
*
const
VIL_DICOM_HEADER_TIME
=
"TM"
;
239
const
char
*
const
VIL_DICOM_HEADER_UNIQUEIDENTIFIER
=
"UI"
;
240
const
char
*
const
VIL_DICOM_HEADER_UNSIGNEDLONG
=
"UL"
;
241
const
char
*
const
VIL_DICOM_HEADER_UNKNOWN
=
"UN"
;
242
const
char
*
const
VIL_DICOM_HEADER_UNSIGNEDSHORT
=
"US"
;
243
const
char
*
const
VIL_DICOM_HEADER_UNLIMITEDTEXT
=
"UT"
;
244
245
// Enumerations of all VR types
246
enum
vil_dicom_header_vr_type
247
{
248
vil_dicom_header_AE
,
249
vil_dicom_header_AS
,
250
vil_dicom_header_AT
,
251
vil_dicom_header_CS
,
252
vil_dicom_header_DA
,
253
vil_dicom_header_DS
,
254
vil_dicom_header_DT
,
255
vil_dicom_header_FD
,
256
vil_dicom_header_FL
,
257
vil_dicom_header_IS
,
258
vil_dicom_header_LO
,
259
vil_dicom_header_LT
,
260
vil_dicom_header_OB
,
261
vil_dicom_header_OW
,
262
vil_dicom_header_PN
,
263
vil_dicom_header_SH
,
264
vil_dicom_header_SL
,
265
vil_dicom_header_SQ
,
266
vil_dicom_header_SS
,
267
vil_dicom_header_ST
,
268
vil_dicom_header_TM
,
269
vil_dicom_header_UI
,
270
vil_dicom_header_UL
,
271
vil_dicom_header_UN
,
272
vil_dicom_header_US
,
273
vil_dicom_header_UT
274
};
275
276
// maps VR types to C++ types
277
template
<
int
T
/* enum vil_dicom_header_vr_type */
>
278
struct
vil_dicom_header_type_of
279
{
280
typedef
std::string
type
;
// preferred C++ type for this VR (specialised below)
281
};
282
283
#define vr_macro( VR, CPPT ) \
284
template <> struct vil_dicom_header_type_of<VR> { typedef CPPT type; }
285
286
vr_macro
(
vil_dicom_header_AE
, std::string );
287
vr_macro
(
vil_dicom_header_AS
, std::string );
288
vr_macro
(
vil_dicom_header_AT
, std::string );
289
vr_macro
(
vil_dicom_header_CS
, std::string );
290
vr_macro
(
vil_dicom_header_DA
,
long
);
291
vr_macro
(
vil_dicom_header_DS
,
float
);
292
vr_macro
(
vil_dicom_header_FD
,
double
);
293
vr_macro
(
vil_dicom_header_FL
,
float
);
294
vr_macro
(
vil_dicom_header_IS
,
long
);
295
vr_macro
(
vil_dicom_header_LO
, std::string );
296
vr_macro
(
vil_dicom_header_LT
, std::string );
297
vr_macro
(
vil_dicom_header_OB
, std::string );
298
vr_macro
(
vil_dicom_header_OW
, std::string );
299
vr_macro
(
vil_dicom_header_PN
, std::string );
300
vr_macro
(
vil_dicom_header_SH
, std::string );
301
vr_macro
(
vil_dicom_header_SL
, vxl_sint_32 );
302
vr_macro
(
vil_dicom_header_SQ
, std::string );
303
vr_macro
(
vil_dicom_header_SS
, vxl_sint_16 );
304
vr_macro
(
vil_dicom_header_ST
, std::string );
305
vr_macro
(
vil_dicom_header_TM
,
float
);
306
vr_macro
(
vil_dicom_header_UI
, std::string );
307
vr_macro
(
vil_dicom_header_UL
, vxl_uint_32 );
308
vr_macro
(
vil_dicom_header_UN
, std::string );
309
vr_macro
(
vil_dicom_header_US
, vxl_uint_16 );
310
vr_macro
(
vil_dicom_header_UT
, std::string );
311
#undef vr_macro
312
313
314
const
vxl_uint_32
VIL_DICOM_HEADER_ALLSET
= 0xffffffff;
315
316
// For determining the endian of the file or the transfer type (JPEG or RLE)
317
const
char
*
const
VIL_DICOM_HEADER_IMPLICITLITTLE
=
"1.2.840.10008.1.2"
;
318
const
char
*
const
VIL_DICOM_HEADER_EXPLICITLITTLE
=
"1.2.840.10008.1.2.1"
;
319
const
char
*
const
VIL_DICOM_HEADER_EXPLICITBIG
=
"1.2.840.10008.1.2.2"
;
320
const
char
*
const
VIL_DICOM_HEADER_JPEGBASELINE_P1
=
"1.2.840.10008.1.2.4.50"
;
321
const
char
*
const
VIL_DICOM_HEADER_JPEGDEFLOSSY_P2_4
=
"1.2.840.10008.1.2.4.51"
;
322
const
char
*
const
VIL_DICOM_HEADER_JPEGEXTENDED_P3_5
=
"1.2.840.10008.1.2.4.52"
;
323
const
char
*
const
VIL_DICOM_HEADER_JPEGSPECTRAL_P6_8
=
"1.2.840.10008.1.2.4.53"
;
324
const
char
*
const
VIL_DICOM_HEADER_JPEGSPECTRAL_P7_9
=
"1.2.840.10008.1.2.4.54"
;
325
const
char
*
const
VIL_DICOM_HEADER_JPEGFULLPROG_P10_12
=
"1.2.840.10008.1.2.4.55"
;
326
const
char
*
const
VIL_DICOM_HEADER_JPEGFULLPROG_P11_13
=
"1.2.840.10008.1.2.4.56"
;
327
const
char
*
const
VIL_DICOM_HEADER_JPEGLOSSLESS_P14
=
"1.2.840.10008.1.2.4.57"
;
328
const
char
*
const
VIL_DICOM_HEADER_JPEGLOSSLESS_P15
=
"1.2.840.10008.1.2.4.58"
;
329
const
char
*
const
VIL_DICOM_HEADER_JPEGEXTHIER_P16_18
=
"1.2.840.10008.1.2.4.59"
;
330
const
char
*
const
VIL_DICOM_HEADER_JPEGEXTHIER_P17_19
=
"1.2.840.10008.1.2.4.60"
;
331
const
char
*
const
VIL_DICOM_HEADER_JPEGSPECHIER_P20_22
=
"1.2.840.10008.1.2.4.61"
;
332
const
char
*
const
VIL_DICOM_HEADER_JPEGSPECHIER_P21_23
=
"1.2.840.10008.1.2.4.62"
;
333
const
char
*
const
VIL_DICOM_HEADER_JPEGFULLHIER_P24_26
=
"1.2.840.10008.1.2.4.63"
;
334
const
char
*
const
VIL_DICOM_HEADER_JPEGFULLHIER_P25_27
=
"1.2.840.10008.1.2.4.64"
;
335
const
char
*
const
VIL_DICOM_HEADER_JPEGLLESSHIER_P28
=
"1.2.840.10008.1.2.4.65"
;
336
const
char
*
const
VIL_DICOM_HEADER_JPEGLLESSHIER_P29
=
"1.2.840.10008.1.2.4.66"
;
337
const
char
*
const
VIL_DICOM_HEADER_JPEGLLESSDEF_P14_SV1
=
"1.2.840.10008.1.2.4.70"
;
338
const
char
*
const
VIL_DICOM_HEADER_RLELOSSLESS
=
"1.2.840.10008.1.2.5"
;
339
340
//: DICOM information read from the header
341
//
342
// This structure is filled when reading the header information from
343
// a dicom file. Each member relates to a field in the header part
344
// of the file.
345
346
struct
vil_dicom_header_info
347
{
348
// General info fields
349
bool
header_valid_
;
/*< True if the header was read ok, otherwise false */
350
vil_dicom_header_type
file_type_
;
/*< The type of dicom file */
351
vil_dicom_header_endian
sys_endian_
;
/*< The endian of the architecture */
352
vil_dicom_header_endian
file_endian_
;
/*< The endian of the file being read */
353
vil_dicom_header_image_type
image_type_
;
/*< The encapsulated (or not) image type */
354
355
// Identifying fields
356
vil_dicom_header_type_of<vil_dicom_header_CS>::type
image_id_type_
;
/*< The image type from the dicom header */
357
vil_dicom_header_type_of<vil_dicom_header_UI>::type
sop_cl_uid_
;
/*< The class unique id for the Service/Object Pair */
358
vil_dicom_header_type_of<vil_dicom_header_UI>::type
sop_in_uid_
;
/*< The instance uid for the SOP */
359
vil_dicom_header_type_of<vil_dicom_header_DA>::type
study_date_
;
/*< The date of the study */
360
vil_dicom_header_type_of<vil_dicom_header_DA>::type
series_date_
;
/*< The date this series was collected */
361
vil_dicom_header_type_of<vil_dicom_header_DA>::type
acquisition_date_
;
/*< The date of acquisition */
362
vil_dicom_header_type_of<vil_dicom_header_DA>::type
image_date_
;
/*< The date of this image */
363
vil_dicom_header_type_of<vil_dicom_header_TM>::type
study_time_
;
/*< The time of the study */
364
vil_dicom_header_type_of<vil_dicom_header_TM>::type
series_time_
;
/*< The time of the series */
365
vil_dicom_header_type_of<vil_dicom_header_TM>::type
acquisition_time_
;
/*< The time of acquisition */
366
vil_dicom_header_type_of<vil_dicom_header_TM>::type
image_time_
;
/*< The time of the image */
367
vil_dicom_header_type_of<vil_dicom_header_SH>::type
accession_number_
;
/*< The accession number for this image */
368
vil_dicom_header_type_of<vil_dicom_header_CS>::type
modality_
;
/*< The imaging modality */
369
vil_dicom_header_type_of<vil_dicom_header_LO>::type
manufacturer_
;
/*< The name of the scanner manufacturer */
370
vil_dicom_header_type_of<vil_dicom_header_LO>::type
institution_name_
;
/*< The name of the institution */
371
vil_dicom_header_type_of<vil_dicom_header_ST>::type
institution_addr_
;
/*< The address of the institution */
372
vil_dicom_header_type_of<vil_dicom_header_PN>::type
ref_phys_name_
;
/*< The name of the referring physician */
373
vil_dicom_header_type_of<vil_dicom_header_SH>::type
station_name_
;
/*< The name of the station used */
374
vil_dicom_header_type_of<vil_dicom_header_LO>::type
study_desc_
;
/*< A description of the study */
375
vil_dicom_header_type_of<vil_dicom_header_LO>::type
series_desc_
;
/*< A description of the series */
376
vil_dicom_header_type_of<vil_dicom_header_PN>::type
att_phys_name_
;
/*< The name of the attending physician */
377
vil_dicom_header_type_of<vil_dicom_header_PN>::type
operator_name_
;
/*< The name of the MR operator */
378
vil_dicom_header_type_of<vil_dicom_header_LO>::type
model_name_
;
/*< The name of the MR scanner model */
379
380
// Patient info
381
vil_dicom_header_type_of<vil_dicom_header_PN>::type
patient_name_
;
/*< Patient's name */
382
vil_dicom_header_type_of<vil_dicom_header_LO>::type
patient_id_
;
/*< Patient's ID */
383
vil_dicom_header_type_of<vil_dicom_header_DA>::type
patient_dob_
;
/*< The patient's date of birth */
384
vil_dicom_header_type_of<vil_dicom_header_CS>::type
patient_sex_
;
/*< The sex of the patient */
385
vil_dicom_header_type_of<vil_dicom_header_AS>::type
patient_age_
;
/*< The age of the patient */
386
vil_dicom_header_type_of<vil_dicom_header_DS>::type
patient_weight_
;
/*< The weight of the patient */
387
vil_dicom_header_type_of<vil_dicom_header_LT>::type
patient_hist_
;
/*< Any additional patient history */
388
389
// Acquisition Info
390
vil_dicom_header_type_of<vil_dicom_header_CS>::type
scanning_seq_
;
/*< A description of the scanning sequence */
391
vil_dicom_header_type_of<vil_dicom_header_CS>::type
sequence_var_
;
/*< A description of the sequence variant */
392
vil_dicom_header_type_of<vil_dicom_header_CS>::type
scan_options_
;
/*< A description of various scan options */
393
vil_dicom_header_type_of<vil_dicom_header_CS>::type
mr_acq_type_
;
/*< The acquisition type for this scan */
394
vil_dicom_header_type_of<vil_dicom_header_SH>::type
sequence_name_
;
/*< The name of the sequence */
395
vil_dicom_header_type_of<vil_dicom_header_CS>::type
angio_flag_
;
/*< The angio flag for this sequence */
396
vil_dicom_header_type_of<vil_dicom_header_DS>::type
slice_thickness_
;
/*< Slice thickness (for voxel size) */
397
vil_dicom_header_type_of<vil_dicom_header_DS>::type
repetition_time_
;
/*< Scan repetition time */
398
vil_dicom_header_type_of<vil_dicom_header_DS>::type
echo_time_
;
/*< Scan echo time */
399
vil_dicom_header_type_of<vil_dicom_header_DS>::type
inversion_time_
;
/*< Scan inversion time */
400
vil_dicom_header_type_of<vil_dicom_header_DS>::type
number_of_averages_
;
/*< The number of averages for this scan */
401
vil_dicom_header_type_of<vil_dicom_header_IS>::type
echo_numbers_
;
/*< The echo numbers for this scan */
402
vil_dicom_header_type_of<vil_dicom_header_DS>::type
mag_field_strength_
;
/*< The strength of the magnetic field */
403
vil_dicom_header_type_of<vil_dicom_header_IS>::type
echo_train_length_
;
/*< The length of the echo train */
404
vil_dicom_header_type_of<vil_dicom_header_DS>::type
pixel_bandwidth_
;
/*< The bandwidth of the pixels */
405
vil_dicom_header_type_of<vil_dicom_header_LO>::type
software_vers_
;
/*< Versions of the scanner software used */
406
vil_dicom_header_type_of<vil_dicom_header_LO>::type
protocol_name_
;
/*< The name of the protocol used */
407
vil_dicom_header_type_of<vil_dicom_header_DS>::type
trigger_time_
;
/*< The trigger time */
408
vil_dicom_header_type_of<vil_dicom_header_IS>::type
heart_rate_
;
/*< The patient's heart rate */
409
vil_dicom_header_type_of<vil_dicom_header_IS>::type
card_num_images_
;
/*< The cardiac number of images */
410
vil_dicom_header_type_of<vil_dicom_header_IS>::type
trigger_window_
;
/*< The trigger window for this image */
411
vil_dicom_header_type_of<vil_dicom_header_DS>::type
reconst_diameter_
;
/*< The reconstruction diameter */
412
vil_dicom_header_type_of<vil_dicom_header_DS>::type
imager_spacing_x_
;
/*< The sensor pixel spacing in x */
413
vil_dicom_header_type_of<vil_dicom_header_DS>::type
imager_spacing_y_
;
/*< The sensor pixel spacing in y */
414
vil_dicom_header_type_of<vil_dicom_header_SH>::type
receiving_coil_
;
/*< Details of the receiving coil */
415
vil_dicom_header_type_of<vil_dicom_header_CS>::type
phase_enc_dir_
;
/*< The phase encoding direction */
416
vil_dicom_header_type_of<vil_dicom_header_DS>::type
flip_angle_
;
/*< The flip angle */
417
vil_dicom_header_type_of<vil_dicom_header_DS>::type
sar_
;
/*< The specific absorption rate */
418
vil_dicom_header_type_of<vil_dicom_header_CS>::type
patient_pos_
;
/*< The position of the patient in the scanner */
419
420
// Relationship info
421
vil_dicom_header_type_of<vil_dicom_header_UI>::type
stud_ins_uid_
;
/*< The study instance unique id */
422
vil_dicom_header_type_of<vil_dicom_header_UI>::type
ser_ins_uid_
;
/*< The series instance unique id */
423
vil_dicom_header_type_of<vil_dicom_header_SH>::type
study_id_
;
/*< The id of this study */
424
vil_dicom_header_type_of<vil_dicom_header_IS>::type
series_number_
;
/*< The number of this series */
425
vil_dicom_header_type_of<vil_dicom_header_IS>::type
acquisition_number_
;
/*< The number of the acquisition */
426
vil_dicom_header_type_of<vil_dicom_header_IS>::type
image_number_
;
/*< The number of this image instance */
427
vil_dicom_header_type_of<vil_dicom_header_CS>::type
pat_orient_
;
/*< The orientation of the patient */
428
std::vector<vil_dicom_header_type_of<vil_dicom_header_DS>::type>
image_pos_
;
/*< The image position relative to the patient */
429
std::vector<vil_dicom_header_type_of<vil_dicom_header_DS>::type>
image_orient_
;
/*< The image orientation relative to the patient */
430
vil_dicom_header_type_of<vil_dicom_header_UI>::type
frame_of_ref_
;
/*< The frame of reference */
431
vil_dicom_header_type_of<vil_dicom_header_IS>::type
images_in_acq_
;
/*< Then number ot images in the acquisition */
432
vil_dicom_header_type_of<vil_dicom_header_LO>::type
pos_ref_ind_
;
/*< The position reference indicator */
433
vil_dicom_header_type_of<vil_dicom_header_DS>::type
slice_location_
;
/*< The location of the slice */
434
vil_dicom_header_type_of<vil_dicom_header_LT>::type
image_comments_
;
/*< The image comments */
435
436
// Image info
437
vil_dicom_header_type_of<vil_dicom_header_US>::type
pix_samps_
;
/*< The number of samples per pixel */
438
vil_dicom_header_type_of<vil_dicom_header_CS>::type
photo_interp_
;
/*< The photometric interpretation */
439
vil_dicom_header_type_of<vil_dicom_header_US>::type
size_x_
;
/*< The number of columns */
440
vil_dicom_header_type_of<vil_dicom_header_US>::type
size_y_
;
/*< The number of rows */
441
vil_dicom_header_type_of<vil_dicom_header_US>::type
size_z_
;
/*< The number of planes */
442
vil_dicom_header_type_of<vil_dicom_header_US>::type
high_bit_
;
/*< The bit used as the high bit */
443
vil_dicom_header_type_of<vil_dicom_header_US>::type
small_im_pix_val_
;
/*< The smallest image pixel value */
444
vil_dicom_header_type_of<vil_dicom_header_US>::type
large_im_pix_val_
;
/*< The largest image pixel value */
445
vil_dicom_header_type_of<vil_dicom_header_US>::type
pixel_padding_val_
;
/*< The value used for padding pixels */
446
vil_dicom_header_type_of<vil_dicom_header_DS>::type
window_centre_
;
/*< The value of the image window's centre */
447
vil_dicom_header_type_of<vil_dicom_header_DS>::type
window_width_
;
/*< The actual width of the image window */
448
449
// Info from the tags specifically for reading the image data
450
vil_dicom_header_type_of<vil_dicom_header_DS>::type
spacing_x_
;
/*< The pixel spacing in x */
451
vil_dicom_header_type_of<vil_dicom_header_DS>::type
spacing_y_
;
/*< The pixel spacing in y */
452
vil_dicom_header_type_of<vil_dicom_header_DS>::type
spacing_slice_
;
/*< The pixel spacing in z */
453
vil_dicom_header_type_of<vil_dicom_header_DS>::type
res_intercept_
;
/*< The image rescale intercept */
454
vil_dicom_header_type_of<vil_dicom_header_DS>::type
res_slope_
;
/*< The image rescale slope */
455
vil_dicom_header_type_of<vil_dicom_header_US>::type
pix_rep_
;
/*< The pixel representation (+/-) */
456
vil_dicom_header_type_of<vil_dicom_header_US>::type
stored_bits_
;
/*< The bits stored */
457
vil_dicom_header_type_of<vil_dicom_header_US>::type
allocated_bits_
;
/*< The bits allocated */
458
459
// Info from procedure group
460
vil_dicom_header_type_of<vil_dicom_header_FD>::type
real_world_value_intercept_
;
/*< The real world intercept value */
461
vil_dicom_header_type_of<vil_dicom_header_FD>::type
real_world_value_slope_
;
/*< The real world slope value */
462
vil_dicom_header_type_of<vil_dicom_header_US>::type
exposedarea_x_
;
/*< The exposed area in x */
463
vil_dicom_header_type_of<vil_dicom_header_US>::type
exposedarea_y_
;
/*< The exposed area in y */
464
465
// Non-standard info from Philips scanner
466
vil_dicom_header_type_of<vil_dicom_header_DS>::type
philips_private_intercept_
;
/*< The philips private intercept value */
467
vil_dicom_header_type_of<vil_dicom_header_DS>::type
philips_private_slope_
;
/*< The philips private scale value */
468
469
};
470
471
472
//: Clears a header info struct
473
// \relatesalso vil_dicom_header_info
474
void
vil_dicom_header_info_clear
(
vil_dicom_header_info
& info );
475
476
477
const
short
VIL_DICOM_HEADER_UNSPECIFIED
= -1;
478
const
unsigned
short
VIL_DICOM_HEADER_UNSPECIFIED_UNSIGNED
= (
unsigned
short) -1;
479
constexpr
double
VIL_DICOM_HEADER_DEFAULTSIZE
= 1.0;
480
const
float
VIL_DICOM_HEADER_DEFAULTSIZE_FLOAT
= 1.0f;
481
const
float
VIL_DICOM_HEADER_DEFAULTINTERCEPT
= 0.0f;
482
const
float
VIL_DICOM_HEADER_DEFAULTSLOPE
= 1.0f;
483
484
//: A class to read and write the header part of a dicom file
485
//
486
// This class reads and writes the header section of a dicom file,
487
// determining the type and storing the information in a dicom
488
// structure.
489
class
vil_dicom_header_format
490
{
491
public
:
492
493
vil_dicom_header_format
();
494
~vil_dicom_header_format
();
495
496
//: True if it is known DICOM format
497
bool
isDicomFormat
(
vil_stream
&);
498
499
//: Read the dicom header into a header struct
500
// Reads the header section of the dicom file and stores the
501
// result in a header struct, which it returns. When finished,
502
// the file stream should be pointing at the start of the image
503
// data
504
// \param fs The file stream to read - on exit points to the start of the image data
505
// \return A dicom header struct containing the info gained from the header
506
// \sa lastHeader(), headerValid(), last_read_() and info_valid_()
507
vil_dicom_header_info
readHeader
(
vil_stream
&fs);
508
509
//: Method to return the last struct of header info set
510
//
511
// The class holds a dicom header info struct containing the
512
// info from the last dicom file read.
513
// \return A dicom header struct containing the info gained from the last header read
514
vil_dicom_header_info
lastHeader
(
void
);
515
516
//: Method to indicate if the header info held is valid or not
517
//
518
// \return TRUE if the header info is valid, otherwise false
519
bool
headerValid
(
void
);
520
521
//: Return the current system endian
522
//
523
// \return The system endian for the architecture running the application
524
vil_dicom_header_endian
systemEndian
(
void
);
525
526
//: Return the endian of the header being read
527
//
528
// \return The endian of the file currently being read.
529
// \sa determineMetaInfo() and file_endian_()
530
531
vil_dicom_header_endian
fileEndian
(
void
);
532
533
//: Return any encapsulated image type
534
//
535
// \return The encapsulated image type of the file currently being read.
536
vil_dicom_header_image_type
imageType
(
void
);
537
538
private
:
539
540
//: Method to determine the file type
541
//
542
// \param fs The file stream for the image to test
543
// \return The dicom file type or unknown
544
vil_dicom_header_type
determineFileType
(
vil_stream
&fs);
545
546
//: Method to read the elements from the header
547
//
548
// This method fills the last_read_ header structure with
549
// the necessary fields
550
// \param fs The file stream to read from
551
// \sa readIdentifyingElements(), readPatientElements(),
552
// readAcquisitionElements(), readRelationshipElements(),
553
// readImageElements, readDelimiterElements(),
554
// readHeader() and last_read_()
555
void
readHeaderElements
(
vil_stream
&fs);
556
557
//: Method to read the identifying group's details
558
//
559
// Fills the identifying details in the last_read_ structure
560
// from the file header
561
// \param element The element being read in the identifying
562
// group
563
// \param dblock_size The size of the data block for this
564
// element
565
// \param fs The file stream to read from
566
// \sa readHeaderElements(), readPatientElements(),
567
// readAcquisitionElements(), readRelationshipElements(),
568
// readImageElements(), readDelimiterElements() and last_read_()
569
void
readIdentifyingElements
(
short
element,
int
dblock_size,
570
vil_stream
&fs);
571
572
//: Method to read the patient details
573
//
574
// Fills the patient details in the last_read_ structure from
575
// the file header
576
// \param element The element being read in the patient group
577
// \param dblock_size The size of the data block for this
578
// element
579
// \param fs The file stream to read from
580
// \sa readHeaderElements(), readIdentifyingElements(),
581
// readAcquisitionElements(), readRelationshipElements(),
582
// readImageElements(), readDelimiterElements() and last_read_()
583
void
readPatientElements
(
short
element,
int
dblock_size,
584
vil_stream
&fs);
585
586
//: Method to read the acquisition group's details
587
//
588
// Fills the acquisition details in the last_read_ structure
589
// from the file header
590
// \param element The element being read in the acquisition
591
// group
592
// \param dblock_size The size of the data block for this
593
// element
594
// \param fs The file stream to read from
595
// \sa readHeaderElements(), readIdentifyingElements(),
596
// readPatientElements(), readRelationshipElements(),
597
// readImageElements(), readDelimiterElements() and last_read_()
598
void
readAcquisitionElements
(
short
element,
int
dblock_size,
599
vil_stream
&fs);
600
601
//: Method to read the relationship group's details
602
//
603
// Fills the relationship details in the last_read_ structure
604
// from the file header
605
// \param element The element being read in the relationship
606
// group
607
// \param dblock_size The size of the data block for this
608
// element
609
// \param fs The file stream to read from
610
// \sa readHeaderElements(), readIdentifyingElements(),
611
// readPatientElements(), readAcquisitionElements(),
612
// readImageElements(), readDelimiterElements()
613
// and last_read_()
614
void
readRelationshipElements
(
short
element,
int
dblock_size,
615
vil_stream
&fs);
616
617
//: Method to read the image group's details
618
//
619
// Fills the image details in the last_read_ structure from
620
// the file header
621
// \param element The element being read in the image group
622
// \param dblock_size The size of the data block for this
623
// element
624
// \param fs The file stream to read from
625
// \sa readHeaderElements(), readIdentifyingElements(),
626
// readPatientElements(), readAcquisitionElements(),
627
// readRelationshipElements(), readDelimiterElements()
628
// and last_read_()
629
void
readImageElements
(
short
element,
int
dblock_size,
630
vil_stream
&fs);
631
632
//: Method to read the delimiter group's details
633
//
634
// Certain field in the delimiter group have no data block, and
635
// so should not be skipped. This method takes the appropriate
636
// action - to skip or not to skip
637
// \param element The element being read in the delimiter group
638
// \param dblock_size The size of the data block for this element
639
// \param fs The file stream to read from
640
// \sa readHeaderElements(), readIdentifyingElements(),
641
// readPatientElements(), readAcquisitionElements(),
642
// readRelationshipElements(), readImageElements()
643
// and last_read_()
644
void
readDelimiterElements
(
short
element,
int
dblock_size,
645
vil_stream
&fs);
646
647
//: Method to read the procedure group's details
648
//
649
// \param element The element being read in the image group
650
// \param dblock_size The size of the data block for this
651
// element
652
// \param fs The file stream to read from
653
// \sa readHeaderElements(), readIdentifyingElements(),
654
// readPatientElements(), readAcquisitionElements(),
655
// readRelationshipElements(), readDelimiterElements()
656
// readProcedureElements()
657
// and last_read_()
658
void
readProcedureElements
(
short
element,
int
dblock_size,
659
vil_stream
&fs);
660
661
//: Method to read the (non-standard, private) Philips group details
662
//
663
// \param element The element being read in the image group
664
// \param dblock_size The size of the data block for this
665
// element
666
// \param fs The file stream to read from
667
// \sa readHeaderElements(), readIdentifyingElements(),
668
// readPatientElements(), readAcquisitionElements(),
669
// readRelationshipElements(), readDelimiterElements()
670
// readProcedureElements(), readNSPhilipsElements()
671
// and last_read_()
672
void
readNSPhilipsElements
(
short
element,
int
dblock_size,
673
vil_stream
&fs);
674
675
//: Method to convert the Value Representation (VR) (if it exists)
676
//
677
// \param data_block Contains the VR or data block size (always
678
// holds the data block size on exit
679
// \param fs The file stream to read from
680
// \sa readHeaderElements()
681
bool
convertValueRepresentation
(
unsigned
int
&dblock_size,
682
vil_stream
&ifs);
683
684
//: Method to determine whether or not the actual pixel data has been reached
685
//
686
// \param group The current group to test
687
// \param element The element within that group
688
// \return TRUE if it is the pixel data, otherwise false
689
// \sa readHeaderElements()
690
bool
pixelDataFound
(
short
group,
short
element);
691
692
// Method to clear a header info struct
693
//
694
// \sa last_read_() and info_valid_()
695
void
clearInfo
(
void
);
696
697
//: Work out whether the current architecture is big or little endian
698
//
699
// \return The system endian value calculated
700
// \sa systemEndian() and endian_()
701
vil_dicom_header_endian
calculateEndian
(
void
);
702
703
//: Initialise all the necessary meta-file stuff
704
//
705
// \return The endian of the file
706
// \sa fileEndian(), file_endian_(), imageType(), and image_type_();
707
vil_dicom_header_endian
determineMetaInfo
(
vil_stream
&fs);
708
709
//: Method to byte swap an unsigned short int if necessary
710
//
711
// \param short_in The unsigned short to swap
712
// \return The swapped unsigned short
713
// \sa intSwap() and charSwap()
714
vxl_uint_16
shortSwap
(vxl_uint_16 short_in);
715
716
//: Method to byte swap an unsigned int if necessary
717
//
718
// \param int_in The unsigned int to swap
719
// \return The swapped unsigned int
720
// \sa shortSwap() and charSwap()
721
vxl_uint_32
intSwap
(vxl_uint_32 int_in);
722
723
//: Method to swap a number inside a char array
724
//
725
// \param char_in The char array to swap - on exit contains the result
726
// \param val_size The size of the var to swap
727
void
charSwap
(
char
*char_in,
int
val_size);
728
729
private
:
730
731
//: Holds the info from the last header read
732
//
733
// \sa readHeader(), lastHeader(), headerValid(), clearInfo(),
734
// readHeaderElements() and info_valid_()
735
vil_dicom_header_info
last_read_
;
736
737
//: TRUE if the header info is valid (i.e. has been read) otherwise FALSE
738
//
739
// \sa readHeader(), lastHeader(), headerValid(), clearInfo() and last_read_()
740
bool
info_valid_
;
741
742
//: A variable to hold the discovered architecture endian
743
//
744
// \sa calculateEndian() and systemEndian()
745
vil_dicom_header_endian
endian_
;
746
747
//: A variable to hold the current header file's endian
748
//
749
// \sa determineMetaInfo() and fileEndian()
750
vil_dicom_header_endian
file_endian_
;
751
752
//: A variable to hole the current encapsulate file type (if any)
753
//
754
// \sa determineMetaInfo() and imageType()
755
vil_dicom_header_image_type
image_type_
;
756
};
757
758
void
vil_dicom_header_print
(std::ostream &os,
const
vil_dicom_header_info
&s);
759
760
#endif // vil_dicom_header_h_
vil_dicom_header_info::small_im_pix_val_
vil_dicom_header_type_of< vil_dicom_header_US >::type small_im_pix_val_
Definition:
vil_dicom_header.h:443
vil_dicom_header_CS
Definition:
vil_dicom_header.h:251
VIL_DICOM_HEADER_NSPHILIPSGROUP
const vxl_uint_16 VIL_DICOM_HEADER_NSPHILIPSGROUP
Definition:
vil_dicom_header.h:89
vil_stream.h
Stream interface for VIL image loaders.
VIL_DICOM_HEADER_DITJPEGLOSSLDEF
Definition:
vil_dicom_header.h:51
VIL_DICOM_HEADER_IDMANUFACTURER
const vxl_uint_16 VIL_DICOM_HEADER_IDMANUFACTURER
Definition:
vil_dicom_header.h:112
vil_dicom_header_info::phase_enc_dir_
vil_dicom_header_type_of< vil_dicom_header_CS >::type phase_enc_dir_
Definition:
vil_dicom_header.h:415
VIL_DICOM_HEADER_JPEGFULLPROG_P11_13
const char *const VIL_DICOM_HEADER_JPEGFULLPROG_P11_13
Definition:
vil_dicom_header.h:326
VIL_DICOM_HEADER_PIPATIENTHISTORY
const vxl_uint_16 VIL_DICOM_HEADER_PIPATIENTHISTORY
Definition:
vil_dicom_header.h:131
vil_dicom_header_type
vil_dicom_header_type
DICOM types.
Definition:
vil_dicom_header.h:23
vil_dicom_header_LO
Definition:
vil_dicom_header.h:258
VIL_DICOM_HEADER_DLITEMDELIMITATIONITEM
const vxl_uint_16 VIL_DICOM_HEADER_DLITEMDELIMITATIONITEM
Definition:
vil_dicom_header.h:205
vil_dicom_header_info::modality_
vil_dicom_header_type_of< vil_dicom_header_CS >::type modality_
Definition:
vil_dicom_header.h:368
vil_dicom_header_FD
Definition:
vil_dicom_header.h:255
vil_dicom_header_info::acquisition_number_
vil_dicom_header_type_of< vil_dicom_header_IS >::type acquisition_number_
Definition:
vil_dicom_header.h:425
vil_dicom_header_ST
Definition:
vil_dicom_header.h:267
VIL_DICOM_HEADER_AQPATIENTPOSITION
const vxl_uint_16 VIL_DICOM_HEADER_AQPATIENTPOSITION
Definition:
vil_dicom_header.h:162
vil_dicom_header_SQ
Definition:
vil_dicom_header.h:265
vil_dicom_header_info::echo_train_length_
vil_dicom_header_type_of< vil_dicom_header_IS >::type echo_train_length_
Definition:
vil_dicom_header.h:403
VIL_DICOM_HEADER_FLOATINGPOINTSINGLE
const char *const VIL_DICOM_HEADER_FLOATINGPOINTSINGLE
Definition:
vil_dicom_header.h:226
vil_dicom_header_info::angio_flag_
vil_dicom_header_type_of< vil_dicom_header_CS >::type angio_flag_
Definition:
vil_dicom_header.h:395
VIL_DICOM_HEADER_PXGROUPLENGTH
const vxl_uint_16 VIL_DICOM_HEADER_PXGROUPLENGTH
Definition:
vil_dicom_header.h:200
VIL_DICOM_HEADER_DITJPEGEXTLOSSY
Definition:
vil_dicom_header.h:43
VIL_DICOM_HEADER_DITJPEGBASE
Definition:
vil_dicom_header.h:42
vil_dicom_header_info::echo_numbers_
vil_dicom_header_type_of< vil_dicom_header_IS >::type echo_numbers_
Definition:
vil_dicom_header.h:401
VIL_DICOM_HEADER_JPEGSPECTRAL_P6_8
const char *const VIL_DICOM_HEADER_JPEGSPECTRAL_P6_8
Definition:
vil_dicom_header.h:323
vil_dicom_header_format::vil_dicom_header_format
vil_dicom_header_format()
VIL_DICOM_HEADER_PIXELGROUP
const vxl_uint_16 VIL_DICOM_HEADER_PIXELGROUP
Definition:
vil_dicom_header.h:85
VIL_DICOM_HEADER_DEUNKNOWN
Definition:
vil_dicom_header.h:33
VIL_DICOM_HEADER_RSPOSITIONREFERENCE
const vxl_uint_16 VIL_DICOM_HEADER_RSPOSITIONREFERENCE
Definition:
vil_dicom_header.h:176
vil_dicom_header_info::spacing_x_
vil_dicom_header_type_of< vil_dicom_header_DS >::type spacing_x_
Definition:
vil_dicom_header.h:450
VIL_DICOM_HEADER_IDIMAGEDATE
const vxl_uint_16 VIL_DICOM_HEADER_IDIMAGEDATE
Definition:
vil_dicom_header.h:105
vil_dicom_header_info::exposedarea_y_
vil_dicom_header_type_of< vil_dicom_header_US >::type exposedarea_y_
Definition:
vil_dicom_header.h:463
VIL_DICOM_HEADER_PRINTJOBGROUP
const vxl_uint_16 VIL_DICOM_HEADER_PRINTJOBGROUP
Definition:
vil_dicom_header.h:79
VIL_DICOM_HEADER_EXPLICITLITTLE
const char *const VIL_DICOM_HEADER_EXPLICITLITTLE
Definition:
vil_dicom_header.h:318
VIL_DICOM_HEADER_IMPIXELPADDINGVALUE
const vxl_uint_16 VIL_DICOM_HEADER_IMPIXELPADDINGVALUE
Definition:
vil_dicom_header.h:193
VIL_DICOM_HEADER_NSPHILIPSPRIVATEINTERCEPT
const vxl_uint_16 VIL_DICOM_HEADER_NSPHILIPSPRIVATEINTERCEPT
Definition:
vil_dicom_header.h:214
VIL_DICOM_HEADER_DITJPEGEXTHIER
Definition:
vil_dicom_header.h:47
VIL_DICOM_HEADER_RSSERIESINSTANCEUID
const vxl_uint_16 VIL_DICOM_HEADER_RSSERIESINSTANCEUID
Definition:
vil_dicom_header.h:166
vil_dicom_header_info::allocated_bits_
vil_dicom_header_type_of< vil_dicom_header_US >::type allocated_bits_
Definition:
vil_dicom_header.h:457
vil_dicom_header_DS
Definition:
vil_dicom_header.h:253
vil_dicom_header_info::sar_
vil_dicom_header_type_of< vil_dicom_header_DS >::type sar_
Definition:
vil_dicom_header.h:417
vil_dicom_header_format::~vil_dicom_header_format
~vil_dicom_header_format()
vil_dicom_header_UI
Definition:
vil_dicom_header.h:269
VIL_DICOM_HEADER_IDIMAGETYPE
const vxl_uint_16 VIL_DICOM_HEADER_IDIMAGETYPE
Definition:
vil_dicom_header.h:99
VIL_DICOM_HEADER_APPLICATIONENTRY
const char *const VIL_DICOM_HEADER_APPLICATIONENTRY
Definition:
vil_dicom_header.h:218
VIL_DICOM_HEADER_IMROWS
const vxl_uint_16 VIL_DICOM_HEADER_IMROWS
Definition:
vil_dicom_header.h:183
VIL_DICOM_HEADER_IDSERIESDATE
const vxl_uint_16 VIL_DICOM_HEADER_IDSERIESDATE
Definition:
vil_dicom_header.h:103
vil_dicom_header_info::series_number_
vil_dicom_header_type_of< vil_dicom_header_IS >::type series_number_
Definition:
vil_dicom_header.h:424
VIL_DICOM_HEADER_OVERLAYGROUP
const vxl_uint_16 VIL_DICOM_HEADER_OVERLAYGROUP
Definition:
vil_dicom_header.h:84
vil_dicom_header_info::station_name_
vil_dicom_header_type_of< vil_dicom_header_SH >::type station_name_
Definition:
vil_dicom_header.h:373
VIL_DICOM_HEADER_AQECHOTIME
const vxl_uint_16 VIL_DICOM_HEADER_AQECHOTIME
Definition:
vil_dicom_header.h:142
vil_dicom_header_info::trigger_time_
vil_dicom_header_type_of< vil_dicom_header_DS >::type trigger_time_
Definition:
vil_dicom_header.h:407
vil_dicom_header_format::isDicomFormat
bool isDicomFormat(vil_stream &)
True if it is known DICOM format.
VIL_DICOM_HEADER_BASICFILMBOXGROUP
const vxl_uint_16 VIL_DICOM_HEADER_BASICFILMBOXGROUP
Definition:
vil_dicom_header.h:75
vil_dicom_header_info::size_x_
vil_dicom_header_type_of< vil_dicom_header_US >::type size_x_
Definition:
vil_dicom_header.h:439
vil_dicom_header_info::images_in_acq_
vil_dicom_header_type_of< vil_dicom_header_IS >::type images_in_acq_
Definition:
vil_dicom_header.h:431
VIL_DICOM_HEADER_AQSOFTWAREVERSION
const vxl_uint_16 VIL_DICOM_HEADER_AQSOFTWAREVERSION
Definition:
vil_dicom_header.h:150
vil_dicom_header_info::manufacturer_
vil_dicom_header_type_of< vil_dicom_header_LO >::type manufacturer_
Definition:
vil_dicom_header.h:369
vil_dicom_header_info::sequence_var_
vil_dicom_header_type_of< vil_dicom_header_CS >::type sequence_var_
Definition:
vil_dicom_header.h:391
vil_dicom_header_info::patient_age_
vil_dicom_header_type_of< vil_dicom_header_AS >::type patient_age_
Definition:
vil_dicom_header.h:385
vil_dicom_header_format::readIdentifyingElements
void readIdentifyingElements(short element, int dblock_size, vil_stream &fs)
Method to read the identifying group's details.
vil_dicom_header_info::operator_name_
vil_dicom_header_type_of< vil_dicom_header_PN >::type operator_name_
Definition:
vil_dicom_header.h:377
vil_dicom_header_SS
Definition:
vil_dicom_header.h:266
VIL_DICOM_HEADER_AQRECEIVINGCOIL
const vxl_uint_16 VIL_DICOM_HEADER_AQRECEIVINGCOIL
Definition:
vil_dicom_header.h:158
VIL_DICOM_HEADER_DITJPEGFULLHIER
Definition:
vil_dicom_header.h:49
vil_dicom_header_format::fileEndian
vil_dicom_header_endian fileEndian(void)
Return the endian of the header being read.
VIL_DICOM_HEADER_EXPOSEDAREA
const vxl_uint_16 VIL_DICOM_HEADER_EXPOSEDAREA
Definition:
vil_dicom_header.h:211
VIL_DICOM_HEADER_AQTRIGGERTIME
const vxl_uint_16 VIL_DICOM_HEADER_AQTRIGGERTIME
Definition:
vil_dicom_header.h:152
vil_dicom_header_info::window_centre_
vil_dicom_header_type_of< vil_dicom_header_DS >::type window_centre_
Definition:
vil_dicom_header.h:446
vil_dicom_header_info::heart_rate_
vil_dicom_header_type_of< vil_dicom_header_IS >::type heart_rate_
Definition:
vil_dicom_header.h:408
vil_dicom_header_info::series_desc_
vil_dicom_header_type_of< vil_dicom_header_LO >::type series_desc_
Definition:
vil_dicom_header.h:375
VIL_DICOM_HEADER_JPEGLLESSDEF_P14_SV1
const char *const VIL_DICOM_HEADER_JPEGLLESSDEF_P14_SV1
Definition:
vil_dicom_header.h:337
vil_dicom_header_info::institution_name_
vil_dicom_header_type_of< vil_dicom_header_LO >::type institution_name_
Definition:
vil_dicom_header.h:370
VIL_DICOM_HEADER_PIPATIENTBIRTHDATE
const vxl_uint_16 VIL_DICOM_HEADER_PIPATIENTBIRTHDATE
Definition:
vil_dicom_header.h:127
VIL_DICOM_HEADER_LONGTEXT
const char *const VIL_DICOM_HEADER_LONGTEXT
Definition:
vil_dicom_header.h:229
VIL_DICOM_HEADER_IDINSTITUTIONADDRESS
const vxl_uint_16 VIL_DICOM_HEADER_IDINSTITUTIONADDRESS
Definition:
vil_dicom_header.h:114
VIL_DICOM_HEADER_DEFAULTSIZE
constexpr double VIL_DICOM_HEADER_DEFAULTSIZE
Definition:
vil_dicom_header.h:479
VIL_DICOM_HEADER_CURVEGROUP
const vxl_uint_16 VIL_DICOM_HEADER_CURVEGROUP
Definition:
vil_dicom_header.h:83
VIL_DICOM_HEADER_FLOATINGPOINTDOUBLE
const char *const VIL_DICOM_HEADER_FLOATINGPOINTDOUBLE
Definition:
vil_dicom_header.h:225
VIL_DICOM_HEADER_AQSCANOPTIONS
const vxl_uint_16 VIL_DICOM_HEADER_AQSCANOPTIONS
Definition:
vil_dicom_header.h:136
VIL_DICOM_HEADER_IDSTUDYTIME
const vxl_uint_16 VIL_DICOM_HEADER_IDSTUDYTIME
Definition:
vil_dicom_header.h:106
VIL_DICOM_HEADER_PXPIXELDATA
const vxl_uint_16 VIL_DICOM_HEADER_PXPIXELDATA
Definition:
vil_dicom_header.h:201
VIL_DICOM_HEADER_IDSERIESTIME
const vxl_uint_16 VIL_DICOM_HEADER_IDSERIESTIME
Definition:
vil_dicom_header.h:107
VIL_DICOM_HEADER_PIPATIENTAGE
const vxl_uint_16 VIL_DICOM_HEADER_PIPATIENTAGE
Definition:
vil_dicom_header.h:129
vil_dicom_header_format::readAcquisitionElements
void readAcquisitionElements(short element, int dblock_size, vil_stream &fs)
Method to read the acquisition group's details.
vil_dicom_header_info::patient_id_
vil_dicom_header_type_of< vil_dicom_header_LO >::type patient_id_
Definition:
vil_dicom_header.h:382
vil_dicom_header_format::readRelationshipElements
void readRelationshipElements(short element, int dblock_size, vil_stream &fs)
Method to read the relationship group's details.
VIL_DICOM_HEADER_NSPHILIPSPRIVATESLOPE
const vxl_uint_16 VIL_DICOM_HEADER_NSPHILIPSPRIVATESLOPE
Definition:
vil_dicom_header.h:215
VIL_DICOM_HEADER_IDIMAGETIME
const vxl_uint_16 VIL_DICOM_HEADER_IDIMAGETIME
Definition:
vil_dicom_header.h:109
VIL_DICOM_HEADER_JPEGSPECTRAL_P7_9
const char *const VIL_DICOM_HEADER_JPEGSPECTRAL_P7_9
Definition:
vil_dicom_header.h:324
vil_dicom_header_info::number_of_averages_
vil_dicom_header_type_of< vil_dicom_header_DS >::type number_of_averages_
Definition:
vil_dicom_header.h:400
vil_dicom_header_info::att_phys_name_
vil_dicom_header_type_of< vil_dicom_header_PN >::type att_phys_name_
Definition:
vil_dicom_header.h:376
VIL_DICOM_HEADER_IDMODALITY
const vxl_uint_16 VIL_DICOM_HEADER_IDMODALITY
Definition:
vil_dicom_header.h:111
VIL_DICOM_HEADER_PRREALWORLDVALUESLOPE
const vxl_uint_16 VIL_DICOM_HEADER_PRREALWORLDVALUESLOPE
Definition:
vil_dicom_header.h:210
VIL_DICOM_HEADER_IMPIXELSPACING
const vxl_uint_16 VIL_DICOM_HEADER_IMPIXELSPACING
Definition:
vil_dicom_header.h:186
vil_dicom_header_type_of::type
std::string type
Definition:
vil_dicom_header.h:280
vil_dicom_header_PN
Definition:
vil_dicom_header.h:262
vil_dicom_header_info::card_num_images_
vil_dicom_header_type_of< vil_dicom_header_IS >::type card_num_images_
Definition:
vil_dicom_header.h:409
vil_dicom_header_info::image_orient_
std::vector< vil_dicom_header_type_of< vil_dicom_header_DS >::type > image_orient_
Definition:
vil_dicom_header.h:429
VIL_DICOM_HEADER_VISITGROUP
const vxl_uint_16 VIL_DICOM_HEADER_VISITGROUP
Definition:
vil_dicom_header.h:68
vil_dicom_header_type_of
Definition:
vil_dicom_header.h:278
vil_dicom_header_info::flip_angle_
vil_dicom_header_type_of< vil_dicom_header_DS >::type flip_angle_
Definition:
vil_dicom_header.h:416
vil_dicom_header_info::reconst_diameter_
vil_dicom_header_type_of< vil_dicom_header_DS >::type reconst_diameter_
Definition:
vil_dicom_header.h:411
vil_dicom_header_info::size_y_
vil_dicom_header_type_of< vil_dicom_header_US >::type size_y_
Definition:
vil_dicom_header.h:440
vil_dicom_header_format::calculateEndian
vil_dicom_header_endian calculateEndian(void)
Work out whether the current architecture is big or little endian.
VIL_DICOM_HEADER_JPEGFULLHIER_P25_27
const char *const VIL_DICOM_HEADER_JPEGFULLHIER_P25_27
Definition:
vil_dicom_header.h:334
vil_dicom_header_AT
Definition:
vil_dicom_header.h:250
VIL_DICOM_HEADER_DTNON_PART10
Definition:
vil_dicom_header.h:27
VIL_DICOM_HEADER_UNSPECIFIED_UNSIGNED
const unsigned short VIL_DICOM_HEADER_UNSPECIFIED_UNSIGNED
Definition:
vil_dicom_header.h:478
VIL_DICOM_HEADER_JPEGLOSSLESS_P14
const char *const VIL_DICOM_HEADER_JPEGLOSSLESS_P14
Definition:
vil_dicom_header.h:327
VIL_DICOM_HEADER_DEFAULTINTERCEPT
const float VIL_DICOM_HEADER_DEFAULTINTERCEPT
Definition:
vil_dicom_header.h:481
VIL_DICOM_HEADER_PIPATIENTWEIGHT
const vxl_uint_16 VIL_DICOM_HEADER_PIPATIENTWEIGHT
Definition:
vil_dicom_header.h:130
VIL_DICOM_HEADER_JPEGEXTHIER_P17_19
const char *const VIL_DICOM_HEADER_JPEGEXTHIER_P17_19
Definition:
vil_dicom_header.h:330
vil_dicom_header_info::image_pos_
std::vector< vil_dicom_header_type_of< vil_dicom_header_DS >::type > image_pos_
Definition:
vil_dicom_header.h:428
vil_dicom_header_format::determineMetaInfo
vil_dicom_header_endian determineMetaInfo(vil_stream &fs)
Initialise all the necessary meta-file stuff.
vil_dicom_header_info::image_type_
vil_dicom_header_image_type image_type_
Definition:
vil_dicom_header.h:353
VIL_DICOM_HEADER_JPEGFULLHIER_P24_26
const char *const VIL_DICOM_HEADER_JPEGFULLHIER_P24_26
Definition:
vil_dicom_header.h:333
VIL_DICOM_HEADER_IMPHOTOMETRICINTERP
const vxl_uint_16 VIL_DICOM_HEADER_IMPHOTOMETRICINTERP
Definition:
vil_dicom_header.h:182
vil_dicom_header_format::pixelDataFound
bool pixelDataFound(short group, short element)
Method to determine whether or not the actual pixel data has been reached.
VIL_DICOM_HEADER_AQSEQUENCENAME
const vxl_uint_16 VIL_DICOM_HEADER_AQSEQUENCENAME
Definition:
vil_dicom_header.h:138
vil_dicom_header_endian
vil_dicom_header_endian
Endian types.
Definition:
vil_dicom_header.h:31
VIL_DICOM_HEADER_PROCEDUREGROUP
const vxl_uint_16 VIL_DICOM_HEADER_PROCEDUREGROUP
Definition:
vil_dicom_header.h:70
VIL_DICOM_HEADER_RSIMAGENUMBER
const vxl_uint_16 VIL_DICOM_HEADER_RSIMAGENUMBER
Definition:
vil_dicom_header.h:170
vil_dicom_header_info::res_slope_
vil_dicom_header_type_of< vil_dicom_header_DS >::type res_slope_
Definition:
vil_dicom_header.h:454
vil_dicom_header_format::headerValid
bool headerValid(void)
Method to indicate if the header info held is valid or not.
VIL_DICOM_HEADER_AQSEQUENCEVARIANT
const vxl_uint_16 VIL_DICOM_HEADER_AQSEQUENCEVARIANT
Definition:
vil_dicom_header.h:135
VIL_DICOM_HEADER_DEBIGENDIAN
Definition:
vil_dicom_header.h:35
VIL_DICOM_HEADER_DITJPEGLOSSLNH
Definition:
vil_dicom_header.h:46
vil_dicom_header_info::sop_cl_uid_
vil_dicom_header_type_of< vil_dicom_header_UI >::type sop_cl_uid_
Definition:
vil_dicom_header.h:357
vil_dicom_header_SH
Definition:
vil_dicom_header.h:263
vil_dicom_header_info::vil_dicom_header_info_clear
void vil_dicom_header_info_clear(vil_dicom_header_info &info)
Clears a header info struct.
VIL_DICOM_HEADER_DLITEM
const vxl_uint_16 VIL_DICOM_HEADER_DLITEM
Definition:
vil_dicom_header.h:204
vil_dicom_header_FL
Definition:
vil_dicom_header.h:256
VIL_DICOM_HEADER_JPEGEXTHIER_P16_18
const char *const VIL_DICOM_HEADER_JPEGEXTHIER_P16_18
Definition:
vil_dicom_header.h:329
VIL_DICOM_HEADER_AGESTRING
const char *const VIL_DICOM_HEADER_AGESTRING
Definition:
vil_dicom_header.h:219
VIL_DICOM_HEADER_AQFLIPANGLE
const vxl_uint_16 VIL_DICOM_HEADER_AQFLIPANGLE
Definition:
vil_dicom_header.h:160
VIL_DICOM_HEADER_STUDYGROUP
const vxl_uint_16 VIL_DICOM_HEADER_STUDYGROUP
Definition:
vil_dicom_header.h:67
vil_dicom_header_info::real_world_value_slope_
vil_dicom_header_type_of< vil_dicom_header_FD >::type real_world_value_slope_
Definition:
vil_dicom_header.h:461
vil_dicom_header_format::info_valid_
bool info_valid_
TRUE if the header info is valid (i.e. has been read) otherwise FALSE.
Definition:
vil_dicom_header.h:740
VIL_DICOM_HEADER_IDGROUPLENGTH
const vxl_uint_16 VIL_DICOM_HEADER_IDGROUPLENGTH
Definition:
vil_dicom_header.h:96
VIL_DICOM_HEADER_JPEGLLESSHIER_P28
const char *const VIL_DICOM_HEADER_JPEGLLESSHIER_P28
Definition:
vil_dicom_header.h:335
VIL_DICOM_HEADER_JPEGLLESSHIER_P29
const char *const VIL_DICOM_HEADER_JPEGLLESSHIER_P29
Definition:
vil_dicom_header.h:336
vil_dicom_header_info::image_id_type_
vil_dicom_header_type_of< vil_dicom_header_CS >::type image_id_type_
Definition:
vil_dicom_header.h:356
vil_dicom_header_info::patient_name_
vil_dicom_header_type_of< vil_dicom_header_PN >::type patient_name_
Definition:
vil_dicom_header.h:381
vil_dicom_header_info::patient_hist_
vil_dicom_header_type_of< vil_dicom_header_LT >::type patient_hist_
Definition:
vil_dicom_header.h:387
VIL_DICOM_HEADER_SHORTSTRING
const char *const VIL_DICOM_HEADER_SHORTSTRING
Definition:
vil_dicom_header.h:233
VIL_DICOM_HEADER_DITJPEGSPECNH
Definition:
vil_dicom_header.h:44
VIL_DICOM_HEADER_AQMRACQUISITIONTYPE
const vxl_uint_16 VIL_DICOM_HEADER_AQMRACQUISITIONTYPE
Definition:
vil_dicom_header.h:137
VIL_DICOM_HEADER_RELATIONSHIPGROUP
const vxl_uint_16 VIL_DICOM_HEADER_RELATIONSHIPGROUP
Definition:
vil_dicom_header.h:65
vil_dicom_header_info::file_endian_
vil_dicom_header_endian file_endian_
Definition:
vil_dicom_header.h:352
vil_dicom_header_format::endian_
vil_dicom_header_endian endian_
A variable to hold the discovered architecture endian.
Definition:
vil_dicom_header.h:745
vil_dicom_header_UN
Definition:
vil_dicom_header.h:271
VIL_DICOM_HEADER_IMBITSSTORED
const vxl_uint_16 VIL_DICOM_HEADER_IMBITSSTORED
Definition:
vil_dicom_header.h:188
vil_dicom_header_info::imager_spacing_y_
vil_dicom_header_type_of< vil_dicom_header_DS >::type imager_spacing_y_
Definition:
vil_dicom_header.h:413
VIL_DICOM_HEADER_IMLARGEIMPIXELVALUE
const vxl_uint_16 VIL_DICOM_HEADER_IMLARGEIMPIXELVALUE
Definition:
vil_dicom_header.h:192
VIL_DICOM_HEADER_AQCARDIACNUMBEROFIMAGES
const vxl_uint_16 VIL_DICOM_HEADER_AQCARDIACNUMBEROFIMAGES
Definition:
vil_dicom_header.h:154
VIL_DICOM_HEADER_PRINTERGROUP
const vxl_uint_16 VIL_DICOM_HEADER_PRINTERGROUP
Definition:
vil_dicom_header.h:80
vil_dicom_header_info::inversion_time_
vil_dicom_header_type_of< vil_dicom_header_DS >::type inversion_time_
Definition:
vil_dicom_header.h:399
vil_dicom_header_info::series_date_
vil_dicom_header_type_of< vil_dicom_header_DA >::type series_date_
Definition:
vil_dicom_header.h:360
vil_dicom_header_info::sys_endian_
vil_dicom_header_endian sys_endian_
Definition:
vil_dicom_header.h:351
VIL_DICOM_HEADER_RESULTSGROUP
const vxl_uint_16 VIL_DICOM_HEADER_RESULTSGROUP
Definition:
vil_dicom_header.h:82
vil_stream
Stream interface for VIL image loaders.
Definition:
vil_stream.h:21
VIL_DICOM_HEADER_CODESTRING
const char *const VIL_DICOM_HEADER_CODESTRING
Definition:
vil_dicom_header.h:221
vil_dicom_header_info::sequence_name_
vil_dicom_header_type_of< vil_dicom_header_SH >::type sequence_name_
Definition:
vil_dicom_header.h:394
vil_dicom_header_format::readPatientElements
void readPatientElements(short element, int dblock_size, vil_stream &fs)
Method to read the patient details.
VIL_DICOM_HEADER_DEVICEGROUP
const vxl_uint_16 VIL_DICOM_HEADER_DEVICEGROUP
Definition:
vil_dicom_header.h:71
VIL_DICOM_HEADER_WAVEFORMGROUP
const vxl_uint_16 VIL_DICOM_HEADER_WAVEFORMGROUP
Definition:
vil_dicom_header.h:69
vil_dicom_header_info::echo_time_
vil_dicom_header_type_of< vil_dicom_header_DS >::type echo_time_
Definition:
vil_dicom_header.h:398
VIL_DICOM_HEADER_IDACCESSIONNUMBER
const vxl_uint_16 VIL_DICOM_HEADER_IDACCESSIONNUMBER
Definition:
vil_dicom_header.h:110
VIL_DICOM_HEADER_IDLENGTHTOEND
const vxl_uint_16 VIL_DICOM_HEADER_IDLENGTHTOEND
Definition:
vil_dicom_header.h:97
vil_dicom_header_info::pixel_padding_val_
vil_dicom_header_type_of< vil_dicom_header_US >::type pixel_padding_val_
Definition:
vil_dicom_header.h:445
VIL_DICOM_HEADER_AQNUMBEROFAVERAGES
const vxl_uint_16 VIL_DICOM_HEADER_AQNUMBEROFAVERAGES
Definition:
vil_dicom_header.h:144
vil_dicom_header_info::slice_location_
vil_dicom_header_type_of< vil_dicom_header_DS >::type slice_location_
Definition:
vil_dicom_header.h:433
VIL_DICOM_HEADER_JPEGLOSSLESS_P15
const char *const VIL_DICOM_HEADER_JPEGLOSSLESS_P15
Definition:
vil_dicom_header.h:328
vil_dicom_header_format::readProcedureElements
void readProcedureElements(short element, int dblock_size, vil_stream &fs)
Method to read the procedure group's details.
VIL_DICOM_HEADER_DEFAULTSIZE_FLOAT
const float VIL_DICOM_HEADER_DEFAULTSIZE_FLOAT
Definition:
vil_dicom_header.h:480
vil_dicom_header_format::systemEndian
vil_dicom_header_endian systemEndian(void)
Return the current system endian.
VIL_DICOM_HEADER_IDACQUISITIONTIME
const vxl_uint_16 VIL_DICOM_HEADER_IDACQUISITIONTIME
Definition:
vil_dicom_header.h:108
vil_dicom_header_OB
Definition:
vil_dicom_header.h:260
VIL_DICOM_HEADER_DELIMITERGROUP
const vxl_uint_16 VIL_DICOM_HEADER_DELIMITERGROUP
Definition:
vil_dicom_header.h:87
vil_dicom_header_info::high_bit_
vil_dicom_header_type_of< vil_dicom_header_US >::type high_bit_
Definition:
vil_dicom_header.h:442
vil_dicom_header_AS
Definition:
vil_dicom_header.h:249
VIL_DICOM_HEADER_UNSPECIFIED
const short VIL_DICOM_HEADER_UNSPECIFIED
Definition:
vil_dicom_header.h:477
VIL_DICOM_HEADER_AQPHASEENCODINGDIRECTION
const vxl_uint_16 VIL_DICOM_HEADER_AQPHASEENCODINGDIRECTION
Definition:
vil_dicom_header.h:159
VIL_DICOM_HEADER_AQSLICETHICKNESS
const vxl_uint_16 VIL_DICOM_HEADER_AQSLICETHICKNESS
Definition:
vil_dicom_header.h:140
VIL_DICOM_HEADER_ACQUISITIONGROUP
const vxl_uint_16 VIL_DICOM_HEADER_ACQUISITIONGROUP
Definition:
vil_dicom_header.h:64
VIL_DICOM_HEADER_DTPART10
Definition:
vil_dicom_header.h:26
vil_dicom_header_format::readHeader
vil_dicom_header_info readHeader(vil_stream &fs)
Read the dicom header into a header struct.
vil_dicom_header_info::acquisition_date_
vil_dicom_header_type_of< vil_dicom_header_DA >::type acquisition_date_
Definition:
vil_dicom_header.h:361
VIL_DICOM_HEADER_AQPIXELBANDWIDTH
const vxl_uint_16 VIL_DICOM_HEADER_AQPIXELBANDWIDTH
Definition:
vil_dicom_header.h:149
vil_dicom_header_info
DICOM information read from the header.
Definition:
vil_dicom_header.h:346
VIL_DICOM_HEADER_IMWINDOWCENTER
const vxl_uint_16 VIL_DICOM_HEADER_IMWINDOWCENTER
Definition:
vil_dicom_header.h:194
VIL_DICOM_HEADER_MFTRANSFERSYNTAX
const vxl_uint_16 VIL_DICOM_HEADER_MFTRANSFERSYNTAX
Definition:
vil_dicom_header.h:93
VIL_DICOM_HEADER_RSIMAGEPOSITION
const vxl_uint_16 VIL_DICOM_HEADER_RSIMAGEPOSITION
Definition:
vil_dicom_header.h:172
VIL_DICOM_HEADER_IDENTIFYINGGROUP
const vxl_uint_16 VIL_DICOM_HEADER_IDENTIFYINGGROUP
Definition:
vil_dicom_header.h:62
VIL_DICOM_HEADER_OTHERBYTE
const char *const VIL_DICOM_HEADER_OTHERBYTE
Definition:
vil_dicom_header.h:230
VIL_DICOM_HEADER_AQTRIGGERWINDOW
const vxl_uint_16 VIL_DICOM_HEADER_AQTRIGGERWINDOW
Definition:
vil_dicom_header.h:155
VIL_DICOM_HEADER_PIPATIENTID
const vxl_uint_16 VIL_DICOM_HEADER_PIPATIENTID
Definition:
vil_dicom_header.h:126
VIL_DICOM_HEADER_JPEGFULLPROG_P10_12
const char *const VIL_DICOM_HEADER_JPEGFULLPROG_P10_12
Definition:
vil_dicom_header.h:325
VIL_DICOM_HEADER_DELITTLEENDIAN
Definition:
vil_dicom_header.h:34
VIL_DICOM_HEADER_BASICDIRGROUP
const vxl_uint_16 VIL_DICOM_HEADER_BASICDIRGROUP
Definition:
vil_dicom_header.h:61
vil_dicom_header_info::image_time_
vil_dicom_header_type_of< vil_dicom_header_TM >::type image_time_
Definition:
vil_dicom_header.h:366
VIL_DICOM_HEADER_RSFRAMEOFREFERENCEUID
const vxl_uint_16 VIL_DICOM_HEADER_RSFRAMEOFREFERENCEUID
Definition:
vil_dicom_header.h:174
vil_dicom_header_DT
Definition:
vil_dicom_header.h:254
VIL_DICOM_HEADER_AQIMAGERPIXELSPACING
const vxl_uint_16 VIL_DICOM_HEADER_AQIMAGERPIXELSPACING
Definition:
vil_dicom_header.h:157
VIL_DICOM_HEADER_BASICFILMSESSIONGROUP
const vxl_uint_16 VIL_DICOM_HEADER_BASICFILMSESSIONGROUP
Definition:
vil_dicom_header.h:74
vil_dicom_header_info::header_valid_
bool header_valid_
Definition:
vil_dicom_header.h:349
vil_dicom_header_info::size_z_
vil_dicom_header_type_of< vil_dicom_header_US >::type size_z_
Definition:
vil_dicom_header.h:441
vil_dicom_header_DA
Definition:
vil_dicom_header.h:252
VIL_DICOM_HEADER_IDSOPCLASSID
const vxl_uint_16 VIL_DICOM_HEADER_IDSOPCLASSID
Definition:
vil_dicom_header.h:100
VIL_DICOM_HEADER_IMPLICITLITTLE
const char *const VIL_DICOM_HEADER_IMPLICITLITTLE
Definition:
vil_dicom_header.h:317
VIL_DICOM_HEADER_LONGSTRING
const char *const VIL_DICOM_HEADER_LONGSTRING
Definition:
vil_dicom_header.h:228
vil_dicom_header_info::image_number_
vil_dicom_header_type_of< vil_dicom_header_IS >::type image_number_
Definition:
vil_dicom_header.h:426
vil_dicom_header_info::patient_sex_
vil_dicom_header_type_of< vil_dicom_header_CS >::type patient_sex_
Definition:
vil_dicom_header.h:384
VIL_DICOM_HEADER_UNKNOWN
const char *const VIL_DICOM_HEADER_UNKNOWN
Definition:
vil_dicom_header.h:241
VIL_DICOM_HEADER_RLELOSSLESS
const char *const VIL_DICOM_HEADER_RLELOSSLESS
Definition:
vil_dicom_header.h:338
vil_dicom_header_US
Definition:
vil_dicom_header.h:272
VIL_DICOM_HEADER_IMHIGHBIT
const vxl_uint_16 VIL_DICOM_HEADER_IMHIGHBIT
Definition:
vil_dicom_header.h:189
vil_dicom_header_info::large_im_pix_val_
vil_dicom_header_type_of< vil_dicom_header_US >::type large_im_pix_val_
Definition:
vil_dicom_header.h:444
vil_dicom_header_info::pix_samps_
vil_dicom_header_type_of< vil_dicom_header_US >::type pix_samps_
Definition:
vil_dicom_header.h:437
vil_dicom_header_info::accession_number_
vil_dicom_header_type_of< vil_dicom_header_SH >::type accession_number_
Definition:
vil_dicom_header.h:367
VIL_DICOM_HEADER_DLSEQDELIMITATIONITEM
const vxl_uint_16 VIL_DICOM_HEADER_DLSEQDELIMITATIONITEM
Definition:
vil_dicom_header.h:206
vil_dicom_header_format::shortSwap
vxl_uint_16 shortSwap(vxl_uint_16 short_in)
Method to byte swap an unsigned short int if necessary.
vil_dicom_header_info::image_date_
vil_dicom_header_type_of< vil_dicom_header_DA >::type image_date_
Definition:
vil_dicom_header.h:362
VIL_DICOM_HEADER_IDACQUISITIONDATE
const vxl_uint_16 VIL_DICOM_HEADER_IDACQUISITIONDATE
Definition:
vil_dicom_header.h:104
vil_dicom_header_format::clearInfo
void clearInfo(void)
vr_macro
#define vr_macro(VR, CPPT)
Definition:
vil_dicom_header.h:283
vil_dicom_header_info::study_time_
vil_dicom_header_type_of< vil_dicom_header_TM >::type study_time_
Definition:
vil_dicom_header.h:363
VIL_DICOM_HEADER_DEFAULTSLOPE
const float VIL_DICOM_HEADER_DEFAULTSLOPE
Definition:
vil_dicom_header.h:482
vil_dicom_header_info::ser_ins_uid_
vil_dicom_header_type_of< vil_dicom_header_UI >::type ser_ins_uid_
Definition:
vil_dicom_header.h:422
VIL_DICOM_HEADER_METAFILEGROUP
const vxl_uint_16 VIL_DICOM_HEADER_METAFILEGROUP
Definition:
vil_dicom_header.h:60
VIL_DICOM_HEADER_IDSOPINSTANCEID
const vxl_uint_16 VIL_DICOM_HEADER_IDSOPINSTANCEID
Definition:
vil_dicom_header.h:101
VIL_DICOM_HEADER_SIGNEDSHORT
const char *const VIL_DICOM_HEADER_SIGNEDSHORT
Definition:
vil_dicom_header.h:236
vil_dicom_header_format::readNSPhilipsElements
void readNSPhilipsElements(short element, int dblock_size, vil_stream &fs)
Method to read the (non-standard, private) Philips group details.
vil_dicom_header_LT
Definition:
vil_dicom_header.h:259
VIL_DICOM_HEADER_RSSERIESNUMBER
const vxl_uint_16 VIL_DICOM_HEADER_RSSERIESNUMBER
Definition:
vil_dicom_header.h:168
vil_dicom_header_TM
Definition:
vil_dicom_header.h:268
vil_dicom_header_info::pixel_bandwidth_
vil_dicom_header_type_of< vil_dicom_header_DS >::type pixel_bandwidth_
Definition:
vil_dicom_header.h:404
VIL_DICOM_HEADER_IMSAMPLESPERPIXEL
const vxl_uint_16 VIL_DICOM_HEADER_IMSAMPLESPERPIXEL
Definition:
vil_dicom_header.h:181
vil_dicom_header_info::pix_rep_
vil_dicom_header_type_of< vil_dicom_header_US >::type pix_rep_
Definition:
vil_dicom_header.h:455
vil_dicom_header_info::file_type_
vil_dicom_header_type file_type_
Definition:
vil_dicom_header.h:350
VIL_DICOM_HEADER_AQANGIOFLAG
const vxl_uint_16 VIL_DICOM_HEADER_AQANGIOFLAG
Definition:
vil_dicom_header.h:139
VIL_DICOM_HEADER_COMMANDGROUP
const vxl_uint_16 VIL_DICOM_HEADER_COMMANDGROUP
Definition:
vil_dicom_header.h:59
vil_dicom_header_format::readDelimiterElements
void readDelimiterElements(short element, int dblock_size, vil_stream &fs)
Method to read the delimiter group's details.
vil_dicom_header_format::file_endian_
vil_dicom_header_endian file_endian_
A variable to hold the current header file's endian.
Definition:
vil_dicom_header.h:750
VIL_DICOM_HEADER_IDSPECIFICCHARACTER
const vxl_uint_16 VIL_DICOM_HEADER_IDSPECIFICCHARACTER
Definition:
vil_dicom_header.h:98
VIL_DICOM_HEADER_DTUNKNOWN
Definition:
vil_dicom_header.h:25
VIL_DICOM_HEADER_AQHEARTRATE
const vxl_uint_16 VIL_DICOM_HEADER_AQHEARTRATE
Definition:
vil_dicom_header.h:153
vil_dicom_header_info::mag_field_strength_
vil_dicom_header_type_of< vil_dicom_header_DS >::type mag_field_strength_
Definition:
vil_dicom_header.h:402
VIL_DICOM_HEADER_PIGROUPLENGTH
const vxl_uint_16 VIL_DICOM_HEADER_PIGROUPLENGTH
Definition:
vil_dicom_header.h:124
vil_dicom_header_info::window_width_
vil_dicom_header_type_of< vil_dicom_header_DS >::type window_width_
Definition:
vil_dicom_header.h:447
vil_dicom_header_format::lastHeader
vil_dicom_header_info lastHeader(void)
Method to return the last struct of header info set.
VIL_DICOM_HEADER_DITRLE
Definition:
vil_dicom_header.h:52
VIL_DICOM_HEADER_IDSTUDYDATE
const vxl_uint_16 VIL_DICOM_HEADER_IDSTUDYDATE
Definition:
vil_dicom_header.h:102
VIL_DICOM_HEADER_IDOPERATORNAME
const vxl_uint_16 VIL_DICOM_HEADER_IDOPERATORNAME
Definition:
vil_dicom_header.h:120
VIL_DICOM_HEADER_IMCOLUMNS
const vxl_uint_16 VIL_DICOM_HEADER_IMCOLUMNS
Definition:
vil_dicom_header.h:184
vil_dicom_header_format::intSwap
vxl_uint_32 intSwap(vxl_uint_32 int_in)
Method to byte swap an unsigned int if necessary.
vil_dicom_header_info::repetition_time_
vil_dicom_header_type_of< vil_dicom_header_DS >::type repetition_time_
Definition:
vil_dicom_header.h:397
VIL_DICOM_HEADER_AQPROTOCOLNAME
const vxl_uint_16 VIL_DICOM_HEADER_AQPROTOCOLNAME
Definition:
vil_dicom_header.h:151
vil_dicom_header_info::trigger_window_
vil_dicom_header_type_of< vil_dicom_header_IS >::type trigger_window_
Definition:
vil_dicom_header.h:410
VIL_DICOM_HEADER_RSIMAGESINACQUISITION
const vxl_uint_16 VIL_DICOM_HEADER_RSIMAGESINACQUISITION
Definition:
vil_dicom_header.h:175
vil_dicom_header_image_type
vil_dicom_header_image_type
Encapsulated image types.
Definition:
vil_dicom_header.h:39
VIL_DICOM_HEADER_IDINSTITUTIONNAME
const vxl_uint_16 VIL_DICOM_HEADER_IDINSTITUTIONNAME
Definition:
vil_dicom_header.h:113
vil_dicom_header_info::ref_phys_name_
vil_dicom_header_type_of< vil_dicom_header_PN >::type ref_phys_name_
Definition:
vil_dicom_header.h:372
vil_dicom_header_OW
Definition:
vil_dicom_header.h:261
VIL_DICOM_HEADER_IDSTUDYDESCRIPTION
const vxl_uint_16 VIL_DICOM_HEADER_IDSTUDYDESCRIPTION
Definition:
vil_dicom_header.h:117
VIL_DICOM_HEADER_UNSIGNEDSHORT
const char *const VIL_DICOM_HEADER_UNSIGNEDSHORT
Definition:
vil_dicom_header.h:242
vil_dicom_header_format::readImageElements
void readImageElements(short element, int dblock_size, vil_stream &fs)
Method to read the image group's details.
VIL_DICOM_HEADER_RSSTUDYINSTANCEUID
const vxl_uint_16 VIL_DICOM_HEADER_RSSTUDYINSTANCEUID
Definition:
vil_dicom_header.h:165
VIL_DICOM_HEADER_ALLSET
const vxl_uint_32 VIL_DICOM_HEADER_ALLSET
Definition:
vil_dicom_header.h:314
vil_dicom_header_format::determineFileType
vil_dicom_header_type determineFileType(vil_stream &fs)
Method to determine the file type.
VIL_DICOM_HEADER_AQSLICESPACING
const vxl_uint_16 VIL_DICOM_HEADER_AQSLICESPACING
Definition:
vil_dicom_header.h:147
VIL_DICOM_HEADER_RSIMAGECOMMENTS
const vxl_uint_16 VIL_DICOM_HEADER_RSIMAGECOMMENTS
Definition:
vil_dicom_header.h:178
VIL_DICOM_HEADER_JPEGSPECHIER_P20_22
const char *const VIL_DICOM_HEADER_JPEGSPECHIER_P20_22
Definition:
vil_dicom_header.h:331
VIL_DICOM_HEADER_IMBITSALLOCATED
const vxl_uint_16 VIL_DICOM_HEADER_IMBITSALLOCATED
Definition:
vil_dicom_header.h:187
vil_dicom_header_format::convertValueRepresentation
bool convertValueRepresentation(unsigned int &dblock_size, vil_stream &ifs)
Method to convert the Value Representation (VR) (if it exists).
VIL_DICOM_HEADER_RSSTUDYID
const vxl_uint_16 VIL_DICOM_HEADER_RSSTUDYID
Definition:
vil_dicom_header.h:167
vil_dicom_header_info::study_id_
vil_dicom_header_type_of< vil_dicom_header_SH >::type study_id_
Definition:
vil_dicom_header.h:423
VIL_DICOM_HEADER_AQSAR
const vxl_uint_16 VIL_DICOM_HEADER_AQSAR
Definition:
vil_dicom_header.h:161
VIL_DICOM_HEADER_IMWINDOWWIDTH
const vxl_uint_16 VIL_DICOM_HEADER_IMWINDOWWIDTH
Definition:
vil_dicom_header.h:195
VIL_DICOM_HEADER_IMAGEGROUP
const vxl_uint_16 VIL_DICOM_HEADER_IMAGEGROUP
Definition:
vil_dicom_header.h:66
VIL_DICOM_HEADER_DITUNKNOWN
Definition:
vil_dicom_header.h:41
vil_dicom_header_info::philips_private_slope_
vil_dicom_header_type_of< vil_dicom_header_DS >::type philips_private_slope_
Definition:
vil_dicom_header.h:467
vil_dicom_header_info::study_desc_
vil_dicom_header_type_of< vil_dicom_header_LO >::type study_desc_
Definition:
vil_dicom_header.h:374
VIL_DICOM_HEADER_IDATTENDINGPHYSICIAN
const vxl_uint_16 VIL_DICOM_HEADER_IDATTENDINGPHYSICIAN
Definition:
vil_dicom_header.h:119
VIL_DICOM_HEADER_IDSERIESDESCRIPTION
const vxl_uint_16 VIL_DICOM_HEADER_IDSERIESDESCRIPTION
Definition:
vil_dicom_header.h:118
VIL_DICOM_HEADER_AQSCANNINGSEQUENCE
const vxl_uint_16 VIL_DICOM_HEADER_AQSCANNINGSEQUENCE
Definition:
vil_dicom_header.h:134
VIL_DICOM_HEADER_UNLIMITEDTEXT
const char *const VIL_DICOM_HEADER_UNLIMITEDTEXT
Definition:
vil_dicom_header.h:243
VIL_DICOM_HEADER_AQRECONTRUCTIONDIAMETER
const vxl_uint_16 VIL_DICOM_HEADER_AQRECONTRUCTIONDIAMETER
Definition:
vil_dicom_header.h:156
VIL_DICOM_HEADER_IMSMALLIMPIXELVALUE
const vxl_uint_16 VIL_DICOM_HEADER_IMSMALLIMPIXELVALUE
Definition:
vil_dicom_header.h:191
VIL_DICOM_HEADER_RSIMAGEORIENTATION
const vxl_uint_16 VIL_DICOM_HEADER_RSIMAGEORIENTATION
Definition:
vil_dicom_header.h:173
vil_dicom_header_info::institution_addr_
vil_dicom_header_type_of< vil_dicom_header_ST >::type institution_addr_
Definition:
vil_dicom_header.h:371
VIL_DICOM_HEADER_PIPATIENTSEX
const vxl_uint_16 VIL_DICOM_HEADER_PIPATIENTSEX
Definition:
vil_dicom_header.h:128
vil_dicom_header_info::model_name_
vil_dicom_header_type_of< vil_dicom_header_LO >::type model_name_
Definition:
vil_dicom_header.h:378
VIL_DICOM_HEADER_DITJPEGLOSSLHIER
Definition:
vil_dicom_header.h:50
VIL_DICOM_HEADER_RSAQUISITIONNUMBER
const vxl_uint_16 VIL_DICOM_HEADER_RSAQUISITIONNUMBER
Definition:
vil_dicom_header.h:169
VIL_DICOM_HEADER_INTEGERSTRING
const char *const VIL_DICOM_HEADER_INTEGERSTRING
Definition:
vil_dicom_header.h:227
VIL_DICOM_HEADER_PRREALWORLDVALUEINTERCEPT
const vxl_uint_16 VIL_DICOM_HEADER_PRREALWORLDVALUEINTERCEPT
Definition:
vil_dicom_header.h:209
VIL_DICOM_HEADER_NMIMAGEGROUP
const vxl_uint_16 VIL_DICOM_HEADER_NMIMAGEGROUP
Definition:
vil_dicom_header.h:72
vil_dicom_header_info::philips_private_intercept_
vil_dicom_header_type_of< vil_dicom_header_DS >::type philips_private_intercept_
Definition:
vil_dicom_header.h:466
VIL_DICOM_HEADER_AQECHOTRAINLENGTH
const vxl_uint_16 VIL_DICOM_HEADER_AQECHOTRAINLENGTH
Definition:
vil_dicom_header.h:148
VIL_DICOM_HEADER_OTHERWORD
const char *const VIL_DICOM_HEADER_OTHERWORD
Definition:
vil_dicom_header.h:231
VIL_DICOM_HEADER_UNIQUEIDENTIFIER
const char *const VIL_DICOM_HEADER_UNIQUEIDENTIFIER
Definition:
vil_dicom_header.h:239
vil_dicom_header_info::slice_thickness_
vil_dicom_header_type_of< vil_dicom_header_DS >::type slice_thickness_
Definition:
vil_dicom_header.h:396
vil_dicom_header_info::mr_acq_type_
vil_dicom_header_type_of< vil_dicom_header_CS >::type mr_acq_type_
Definition:
vil_dicom_header.h:393
vil_dicom_header_info::patient_dob_
vil_dicom_header_type_of< vil_dicom_header_DA >::type patient_dob_
Definition:
vil_dicom_header.h:383
vil_dicom_header_info::frame_of_ref_
vil_dicom_header_type_of< vil_dicom_header_UI >::type frame_of_ref_
Definition:
vil_dicom_header.h:430
vil_dicom_header_info::real_world_value_intercept_
vil_dicom_header_type_of< vil_dicom_header_FD >::type real_world_value_intercept_
Definition:
vil_dicom_header.h:460
VIL_DICOM_HEADER_AQECHONUMBERS
const vxl_uint_16 VIL_DICOM_HEADER_AQECHONUMBERS
Definition:
vil_dicom_header.h:145
VIL_DICOM_HEADER_PIPATIENTNAME
const vxl_uint_16 VIL_DICOM_HEADER_PIPATIENTNAME
Definition:
vil_dicom_header.h:125
vil_dicom_header_info::scanning_seq_
vil_dicom_header_type_of< vil_dicom_header_CS >::type scanning_seq_
Definition:
vil_dicom_header.h:390
VIL_DICOM_HEADER_IMPLANES
const vxl_uint_16 VIL_DICOM_HEADER_IMPLANES
Definition:
vil_dicom_header.h:185
VIL_DICOM_HEADER_IDREFERRINGPHYSICIAN
const vxl_uint_16 VIL_DICOM_HEADER_IDREFERRINGPHYSICIAN
Definition:
vil_dicom_header.h:115
VIL_DICOM_HEADER_IMRESCALESLOPE
const vxl_uint_16 VIL_DICOM_HEADER_IMRESCALESLOPE
Definition:
vil_dicom_header.h:197
VIL_DICOM_HEADER_IMRESCALEINTERCEPT
const vxl_uint_16 VIL_DICOM_HEADER_IMRESCALEINTERCEPT
Definition:
vil_dicom_header.h:196
vil_dicom_header_format::imageType
vil_dicom_header_image_type imageType(void)
Return any encapsulated image type.
VIL_DICOM_HEADER_JPEGEXTENDED_P3_5
const char *const VIL_DICOM_HEADER_JPEGEXTENDED_P3_5
Definition:
vil_dicom_header.h:322
vil_dicom_header_format::readHeaderElements
void readHeaderElements(vil_stream &fs)
Method to read the elements from the header.
VIL_DICOM_HEADER_DECIMALSTRING
const char *const VIL_DICOM_HEADER_DECIMALSTRING
Definition:
vil_dicom_header.h:223
VIL_DICOM_HEADER_DATE
const char *const VIL_DICOM_HEADER_DATE
Definition:
vil_dicom_header.h:222
VIL_DICOM_HEADER_JPEGSPECHIER_P21_23
const char *const VIL_DICOM_HEADER_JPEGSPECHIER_P21_23
Definition:
vil_dicom_header.h:332
VIL_DICOM_HEADER_IMPIXELREPRESENTATION
const vxl_uint_16 VIL_DICOM_HEADER_IMPIXELREPRESENTATION
Definition:
vil_dicom_header.h:190
vil_dicom_header_SL
Definition:
vil_dicom_header.h:264
VIL_DICOM_HEADER_MFGROUPLENGTH
const vxl_uint_16 VIL_DICOM_HEADER_MFGROUPLENGTH
Definition:
vil_dicom_header.h:92
VIL_DICOM_HEADER_JPEGDEFLOSSY_P2_4
const char *const VIL_DICOM_HEADER_JPEGDEFLOSSY_P2_4
Definition:
vil_dicom_header.h:321
VIL_DICOM_HEADER_AQMAGNETICFIELDSTRENGTH
const vxl_uint_16 VIL_DICOM_HEADER_AQMAGNETICFIELDSTRENGTH
Definition:
vil_dicom_header.h:146
VIL_DICOM_HEADER_TIME
const char *const VIL_DICOM_HEADER_TIME
Definition:
vil_dicom_header.h:238
vil_dicom_header_info::res_intercept_
vil_dicom_header_type_of< vil_dicom_header_DS >::type res_intercept_
Definition:
vil_dicom_header.h:453
VIL_DICOM_HEADER_JPEGBASELINE_P1
const char *const VIL_DICOM_HEADER_JPEGBASELINE_P1
Definition:
vil_dicom_header.h:320
vil_dicom_header_info::stud_ins_uid_
vil_dicom_header_type_of< vil_dicom_header_UI >::type stud_ins_uid_
Definition:
vil_dicom_header.h:421
vil_dicom_header_info::spacing_y_
vil_dicom_header_type_of< vil_dicom_header_DS >::type spacing_y_
Definition:
vil_dicom_header.h:451
VIL_DICOM_HEADER_MAXHEADERSIZE
constexpr unsigned VIL_DICOM_HEADER_MAXHEADERSIZE
Definition:
vil_dicom_header.h:56
VIL_DICOM_HEADER_SHORTTEXT
const char *const VIL_DICOM_HEADER_SHORTTEXT
Definition:
vil_dicom_header.h:237
VIL_DICOM_HEADER_IDMANUFACTURERMODEL
const vxl_uint_16 VIL_DICOM_HEADER_IDMANUFACTURERMODEL
Definition:
vil_dicom_header.h:121
vil_dicom_header_vr_type
vil_dicom_header_vr_type
Definition:
vil_dicom_header.h:246
vil_dicom_header_info::receiving_coil_
vil_dicom_header_type_of< vil_dicom_header_SH >::type receiving_coil_
Definition:
vil_dicom_header.h:414
vil_dicom_header_info::spacing_slice_
vil_dicom_header_type_of< vil_dicom_header_DS >::type spacing_slice_
Definition:
vil_dicom_header.h:452
vil_dicom_header_print
void vil_dicom_header_print(std::ostream &os, const vil_dicom_header_info &s)
vil_dicom_header_info::pat_orient_
vil_dicom_header_type_of< vil_dicom_header_CS >::type pat_orient_
Definition:
vil_dicom_header.h:427
VIL_DICOM_HEADER_MEDIAGROUP
const vxl_uint_16 VIL_DICOM_HEADER_MEDIAGROUP
Definition:
vil_dicom_header.h:73
vil_dicom_header_info::exposedarea_x_
vil_dicom_header_type_of< vil_dicom_header_US >::type exposedarea_x_
Definition:
vil_dicom_header.h:462
vil_dicom_header_info::sop_in_uid_
vil_dicom_header_type_of< vil_dicom_header_UI >::type sop_in_uid_
Definition:
vil_dicom_header.h:358
vil_dicom_header_info::patient_pos_
vil_dicom_header_type_of< vil_dicom_header_CS >::type patient_pos_
Definition:
vil_dicom_header.h:418
VIL_DICOM_HEADER_TEXTGROUP
const vxl_uint_16 VIL_DICOM_HEADER_TEXTGROUP
Definition:
vil_dicom_header.h:81
vil_dicom_header_info::scan_options_
vil_dicom_header_type_of< vil_dicom_header_CS >::type scan_options_
Definition:
vil_dicom_header.h:392
VIL_DICOM_HEADER_DATETIME
const char *const VIL_DICOM_HEADER_DATETIME
Definition:
vil_dicom_header.h:224
VIL_DICOM_HEADER_ATTRIBUTETAG
const char *const VIL_DICOM_HEADER_ATTRIBUTETAG
Definition:
vil_dicom_header.h:220
vil_dicom_header_info::photo_interp_
vil_dicom_header_type_of< vil_dicom_header_CS >::type photo_interp_
Definition:
vil_dicom_header.h:438
VIL_DICOM_HEADER_PADGROUP
const vxl_uint_16 VIL_DICOM_HEADER_PADGROUP
Definition:
vil_dicom_header.h:86
vil_dicom_header_format::image_type_
vil_dicom_header_image_type image_type_
A variable to hole the current encapsulate file type (if any).
Definition:
vil_dicom_header.h:755
VIL_DICOM_HEADER_SEQUENCE
const char *const VIL_DICOM_HEADER_SEQUENCE
Definition:
vil_dicom_header.h:235
VIL_DICOM_HEADER_DITJPEGFULLNH
Definition:
vil_dicom_header.h:45
vil_dicom_header_UT
Definition:
vil_dicom_header.h:273
VIL_DICOM_HEADER_IDSTATIONNAME
const vxl_uint_16 VIL_DICOM_HEADER_IDSTATIONNAME
Definition:
vil_dicom_header.h:116
VIL_DICOM_HEADER_BASICIMAGEOVERLAYBOXGROUP
const vxl_uint_16 VIL_DICOM_HEADER_BASICIMAGEOVERLAYBOXGROUP
Definition:
vil_dicom_header.h:78
vil_dicom_header_info::software_vers_
vil_dicom_header_type_of< vil_dicom_header_LO >::type software_vers_
Definition:
vil_dicom_header.h:405
VIL_DICOM_HEADER_PERSONNAME
const char *const VIL_DICOM_HEADER_PERSONNAME
Definition:
vil_dicom_header.h:232
VIL_DICOM_HEADER_BASICIMAGEBOXGROUP
const vxl_uint_16 VIL_DICOM_HEADER_BASICIMAGEBOXGROUP
Definition:
vil_dicom_header.h:76
vil_dicom_header_info::protocol_name_
vil_dicom_header_type_of< vil_dicom_header_LO >::type protocol_name_
Definition:
vil_dicom_header.h:406
vil_dicom_header_format
A class to read and write the header part of a dicom file.
Definition:
vil_dicom_header.h:489
vil_dicom_header_IS
Definition:
vil_dicom_header.h:257
VIL_DICOM_HEADER_UNSIGNEDLONG
const char *const VIL_DICOM_HEADER_UNSIGNEDLONG
Definition:
vil_dicom_header.h:240
vil_dicom_header_format::charSwap
void charSwap(char *char_in, int val_size)
Method to swap a number inside a char array.
vil_dicom_header_AE
Definition:
vil_dicom_header.h:248
VIL_DICOM_HEADER_EXPLICITBIG
const char *const VIL_DICOM_HEADER_EXPLICITBIG
Definition:
vil_dicom_header.h:319
VIL_DICOM_HEADER_RSPATIENTORIENTATION
const vxl_uint_16 VIL_DICOM_HEADER_RSPATIENTORIENTATION
Definition:
vil_dicom_header.h:171
vil_dicom_header_info::image_comments_
vil_dicom_header_type_of< vil_dicom_header_LT >::type image_comments_
Definition:
vil_dicom_header.h:434
VIL_DICOM_HEADER_DITJPEGSPECHIER
Definition:
vil_dicom_header.h:48
vil_dicom_header_info::acquisition_time_
vil_dicom_header_type_of< vil_dicom_header_TM >::type acquisition_time_
Definition:
vil_dicom_header.h:365
VIL_DICOM_HEADER_BASICANNOTATIONBOXGROUP
const vxl_uint_16 VIL_DICOM_HEADER_BASICANNOTATIONBOXGROUP
Definition:
vil_dicom_header.h:77
VIL_DICOM_HEADER_SIGNEDLONG
const char *const VIL_DICOM_HEADER_SIGNEDLONG
Definition:
vil_dicom_header.h:234
vil_dicom_header_info::imager_spacing_x_
vil_dicom_header_type_of< vil_dicom_header_DS >::type imager_spacing_x_
Definition:
vil_dicom_header.h:412
vil_dicom_header_info::series_time_
vil_dicom_header_type_of< vil_dicom_header_TM >::type series_time_
Definition:
vil_dicom_header.h:364
vil_dicom_header_info::study_date_
vil_dicom_header_type_of< vil_dicom_header_DA >::type study_date_
Definition:
vil_dicom_header.h:359
VIL_DICOM_HEADER_AQREPETITIONTIME
const vxl_uint_16 VIL_DICOM_HEADER_AQREPETITIONTIME
Definition:
vil_dicom_header.h:141
VIL_DICOM_HEADER_PATIENTINFOGROUP
const vxl_uint_16 VIL_DICOM_HEADER_PATIENTINFOGROUP
Definition:
vil_dicom_header.h:63
vil_dicom_header_info::pos_ref_ind_
vil_dicom_header_type_of< vil_dicom_header_LO >::type pos_ref_ind_
Definition:
vil_dicom_header.h:432
VIL_DICOM_HEADER_AQINVERSIONTIME
const vxl_uint_16 VIL_DICOM_HEADER_AQINVERSIONTIME
Definition:
vil_dicom_header.h:143
VIL_DICOM_HEADER_RSSLICELOCATION
const vxl_uint_16 VIL_DICOM_HEADER_RSSLICELOCATION
Definition:
vil_dicom_header.h:177
vil_dicom_header_UL
Definition:
vil_dicom_header.h:270
vil_dicom_header_info::patient_weight_
vil_dicom_header_type_of< vil_dicom_header_DS >::type patient_weight_
Definition:
vil_dicom_header.h:386
vil_dicom_header_info::stored_bits_
vil_dicom_header_type_of< vil_dicom_header_US >::type stored_bits_
Definition:
vil_dicom_header.h:456
vil_dicom_header_format::last_read_
vil_dicom_header_info last_read_
Holds the info from the last header read.
Definition:
vil_dicom_header.h:735
Generated by
1.8.15