首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用pydicom覆盖DICOMDIR文件

用pydicom覆盖DICOMDIR文件
EN

Stack Overflow用户
提问于 2019-08-10 20:04:47
回答 1查看 377关注 0票数 2

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

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

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

代码语言:javascript
复制
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的。

我使用以下代码来实现这一点

代码语言:javascript
复制
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

我偶然发现了这个。我想我得换一种方式来做了。

EN

回答 1

Stack Overflow用户

发布于 2019-08-12 03:20:51

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57441998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档