【问题标题】:write dicom header to csv将 dicom 标头写入 csv
【发布时间】:2021-03-15 15:33:30
【问题描述】:

我有一堆 .dcm 文件(骰子文件),我想在其中提取标题并将其中的信息保存在 CSV 文件中。

如下图所示,我的分隔符有问题:

例如看图片中的第二行时:我想这样拆分:

0002 | 0000 | File Meta Information Group Length | UL | 174

但正如您所见,我不仅有多个分隔符,而且有时 ' ' 是一个,有时不是。第三列的长度也不同,所以有时那里只有较短的文本,例如图像类型在图片下方。

有没有人有一个聪明的主意,如何将其写入 CSV 文件?
我使用 pydicom 读取和显示 IDE 中的文件。 我会非常感谢任何建议:)

【问题讨论】:

  • 请不要张贴文字图片,尤其是文字图片的链接。链接腐烂,文本应该是可搜索和可剪切粘贴的。
  • 你能添加一个指向示例文件的链接吗(你可以使用 pastebin.com 之类的东西)
  • 很抱歉这个评论,但必须声明的是,我普遍认为将 DICOM 转换为 CSV 的想法不是很聪明。原因是 CSV “是一张表”,而 DICOM “是一棵树”。因此,CSV 通常不适合转换 DICOM 文件。一般来说,您的输出看起来非常不友好。您可能想尝试一下 DCMTK 中的 dcmdump,它会产生更统一的输出。
  • 马克:下次我会记住的,谢谢你的发言。 Martin:我在这里上传了一个示例文件:easyupload.io/sm6idj 但 darcymason 可能已经解决了我的问题 :) @kritzel_sw 请不要抱歉。我很欣赏你的评论!我对 dcm 文件很陌生。但在未来,我计划在 neo4j 数据库中实现文件,这就是我需要 csv 的原因,尽管它有点伤害树结构。我会看看 dcmdump,非常感谢你 :)

标签: python csv pydicom


【解决方案1】:

我建议回到数据元素本身并从那里开始工作,而不是从字符串输出(这实际上是为了在交互式会话中探索)

以下代码应该适用于没有序列的数据集,需要一些修改才能使用序列:

import csv
import pydicom
from pydicom.data import get_testdata_file

filename = get_testdata_file("CT_small.dcm")  # substute your own filename here
ds =  pydicom.dcmread(filename)

with open('my.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow("Group Elem Description VR value".split())
    for elem in ds:
        writer.writerow([
            f"{elem.tag.group:04X}", f"{elem.tag.element:04X}",
            elem.description(), elem.VR, str(elem.value)
        ])

可能还需要进行一些更改以使 elem.value 部分看起来像您想要的那样,或者您可能希望将 CSV 编写器设置为在项目周围使用引号等。

输出如下:

Group,Elem,Description,VR,value
0008,0005,Specific Character Set,CS,ISO_IR 100
0008,0008,Image Type,CS,"['ORIGINAL', 'PRIMARY', 'AXIAL']"
0008,0012,Instance Creation Date,DA,20040119
0008,0013,Instance Creation Time,TM,072731
...

【讨论】:

    猜你喜欢
    • 2016-12-01
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多