读取nii.gz格式的医学图像和标签

直接在Pycharm中CV
安装相应的包可对具体内容取消注释进行展示

import numpy as np  # 转换格式
import nibabel as nib   # 读取数据
import matplotlib.pyplot as plt # 单张图像展示
from nibabel.viewers import OrthoSlicer3D   # nii.gz展示
import matplotlib
matplotlib.use('TkAgg') # 用于滚动查看nii.gz

# 使用 nibabel库读取图像
image_path = r"G:\Task66_K\imagesTr\9006723.nii.gz"
image_obj = nib.load(image_path)
print(f'文件路径: {image_path}')
print(f'图像类型: {type(image_obj)}')

# 提取numpy数组
image_data = image_obj.get_fdata()
# print(type(image_data))

# 查看图像大小
depth, height, width = image_data.shape
print(f"The image object height: {height}, width:{width}, depth:{depth}")

# 查看图像值范围
print(f'image value range: [{image_data.min()}, {image_data.max()}]')

# 可视化图像
OrthoSlicer3D(image_obj.dataobj).show()

# 查看图像成像信息
print(image_obj.header.keys())

# 图像分辨率信息
pixdim =  image_obj.header['pixdim']
print(f'z轴分辨率: {pixdim[3]}')
print(f'in plane 分辨率: {pixdim[1]} * {pixdim[2]}')

# 依据层厚信息,以及矩阵大小,就可以求出实际的扫描范围。
z_range = pixdim[3] * depth
x_range = pixdim[1] * height
y_range = pixdim[2] * width
print(f'扫描范围:', x_range, y_range, z_range)

# 查看指定层slice图像
maxval = 140
i = np.random.randint(0, maxval)
# Define a channel to look at
print(f"Plotting z Layer {i} of Image")
plt.imshow(image_data[:, :, i], cmap='gray')
plt.axis('off'); # 关闭网格
plt.show()


# 读取标签数据
label_path = "G:\Task66_K\labelsTr\9006723.nii.gz"
label_obj = nib.load(label_path)
label_array = label_obj.get_fdata()
print(f'label_path: {label_path}')
# 查看label里面有几种值
print(f'标签中有几种值: {np.unique(label_array)}')

# 查看每个标签对应多少像素
print(f'每个标签像素数量:',np.unique(label_array, return_counts=True))


参考内容:

https://blog.csdn.net/u014264373/article/details/119545255?spm=1001.2101.3001.6650.12&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-13.highlightwordscore&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-13.highlightwordscore

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在R语言中,可以使用`oro.nifti`包来读取nii.gz文件。首先,确保已经安装了`oro.nifti`包。然后,可以使用以下代码来读取nii.gz文件: ```R library(oro.nifti) # 读取nii.gz文件 image <- readNIfTI("path/to/your/file.nii.gz") # 查看文件信息 print(image) # 获取图像数据 image_data <- image$img # 查看图像数据的维度 print(dim(image_data)) # 查看图像数据的像素值范围 print(range(image_data)) ``` 请将"path/to/your/file.nii.gz"替换为你的nii.gz文件的路径。这段代码将读取nii.gz文件并将其存储在`image`对象中。你可以使用`print(image)`来查看文件的信息,使用`dim(image_data)`来查看图像数据的维度,使用`range(image_data)`来查看图像数据的像素值范围。 #### 引用[.reference_title] - *1* [python读取.nii.gz文件并展示医学图片](https://blog.csdn.net/hahahashinia/article/details/100939778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [python读取nii文件nii.gz文件](https://blog.csdn.net/weixin_44669966/article/details/124325767)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值