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


Posted in Python onJanuary 24, 2019

目标:利用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 相关文章推荐
使用python的chardet库获得文件编码并修改编码
Jan 22 Python
Python中文件遍历的两种方法
Jun 16 Python
Python命令行参数解析模块getopt使用实例
Apr 13 Python
Python中查看文件名和文件路径
Mar 31 Python
Python实现的简单dns查询功能示例
May 24 Python
Python的地形三维可视化Matplotlib和gdal使用实例
Dec 09 Python
Python将多份excel表格整理成一份表格
Jan 03 Python
python根据txt文本批量创建文件夹
Dec 08 Python
了解不常见但是实用的Python技巧
May 23 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
Feb 11 Python
Python简单实现词云图代码及步骤解析
Jun 04 Python
python字符串拼接.join()和拆分.split()详解
Nov 23 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
Jan 24 #Python
python Selenium实现付费音乐批量下载的实现方法
Jan 24 #Python
在python下读取并展示raw格式的图片实例
Jan 24 #Python
Python字典的核心底层原理讲解
Jan 24 #Python
使用PIL(Python-Imaging)反转图像的颜色方法
Jan 24 #Python
Python3实现取图片中特定的像素替换指定的颜色示例
Jan 24 #Python
python 实现图片旋转 上下左右 180度旋转的示例
Jan 24 #Python
You might like
php中文字母数字验证码实现代码
2008/04/25 PHP
PHP 分页类(模仿google)-面试题目解答
2009/09/13 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
2010/06/09 PHP
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
javascript:void(0)使用探讨
2013/08/27 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
JSON格式的键盘编码对照表
2015/01/29 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
微信小程序实现移动端滑动分页效果(ajax)
2017/06/13 Javascript
你有必要知道的10个JavaScript难点
2017/07/25 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
JS实现遍历不规则多维数组的方法
2018/03/21 Javascript
vue短信验证性能优化如何写入localstorage中
2018/04/25 Javascript
vue实现图片按比例缩放问题操作
2020/08/11 Javascript
python中将字典转换成其json字符串
2014/07/16 Python
python实现自动重启本程序的方法
2015/07/09 Python
Python 递归函数详解及实例
2016/12/27 Python
Linux下python3.7.0安装教程
2018/07/30 Python
Python用字典构建多级菜单功能
2019/07/11 Python
解决Pytorch 加载训练好的模型 遇到的error问题
2020/01/10 Python
Python json读写方式和字典相互转化
2020/04/18 Python
解析Python 偏函数用法全方位实现
2020/06/26 Python
利用CSS3的定位页面元素
2009/08/29 HTML / CSS
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
文员岗位职责
2013/11/09 职场文书
2014校长四风问题对照检查材料思想汇报
2014/09/16 职场文书
农业生产宣传标语
2014/10/08 职场文书
2014年人民调解工作总结
2014/12/08 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python