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 Trie树实现字典排序
Mar 28 Python
Python http接口自动化测试框架实现方法示例
Dec 06 Python
Python实现FM算法解析
Jun 18 Python
如何通过雪花算法用Python实现一个简单的发号器
Jul 03 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
Aug 12 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
Feb 15 Python
Python如何实现小程序 无限求和平均
Feb 18 Python
python中列表的含义及用法
May 26 Python
Python select及selectors模块概念用法详解
Jun 22 Python
Python实现弹球小游戏
Aug 01 Python
python中的getter与setter你了解吗
Mar 24 Python
python实现学员管理系统(面向对象版)
Jun 05 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 采集程序原理分析篇
2010/03/05 PHP
20个PHP常用类库小结
2011/09/11 PHP
PHP函数in_array()使用详解
2014/08/20 PHP
jQuery 可以拖动的div实现代码 脚本之家修正版
2009/06/26 Javascript
统计出现最多的字符次数的js代码
2010/12/03 Javascript
情人节之礼 js项链效果
2012/02/13 Javascript
jquery offset函数应用实例
2012/11/14 Javascript
js导入导出excel(实例代码)
2013/11/25 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
2015/01/30 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
2017/01/18 Javascript
HTML5开发Kinect体感游戏的实例应用
2017/09/18 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
Vue如何提升首屏加载速度实例解析
2020/06/25 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
简单学习Python time模块
2016/04/29 Python
Python递归函数定义与用法示例
2017/06/02 Python
matplotlib.pyplot绘图显示控制方法
2019/01/15 Python
使用Python测试Ping主机IP和某端口是否开放的实例
2019/12/17 Python
Python 中@property的用法详解
2020/01/15 Python
Python多线程获取返回值代码实例
2020/02/17 Python
django 模型字段设置默认值代码
2020/07/15 Python
Python大批量搜索引擎图像爬虫工具详解
2020/11/16 Python
python xlsxwriter模块的使用
2020/12/24 Python
利用CSS3制作简单的3d半透明立方体图片展示
2017/03/25 HTML / CSS
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
移动通信行业实习自我鉴定
2013/09/28 职场文书
学生安全承诺书
2014/05/22 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
个人学习群众路线心得体会
2014/11/05 职场文书
护士求职简历自我评价
2015/03/10 职场文书
python的变量和简单数字类型详解
2021/09/15 Python