LiTS2017数据集的路径为C:\Users\Administrator\Desktop\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-02-03 17:13:20 浏览: 137
LITS2017肝脏肿瘤分割挑战数据集
5星 · 资源好评率100%
好的,以下是Python代码实现:
```python
import os
import numpy as np
import nibabel as nib
from PIL import Image
# 定义数据集路径和保存路径
data_path = 'C:/Users/Administrator/Desktop/LiTS2017'
save_path = 'C:/Users/Administrator/Desktop/2D-LiTS2017'
# 创建保存路径
if not os.path.exists(save_path):
os.makedirs(os.path.join(save_path, 'image'))
os.makedirs(os.path.join(save_path, 'label'))
# 循环遍历Training Batch 1文件夹中的图像
for i in range(1, 131):
# 读取图像
img_path = os.path.join(data_path, 'Training Batch 1', 'volume-' + str(i) + '.nii')
img = nib.load(img_path).get_fdata()
# 调整窗宽和窗位
img = np.clip(img, -200, 250)
img = (img + 200) / 450 * 255
img = img.astype(np.uint8)
# 将3D图像变成2D的三通道png格式图像
for j in range(img.shape[2]):
slice_img = Image.fromarray(img[:, :, j])
slice_img = slice_img.convert('RGB')
save_name = os.path.join(save_path, 'image', 'volume-' + str(i) + '-' + str(j+1) + '.png')
slice_img.save(save_name)
# 循环遍历Training Batch 2文件夹中的标签
for i in range(1, 131):
# 读取标签
label_path = os.path.join(data_path, 'Training Batch 2', 'segmentation-' + str(i) + '.nii')
label = nib.load(label_path).get_fdata()
# 将3D标签变成2D的png格式标签
for j in range(label.shape[2]):
slice_label = label[:, :, j]
slice_label[slice_label == 1] = 255
slice_label[slice_label == 2] = 128
slice_label = slice_label.astype(np.uint8)
save_name = os.path.join(save_path, 'label', 'segmentation-' + str(i) + '-' + str(j+1) + '.png')
Image.fromarray(slice_label).save(save_name)
```
运行以上代码后,你将得到一个名为2D-LiTS2017的文件夹,其中包含两个子文件夹:image和label。在image文件夹中,每张图像都是一个命名为volume-i-j.png的三通道png格式图像,其中i表示第几个患者,j表示该患者的第几张图像。在label文件夹中,每张标签都是一个命名为segmentation-i-j.png的灰度图像,其中i和j的含义同上。
阅读全文