• 批量读取dicom数据 to array类型((多标签融合)))


    file_name = ["portalvein", "venoussystem", "venacava"]
    def read_dicom(path):
        lstFileDCM = []
        for dirName, subdirList, fileList in os.walk(path):
            n = len(fileList)
            # print("n:", n)
            for i in range(n):
                filename = fileList[i]
    
                idx = filename.split("_")[-1]
                filename = filename.replace(str(idx), str(i))
    
                lstFileDCM.append(os.path.join(dirName, filename))
    
        # 读取第一张dicom图片
        RefDs = pydicom.read_file(lstFileDCM[0])
        # 得到dicom图片所组成3D图片的维度
        ConstPixelDims = (int(RefDs.Rows), int(RefDs.Columns), len(lstFileDCM))
        print("ConstPixelDims:", ConstPixelDims)
        # (512,512,74)【这是我的一张示例图片输出的结果】
    
        # 得到x方向和y方向的Spacing并得到z方向的层厚
        ConstPixelSpacing = (float(RefDs.PixelSpacing[0]), float(RefDs.PixelSpacing[1]), float(RefDs.SliceThickness))
        # (0.742187976837158, 0.742187976837158, 2.5)【这是我的一张示例图片输出的结果】
    
        # 得到图像的原点
        Origin = RefDs.ImagePositionPatient
        # [0, 0, 0]【这是我的一张示例图片输出的结果】
    
        # 根据维度创建一个numpy的三维数组,并将元素类型设为:pixel_array.dtype
        ArrayDicom = np.zeros(ConstPixelDims, dtype=RefDs.pixel_array.dtype)
    
        # 遍历所有的dicom文件,读取图像数据,存放在numpy数组中
        i = 0
        for filenameDCM in lstFileDCM:
            ds = pydicom.read_file(filenameDCM)
            ArrayDicom[:, :, lstFileDCM.index(filenameDCM)] = ds.pixel_array
            # 将文件按照png的格式写进当前目录
            # cv2.imwrite(os.path.join(png_path, "out_" + str(i) + '.png'), ArrayDicom[:, :, lstFileDCM.index(filenameDCM)])
            i += 1
    
        # 对numpy数组进行转置,即把坐标轴(x,y,z)变换为(z,y,x),这样是dicom存储文件的格式,即第一个维度为z轴便于图片堆叠
        ArrayDicom = np.transpose(ArrayDicom, (2, 0, 1))
        return ArrayDicom,ConstPixelSpacing,Origin

    具体将array转换成nii文件,看我的github

    github
    GitHub.
  • 相关阅读:
    操作系统的内存对齐机制学习笔记
    函数库调用和系统调用的区别
    操作系统与c语言
    技术开发人员适应其他部门提需求的一个经验
    受益技术类书籍
    软件项目发展历史<人月神话>这本书好
    好的代码风格积累
    演示内存碎片原理的好图
    不要的代码删除掉,而不是放到系统中干扰
    编译安装php-amq扩展
  • 原文地址:https://www.cnblogs.com/peixu/p/15936220.html
Copyright © 2020-2023  润新知