请将我的LiTS2017数据集的3D图像变成2D、RGB三通道、的png格式的图像。数据集的3D标签变成2D(背景灰度值0、肝脏灰度值1、肝脏肿瘤灰度值2的)的png格式标签。 LiTS2017数据集里面包含Training Batch 1和Training Batch 2两个文件夹。Training Batch 1文件夹里面有图像,图像的拓展名为.nii。Training Batch 2文件夹里面有标签,标签拓展名为.nii。 LiTS2017数据集的路径为C:\Users\Administrator\Desktop\LiTS2017。 保存路径为C:\Users\Administrator\Desktop\2D-LiTS2017,请帮我创建好对应文件夹,并且将转换好的数据保存到对应的文件夹。
时间: 2024-02-05 17:12:00 浏览: 88
好的,这里提供一个Python的代码实现。需要使用到nibabel库来读取.nii文件,以及numpy和Pillow库来进行图像数据的处理和保存。请确保这些库已经安装了。
```python
import os
import numpy as np
import nibabel as nib
from PIL import Image
# 数据集路径
data_dir = "C:/Users/Administrator/Desktop/LiTS2017"
# 保存路径
save_dir = "C:/Users/Administrator/Desktop/2D-LiTS2017"
# 创建保存路径
os.makedirs(os.path.join(save_dir, "images"), exist_ok=True)
os.makedirs(os.path.join(save_dir, "labels"), exist_ok=True)
# 遍历Training Batch 1文件夹中的所有.nii文件
for file in os.listdir(os.path.join(data_dir, "Training Batch 1")):
if file.endswith(".nii"):
# 读取.nii文件
img = nib.load(os.path.join(data_dir, "Training Batch 1", file)).get_fdata()
# 转换为2D图像
img = np.transpose(img, (2, 0, 1)) # 将z轴放在最后
for i in range(img.shape[0]):
# 归一化到0-255之间
img_2d = (img[i] / np.max(img[i]) * 255).astype(np.uint8)
# 转换为RGB三通道图像
img_2d_rgb = np.stack([img_2d] * 3, axis=2)
# 保存为png格式
Image.fromarray(img_2d_rgb).save(os.path.join(save_dir, "images", file[:-4] + f"_{i:03d}.png"))
# 遍历Training Batch 2文件夹中的所有.nii文件
for file in os.listdir(os.path.join(data_dir, "Training Batch 2")):
if file.endswith(".nii"):
# 读取.nii文件
img = nib.load(os.path.join(data_dir, "Training Batch 2", file)).get_fdata()
# 转换为2D标签
img = np.transpose(img, (2, 0, 1)) # 将z轴放在最后
img_2d = np.zeros((img.shape[1], img.shape[2]), dtype=np.uint8)
img_2d[img[-1] == 0] = 1 # 背景
img_2d[img[-1] == 1] = 2 # 肝脏
img_2d[img[-1] == 2] = 3 # 肝脏肿瘤
img_2d[img[-1] == 3] = 3 # 肝脏肿瘤
# 保存为png格式
Image.fromarray(img_2d).save(os.path.join(save_dir, "labels", file[:-4] + ".png"))
```
这段代码将会把Training Batch 1中的.nii文件转换成2D的RGB三通道的png格式图像,保存在2D-LiTS2017/images文件夹中;将Training Batch 2中的.nii文件转换成2D的0-3灰度值的png格式标签,保存在2D-LiTS2017/labels文件夹中。
阅读全文