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:09 浏览: 55
Cats-Vs-Dogs-CNN-using-Keras-:训练集包括25,000张图像,其中取出了5,000张图像作为验证数据。 单独的测试数据文件夹包含12,500张图像,其中使用训练有素的模型预测了标签。 我的工作包括模型预处理,防止过度拟合的数据增强,keras中的回调以及时降低学习率,具有不同层和超参数的各种CNN架构试验,以实现最佳拟合和学习曲线时代。 在不使用任何预训练imagenet模型的情况下,我的验证准确度为87.15%。 VGG-16的验证准确性约为89%
好的,以下是对应的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(save_path)
os.makedirs(os.path.join(save_path, 'image'))
os.makedirs(os.path.join(save_path, 'label'))
# 加载数据
for idx in range(1, 131):
# 加载图像
image_nii = nib.load(os.path.join(data_path, 'Training Batch 1', 'volume-' + str(idx) + '.nii'))
image_data = image_nii.get_fdata()
image_data = np.transpose(image_data, [2, 0, 1]) # 转换坐标轴
for slice_idx in range(image_data.shape[0]):
slice_data = image_data[slice_idx, :, :]
slice_data = (slice_data / np.max(slice_data) * 255).astype(np.uint8) # 将像素值映射到0-255之间
slice_img = Image.fromarray(slice_data)
slice_img.save(os.path.join(save_path, 'image', str(idx) + '-' + str(slice_idx) + '.png'))
# 加载标签
label_nii = nib.load(os.path.join(data_path, 'Training Batch 2', 'segmentation-' + str(idx) + '.nii'))
label_data = label_nii.get_fdata()
label_data = np.transpose(label_data, [2, 0, 1]) # 转换坐标轴
for slice_idx in range(label_data.shape[0]):
slice_data = label_data[slice_idx, :, :]
# 将像素值映射到0-2之间
slice_data[slice_data == 1] = 0
slice_data[slice_data == 2] = 1
slice_img = Image.fromarray((slice_data * 255).astype(np.uint8))
slice_img.save(os.path.join(save_path, 'label', str(idx) + '-' + str(slice_idx) + '.png'))
```
代码中首先设置了数据集和保存结果的路径,并创建对应的文件夹。然后使用nibabel库加载对应的.nii文件,将图像数据和标签数据转换为numpy数组,并转换坐标轴。接着将3D图像转换为2D图像,同时将像素值映射为0-255之间的灰度值,并使用PIL库将其保存为png格式的图像文件。对于标签数据,将像素值为1的标记为0,像素值为2的标记为1,并将结果保存到对应的文件夹中。
阅读全文