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数据挖掘 Json结构分析
Apr 21 Python
对Python字符串中的换行符和制表符介绍
May 03 Python
python opencv实现运动检测
Jul 10 Python
Python 实现Windows开机运行某软件的方法
Oct 14 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
Oct 17 Python
python3.6使用urllib完成下载的实例
Dec 19 Python
关于Python3 类方法、静态方法新解
Aug 30 Python
Python列表list操作相关知识小结
Jan 29 Python
Python3 filecmp模块测试比较文件原理解析
Mar 23 Python
Python如何发送与接收大型数组
Aug 07 Python
Python实现上下文管理器的方法
Aug 07 Python
Python OpenCV快速入门教程
Apr 17 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
一些星际专用术语解释
2020/03/04 星际争霸
PHP与SQL注入攻击[二]
2007/04/17 PHP
关于尾递归的使用详解
2013/05/02 PHP
浅析php学习的路线图
2013/07/10 PHP
PHP下载远程文件到本地存储的方法
2015/03/24 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
Laravel 集成 Geetest验证码的方法
2018/05/14 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
在js中使用"with"语句中跨frame的变量引用问题
2007/03/08 Javascript
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
JavaScript动态修改背景颜色的方法
2015/04/16 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
2015/11/09 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
javascript中关于类型判断的一些疑惑小结
2018/10/14 Javascript
详解可以用在VS Code中的正则表达式小技巧
2019/05/14 Javascript
layui 点击重置按钮, select 并没有被重置的解决方法
2019/09/03 Javascript
浅谈vue 锚点指令v-anchor的使用
2019/11/13 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
HTML元素拖拽功能实现的完整实例
2020/12/04 Javascript
Python 第一步 hello world
2009/09/25 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
介绍一下Ruby的多线程处理
2013/02/01 面试题
大学三年的自我评价
2013/12/25 职场文书
工业设计专业自荐书
2014/06/05 职场文书
作风建设剖析材料
2014/10/06 职场文书
旷课检讨书500字
2014/10/14 职场文书
Python道路车道线检测的实现
2021/06/27 Python