【问题标题】:Iterate DICOM files迭代 DICOM 文件
【发布时间】:2017-06-27 04:12:18
【问题描述】:

我正在使用 pydicom 读取 dicom 文件(患者姓名),但我所有的 dicom 文件的名称都为 i34、i67 等(这些名称没有特定的顺序或顺序)。 我的问题:我有一个 txt 文件中的患者姓名列表,我想用所有 dicom 文件搜索此 txt 文件中的每个患者姓名,在 dicom 文件中查找他们的 PatientName(对于那些不熟悉的人,每个 dicom 文件有许多患者的信息,其中之一是 PatientName)

示例:

txt 文件: 约翰 乔治 林戈 保罗

Dicom 文件: i54 i98 i64 i12

我想要什么: 以 John 为例,在 i54、i98、i64、i12 中搜索 PatientName 匹配项。并为 txt 文件中的每个名称执行此操作。希望我说清楚了。提前致谢!

编辑

我尝试了这段代码,但没有成功

import dicom
import os

dir = "/path/to/dir_where_dicom_file_are"
txt = open('/path/to/txt_with_patientsnames.txt','r')
for line in txt:
    for sub, dirs, files in os.walk(dir):
        names = line.strip()
        for dcm in files:
           ds = dicom.read_file(dir+dcm) #necessary for read dicom files                            
           patient = ds.PatientName
           if names in patient:
           #do something

我抽取了 20 个 dicom 图像和 20 个名称的样本。我知道这个样本只有一个 dicom 文件属于一个患者姓名,所以我的输出应该只有一个匹配项吧?但我从中得到了 20 个匹配结果。怎么了?

【问题讨论】:

    标签: python pydicom


    【解决方案1】:

    问题在于逻辑(更具体地说是缺乏逻辑)

    dir = "/path/where/dcm/files/are"
    arq = open('path/where/file with pacient names are/patient.txt','r')
    for linha in arq:
         c = linha.strip()
         for sub,p,a in os.walk(dir):
            for dcm in a:
              ds = dicom.read_file(dir+dcm)
              pctname = ds.PatientName           
              if c in pctname:
              #do something
    

    说实话,我一开始不知道哪里出了问题。

    【讨论】:

      【解决方案2】:

      您也可以考虑从不同的角度来解决这个问题。您可以将 DICOM 文件组织到一个目录层次结构中,该层次结构在其中一个级别包含 PatientName。这将简化快速定位相关文件的过程。一个可以帮助您完成这项任务的脚本是 dicomsort

      使用该工具,下面的命令会将输入目录中的 DICOM 文件排序到 PatientName > StudyDate > SeriesDescription-InstanceNumber 命名的目录结构中。我经常把这样的排序作为后续处理的前提。当然,如果您正在处理一个非常大的数据集,并且只需要访问其中的一小部分,这将是一个次优的解决方案,但我认为它可能对您的情况很方便。

      dicomsort data sorted/%PatientName/%StudyDate/%SeriesDescription-%InstanceNumber.dcm
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多