【问题标题】:Overwriting DICOMDIR file with pydicom用 pydicom 覆盖 DICOMDIR 文件
【发布时间】:2019-08-10 12:04:46
【问题描述】:

我正在编辑多个 dicom 图像的元数据,在 dicomdir 之间划分。我已成功加载 dicomdir,遍历它以查找图像,编辑它们的元数据并覆盖原始 dicom 文件。

然后我成功地覆盖了 dicomdir 文件本身,但是当我尝试打开它(例如使用 Aeskulap)时,它给出了一条错误消息,上面写着“没有研究或错误的 DICOMDIR”。

当我尝试重新运行我的代码时,我收到以下错误消息:

Traceback (most recent call last):
File "dicom_run.py", line 28, in <module>
dicom_dir = read_dicomdir(list_files[0])
File "/home/user/anaconda3/lib/python3.7/site-packages/pydicom
/filereader.py", line 883, in read_dicomdir
ds = dcmread(filename)
File "/home/user/anaconda3/lib/python3.7/site-packages/pydicom
/filereader.py", line 850, in dcmread
force=force, specific_tags=specific_tags)
File "/home/user/anaconda3/lib/python3.7/site-packages/pydicom
/filereader.py", line 741, in read_partial
is_implicit_VR, is_little_endian)
File "/home/user/anaconda3/lib/python3.7/site-packages/pydicom
/dicomdir.py", line 57, in __init__
self.parse_records()
File "/home/user/anaconda3/lib/python3.7/site-packages/pydicom
/dicomdir.py", line 95, in parse_records
child = map_offset_to_record[child_offset]
KeyError: 504

当我访问目录中的单个 dicom 文件时,它们加载得很好,所以问题是我如何覆盖 dicomdir。

我使用以下代码这样做

import pydicom
from pydicom.filereader import read_dicomdir

# Load dicomdir
dicom_dir = read_dicomdir(<path_to_dicomdir>)

# Here I just traverse the dicom_dir object 
# as is outlined here: 
# https://pydicom.github.io/pydicom/stable/auto_examples/input_output/plot_read_dicom_directory.html

# Then I (successfully) overwrite the dicomdir with

dicom_dir.save_as(<path_to_dicomdir>)      

我也尝试过使用 write_file 和 write_dataset 函数,详见此处: https://pydicom.github.io/pydicom/stable/api_ref.html#module-pydicom.filewriter

再次失败。我有原始 dicomdir 文件的备份,当我替换它时,一切都恢复正常(并且每个图像的元数据都已被编辑)。我完全迷路了。

编辑: https://github.com/pydicom/pydicom/issues/918

我偶然发现了这一点。我想我得换一种方式了。

【问题讨论】:

  • 我有完全相同的错误。有人对此有解决方案吗?当我修改某些元素时会发生这种情况,例如患者姓名。可能会使用 FileSet?

标签: python pydicom


【解决方案1】:

我使用 dcmmkdir 并编写了一个小的 bash 脚本,该脚本进入所有文件夹并运行 dcmmkdir +r 成功覆盖了 dicomdir 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-25
    • 2020-12-29
    • 2014-10-22
    • 2016-05-25
    • 2019-10-21
    • 2013-10-25
    • 2011-11-02
    相关资源
    最近更新 更多