【问题标题】:Trying to edit private dicom tag试图编辑私人 dicom 标签
【发布时间】:2017-04-26 20:21:10
【问题描述】:

我目前正在尝试使用 python 中的 pydicom 编辑导致放射治疗出现问题的私有 dicom 标签。这里有点python新手,所以请多多包涵。

dicom 文件正确导入python;我在命令的第一张图片中附加了一些输出

ds = dicomio.read_file("xy.dcm")
print(ds)

这将返回以下数据: pydicom output

突出显示的标签是我需要编辑的标签。

当尝试类似的事情时

ds[0x10,0x10].value

这给出了正确的输出:

'SABR Spine'

但是,尝试类似

ds[3249,1000]

ds[3249,1000].value

返回以下输出:

> Traceback (most recent call last):
  File "<pyshell#64>", line 1, in <module>
    ds[3249,1000].value
  File "C:\Users\...\dataset.py", line 317, in __getitem__
    data_elem = dict.__getitem__(self, tag)
KeyError: (0cb1, 03e8)

如果我尝试通过相同的方法访问 [3249,1010],它会返回 (0cb1, 03f2) 的 KeyError。

我已经尝试将标签添加到 _dicom_dict.py 文件中,如第二张图片中突出显示的那样:

end of _dicom_dict.py

我做对了吗?我什至不确定我是否正确访问标签 - 使用

ds[300a,0070]

给我'SyntaxError: invalid syntax' 作为输出,例如,即使它作为分数组序列存在于文件中。我也被告知 [3249,1000] 以某种方式连接到 [3249,1010] ,显然因为它们是专有标签,它们不能在 Matlab 中编辑,但有人建议它们可以出于某种原因在 python 中编辑.

非常感谢

【问题讨论】:

    标签: python tags dicom pydicom


    【解决方案1】:

    看起来您的 dicomio 查找正在将所有输入转换为十六进制。

    你可以试试:

    ds[0x3249,0x1000]
    

    这应该可以防止任何强制转换为十六进制。

    您显然可以直接以字符串的形式访问它们:

    ds['3249', '1000']
    

    但是,您的问题是您正在尝试访问嵌套数层深的数据元素。根据您在顶部的输出,我建议您尝试:

    first_list_item = ds['300a', '0070'][0]
    
    for item in first_list_item['300c', '0004']:
        print(item['3249','1000'])
    

    本质上,来自顶级 Dataset 对象的数据元素可以是列表或另一个 Dataset 对象。使解析数据更加困难,但可能是不可避免的。

    查看this 了解更多信息。

    【讨论】:

    • 使用ds[0x3249,0x1000] 会返回与以前相同的错误消息,但使用KeyError: (3249,1000)。所以我认为你对十六进制的事情是正确的。这是否意味着我需要以某种方式修改我的 _dicom_dict.py 条目?
    • ds[0x32491000] 呢?
    • 返回相同的结果:KeyError: (3249,1000)
    • 另外,ds[int(3249, base=16), int(1000, base=16)] 返回 TypeError: int() can't convert non-string with explicit base
    • 添加了编辑。我认为您的问题是您正在尝试使用单个字典调用访问嵌套数据。您必须首先深入了解您想要的数据。您可以在提供的第一张图片中看到嵌套结构。
    【解决方案2】:

    正如 Andrew Guy 在他最后的评论中指出的那样,您需要获取 300a,0070 的第一个序列项。然后从那个item中的300c,0004序列中得到第二个序列item。在那个序列项中,应该可以得到3249,1000属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-25
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多