请将我的数据集里面的3D图像变成2D、三通道、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 10:14:04 浏览: 48
mnist数据集转为png格式图片
5星 · 资源好评率100%
好的,我可以帮你实现这个任务。首先,需要安装以下库:numpy、SimpleITK、os、cv2。
然后,可以使用以下代码实现数据集的转换和保存。
```python
import numpy as np
import SimpleITK as sitk
import os
import cv2
# 数据集路径
data_path = r'C:\Users\Administrator\Desktop\LiTS2017'
# 转换后数据保存路径
save_path = r'C:\Users\Administrator\Desktop\2D-LiTS2017'
# 创建保存路径文件夹
if not os.path.exists(save_path):
os.makedirs(save_path)
if not os.path.exists(os.path.join(save_path, 'images')):
os.makedirs(os.path.join(save_path, 'images'))
if not os.path.exists(os.path.join(save_path, 'labels')):
os.makedirs(os.path.join(save_path, 'labels'))
# 遍历数据集文件夹中的.nii文件
for filename in os.listdir(os.path.join(data_path, 'Training Batch 1')):
# 读取.nii文件
itk_img = sitk.ReadImage(os.path.join(data_path, 'Training Batch 1', filename))
img_array = sitk.GetArrayFromImage(itk_img)
# 遍历3D图像中的每一层
for i in range(img_array.shape[0]):
# 将3D图像中的每一层转换为2D图像
img_2d = img_array[i, :, :]
# 调整窗宽和窗位
img_2d = (img_2d - (-200)) / (600 - (-200)) * 255
img_2d = np.clip(img_2d, 0, 255)
img_2d = img_2d.astype(np.uint8)
# 将2D图像保存为png格式
cv2.imwrite(os.path.join(save_path, 'images', filename[:-4] + '_' + str(i) + '.png'), img_2d)
# 遍历数据集文件夹中的.nii文件
for filename in os.listdir(os.path.join(data_path, 'Training Batch 2')):
# 读取.nii文件
itk_img = sitk.ReadImage(os.path.join(data_path, 'Training Batch 2', filename))
img_array = sitk.GetArrayFromImage(itk_img)
# 遍历3D标签中的每一层
for i in range(img_array.shape[0]):
# 将3D标签中的每一层转换为2D标签
img_2d = img_array[i, :, :]
# 将标签值转换为灰度值
img_2d[img_2d == 1] = 255
img_2d[img_2d == 2] = 128
# 将2D标签保存为png格式
cv2.imwrite(os.path.join(save_path, 'labels', filename[:-4] + '_' + str(i) + '.png'), img_2d)
```
这段代码会遍历数据集文件夹中的.nii文件,读取文件并将3D图像和标签转换为2D图像和标签,然后将转换后的数据保存到对应的文件夹中。注意,这段代码只适用于LiTS2017数据集,如果你要处理其他数据集,需要根据数据集的特点进行相应的修改。
阅读全文