美文网首页医学影像AI·医疗大数据·智慧互联医疗
使用PyDICOM包读取医学图像数据,并将其转成Numpy

使用PyDICOM包读取医学图像数据,并将其转成Numpy

作者: 一入DL深如海 | 来源:发表于2017-12-07 13:19 被阅读105次

    我将使用pydicom包读取一系列DICOM图像,并将他们转成NumPy数组.这将涉及从DICOM文件和像素数据本身读取元数据。

    第一步:安装pydicom包.           

                   pip  install  pydicom

    我加载一系列的DICOM数据并将其转为3D NumPy数组,使用 matplotlib可视化两个切片.


    第二部:导入一些包.

                   import dicom

                   import os

                   import numpy

                   from matplotlib import pyplot, cm


    第三步:我们用os.path.walk遍历整个目录,收集全部.dcm文件,并收集到一个名为'lstFilesDCM'的名单:


    第四步:pydicom这个包的一个值得注意的方面是读取DICOM文件。它创建了一个dicom.dataset.filedataset 的对象,不同的元数据被分配给具有相同名称的对象属性。说实在的这句话我现在我没搞明白,不过不影响我们的进程.

    在第一行我们加载第一DICOM文件,我们将它命名为RefDs作为参考使用,提取元数据并将其文件名放在lstFilesDCM列表中.然后我们计算的三维NumPy数组的总尺寸,这就相当于(切片中像素行数)*(切片中像素列数)*(切片数量)沿着x,y,z轴.最后,我们使用 PixelSpacing和SliceThickness属性计算三个轴之间的像素间距。我们把数组的尺寸放在ConstPixelDims和 ConstPixelSpacing的间距中。行、列、像素间距和切片厚度都是元数据条目。

    第五步:我们简单地用numpy.arange,ConstPixelDims,和ConstPixelSpacing计算该阵列轴

    第六步

    你可以看到,我们在这里做的是首先创建一个命名arraydicom的NumPy数组,使用之前ConstPixelDims计算的指定尺寸.该数组的dtype与我们最初用来提取元数据的参考数据集RefDs的pixel_array的dtype相同.这里感兴趣的是pixel_array对象是一个纯NumPy数组,其中包含特定DICOM slice / image的像素数据。因此,我们接下来要做的就是循环收集的DICOM文件名,并使用dicom.read_file函数将每个文件读入一个dicom.dataset.FileDataset对象。然后,我们使用该对象的pixel_array属性,并将其折叠到ArrayDicom中,沿z轴进行堆叠。


    第七步:而就是这样!使用matplotlib中的pyplot模块,可视化:

    相关文章

      网友评论

        本文标题:使用PyDICOM包读取医学图像数据,并将其转成Numpy

        本文链接:https://www.haomeiwen.com/subject/vwldixtx.html