请将我的数据集里面的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 11:13:59 浏览: 125
好的,我可以帮你完成这个任务。首先,我们需要安装一些Python库,包括SimpleITK、numpy和os。
你可以通过在Anaconda Prompt或命令行中输入以下命令来安装这些库:
```
pip install SimpleITK numpy
```
然后,可以使用以下代码将3D图像和标签转换为2D图像和标签:
```python
import SimpleITK as sitk
import numpy as np
import os
# 设置路径
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)
# 设置窗宽和窗位
wl = 50
ww = 350
# 加载图像和标签
for i in range(1, 131):
img_path = os.path.join(data_path, "training_batch1/volume-%03d.nii" % i)
label_path = os.path.join(data_path, "training_batch2/segmentation-%03d.nii" % i)
img = sitk.ReadImage(img_path)
label = sitk.ReadImage(label_path)
# 将SimpleITK图像转换为numpy数组
img_arr = sitk.GetArrayFromImage(img)
label_arr = sitk.GetArrayFromImage(label)
# 将图像和标签分别转换为2D png格式
for j in range(img_arr.shape[0]):
img_slice = img_arr[j, :, :]
label_slice = label_arr[j, :, :]
# 调整窗宽和窗位
img_slice[img_slice < (wl - ww/2)] = (wl - ww/2)
img_slice[img_slice > (wl + ww/2)] = (wl + ww/2)
img_slice = (img_slice - (wl - ww/2)) / ww * 255
img_slice = img_slice.astype(np.uint8)
# 将标签值转换为0、1、2
label_slice[label_slice == 1] = 255
label_slice[label_slice == 2] = 128
# 保存图像和标签
img_name = os.path.join(save_path, "volume-%03d-%03d.png" % (i, j+1))
label_name = os.path.join(save_path, "segmentation-%03d-%03d.png" % (i, j+1))
sitk.WriteImage(sitk.GetImageFromArray(img_slice), img_name)
sitk.WriteImage(sitk.GetImageFromArray(label_slice), label_name)
```
这段代码将读取Training Batch 1和Training Batch 2中的所有3D图像和标签,将它们转换为2D png格式,并将它们保存到C:/Users/Administrator/Desktop/2D-LiTS2017文件夹中。请注意,这段代码假定LiTS2017数据集中有131个图像和标签,您需要根据实际情况进行相应修改。
阅读全文