前言
案例代码https://github.com/2012Netsky/pytorch_cnn/blob/main/2_volumetric_ct.ipynb
一、tensor打印配置
#!/usr/bin/env python
# coding: utf-8
import numpy as np
import torch
torch.set_printoptions(edgeitems=2, threshold=50)
# precision是每一个元素的输出精度,默认是八位;
# threshold是输出时的阈值,当tensor中元素的个数大于该值时,进行缩略输出,默认时1000;
# edgeitems是输出的维度,默认是3;
# linewidth字面意思,每一行输出的长度;
# profile=None,修正默认设置(不太懂,感兴趣的可以试试)
二、读取dcm图像至numpy
# 读取文件夹下的dcm文件
# 读取三维图像体数据
import imageio
dir_path = "../data/p1ch4/volumetric-dicom/2-LUNG 3.0 B70f-04083"
# volread函数接收把目录作为参数 将所有医学数字成像和通信文件汇编为一个numpy的三维数组
vol_arr = imageio.volread(dir_path, 'DICOM')
vol_arr.shape
三、dcm(numpy)图像转tensor
#dcm数据转为tensor
vol = torch.from_numpy(vol_arr).float()
print(vol.shape)
# 最前面插入一个纬度
# 编辑读取的图像数据和pytorch期望的图像数据一致
vol = torch.unsqueeze(vol, 0)
print(vol.shape)
四、dcm数据查看
# dcm数据查看
get_ipython().run_line_magic('matplotlib', 'inline')
import matplotlib.pyplot as plt
plt.subplot(141)
plt.imshow(vol_arr[0])
plt.title('vol_arr[0]')
plt.subplot(142)
plt.imshow(vol_arr[30])
plt.title('vol_arr[30]')
plt.subplot(143)
plt.imshow(vol_arr[60])
plt.title('vol_arr[60]')
plt.subplot(144)
plt.imshow(vol_arr[90])
plt.title('vol_arr[90]')
plt.show()