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

如何将患者的CT图像栈一次性输入模型而非逐张单图输入?

Nii.gz格式CT图像栈适配单张2D输入模型的处理方案

你此前的代码输出3D数组的原因是:调用skTrans.resize时仅指定了前两个维度的目标尺寸,第三个切片维度会被默认保留,因此得到的还是(宽, 高, 切片数)的3D结构,不符合单张2D输入的要求。

1. 逐切片输入模型的处理代码

如果你的模型需要逐张处理CT切片,可参考如下实现:

import nibabel as nib
import numpy as np
import skimage.transform as skTrans

# 加载nii.gz格式的CT图像栈
ct_vol = nib.load('/1164.nii.gz').get_fdata()
total_slice = ct_vol.shape[-1]
processed_slice_list = []

for idx in range(total_slice):
    # 提取单张2D切片
    single_slice = ct_vol[:, :, idx]
    # 调整分辨率到128*128,显式指定anti_aliasing参数消除警告
    resized_slice = skTrans.resize(
        single_slice, 
        (128, 128), 
        order=1, 
        preserve_range=True,
        anti_aliasing=True # 下采样时开启可避免伪影,不需要可设为False
    )
    # 如果模型要求输入带通道维度,可添加如下代码:
    # resized_slice = np.expand_dims(resized_slice, axis=-1)
    processed_slice_list.append(resized_slice)

# 后续遍历processed_slice_list即可得到单张2D numpy数组,直接输入模型

2. 全栈合并为单张2D输入的处理代码

如果你的模型要求将整份患者CT转换为单张2D输入,可先沿切片维度做投影,再调整分辨率:

import nibabel as nib
import numpy as np
import skimage.transform as skTrans

ct_vol = nib.load('/1164.nii.gz').get_fdata()
# 沿切片维度做最大密度投影,也可根据需求替换为np.mean做平均投影
proj_img = np.max(ct_vol, axis=-1)
resized_proj = skTrans.resize(
    proj_img,
    (128, 128),
    order=1,
    preserve_range=True,
    anti_aliasing=True
)
# 得到的resized_proj即为单张2D numpy数组

3. 警告消除方法

你遇到的抗锯齿警告是skimage版本兼容提示,只需在resize参数中显式指定anti_aliasing的布尔值,即可消除警告。下采样场景下建议开启该参数,避免图像出现伪影。

内容的提问来源于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 21:57:04