请将LiTS2017数据集的图像和标签处理成2D的png格式,并且标签需要拆分成灰度图,背景灰度值0,肝脏灰度值1,肝脏肿瘤灰度值2,给出完整代码,我的LiTS2017数据集路径为C:\Users\Administrator\Desktop\LiTS2017,里面包含Training Batch 1,里面有图像。和Training Batch 2,里面有标签,保存路径为C:\Users\Administrator\Desktop\2D-LiTS2017,里面有image和mask两个文件夹,请将转换好的保存到对应的文件夹
时间: 2023-07-21 19:03:05 浏览: 131
以下是将LiTS2017数据集的图像和标签处理成2D的png格式,并且标签需要拆分成灰度图,背景灰度值0,肝脏灰度值1,肝脏肿瘤灰度值2的完整代码:
```python
import os
import numpy as np
from PIL import Image
def process_image(image_path, save_path):
# 读取nii文件
image_array = np.load(image_path).astype(np.float32)
# 归一化到0-255之间
image_array = (image_array - np.min(image_array)) / (np.max(image_array) - np.min(image_array)) * 255
# 将数据类型转换为uint8
image_array = image_array.astype(np.uint8)
# 将三维图像分成若干个二维图像
for i in range(image_array.shape[0]):
image = Image.fromarray(image_array[i])
image.save(os.path.join(save_path, f"{i}.png"))
def process_label(label_path, save_path):
# 读取nii文件
label_array = np.load(label_path).astype(np.uint8)
# 将标签转换为灰度图
label_array[label_array == 1] = 255
label_array[label_array == 2] = 128
# 将三维标签分成若干个二维标签
for i in range(label_array.shape[0]):
label = Image.fromarray(label_array[i])
label.save(os.path.join(save_path, f"{i}.png"))
# LiTS2017数据集路径
data_path = "C:\\Users\\Administrator\\Desktop\\LiTS2017"
# 保存路径
save_path = "C:\\Users\\Administrator\\Desktop\\2D-LiTS2017"
# 创建保存路径
os.makedirs(save_path, exist_ok=True)
os.makedirs(os.path.join(save_path, "image"), exist_ok=True)
os.makedirs(os.path.join(save_path, "mask"), exist_ok=True)
# 处理Training Batch 1
image_path = os.path.join(data_path, "Training Batch 1", "volume-{}.npy")
for i in range(131):
process_image(image_path.format(i), os.path.join(save_path, "image"))
# 处理Training Batch 2
label_path = os.path.join(data_path, "Training Batch 2", "segmentation-{}.npy")
for i in range(131):
process_label(label_path.format(i), os.path.join(save_path, "mask"))
```
上述代码中,`process_image`函数将三维的图像分成若干个二维图像,并将数据类型转换为uint8,并保存为png格式;`process_label`函数将标签转换为灰度图,并将标签值转换为0、1、2三个灰度值,并保存为png格式。在主函数中,我们分别处理Training Batch 1和Training Batch 2中的数据,并将处理好的图像保存到`image`文件夹,将处理好的标签保存到`mask`文件夹。
阅读全文