我正在尝试从现有文件创建一个新的 DICOM 文件(实例),并在其中更改像素数据。
我知道在替换像素数据时需要更改一些 UID。目前我正在生成SOPInstanceUID
,MediaStorageSOPInstanceUID
并且ReferencedSOPInstanceUID
在适用的地方。
是否需要更改其他一些 UID 才能获得有效的 DICOM 文件?如果您能指出我在标准中的何处查找此内容,那将很有帮助。
我正在尝试从现有文件创建一个新的 DICOM 文件(实例),并在其中更改像素数据。
我知道在替换像素数据时需要更改一些 UID。目前我正在生成SOPInstanceUID
,MediaStorageSOPInstanceUID
并且ReferencedSOPInstanceUID
在适用的地方。
是否需要更改其他一些 UID 才能获得有效的 DICOM 文件?如果您能指出我在标准中的何处查找此内容,那将很有帮助。
以下是讨论 UID 唯一性的规范引用:
唯一标识符 (UID) 提供了唯一标识各种项目的能力。它们保证跨多个国家、站点、供应商和设备的唯一性。不同类别的对象、对象实例和信息实体可以在 DICOM 的话语世界中彼此区分开来,而与任何语义上下文无关。
PS 3.5 2017a - 数据结构和编码 - 9 个唯一标识符 (UID)
如果要更改像素数据(将压缩(传输语法)更改为有损或一起覆盖),则必须更改SOP Instance UID (0008,0018)
.
关于Media Storage SOP Instance UID (0002,0003)
,如您所见,它属于第 2 组,即文件元信息标头。这些标签仅在您将实例序列化到硬盘时出现。这应该与 的值相同SOP Instance UID (0008,0018)
。所以,如果你改变了一个,你也应该改变另一个。请参阅此答案和规范中的以下部分:
C.12.1.1.1 SOP 类 UID、SOP 实例 UID
SOP 类 UID 和 SOP 实例 UID 属性是为所有 DICOM IOD 定义的。但是,它们仅在类型等于 1 的复合 IOD 中编码。请参阅第 C.1.2.3 节。编码时,它们应等于 DIMSE 服务和文件元信息标头中的各自属性(参见 PS3.10 媒体存储)。
PS3.3 2021a - 信息对象定义 - C.12.1.1.1
Referenced SOP Instance UID (0008,1155)
是对其他实例的引用。这取决于您是否需要根据您的情况进行更改;一般不需要。有关引用的 SOP 实例 UID 的更多详细信息,请参阅此答案。
Transfer Syntax UID (0002,0010)
需要根据您应用的新传输语法进行更改。在覆盖像素数据时,如果要更改它,请相应地更改 UID。
SOP Class UID (0008,0016)
并定义您的Media Storage SOP Class UID (0002,0002)
SOP 类。仅仅改变像素数据,你并没有改变它。所以你不需要改变这个UID。
Implementation Class UID (0002,0012)
与创建者相关联。无需更改。
关于Study Instance UID (0020,000D)
并Series Instance UID (0020,000E)
取决于您的用例的决定。这取决于您希望用户如何处理新创建的实例。比如说,在为 Study 创建报告时,许多实现不会更改 Study IUID 而是创建新系列(即新系列 IUID)。
有关详细信息,请参阅以下答案:
https ://stackoverflow.com/a/46316162/5779732
https://stackoverflow.com/a/53775161/5779732