注意在安装完该库后,需要在系统用户文件夹下,新建pylidc.conf文件,为该库的运行指明文件存放的位置。
[dicom]
path = G:\dataset_zhang\LIDC-IDRI
将以上路径修改为数据集存放的路径。
测试该库是否安装成功代码如下:
import pylidc as pl
from pylidc.utils import consensus
import os
dataset_path = r'G:\dataset\_zhang\LIDC-IDRI\\'#修改路径哦
dicom_name = 'LIDC-IDRI-0001'
PathDicom = os.path.join(example) # 构建当前病例文件夹的完整路径
# 查询当前病例的扫描数据,并将第一个扫描结果存储到scan变量中
scan = pl.query(pl.Scan).filter(pl.Scan.patient_id == example).first()
print(scan)
1.1.2图像读取-(读取CT图像的patch和分割标注)
我们以数据集中的’LIDC-IDRI-0001’病例数据为例,使用pylidc库中的按照病例文件夹名字的查询的方式,将该病例的所有的数据储存在scan中。而后提取所有专家对图像分割的标注坐标和肺结节的体素立方体。一个病例中含有多个肺结节默认提取第一个。使用的plt画图功能展示。代码如下
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as manim
from skimage.measure import find_contours
import cv2
import pylidc as pl
from pylidc.utils import consensus
import os
dataset_path = r'G:\dataset\_zhang\LIDC-IDRI\\'
dicom_name = 'LIDC-IDRI-0001'
print(dicom_name) # 打印当前DICOM文件夹的名称
PathDicom = os.path.join(dataset_path, dicom_name) # 构建当前DICOM文件夹的完整路径
# 查询当前病例的扫描数据,并将第一个扫描结果存储到scan变量中
scan = pl.query(pl.Scan).filter(pl.Scan.patient_id == dicom_name).first()
vol = scan.to_volume()# 将该扫描数据转换成数组形式的体积(volume)
# 聚类注释(nodule annotations)以获取一组注释
nods = scan.cluster_annotations()
try:
anns = nods[0] # 尝试获取第一个注释(annotation)
Malignancy = anns[0].Malignancy # 获取注释中的恶性程度(Malignancy)信息
except IndexError:
# 如果没有注释,或者无法获取第一个注释,则继续下一个DICOM文件夹
continue
# 执行共识合并(consensus consolidation)和50%的一致性水平(agreement level)。