赞
踩
DICOM 的全称是 Digital Imaging and Communications in Medicine, 医学数字成像和通信。
DICOM 是一种文件格式,可以将医学影像,图像的信息 (比如像素间距), 病人信息(比如姓名出生日期)和其他信息 (比如检日期)储存在一个文件中。
这种格式被广泛应用于X射线,CT,核磁共振和超声等。
这篇笔记记录一下用python读入CT 的.dicom 文件的一些代码。
DICOM文件的读入+ 图像读取
- 需要用到的包
import pydicom ##用于DICOM格式的读取
from matplotlib import pyplot as plt ##用于画图
import os ##用于文件遍历
import numpy as np ##图像的本质是数组(array), numpy是处理数组必备的包
- Dicom 单个文件读入+图像读取
pathX = './文件路径' ##定义路径为pathX
X_train_files = os.listdir(pathX) ##读入pathX中所有文件,X_train_files是一个list, 包含了所有文件的名字
i = np.random.choice(len(X_train_files)) ##随机选取X_train_files中的一个index *这个不是必须的步骤,这里是为了随机选取一个文件
ds = pydicom.dcmread(os.path.join(pathX , X_train_files[i])) ##读入随机选取的文件为ds, 读入的ds 数据类型为dataset.FileDataset, 如图
image = ds.pixel_array ##将ds文件的像素信息读为image,作为图像用于处理。我处理的ct图像读入的image 是512*512 大小的array
plt.imshow(image,cmap='gray') ###图像可视化
- Dicom 多个文件读入+图像读取
pathX = './文件路径' ##重复步骤
X_train_files = os.listdir(pathX) ##重复步骤
all_images = [] ####定义一个叫all_images的list
####接下来是一个for loop, i=0-(len(X_train_files)-1)
for i in range(len(X_train_files)):
ds = pydicom.dcmread(os.path.join(pathX , X_train_files[i]))
image = ds.pixel_array
all_images.append(image)
all_images = np.array(all_images) ###得到的all_images包含了路径中所有的dicom文件中的图像信息,我的路径中一共有100张图,得到的all_images的size 是 (100,512,512), 100代表图像个数,512*512 在前文中已经提到,是单个图像的大小
- Dicom 其他信息读取
除了图像之外,Dicom文件中还包含了很多数值信息,每个数值信息会有一个名字, 称为tag--存储该项信息的标识. 例如病人名字的tag 是'PatientName'
print(ds.dir()) ###查看所有的tag
print(ds.'PatientName') ###查看'PatientName'这个tag下的名字信息
print(ds.data_element('PatientName')) ###查看'PatientName'这个tag下完整的数据元素,包含了tag的编码,名字信息,数据类型长度等
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。