请将我的数据集里面的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-03 15:14:50 浏览: 89
LITS2017数据集百度网盘.txt
5星 · 资源好评率100%
好的,您需要使用Python中的SimpleITK和numpy库来实现这个任务。以下是代码实现:
```python
import os
import numpy as np
import SimpleITK as sitk
# 定义一些常量
data_path = 'C:\\Users\\Administrator\\Desktop\\LiTS2017\\'
output_path = 'C:\\Users\\Administrator\\Desktop\\2D-LiTS2017\\'
window_center = 50
window_width = 350
# 创建输出文件夹
if not os.path.exists(output_path):
os.makedirs(output_path + 'image')
os.makedirs(output_path + 'label')
# 加载数据
image_names = os.listdir(data_path + 'Training Batch 1')
label_names = os.listdir(data_path + 'Training Batch 2')
for i in range(len(image_names)):
# 加载图像和标签
image = sitk.ReadImage(data_path + 'Training Batch 1\\' + image_names[i])
label = sitk.ReadImage(data_path + 'Training Batch 2\\' + label_names[i])
# 获取图像和标签的numpy数组
image_array = sitk.GetArrayFromImage(image)
label_array = sitk.GetArrayFromImage(label)
# 调整窗宽窗位
image_array = np.clip(image_array, window_center - window_width // 2, window_center + window_width // 2)
image_array = (image_array - (window_center - 0.5)) / (window_width - 1)
image_array = (image_array * 255).astype(np.uint8)
# 保存为png格式的图像和标签
for j in range(image_array.shape[0]):
image_2d = image_array[j]
label_2d = label_array[j]
image_2d_path = output_path + 'image\\' + image_names[i][:-7] + '_{:03d}.png'.format(j)
label_2d_path = output_path + 'label\\' + label_names[i][:-7] + '_{:03d}.png'.format(j)
sitk.WriteImage(sitk.GetImageFromArray(image_2d), image_2d_path)
sitk.WriteImage(sitk.GetImageFromArray(label_2d), label_2d_path)
```
这段代码会将LiTS2017数据集里面的3D图像转换为2D、RGB三通道、png格式的图像,并且将标签转换为2D、png格式的标签。转换后的数据将保存到C:\Users\Administrator\Desktop\2D-LiTS2017文件夹中。
阅读全文