NIfTI文件转JPG预处理方法及操作合理性咨询
使用Python代码预处理NIfTI文件
import os import nibabel as nib from PIL import Image import numpy as np def convert_nifti_to_jpeg(nifti_file, output_dir, dpi=300, output_size=(300, 300)): # 加载NIfTI文件 img = nib.load(nifti_file) data = img.get_fdata() # 遍历所有切片并保存为JPEG图像 for i in range(data.shape[2]): # 提取2D切片 slice_data = data[:, :, i] # 将像素值归一化到0-255(适配uint8编码) min_val = np.nanmin(slice_data) max_val = np.nanmax(slice_data) # 处理除零或NaN值情况 if min_val == max_val: normalized_slice = np.zeros_like(slice_data) else: normalized_slice = ((slice_data - min_val) / (max_val - min_val) * 255).astype('uint8') # 从numpy数组创建PIL图像 image = Image.fromarray(normalized_slice) # 转换为灰度模式('L') image = image.convert('L') # 将图像调整为指定尺寸 image = image.resize(output_size) # 定义输出文件路径 output_file = os.path.join(output_dir, f'slice_{i}.jpg') # 以指定DPI保存为JPEG格式 image.save(output_file, format='JPEG', dpi=(dpi, dpi))
我已经实现了将NIfTI文件转换为JPG图像用于模型训练的操作,但有个疑问:其他切片是否包含重要信息?不过我确认过,这些切片都无法显示完整的脑部结构。
每位患者对应4种不同模态的NIfTI文件:
- Flair
- T2
- T1
- T1ce
将单份NIfTI文件转换为2D切片后,共得到155张切片,其中仅第78张能显示完整脑部,因此我只提取了这一层MRI图像。
考虑到T1ce是T1的增强形式,我决定忽略T1模态,转而将以下三种模态合并为多通道图像用于模型训练:
- Flair
- T1ce
- T2w
合并后的多通道MRI图像效果如下:
(图像呈现了三种模态融合后的完整脑部MRI结构,各模态特征在通道中得到保留)
内容的提问来源于stack exchange,提问作者Talha Imran
相关产品推荐
相关产品推荐

