DICOM 未定义标签长度,PIXEL
Posted
技术标签:
【中文标题】DICOM 未定义标签长度,PIXEL【英文标题】:DICOM undefined tag length, PIXELs 【发布时间】:2014-01-02 09:57:05 【问题描述】:我正在编写一些软件来读取 DICOM 文件,但我不确定如何处理未定义长度的标签。标准说
"如果值字段具有显式长度,则值长度字段应包含等于长度(以字节为单位)的值 值字段。否则,值字段 有一个未定义的长度和一个序列定界 项目标记值字段的结束。 "
所以要读取长度未定义的值FFFFFFFF
,我将继续读取字节,直到遇到序列分隔项FFFEE0DD
。如果该值包含一系列恰好等于序列分隔项的字节,会发生什么?如何正确定位序列分隔项?
【问题讨论】:
【参考方案1】:未定义的属性在 DICOM 中用于 SQ 标记和像素数据 (7fe0,0010)。在这两种情况下,数据块都可以使用多一个项目标签 (FFFE,E000) 进行编码,并且属性的结束由序列定界项目 (FFFE,E0DD) 发出信号。
在像素数据的情况下,每个像素数据片段都使用项目标签 (FFFE,E000) 进行编码。每个像素数据片段都被编码为固定长度。像素数据的每一帧可以由一个或多个像素数据片段组成。像素数据中编码的第一个项目标签是一个基本的偏移表。如果一帧编码有多个片段,则此偏移表将告诉每个帧的像素数据内的偏移量。如果偏移表的长度为零,则每个帧都被编码为单个片段。您可以在 DICOM 第 5 部分的表 A.4-1 中查看编码示例。无论如何,你应该可以通过重复读取8个字节的像素数据来解析像素数据的内容,得到Item Tag/Sequence Delimiter Item + 每个片段的长度,然后读取实际指定的字节数长度和重复。
您可以在 DICOM 的第 5 部分,表 7.5-2 和表 7.5-3 中看到 SQ 属性编码的示例。这以类似的方式工作,除了与项目标签关联的长度可能是“未定义的长度”。然而,在序列的情况下,您可以继续解析序列的内容,因为它们只是标签数据。
【讨论】:
以上是关于DICOM 未定义标签长度,PIXEL的主要内容,如果未能解决你的问题,请参考以下文章
未捕获(承诺)TypeError:无法读取未定义的属性“长度”