用零填充的 DICOM 文件元信息版本
DICOM File Meta Information Version padded with zeros
我有一个这样开头的 DICOM 文件,根据规范第 5、6 和 10 部分,它的大部分对我来说都有意义,但文件元信息版本元素 (0002,0001) 有我被骗了。
00000000: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000010: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000020: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000080: 4449 434d 0200 0000 554c 0400 ce00 0000 DICM....UL......
00000090: 0200 0100 4f42 0000 0200 0000 0001 0200 ....OB..........
000000a0: 0200 5549 1e00 312e 322e 3834 302e 3130 ..UI..1.2.840.10
000000b0: 3030 382e 352e 312e 342e 312e 312e 3737 008.5.1.4.1.1.77
000000c0: 2e31 2e36 0200 0300 5549 3800 312e 322e .1.6....UI8.1.2.
这是我不明白的地方:
00000090: 0200 0100 4f42 0000 0200 0000 0001
前四个字节是(0002,0001)标签,后面两个字节是VR 4f42 = OB。我希望值长度(2 个字节)为 0200,版本为 0001,但中间的两组 0000 是什么?
我在这里没有找到任何填充规范,无论如何,我在规范中发现的所有填充都只扩展到填充到两个字节边界,从来没有四个或更多。
如果零是 32 位数量中的前导零,那么我希望它们出现在 0200 和 0100 之后,而不是之前。当然,长度必须是 0400,而不是 0200。
该文件由 OrthancWSIDicomizer.exe 创建,Orthanc DICOM 产品的一部分。
我错过了什么? (除了显而易见的:对 DICOM 的深刻理解!)
I haven't found any specification of padding here,
数据元素已正确编码:在 Explicit VR Little Endian 传输语法中,有 是 填充,具体取决于数据元素的值表示。根据Table 7.1-1,如果VR是“OB”、“OD”、“OF”、“OL”、“OV”、“OW”、“SQ”、“UC”、“UR”中的任何一个, “UT”,或者“UN”,那么两个VR字节后面跟着“保留(2字节)设置为0000H的值”,元素的长度定义为4 个字节而不是 2 个。在本例中,这些是位置 0096
处的字节。 0098
处的后续 4 个字节表示元素的长度:0200 0000
(2
的小端)。
带头的完整数据元素长 14 个字节:0200 0100 4f42 0000 0200 0000 0001
,(0002,0001) 文件元信息版本,OB,值为 1。
我有一个这样开头的 DICOM 文件,根据规范第 5、6 和 10 部分,它的大部分对我来说都有意义,但文件元信息版本元素 (0002,0001) 有我被骗了。
00000000: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000010: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000020: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000080: 4449 434d 0200 0000 554c 0400 ce00 0000 DICM....UL......
00000090: 0200 0100 4f42 0000 0200 0000 0001 0200 ....OB..........
000000a0: 0200 5549 1e00 312e 322e 3834 302e 3130 ..UI..1.2.840.10
000000b0: 3030 382e 352e 312e 342e 312e 312e 3737 008.5.1.4.1.1.77
000000c0: 2e31 2e36 0200 0300 5549 3800 312e 322e .1.6....UI8.1.2.
这是我不明白的地方:
00000090: 0200 0100 4f42 0000 0200 0000 0001
前四个字节是(0002,0001)标签,后面两个字节是VR 4f42 = OB。我希望值长度(2 个字节)为 0200,版本为 0001,但中间的两组 0000 是什么?
我在这里没有找到任何填充规范,无论如何,我在规范中发现的所有填充都只扩展到填充到两个字节边界,从来没有四个或更多。
如果零是 32 位数量中的前导零,那么我希望它们出现在 0200 和 0100 之后,而不是之前。当然,长度必须是 0400,而不是 0200。
该文件由 OrthancWSIDicomizer.exe 创建,Orthanc DICOM 产品的一部分。
我错过了什么? (除了显而易见的:对 DICOM 的深刻理解!)
I haven't found any specification of padding here,
数据元素已正确编码:在 Explicit VR Little Endian 传输语法中,有 是 填充,具体取决于数据元素的值表示。根据Table 7.1-1,如果VR是“OB”、“OD”、“OF”、“OL”、“OV”、“OW”、“SQ”、“UC”、“UR”中的任何一个, “UT”,或者“UN”,那么两个VR字节后面跟着“保留(2字节)设置为0000H的值”,元素的长度定义为4 个字节而不是 2 个。在本例中,这些是位置 0096
处的字节。 0098
处的后续 4 个字节表示元素的长度:0200 0000
(2
的小端)。
带头的完整数据元素长 14 个字节:0200 0100 4f42 0000 0200 0000 0001
,(0002,0001) 文件元信息版本,OB,值为 1。