You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将NII格式3D影像批量转换为2D PNG格式切片供2D模型使用

NII格式3D影像转2D PNG批量输出方案

前置依赖

需要提前安装以下工具库:

  • nibabel:用于读取NII格式影像
  • numpy:用于数组数值处理
  • Pillow:用于PNG图像存储
    安装命令:
pip install nibabel numpy pillow

批量转PNG实现代码

你已读取的scan数组维度为(128, 128, 100),第三个维度对应100张切片,可直接按以下代码循环输出PNG:

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

# 定义输出文件夹,提前创建
output_dir = "./nii_slices_output"
os.makedirs(output_dir, exist_ok=True)

# 读取NII文件(你已有的代码)
scan = nib.load('/path/to/stackOfimages.nii.gz')
scan = scan.get_fdata()
# 确认维度为(128, 128, 100)
print(scan.shape)

# 遍历所有切片输出PNG
slice_count = scan.shape[2]
for i in range(slice_count):
    # 取出单张切片
    single_slice = scan[:, :, i]
    # 数值归一化到0-255区间,适配PNG存储要求
    # 若原始像素已在0-255范围,可跳过以下两行归一化代码
    single_slice = (single_slice - single_slice.min()) / (single_slice.max() - single_slice.min()) * 255
    single_slice = single_slice.astype(np.uint8)
    # 生成图片,命名按三位序号排序,方便后续批量读取
    img = Image.fromarray(single_slice)
    img.save(os.path.join(output_dir, f"slice_{i:03d}.png"))

输出的PNG会按slice_000.png到slice_099.png的命名规则存储,后续批量读取时可直接按文件名排序加载,符合你批量输入2D模型的要求。

无需存盘直接生成模型输入张量

如果不需要本地存储PNG文件,可直接将读取到的NII数组调整为模型要求的批量输入格式,示例如下(适配常见的[批量数, 高, 宽, 通道数]输入格式):

# 调整维度为(100, 128, 128),即[切片数, 高, 宽]
batch_input = scan.transpose(2, 0, 1)
# 新增单通道维度,适配CNN输入要求,最终shape为(100, 128, 128, 1)
batch_input = np.expand_dims(batch_input, axis=-1)
# 归一化到模型要求的数值范围(比如0-1)
batch_input = (batch_input - batch_input.min()) / (batch_input.max() - batch_input.min())

处理后的batch_input可直接输入2D模型进行推理,省略读写文件的IO开销。

内容的提问来源于stack exchange,提问作者Rawan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:15:00