dcm文件之“偷梁换柱”(使用npy文件中的数据替换dcm文件中的影像数据,然后重新保存得到新的dcm格式文件)

一. 在医学影像分割过程中,我们使用深度学习模型预测医学影像的分割结果后,一般保存为npy格式的文件(像素值为0,1二值的,0表示背景像素区域,1表示前景像素区域);

二. 在得到npy格式的预测分割数据后,有时候需要使用三维重建软件,将分割后的结果进行三维重建,而此时,一般三维重建软件要求输入的数据为.dcm格式的数据,因此我们就需要把.npy格式的数据转为.dcm格式的数据;

三.由于我们可以得到.dcm格式的CT数据,因此我们可以考虑将原CT数据中的.dcm格式的文件中的影响数据替换为分割后的数据,然后进行保存就可得到分割后的.dcm格式的文件了;

四.具体程序如下:

import numpy as np
import os
import dicom


path1 = 'datafilename'     # 包含dcm文件的文件夹的路径
label_path = '01.npy'
path2 = 'label_dcm'    # 将dcm格式的label的路径
if not os.path.exists(path2):
    os.makedirs(path2)

label_data = np.load(label_path)         # 加载npy格式的label数据
for path_, _, file_ in os.walk(path1):   # 获取case1的CT图像
    L = len(file_)                       # 文件的个数,case1为240个
    if L > 0:
        for f in sorted(file_):   # 把文件名称从小到大排序的
            file1 = os.path.abspath(os.path.join(path_, f))
            image = dicom.read_file(file1)  # 读取dcm格式数据
            sliceID = image.data_element("InstanceNumber").value - 1
            image.pixel_array.flat = label_data[sliceID, :, :]    # label在0,1之间的
            image.PixelData = image.pixel_array.tostring()
            file2 = os.path.join(path2, f)
            image.save_as(file2)
print('Case 1' + ' is saved in ' + file2 + ' .')

猜你喜欢

转载自blog.csdn.net/yangzhengzheng95/article/details/86550898