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 14:18:11 浏览: 28
好的,我来帮您创建对应的文件夹,并将转换好的数据保存到对应文件夹中。
首先,我们需要安装以下库:SimpleITK、numpy和os。
您可以在终端中使用以下命令进行安装:
```
pip install SimpleITK numpy
```
然后,您可以使用以下代码实现数据集的转换和保存:
``` python
import SimpleITK as sitk
import numpy as np
import os
# 定义数据集路径
data_path = r'C:\Users\Administrator\Desktop\LiTS2017'
# 定义保存路径
save_path = r'C:\Users\Administrator\Desktop\2D-LiTS2017'
# 创建对应的文件夹
os.makedirs(os.path.join(save_path, 'image'))
os.makedirs(os.path.join(save_path, 'label'))
# 加载数据集
for i in range(1, 3):
# 读取图像
image_path = os.path.join(data_path, f'Training Batch {i}', 'volume.nii')
image = sitk.ReadImage(image_path)
image_array = sitk.GetArrayFromImage(image)
# 读取标签
label_path = os.path.join(data_path, f'Training Batch {i}', 'segmentation.nii')
label = sitk.ReadImage(label_path)
label_array = sitk.GetArrayFromImage(label)
# 将3D图像在z轴上切割成2D的三通道png格式图像,数据集的3D标签在z轴上切割成2D的png格式标签
for z in range(image_array.shape[0]):
image_slice = image_array[z, :, :]
label_slice = label_array[z, :, :]
# 保存2D图像
image_name = f'image_{i}_{z:03}.png'
label_name = f'label_{i}_{z:03}.png'
image_save_path = os.path.join(save_path, 'image', image_name)
label_save_path = os.path.join(save_path, 'label', label_name)
# 将背景灰度值转换为0,肝脏灰度值转换为1,肝脏肿瘤灰度值转换为2
label_slice[label_slice == 1] = 255
label_slice[label_slice == 2] = 128
# 将图像和标签保存为png格式
sitk.WriteImage(sitk.GetImageFromArray(image_slice), image_save_path)
sitk.WriteImage(sitk.GetImageFromArray(label_slice), label_save_path)
```
上述代码将会读取LiTS2017数据集中的Training Batch 1和Training Batch 2文件夹中的图像和标签,并将它们转换为2D的png格式图像和标签,并将它们保存到对应的文件夹中。其中,图像保存在`2D-LiTS2017/image`文件夹中,标签保存在`2D-LiTS2017/label`文件夹中。