如何使 dicom 文件的 header 不可读
how to render a dicom file's header unreadable
有点奇怪的问题,但我正在做一些测试来处理无法读取 dicom 文件的标签时的错误。
很遗憾,我没有损坏的 dicom 可用。
具体来说,谁能建议如何将某种编码不正确的文本标签或一些无效的数字数据标签应用到文件中,这样它就无法被 python 的 pydicom 包读取?
您可以查看 DCMTK 中的 dcmodify 工具。它可用于插入、修改和删除属性。我怀疑是否可以通过命令行指定无效的属性值,但您肯定可以修改源代码来实现这一点(除非您绝对可以根据值表示编写超过最大长度的属性值)。
我的方法是创建一个字符缓冲区并将二进制数据写入其中。然后将其传递给将值写入属性的方法。
示例:
- 写入不是有效 unicode 字符的 unicode (UTF-8) 序列
- 写入 (0008,0005) 指定的字符集未涵盖的 ascii 字符 - 不确定 pydicom 是否会 运行 出现问题,但从 DICOM 的角度来看是错误的
- 将非数字字符写入具有值表示 "Decimal String" 或 "Integer String" 的属性。
- VR 的 YYYYMMDD 以外的格式 "Date"
- VR HHMMSS.FFFFFF 以外的格式 "Time"
- 除['0'-'9']、'.'以外的其他字符对于 VR "Unique Identifier"
[编辑]:DCMTK,dcmodify:http://dicom.offis.de/dcmtk.php.en
有点奇怪的问题,但我正在做一些测试来处理无法读取 dicom 文件的标签时的错误。
很遗憾,我没有损坏的 dicom 可用。
具体来说,谁能建议如何将某种编码不正确的文本标签或一些无效的数字数据标签应用到文件中,这样它就无法被 python 的 pydicom 包读取?
您可以查看 DCMTK 中的 dcmodify 工具。它可用于插入、修改和删除属性。我怀疑是否可以通过命令行指定无效的属性值,但您肯定可以修改源代码来实现这一点(除非您绝对可以根据值表示编写超过最大长度的属性值)。
我的方法是创建一个字符缓冲区并将二进制数据写入其中。然后将其传递给将值写入属性的方法。
示例:
- 写入不是有效 unicode 字符的 unicode (UTF-8) 序列
- 写入 (0008,0005) 指定的字符集未涵盖的 ascii 字符 - 不确定 pydicom 是否会 运行 出现问题,但从 DICOM 的角度来看是错误的
- 将非数字字符写入具有值表示 "Decimal String" 或 "Integer String" 的属性。
- VR 的 YYYYMMDD 以外的格式 "Date"
- VR HHMMSS.FFFFFF 以外的格式 "Time"
- 除['0'-'9']、'.'以外的其他字符对于 VR "Unique Identifier"
[编辑]:DCMTK,dcmodify:http://dicom.offis.de/dcmtk.php.en