【无标题】

本文介绍了如何使用Python处理医学图像中的.nii和.nii.gz文件,包括使用ITK-SNAP查看和将这些文件转换为PNG格式,以便于可视化和存储。提供了详细的代码示例,展示了从文件路径读取、数据处理到保存PNG文件的完整过程。
摘要由CSDN通过智能技术生成

处理医学图像中的nii和nii.gz文件

查看nii文件

可以下载ITK-SNAP(医学图像2D/3D可视化)进行查看,下载链接
安装:直接双击.exe文件即可
1、导入医学图像
直接把图像拖入ITK-SNAP
2、导入相应的mask
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

nii文件转png图像

import os
import nibabel as nib
from PIL import Image

nii_folder = '/datasets/LiTs17'  # 替换为包含NIfTI文件的文件夹路径
output_folder = '/datasets/LiTs17_PNG/'  # 替换为输出PNG文件的文件夹路径
os.makedirs(output_folder, exist_ok=True)

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

        # 加载NIfTI文件
        nii_data = nib.load(nii_file_path)
        nii_array = nii_data.get_fdata()

        # 将像素值范围归一化到0-255之间
        nii_array_normalized = ((nii_array - nii_array.min()) / (nii_array.max() - nii_array.min())) * 255
        nii_array_normalized = nii_array_normalized.astype('uint8')

        # 创建PIL图像对象
        for slice_idx in range(nii_array.shape[2]):
            slice_data = nii_array_normalized[:, :, slice_idx]
            png_image = Image.fromarray(slice_data, mode='L')

            # 构建PNG文件名,并保存为PNG文件
            png_file_name = f'{os.path.splitext(nii_file_name)[0]}_{slice_idx:03d}.png'
            png_file_path = os.path.join(output_folder, png_file_name)
            png_image.save(png_file_path)

将nii.gz文件转为png图像


import os
import numpy as np
import nibabel as nib
from PIL import Image

input_folder = '/root/autodl-tmp/datasets/LiTs17'  # 输入NIfTI文件夹路径
output_folder = '/root/autodl-tmp/datasets/LiTs17_png'  # 输出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)

        # 加载NIfTI文件
        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[-1]):
            slice_data = nii_data[..., slice_idx]
            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_image.save(png_file_path)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值