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 + ' .')
标签:文件,dcm,image,label,格式文件,格式,path,os 来源: https://blog.csdn.net/yangzhengzheng95/article/details/86550898