当前位置: 首页 > 编程笔记 >

python 读取dicom文件,生成info.txt和raw文件的方法

符棋
2023-03-14
本文向大家介绍python 读取dicom文件,生成info.txt和raw文件的方法,包括了python 读取dicom文件,生成info.txt和raw文件的方法的使用技巧和注意事项,需要的朋友参考一下

目标:利用python读取dicom文件,并进行处理生成info.txt和raw文件

实现:通过pydicom读取dicom文件

代码:

import numpy
import pydicom
import os

# dicom文件所在的文件夹目录
PathDicom = '/home/lk/testdata/1.3.6.1.4.1.9328.50.1.42697596859477567872763647333745089432/'

# 筛选出文件夹目录下所有的dicom文件
lstFilesDCM = []
for dirName, subdirList, fileList in os.walk(PathDicom):
  for filename in fileList:
    if '.dcm' in filename.lower():
      lstFilesDCM.append(os.path.join(dirName, filename))

# Get ref file
RefDs = pydicom.read_file(lstFilesDCM[0])

# Load dimensions based on the number of rows, columns, and slices (along the Z axis)
ConstPixelDims = (int(RefDs.Rows), int(RefDs.Columns), len(lstFilesDCM))

# Load spacing values (in mm)
ConstPixelSpacing = (float(RefDs.PixelSpacing[0]), float(RefDs.PixelSpacing[1]), float(RefDs.SliceThickness))

# save info.txt
info = ConstPixelDims + ConstPixelSpacing
f = open('/home/lk/testdata/1.3.6.1.4.1.9328.50.1.42697596859477567872763647333745089432/info.txt', 'w')
for n in info:
  f.write(str(n)+' ')
f.close()


# According to location sorting
location = []
for i in range(len(lstFilesDCM)):
  ds = pydicom.read_file(lstFilesDCM[i])
  location.append(ds.SliceLocation)
location.sort()

# The array is sized based on 'ConstPixelDims'
ArrayDicom = numpy.zeros((len(lstFilesDCM), RefDs.Rows, RefDs.Columns), dtype=RefDs.pixel_array.dtype)

# loop through all the DICOM files
for filenameDCM in lstFilesDCM:
  # read the file
  ds = pydicom.read_file(filenameDCM)
  # store the raw image data
  ArrayDicom[location.index(ds.SliceLocation), :, :] = ds.pixel_array

# save raw
ds = ArrayDicom.tostring()
f = open('/home/lk/testdata/1.3.6.1.4.1.9328.50.1.42697596859477567872763647333745089432/1.raw', 'wb')
f.write(ds)
f.close()

代码编写过程遇到的问题及解决方法:

Problem one: pydicom版本问题。

pydicom1.x中读取dicom文件调用pydicom.read_file(filename);

pydicom0.9中读取dicom文件调用dicom.read_file(filename);

Problem two:python中IO操作

(1) f = open(filename, mode)

其中filename为文件的路径, mode为操作标识符:‘r' 表示读, ‘w'表示写,‘a'表示既可读又可写,‘b'表示二进制文件。

(2) f.write(value)

其中参数value必须是字符串类型的。

当然还有一些其他的问题,在这里就不细说了,多入坑才能学的多,切不可烦躁,代码就是要多敲才能得心应手,共勉。

以上这篇python 读取dicom文件,生成info.txt和raw文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍python读取文件名称生成list的方法,包括了python读取文件名称生成list的方法的使用技巧和注意事项,需要的朋友参考一下 经常需要读取某个文件夹下所有的图像文件。 我使用python写了个简单的代码,读取某个文件夹下某个后缀的文件,将文件名生成为文本(csv格式) 上面代码保存为:GetLst.py 使用时: 在cmd窗口输入: 发现上面代码不能深入到下一层目录,又做了点

  • 本文向大家介绍Python按行读取文件的实现方法【小文件和大文件读取】,包括了Python按行读取文件的实现方法【小文件和大文件读取】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python按行读取文件的实现方法。分享给大家供大家参考,具体如下: 小文件: 大文件: 更多关于Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python文本文件操

  • 本文向大家介绍Python vtk读取并显示dicom文件示例,包括了Python vtk读取并显示dicom文件示例的使用技巧和注意事项,需要的朋友参考一下 因为做项目的原因,所以接触到了医学图像dicom文件。vtk刚开始看,这里仅仅只是其最简单的读取显示功能。此处用到了vtk库,可自行百度安装方法。 下面附上代码: 运行程序得到显示图: DICOM图像显示是可以设置窗宽、窗位的,还在学习尝试

  • 本文向大家介绍android文件操作——读取assets和raw文件下的内容,包括了android文件操作——读取assets和raw文件下的内容的使用技巧和注意事项,需要的朋友参考一下 来自Resources和Assets 中的文件只可以读取而不能进行写的操作。 assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。 1. 先在Activity

  • 本文向大家介绍写一个读取文件和文件的方法相关面试题,主要包含被问及写一个读取文件和文件的方法时的应答技巧和注意事项,需要的朋友参考一下 var fs = require('fs'); var data = fs.readFileSync('./index.html', 'utf8'); // 停止执行代码直到操作结束 console.log(data) fs.readFile('./test.tx

  • 本文向大家介绍使用SimpleITK读取和保存NIfTI/DICOM文件实例,包括了使用SimpleITK读取和保存NIfTI/DICOM文件实例的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,大家还是直接看代码吧~ 读取DICOM序列 读取DICOM单个文件 补充知识:itk 读取图像,两种格式之间转换 我就废话不多说了,大家还是直接看代码吧~ 以上这篇使用SimpleITK读取和保