医学图像3D->2D(.nii.gz->.png)的转换

3D医学图像转换为2D图像在医学领域具有重要的应用价值和意义,主要体现在以下几个方面:

  1. 增强诊断准确性:通过将3D图像转换为2D图像,医生可以更容易地识别和分析病变区域,尤其是在细节方面。例如,MRI和CT图像在精确地描绘脊柱后部结构时,2D图像可以提供更清晰的视觉表现,有助于医生进行更精确的诊断。
  2. 手术规划和导航:在手术规划中,2D图像可以提供更直观的视图,帮助医生更好地理解手术区域的解剖结构。此外,2D图像也可以用于手术导航,尤其是在内窥镜手术中,2D图像可以提供实时的手术视野。
  3. 提高工作效率:将3D图像转换为2D图像可以减少医生在分析图像时的工作量,因为2D图像更容易处理和解释。这种转换可以加快图像分析的速度,提高工作效率。
  4. 图像存储和传输:2D图像通常比3D图像占用更少的存储空间,也更容易在不同的医疗设备和系统中传输。这对于远程医疗和电子健康记录系统尤为重要。
  5. 图像处理和分析算法的开发:许多现有的图像处理和分析算法都是为2D图像设计的。将3D图像转换为2D图像可以使得这些算法能够应用于3D医学图像,从而扩展了算法的应用范围。
  6. 促进多模态图像融合:在某些情况下,可能需要将不同模态的医学图像(如MRI、CT、X光)融合在一起以提供更全面的信息。将这些图像转换为2D格式可以简化融合过程,并提高融合图像的质量。
  7. 推动AI在医学图像分析中的应用:随着深度学习技术的发展,AI在医学图像分析中的作用越来越重要。将3D图像转换为2D图像可以使得AI算法更容易地应用于医学图像,从而提高诊断的自动化和准确性。

       3D医学图像转换为2D图像在医学诊断、治疗规划、教育、研究和AI应用等多个方面都具有重要的价值和意义。随着技术的进步,这种转换技术将进一步提高医疗保健的质量和效率。

 相关代码:

# 导入相关库
import os
import numpy as np
import nibabel as nib
from PIL import Image

input_folder = 'D:\prostate\BIDMC\image/'  # 输入.nii.gz文件夹路径
output_folder = 'D:\ProstateSlice\BIDMC\image/'  # 输出.png文件夹路径
os.makedirs(output_folder, exist_ok=True)

# 遍历输入文件夹中的每个 .nii.gz 文件
for nii_file_name in os.listdir(input_folder):
    if nii_file_name.endswith('.nii.gz'):
        nii_file_path = os.path.join(input_folder, nii_file_name)

        # 加载 .nii.gz 文件
        nii_image = nib.load(nii_file_path)
        nii_data = nii_image.get_fdata()

        # # 创建输出文件夹(创建子文件夹)
        # output_subfolder = os.path.join(output_folder, nii_file_name.replace('.nii.gz', ''))
        # os.makedirs(output_subfolder, exist_ok=True)

        # 将NIfTI数据转换为PNG图像并保存在输出子文件夹中
        for slice_idx in range(nii_data.shape[0]):  # 以哪个方向做切片,0[-3]为长,1[-2]为宽,2[-1]为高(具体情况,具体分析)
            # slice_data = nii_data[..., slice_idx]  # 根据切割方向不同设置数据列表(此为shape[-1])
            slice_data = nii_data[slice_idx, ...]  # 根据切割方向不同设置数据列表(此为shape[0])
            slice_data_normalized = ((slice_data - np.min(slice_data)) / (
                        np.max(slice_data) - np.min(slice_data))) * 255
            slice_data_normalized = slice_data_normalized.astype(np.uint8)
            png_image = Image.fromarray(slice_data_normalized, mode='L')
            # png_file_path = os.path.join(output_subfolder, f'slice_{slice_idx:03d}.png')  # 输出路径设置(输出至子文件夹中)
            # png_file_path = os.path.join(output_folder, nii_file_name[:6] + "_" + "{:0>3}".format(str(slice_idx + 1)) + ".png")  # mask切片命名
            png_file_path = os.path.join(output_folder, nii_file_name[:-7] + "_" + "{:0>3}".format(str(slice_idx + 1)) + ".png")  # image切片命名
            png_image.save(png_file_path)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值