请将LiTS2017数据集处理成2D的png格式,其中要将我的标签变成灰度图背景灰度值0肝脏1肝脏肿瘤2,给出完整代码,我的LiTS2017数据集路径为C:\Users\Administrator\Desktop\LiTS2017,里面包含Training Batch 1,其中里面有图像,图像格式为volume-0.nii。和Training Batch 2,其中里面有标签,标签格式为segmentation-0.nii,保存路径为C:\Users\Administrator\Desktop\2D-LiTS2017,里面有image和mask两个文件夹,请将转换好的保存到对应的文件夹
时间: 2023-11-22 07:56:12 浏览: 83
灰度图、二值图、边缘图转换代码.zip_singxfo_二值图代码_灰度图 置换_灰度图、二值图、边缘图转换代码_边缘图
可以使用Python中的SimpleITK和NumPy库来处理LiTS2017数据集。我们可以将.nii格式的3D图像分别保存为2D的.png格式,同时将标签转换为灰度图并保存为相应的背景灰度值。
下面是完整的代码:
```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)
# 定义函数将3D图像保存为2D的.png格式
def save_image_as_png(image, save_folder, name_prefix):
for i in range(image.shape[2]):
slice = np.squeeze(image[:, :, i])
slice = slice.astype(np.float32)
slice *= 255.0/slice.max()
slice = slice.astype(np.uint8)
save_name = os.path.join(save_folder, name_prefix + '_' + str(i) + '.png')
sitk.WriteImage(sitk.GetImageFromArray(slice), save_name)
# 读取Training Batch 1中的图像
image_path = os.path.join(data_path, 'Training Batch 1/volume-0.nii')
image = sitk.ReadImage(image_path)
image_array = sitk.GetArrayFromImage(image)
save_folder = os.path.join(save_path, 'image')
if not os.path.exists(save_folder):
os.makedirs(save_folder)
save_image_as_png(image_array, save_folder, 'img')
# 读取Training Batch 2中的标签
label_path = os.path.join(data_path, 'Training Batch 2/segmentation-0.nii')
label = sitk.ReadImage(label_path)
label_array = sitk.GetArrayFromImage(label)
# 将标签转换为灰度图并保存
label_array[label_array == 1] = 128
label_array[label_array == 2] = 255
save_folder = os.path.join(save_path, 'mask')
if not os.path.exists(save_folder):
os.makedirs(save_folder)
save_image_as_png(label_array, save_folder, 'mask')
```
在这个代码中,我们首先定义了一个函数`save_image_as_png()`,该函数将一个3D图像转换为2D的.png格式,并将每个切片保存为单独的文件。然后我们读取了Training Batch 1中的图像和Training Batch 2中的标签,并将标签转换为灰度图并保存。最后,我们将转换后的图像和标签保存到相应的文件夹中。
请注意,上述代码假设您的图像和标签都具有相同的大小和分辨率,并且它们都是.nii格式的。如果您的数据集与此不同,请根据需要进行修改。
阅读全文