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

如何将nii.gz格式医学影像体数据渲染为单张彩色映射图像?

将NIfTI体数据渲染为彩色合成单张图像

你可以通过**融合三个正交平面的切片(分别映射到RGB通道)**实现类似目标效果的彩色合成图像,以下是完整实现方案:

完整代码

import nibabel as nib
import matplotlib.pyplot as plt
import numpy as np

# 加载NIfTI文件
mri_file = '/tmp/out_img/case0001_gt.nii.gz'
img = nib.load(mri_file)
img_data = img.get_fdata()  # 修正原代码笔误:mg_data -> img_data

# 获取三个正交平面的中间切片
# 轴向切片(x-y平面,z轴中间位置)
z_mid = img_data.shape[2] // 2
axial_slice = img_data[:, :, z_mid].T
# 冠状切片(x-z平面,y轴中间位置)
y_mid = img_data.shape[1] // 2
coronal_slice = img_data[:, y_mid, :].T
# 矢状切片(y-z平面,x轴中间位置)
x_mid = img_data.shape[0] // 2
sagittal_slice = img_data[x_mid, :, :].T

# 归一化切片数据到0-1范围(适配RGB通道要求)
def normalize_slice(slice_data):
    return (slice_data - np.min(slice_data)) / (np.max(slice_data) - np.min(slice_data))

axial_norm = normalize_slice(axial_slice)
coronal_norm = normalize_slice(coronal_slice)
sagittal_norm = normalize_slice(sagittal_slice)

# 对齐切片尺寸(确保三个切片大小一致,取最小尺寸裁剪)
min_height = min(axial_norm.shape[0], coronal_norm.shape[0], sagittal_norm.shape[0])
min_width = min(axial_norm.shape[1], coronal_norm.shape[1], sagittal_norm.shape[1])

axial_cropped = axial_norm[:min_height, :min_width]
coronal_cropped = coronal_norm[:min_height, :min_width]
sagittal_cropped = sagittal_norm[:min_height, :min_width]

# 合成RGB图像:轴向→红通道,冠状→绿通道,矢状→蓝通道
rgb_img = np.stack([axial_cropped, coronal_cropped, sagittal_cropped], axis=-1)

# 显示合成图像
plt.figure(figsize=(10, 10))
plt.imshow(rgb_img, origin='lower')
plt.xlabel('像素宽度')
plt.ylabel('像素高度')
plt.title('NIfTI体数据多平面RGB合成图')
plt.axis('off')
plt.show()

# 可选:保存合成图像
# plt.imsave('/tmp/rgb_composite.png', rgb_img)

关键说明

  • 切片自定义:代码默认取各轴中间切片,你可以手动指定切片位置(比如z_mid = 119匹配你原代码的切片)
  • 色彩调整:可修改RGB通道的切片映射顺序,改变不同解剖结构的色彩显示效果
  • 投影替代方案:如果需要更接近体渲染的效果,可用**最大强度投影(MIP)**替代单切片,示例代码如下:
    # 轴向MIP投影(取z轴所有切片的最大值)
    axial_mip = np.max(img_data, axis=2).T
    # 冠状MIP投影(取y轴所有切片的最大值)
    coronal_mip = np.max(img_data, axis=1).T
    # 矢状MIP投影(取x轴所有切片的最大值)
    sagittal_mip = np.max(img_data, axis=0).T
    
    后续归一化、尺寸对齐和合成步骤与上述代码一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:45:34