1

我正在使用 LIDC-IDRI 数据集进行一个项目,该数据集包含肺部 CT 图像,这是一个 DICOM 文件(.dcm),数据组织在文件夹中,每个文件夹都有一次扫描的图像,为了澄清,我将举一个例子前三个扫描文件夹系统,其他遵循相同的原则(图像在每次扫描的最后一个文件夹中)

first scan:  LIDC-IDRI\LIDC-IDRI-0001\01-01-2000-30178\3000566-03192
second scan: LIDC-IDRI\LIDC-IDRI-0002\01-01-2000-98329\3000522-04919
third scan:  LIDC-IDRI\LIDC-IDRI-0003\01-01-2000-94866\3000611-03264

我的问题是,如何读取此文件夹系统中的图像?我的意思不仅是一个文件夹,而是所有文件夹?我使用下面的代码来读取图像

import numpy as np
import pydicom
import os
import matplotlib.pyplot as plt

data_path = 'E:/LIDC-IDRI/'
patients_data = os.listdir(data_path)
patients_data.sort()

def load_scan(path):
    slices = [pydicom.read_file(path + '/' + s) for s in os.listdir(path)]

    return slices

full_path = load_scan(data_path + patients_data[0])

当我运行它时,它给了我这个错误:

在此处输入图像描述

但是当我像下面这样更改文件夹系统时:(删除每次扫描的最后两个文件夹):

first scan:  LIDC-IDRI\LIDC-IDRI-0001\
second scan: LIDC-IDRI\LIDC-IDRI-0002\
third scan:  LIDC-IDRI\LIDC-IDRI-0003\

它可以正常工作,没有任何错误,谁能告诉我如何解决这个问题?

4

1 回答 1

2

您的第一次扫描是 LIDC-IDRI\LIDC-IDRI-0001\01-01-2000-30178\3000566-03192

权限被拒绝错误是针对文件的: e:/LIDC-IDRI/LIDC-IDRI-0001/01-01-2000-30178

请注意,这01-01-2000-30178是第一个扫描文件路径上的目录。权限被拒绝,因为操作系统无法像读取普通文件那样读取目录。您将需要修改代码以排除目录,或者检查它们并进入它们。

您可以使用如下代码捕获整个树中的所有文件名(但不是目录名):

import os.path
all_filenames = []
for dirpath, dirnames, filenames in os.walk(data_path):
    all_filenames += [os.path.join(dirpath, filename) for filename in filenames]
all_filenames.sort()

然后阅读它们

slices = [pydicom.read_file(filename) for filename in all_filenames]
于 2018-07-06T03:28:15.417 回答