python将DICOM格式的3D医学图像读取为三维矩阵的代码是什么?
时间: 2024-02-19 13:58:21 浏览: 252
python对DICOM图像的读取方法详解
5星 · 资源好评率100%
下面是使用Python读取DICOM格式的3D医学图像并将其转换为三维矩阵的代码:
```python
import os
import pydicom
import numpy as np
# 定义DICOM图像路径
dicom_dir = '/path/to/dicom/files/'
# 获取DICOM图像列表
dicom_list = os.listdir(dicom_dir)
# 读取第一个DICOM图像,获取图像大小和像素间距信息
first_dicom = pydicom.read_file(os.path.join(dicom_dir, dicom_list[0]))
width, height = first_dicom.Rows, first_dicom.Columns
slice_thickness = first_dicom.SliceThickness
pixel_spacing = first_dicom.PixelSpacing
# 计算图像的z轴向像素间距
slice_spacing = slice_thickness + pixel_spacing[1]
# 计算图像的层数
num_slices = len(dicom_list)
# 创建一个三维矩阵,用于存储图像数据
image_3d = np.zeros((num_slices, width, height))
# 读取DICOM图像,并将图像数据存储到三维矩阵中
for i, dicom_file in enumerate(dicom_list):
dicom_path = os.path.join(dicom_dir, dicom_file)
dicom = pydicom.read_file(dicom_path)
image_2d = dicom.pixel_array
image_3d[i, :, :] = image_2d
# 将三维矩阵中的像素间距和层数信息保存为元组
spacing = (pixel_spacing[0], pixel_spacing[1], slice_spacing)
size = (width, height, num_slices)
# 打印三维矩阵的形状和像素间距信息
print('Image shape:', image_3d.shape)
print('Pixel spacing:', spacing)
```
以上代码中,首先定义DICOM图像的路径,然后读取第一个DICOM图像,获取图像大小和像素间距信息,计算图像的z轴向像素间距,以及图像的层数。接着,创建一个三维矩阵,用于存储图像数据,遍历DICOM图像列表,读取DICOM图像,并将图像数据存储到三维矩阵中。最后,将三维矩阵中的像素间距和层数信息保存为元组,并打印三维矩阵的形状和像素间距信息。
阅读全文