【发布时间】: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?