📄 medical image format faq - part 4.htm
字号:
1138-2157 series header (length 1020)
2158-3079 image header (length 1022 for mr)
(length 1020 for ct)
3080-3179 zero padding
</PRE>
<P>NB. this record DOES NOT begin with "IMGF" ! </P>
<P>The second record of the file is 5208 bytes long (in my case anyway) and
followed by 8192 byte records and a final record of whatever is left over. </P>
<P>This 5208 byte record contains a "proper" header in the ximg output format
and starts with "IMGF". The subsequent byte offsets to the image data,
compression headers, histogram header etc. are correct and offset from the
beginning of this second record and NOT the start of the file. Furthermore the
pointers to those headers in the first record (suite, exam, series and image
headers) are TOTALLY WRONG and must be ignored ... I don't know how their values
are derived but it is not obvious. </P>
<P>I presume that the files were reorganized this way in order to make it easy
for simple utilities to access the demographic data to index the tape or
something. Anyway it is easy to rewrite utilities that read the ximg format to
take all this into account and extract the tags and the images. </P>
<P>The image data byte offset (eg. 5204) in the file header is 4 bytes too
short, eg. 3180 + 5204 + 4 -> 3188 which is where the image data starts. </P>
<P>If you are not familiar with the Genesis ximg format, on a Signa at least,
you can run "/usr/g/insite/bin/ximg -g" to extract a prototype C header file
describing the file format. </P>
<H6>3.3.1.2.3 <A name=Signa5XRaw>GE MR Signa 5.x Raw data</A></H6>
<H5>3.3.1.3 <A name=Max>GE MR Max</A></H5>
<P>References (see the <A
href="http://www.dclunie.com/medical-image-faq/html/part7.html#GEContactFormats">GEMS
image format information contacts</A> section): </P>
<UL>
<LI>46-021856 CT Pace Image Data Format <BR>
<LI>46-021862 MR Max Image Data Format <BR></LI></UL>
<P>I do not have any MR Max images to try this on, but am told that the format
is essentially the same as the CT <A
href="http://www.dclunie.com/medical-image-faq/html/part3.html#Pace">GE CT
Pace</A>, with some different fields in the image header: </P><PRE> For MR only:
0xc0 string 5 Tilt ordered by user Axis+/-Angle [xx+/-xx]
0x100 string 2 Echo number
0x102 string 2 Number of echoes
0x104 string 2 Slice number
0x106 string 2 Number of slices
0x108 string 2 Number of excitations
0x10a string 5 Repetition time ms
0x110 string 5 Inversion time ms
0x115 string 5 Echo time ms
0x130 string 4 Magnetic flux density (T)
</PRE>
<H5>3.3.1.4 <A name=Vectra>GE MR Vectra</A></H5>
<P>Same comments as pertain to the Sytec/Pace entry in the CT section. A few
sample files on a floppy would be much appreciated. </P>
<H4>3.3.2 <A name=MRSiemens>Siemens MR</A></H4>
<P>It would seem that two formats are used on Siemens MR scanners, modern ones
at least. There is a native format that is specific to each family of scanners,
and an "exported" ACR/NEMA based <A
href="http://www.dclunie.com/medical-image-faq/html/part3.html#SPI">SPI</A>
format. The earlier scanners define fewer useful elements in the exported
format, and encapsulate parts of the native header in private elements, whereas
the more recent forms are more complete implementations. The comments below are
based on limited experience, and in most cases either the native or the exported
format has been examined, but not both. </P>
<P>A fairly common feature of all the native formats seems to be so-called
"image text" portion of the header which contains a more or less exact replica
of what is annotated on the film ... in the earlier models it is indeed an exact
replica, being 24 rows of 40 characters or whatever. This can be very helpful in
deciphering un unknown format. Interestingly enough, though many values are
repeated in string form from binary values in the header, patient identification
information often occurs only in the text header and nowhere else ! </P>
<H5>3.3.2.1 <A name=GBS>Siemens Magnetom GBS/GBS II</A></H5>
<H6>3.3.2.1.1 <A name=GBSNative>Siemens Magnetom GBS/GBS II Native
Format</A></H6>
<P>Simply speaking the image data can be accessed in most cases as: </P>
<UL>
<LI>files 133120 bytes
<LI>image pixel data 256*256*2 little endian
<LI>image pixel offset 4096 bytes </LI></UL>
<P>In more detail, there is an initial brief fixed "Entry header" that contains
pointers to subsequent headers, where pointers are offsets to 512 byte records,
indexed from 1, and lengths are in 512 byte records, and binary values are Vax
data types, including type F floats. The image data is usually uncompressed
little endian two byte words, and it probably isn't worth going into details of
the compression scheme here. I have never tested it. Only the more important
header values are listed here: </P><PRE> Entry header (first 128 bytes of first 512 byte record):
0 short Number of entries (==9)
2 short Entry length (==2)
4 short Bytes per record (==512)
20 short Installation header pointer (usually == 2)
22 short Installation header length (usually == 1)
24 short Measurement header pointer (usually == 3)
26 short Measurement header length (usually == 2)
28 short Image text header pointer (usually == 5)
30 short Image text header length (usually == 2)
32 short Image data header pointer (usually == 9)
34 short Image data header length (usually == 256)
Image header (last 394 bytes of first 512 byte record):
0 short Data code (-1=raw data,1=image data,...)
10 short Rows
12 short Columns
24 short Bit depth of image
26 short Bit depth of ROI
28 short Bit map of ROI in use
54 short Pixels per 10cm
126 short Archive code
(10/12=128 uncompressed/compressed,
20/22=256 uncompressed/compressed,
50/52=512 uncompressed/compressed)
256 short View direction (-1=caudal,1=cranial)
258 short Orientation (-1=head first,1=feet first)
260 short Orientation (1=supine,2=prone,
3=right lateral,4=left lateral)
Installation header:
64 char[32] Serial number
Measurement header:
48 char[60] Protocol name
120 char[8] Sequence name
132 short Measurement type
(100=SE,200=IR,500=FID,
502=FID,600=SEM,800=FW)
138 short Number of echoes
140 short Number of averages
150 short Rows in acquisition
152 short Columns in acquisition
222 short Echo number
224 short Slice number
226 short Number of slices
228 short Slice orientation (1=X,2=Y,3=Z)
230 short X angle
232 short Y angle
234 short Z angle
236 short 3D resolution factor
238 short 3D partition
398 short Acquisition number
400 float_f Slice thickness (3D partition thickness)
440 short NMR frequency Hz
476 float_f TR secs
480 float_f TI secs
488 float_f[32] TE[echo 1..32] mS
756 float_f Field strength Tesla
772 float_f Slice thickness mm
776 float_f Slice gap mm
780 float_f[32] Slice distance[slice 1..32] mm
952 char[8] Imaged nucleus
972 short Flip angle
1004 float_f Patient weight kg
1020 float_f Table position mm
Image text header:
0 char[9] Installation name
9 char[5] Field strength <xxxx>T
15 char[25] Hospital name
40 char[25] Patient name
66 char[1] Trigger ('T'=ecg)
67 char[1] Gating ('H'=respiratory high,'L'=respiratory low)
68 char[3] Software version
71 char[1] Lookup table number
72 char[1] Measurement matrix size
('A'=128*128,'B'=256*256,'C'=512*512,
'D'=128*256,'E'=128*512,'F'=256*512,
'*'=raw data set incomplete)
73 char[1] Reproduction matrix size
('A'=128*128,'B'=256*256,'C'=512*512)
74 char[4] Number of acquisitions
78 char[2] Technique
('SE'=spin echo,'SU'=spin echo summation,
'SM'=spin echo multiecho,
'IR'=inversion recovery,
'IS'=inversion recovery summation,
'FD'=free induction decay,
'PU'=phase image uncorrected,
'PC'=phase image corrected,
'W '=lipid separation water image,
'F '=lipid separation fat image,
'3D'=image from 3D data,
'T1'=longitudinal relaxation time,
'1R'=T1 weighted density,
'T2'=transverse relaxation time,
'2F'=T2 fit,'2R'=T2 weighted density,
'RH'=density,'SI'=synthetic image)
80 char[12] Patient ID
113 char[2] View direction ('CR'=cranial,'CU'=caudal)
116 char[1] View direction ('H'=head first,'F'=feet first)
118 char[2] View direction ('SP'=supine,'PR'=prone,
'RP'=right lateral posterior,
'LP'=left lateral posterior)
120 char[2] Date - DD
123 char[3] Date - MMM
127 char[2] Date - YY
160 char[2] Time - HH
163 char[2] Time - MM
166 char[2] Time - SS
201 char[5] Image number
640 char[6] Inversion time TI<xxxx> mSecs,
flip angle FI<xxxx>,FL<xxxx>,FA<xxxx>
680 char[6] Repetition time TR<xxxx> Secs
680 char[6] Echo time TE<xxxx> mSecs
760 char[7] Slice thickness SL<xxxxx> mm
800 char[8] Slice position SP<xxxxx> mm
880 char[7] Slice orientation X <xxxx>,Y <xxxx>,Z <xxxx>,
zoom factor ZF <xxxx>, field of view FOV <xxx>
912 char[8] Acquisition time TA<mmm:ss>
920 char[6] Trigger delay for ecg TD<xxxx>
929 char[24] Image comments
</PRE>
<P>A sample text header follows: </P><PRE> MAGNETOM 1.5 T HOSPITAL
NONAME,JOHN 010199 D2 BB 2SE
14802 F FRONT CU-H-SP
04-FEB-94
19:06:06
> 74 R
I
G
H
T
TR .60
TE 15
SL 5.0
SP -28.4
Z 21
FOV 210 TA 5:10
</PRE>
<H6>3.3.2.1.2 <A name=GBSSPI>Siemens Magnetom GBS/GBS II SPI Format</A></H6>
<P>Unknown, perhaps doesn't exist. </P>
<H5>3.3.2.2 <A name=MagnetomSP>Siemens Magnetom SP</A></H5>
<H6>3.3.2.2.1 <A name=MagnetomSPNative>Siemens Magnetom SP Native
Format</A></H6>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -