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