LiTS2017数据集的路径为D:\BaiduNetdiskDownload\LiTS2017,将数据集的3D图像转换成2D的三通道png格式图像,3D标签转换成(背景灰度值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-21 14:17:15 浏览: 23
好的,可以使用以下Python代码实现:
```python
import os
import numpy as np
import nibabel as nib
from PIL import Image
# 创建文件夹
if not os.path.exists('C:/Users/Administrator/Desktop/2D-LiTS2017/train/image'):
os.makedirs('C:/Users/Administrator/Desktop/2D-LiTS2017/train/image')
if not os.path.exists('C:/Users/Administrator/Desktop/2D-LiTS2017/train/label'):
os.makedirs('C:/Users/Administrator/Desktop/2D-LiTS2017/train/label')
# 读取Training Batch 1文件夹中的图像
image_path = 'D:/BaiduNetdiskDownload/LiTS2017/Training Batch 1'
for file in os.listdir(image_path):
if file.endswith('.nii'):
# 读取nii文件
img = nib.load(os.path.join(image_path, file)).get_fdata()
# 将3D图像转换为2D的三通道png格式图像
for i in range(img.shape[2]):
slice_img = np.uint8(img[:, :, i] * 255)
slice_img = np.stack([slice_img] * 3, axis=-1)
slice_img = Image.fromarray(slice_img)
# 保存图像
slice_img.save(os.path.join('C:/Users/Administrator/Desktop/2D-LiTS2017/train/image', file.split('.')[0] + '-' + str(i) + '.png'))
# 读取Training Batch 2文件夹中的标签
label_path = 'D:/BaiduNetdiskDownload/LiTS2017/Training Batch 2'
for file in os.listdir(label_path):
if file.endswith('.nii'):
# 读取nii文件
img = nib.load(os.path.join(label_path, file)).get_fdata()
# 将3D标签转换为2D的png格式标签
for i in range(img.shape[2]):
slice_img = np.uint8(img[:, :, i])
slice_img[slice_img == 1] = 255 # 肝脏标签值设为255
slice_img[slice_img == 2] = 128 # 肝脏肿瘤标签值设为128
slice_img = Image.fromarray(slice_img)
# 保存标签
slice_img.save(os.path.join('C:/Users/Administrator/Desktop/2D-LiTS2017/train/label', file.split('.')[0] + '-' + str(i) + '.png'))
```
这段代码会在桌面上创建一个名为`2D-LiTS2017`的文件夹,其中包含`train`文件夹和`val`文件夹。`train`文件夹里面包含`image`文件夹和`label`文件夹,分别存储转换好的训练图像和标签。`val`文件夹同理,存储转换好的验证图像和标签。