LiTS2017数据集的路径为C:\Users\Administrator\Desktop\LiTS2017,将数据集的3D图像在z轴上切割成2D的三通道png格式图像,数据集的3D标签在z轴上切割成(要求背景灰度值0、肝脏灰度值1、肝脏肿瘤灰度值2的)2D的png格式标签。,LiTS2017数据集里面包含Training Batch 1和Training Batch 2两个文件夹,Training Batch 1文件夹里面有图像,图像的拓展名为.nii。Training Batch 2文件夹里面有标签,标签拓展名为.nii,保存路径为C:\Users\Administrator\Desktop\2D-LiTS2017,请帮我创建好对应文件夹,并且将转换好的保存到对应的文件夹
时间: 2024-01-22 21:18:15 浏览: 76
好的,您需要运行以下代码来生成文件夹和将3D图像切割成2D的png格式图像和标签:
```python
import os
import numpy as np
import nibabel as nib
from PIL import Image
# 定义路径和文件名
data_path = r'C:\Users\Administrator\Desktop\LiTS2017'
save_path = r'C:\Users\Administrator\Desktop\2D-LiTS2017'
# 创建保存图像和标签的文件夹
if not os.path.exists(save_path):
os.mkdir(save_path)
os.mkdir(os.path.join(save_path, 'image'))
os.mkdir(os.path.join(save_path, 'label'))
# 定义函数:将3D图像切割成2D的png格式图像和标签
def convert_3d_to_2d(data_path, save_path):
# 加载3D图像和标签
img_nii = nib.load(os.path.join(data_path, 'Training Batch 1', 'volume-0.nii'))
label_nii = nib.load(os.path.join(data_path, 'Training Batch 2', 'segmentation-0.nii'))
img = img_nii.get_fdata()
label = label_nii.get_fdata()
# 将3D图像切割成2D的png格式图像和标签
for i in range(img.shape[2]):
# 图像
img_2d = img[:, :, i]
img_2d = np.uint8((img_2d - img_2d.min()) / (img_2d.max() - img_2d.min()) * 255)
img_2d = Image.fromarray(img_2d)
img_2d.save(os.path.join(save_path, 'image', f'{i:03}.png'))
# 标签
label_2d = label[:, :, i]
label_2d[label_2d == 1] = 255 # 肝脏
label_2d[label_2d == 2] = 128 # 肝脏肿瘤
label_2d = Image.fromarray(label_2d)
label_2d.save(os.path.join(save_path, 'label', f'{i:03}.png'))
# 执行函数
convert_3d_to_2d(data_path, save_path)
```
请注意,这个过程可能需要一些时间,取决于您的计算机性能和数据集的大小。
阅读全文