任务描述:
本文旨在将该CT文件夹下的所有文件中DICOM_anno里的.dcm文件转换成png文件并存储在与DICOM_anno同一路径下的images文件夹中。
任务代码如下:
import os
import SimpleITK as sitk
import numpy as np
import matplotlib.pyplot as plt
# 定义输入和输出文件夹路径
input_base_path = "D:\\深度学习pytorch课程相关代码练习\\数据集\\医学图像分割数据集\\CHAOS\\CHAOS_Train\\Train_Sets\\CT"
output_folder = "images"
# 遍历输入路径下的所有子文件夹
for subdir, dirs, files in os.walk(input_base_path):
# 查找名为"DICOM_anon"的文件夹
if "DICOM_anon" in dirs:
dicom_anon_path = os.path.join(subdir, "DICOM_anon")
# 遍历"DICOM_anon"文件夹中的所有.dcm文件
for filename in os.listdir(dicom_anon_path):
if filename.endswith(".dcm"):
dcm_file_path = os.path.join(dicom_anon_path, filename)
# 使用SimpleITK读取DICOM文件
image = sitk.ReadImage(dcm_file_path)
# 将DICOM图像转换为PNG格式
png_image = sitk.GetArrayFromImage(image)
# 生成输出PNG文件的路径和名称
output_file_path = os.path.join(subdir, output_folder, os.path.splitext(filename)[0] + ".png")
# 假设png_image是一个形状为(1, height, width)的三维数组
# 如果png_image实际上是一个二维数组,那么下面的转换是不必要的
if png_image.ndim == 3 and png_image.shape[0] == 1:
png_image = png_image.squeeze() # 移除单维度条目,将三维转换为二维
plt.imsave(output_file_path, png_image, cmap='gray')