Python SimpleITK教程:批量读取、可视化.nii.gz格式3D医学图像及Mask
使用SimpleITK批量读取和可视化3D医学图像及Mask
本教程将演示如何使用Python的SimpleITK库批量读取文件夹下所有的.nii.gz格式3D医学图像,并进行可视化,同时在同一窗口中加载对应的Mask。此外,还将展示如何实现交互式暂停,以便用户可以方便地查看每一张图像。
**代码:**pythonimport SimpleITK as sitkimport matplotlib.pyplot as pltimport os
设置文件夹路径folder_path = 'path_to_folder' # 请将此处替换为实际的文件夹路径files = [file for file in os.listdir(folder_path) if file.endswith('.nii.gz')]
创建窗口plt.figure()
遍历每个文件for file in files: # 读取CT图像 image_path = os.path.join(folder_path, file) image = sitk.ReadImage(image_path) image_array = sitk.GetArrayFromImage(image) # 读取mask图像 mask_path = 'path_to_mask' # 请将此处替换为实际的Mask文件路径 mask = sitk.ReadImage(mask_path) mask_array = sitk.GetArrayFromImage(mask) # 显示CT图像 plt.imshow(image_array[0, :, :], cmap='gray') # 显示mask图像 plt.imshow(mask_array[0, :, :], cmap='jet', alpha=0.5) # 暂停,等待用户选择下一张图片 plt.pause(0.001) # 清除当前窗口 plt.clf()
关闭窗口plt.close()
代码说明:
- 首先,使用
os.listdir()函数获取指定文件夹下的所有文件名,并筛选出以'.nii.gz'结尾的文件。2. 然后,使用for循环遍历每个文件。3. 在循环中,使用sitk.ReadImage()函数读取CT图像和对应的Mask图像。4. 使用sitk.GetArrayFromImage()函数将SimpleITK图像对象转换为NumPy数组。5. 使用plt.imshow()函数显示CT图像和Mask图像。6. 使用plt.pause(0.001)函数暂停程序,等待用户按下任意键继续。7. 使用plt.clf()函数清除当前窗口,以便显示下一张图像。8. 最后,使用plt.close()函数关闭窗口。
使用方法:
- 将代码中的
'path_to_folder'和'path_to_mask'替换为实际的文件夹路径和Mask文件路径。2. 运行代码,程序将自动读取文件夹下所有.nii.gz格式的图像并进行可视化。3. 程序将在显示每一张图像后暂停,等待用户按下任意键继续。
注意:
- 请确保已经安装了SimpleITK和matplotlib库。可以使用
pip install SimpleITK matplotlib命令进行安装。* 代码中假设所有图像的Mask文件都存储在同一个文件夹下,并且文件名与图像文件名相同。如果实际情况不同,请修改代码中的mask_path变量。
原文地址: https://www.cveoy.top/t/topic/fzzN 著作权归作者所有。请勿转载和采集!