我正在编辑多个dicom图像的元数据,这些图像在dicomdirs之间划分。我已经成功地加载了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
我偶然发现了这个。我想我得换一种方式来做了。
发布于 2019-08-12 03:20:51
我使用dcmmkdir并编写了一个小bash脚本,该脚本进入所有文件夹并运行dcmmkdir +r,成功覆盖了dicomdir文件。
https://stackoverflow.com/questions/57441998
复制相似问题