将 dicom 标头写入 csv

时间:2021-03-15 15:33:30

标签: python csv pydicom

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

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

part of dicom-header

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

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

但正如你所看到的,我不仅有多个分隔符,而且有时“ ”是一个,有时不是。第三列的长度也有所不同,所以有时那里只有较短的文本,例如图片在图片下方输入。

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

1 个答案:

答案 0 :(得分: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
...
相关问题