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,请帮我创建好对应文件夹,并且将转换好的保存到对应的文件夹
时间: 2023-12-14 15:38:07 浏览: 141
好的,以下是对应的代码实现:
```python
import os
import numpy as np
import nibabel as nib
from PIL import Image
# 定义数据集路径
data_path = 'D:/BaiduNetdiskDownload/LiTS2017'
# 定义保存路径
save_path = 'C:/Users/Administrator/Desktop/2D-LiTS2017'
# 定义函数将3D图像转换成2D的三通道png格式图像
def convert_image(img_path, save_path):
# 加载nii格式的图像
img = nib.load(img_path).get_fdata()
# 将图像归一化到0-255之间
img = (img - np.min(img)) / (np.max(img) - np.min(img)) * 255
# 将图像转换成三通道的png格式图像
img = np.stack([img, img, img], axis=-1).astype(np.uint8)
# 获取图像文件名
img_name = os.path.splitext(os.path.basename(img_path))[0]
# 保存图像
Image.fromarray(img).save(os.path.join(save_path, img_name + '.png'))
# 定义函数将3D标签转换成2D的png格式标签
def convert_label(label_path, save_path):
# 加载nii格式的标签
label = nib.load(label_path).get_fdata()
# 将标签转换成二维的png格式标签
label = np.where(label == 1, 255, label) # 将肝脏部分设置为白色
label = np.where(label == 2, 127, label) # 将肝脏肿瘤部分设置为灰色
label = label.astype(np.uint8)
# 获取标签文件名
label_name = os.path.splitext(os.path.basename(label_path))[0]
# 保存标签
Image.fromarray(label).save(os.path.join(save_path, label_name + '.png'))
# 创建保存图像和标签的文件夹
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'))
# 遍历Training Batch 1文件夹里的图像文件
for img_file in os.listdir(os.path.join(data_path, 'Training Batch 1')):
if img_file.endswith('.nii'):
# 转换图像并保存到对应文件夹
img_path = os.path.join(data_path, 'Training Batch 1', img_file)
convert_image(img_path, os.path.join(save_path, 'image'))
# 遍历Training Batch 2文件夹里的标签文件
for label_file in os.listdir(os.path.join(data_path, 'Training Batch 2')):
if label_file.endswith('.nii'):
# 转换标签并保存到对应文件夹
label_path = os.path.join(data_path, 'Training Batch 2', label_file)
convert_label(label_path, os.path.join(save_path, 'label'))
```
运行代码后,你会发现在C:/Users/Administrator/Desktop/2D-LiTS2017目录下,会生成image和label两个文件夹,分别保存转换好的图像和标签。
阅读全文