请将我的LiTS2017数据集的3D图像变成2D、RGB三通道、的png格式的图像。数据集的3D标签变成(背景灰度值0、肝脏灰度值1、肝脏肿瘤灰度值2的)2D的png格式标签。 LiTS2017数据集里面包含Training Batch 1和Training Batch 2两个文件夹。Training Batch 1文件夹里面有图像,图像的拓展名为.nii。Training Batch 2文件夹里面有标签,标签拓展名为.nii。 LiTS2017数据集的路径为C:\Users\Administrator\Desktop\LiTS2017。 保存路径为C:\Users\Administrator\Desktop\2D-LiTS2017,请帮我创建好对应文件夹,并且将转换好的数据保存到对应的文件夹。
时间: 2024-02-05 15:11:29 浏览: 86
好的,这里给出一个Python代码的实现方法,需要安装nibabel库和numpy库。
```python
import os
import numpy as np
import nibabel as nib
from PIL import Image
# 定义路径和保存文件夹
data_path = r'C:\Users\Administrator\Desktop\LiTS2017'
save_path = r'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, 'label'), exist_ok=True)
# 定义函数将3D图像转换为2D RGB图像并保存
def convert_image(data, save_folder, basename):
for i in range(data.shape[2]):
img = data[:,:,i]
img = (img - np.min(img)) / (np.max(img) - np.min(img)) * 255
img = np.stack((img,)*3, axis=-1).astype(np.uint8)
img = Image.fromarray(img)
img.save(os.path.join(save_folder, basename+'_'+str(i+1).zfill(3)+'.png'))
# 定义函数将3D标签转换为2D标签并保存
def convert_label(data, save_folder, basename):
for i in range(data.shape[2]):
img = data[:,:,i]
img[img == 1] = 255
img[img == 2] = 128
img = Image.fromarray(img.astype(np.uint8))
img.save(os.path.join(save_folder, basename+'_'+str(i+1).zfill(3)+'.png'))
# 遍历Training Batch 1文件夹中的图像数据
for file in os.listdir(os.path.join(data_path,'training_batch1')):
if file.endswith('.nii'):
basename = os.path.splitext(file)[0]
print('Processing', basename)
# 读取nii文件
img_data = nib.load(os.path.join(data_path,'training_batch1',file)).get_fdata()
# 转换为2D RGB图像并保存
convert_image(img_data, os.path.join(save_path, 'image'), basename)
# 遍历Training Batch 2文件夹中的标签数据
for file in os.listdir(os.path.join(data_path,'training_batch2')):
if file.endswith('.nii'):
basename = os.path.splitext(file)[0]
print('Processing', basename)
# 读取nii文件
label_data = nib.load(os.path.join(data_path,'training_batch2',file)).get_fdata()
# 转换为2D标签并保存
convert_label(label_data, os.path.join(save_path, 'label'), basename)
```
运行代码后,就可以在C:\Users\Administrator\Desktop\2D-LiTS2017文件夹中看到转换好的2D图像和标签了。
阅读全文