使用nibabel
的load
函数来读取NIfTI文件。
python复制代码
import nibabel as nib | |
nii_file = 'path/to/your/image.nii' # 替换为你的NIfTI文件路径 | |
img = nib.load(nii_file) | |
img_fdata = img.get_fdata() # 获取图像数据 |
3. 转换并保存为PNG图像
这里有两种主要的方法可以将NIfTI文件的切片保存为PNG图像:
方法一:使用imageio
库(适用于每个切片)
python复制代码
import imageio | |
import os | |
# 设定保存PNG的路径 | |
save_dir = 'path/to/save/pngs' | |
if not os.path.exists(save_dir): | |
os.makedirs(save_dir) | |
# 获取数据的维度 | |
(x, y, z) = img_fdata.shape | |
# 遍历Z轴上的每个切片 | |
for slice_index in range(z): | |
slice_data = img_fdata[:, :, slice_index] # 获取切片数据 | |
# 保存切片为PNG文件 | |
imageio.imwrite(os.path.join(save_dir, f'slice_{slice_index}.png'), slice_data) |
方法二:使用matplotlib
库(适用于可视化并保存)
如果你想在保存之前查看切片,或者想要更复杂的图像处理(如色彩映射、缩放等),可以使用matplotlib
。
python复制代码
import matplotlib.pyplot as plt | |
# 选择一个切片进行可视化 | |
slice_index = 0 | |
slice_data = img_fdata[:, :, slice_index] | |
# 可视化切片 | |
plt.imshow(slice_data, cmap='gray') # 假设是灰度图像 | |
plt.axis('off') # 关闭坐标轴 | |
# 保存为PNG文件 | |
plt.savefig(os.path.join(save_dir, f'slice_{slice_index}.png'), bbox_inches='tight', pad_inches=0) | |
plt.close() # 关闭图像以准备下一个 |