问题描述
我正在尝试从现有的 DICOM 文件(实例)创建一个新的 DICOM 文件(实例),并在其中更改像素数据。
我知道在替换像素数据时我需要更改一些 UID。目前我正在生成 SOPInstanceUID
、MediaStorageSOPInstanceUID
和 ReferencedSOPInstanceUID
(如果适用)。
是否还有其他一些 UID 需要更改才能获得有效的 DICOM 文件?如果您能指点我在标准中的何处查找此内容,将会很有帮助。
解决方法
以下是关于 UID 唯一性的规范的引用:
唯一标识符 (UID) 提供了唯一标识各种项目的能力。它们保证了多个国家、站点、供应商和设备的唯一性。不同类别的对象、对象的实例和信息实体可以在整个 DICOM 话语领域中相互区分,而与任何语义上下文无关。
PS 3.5 2017a - Data Structures and Encoding - 9 Unique Identifiers (UIDs)
如果您要更改像素数据(将压缩(传输语法)更改为有损或全部覆盖),则必须更改 SOP Instance UID (0008,0018)
。
关于 Media Storage SOP Instance UID (0002,0003)
,如您所见,它属于第 2 组,即文件元信息标题。这些标签仅在您将实例序列化到硬盘时出现。这应该与 SOP Instance UID (0008,0018)
具有相同的值。所以,如果你改变一个,你也应该改变另一个。请参考this答案和规范中的以下部分:
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 - Information Object Definitions - C.12.1.1.1
Referenced SOP Instance UID (0008,1155)
是对其他实例的引用。这取决于您是否需要根据您的情况进行更改;一般不需要。请参阅 this 答案以了解有关参考 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