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 装饰器功能以及函数参数使用介绍
Jan 27 Python
python爬虫入门教程之点点美女图片爬虫代码分享
Sep 02 Python
windows下Python实现将pdf文件转化为png格式图片的方法
Jul 21 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
Jan 11 Python
Python向MySQL批量插数据的实例讲解
Mar 31 Python
python3+PyQt5泛型委托详解
Apr 24 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
Jan 23 Python
PyQt5 QTable插入图片并动态更新的实例
Jun 18 Python
python画图的函数用法以及技巧
Jun 28 Python
用Python调用win命令行提高工作效率的实例
Aug 14 Python
python求绝对值的三种方法小结
Dec 04 Python
Pandas —— resample()重采样和asfreq()频度转换方式
Feb 26 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
融入意大利的咖啡文化
2021/03/03 咖啡文化
jquery插件validate验证的小例子
2013/05/08 Javascript
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
2015/05/28 Javascript
JavaScript实现可拖拽的拖动层Div实例
2015/08/05 Javascript
快速学习jQuery插件 Form表单插件使用方法
2015/12/01 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
2017/08/16 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
JS+php后台实现文件上传功能详解
2019/03/02 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
2019/04/09 Javascript
JavaScript交换变量的常用方法小结【4种方法】
2020/05/07 Javascript
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
vue实现简单计算商品价格
2020/09/14 Javascript
[01:20]辉夜杯背景故事宣传片《辉夜传说》
2015/12/25 DOTA
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
快速解决pymongo操作mongodb的时区问题
2020/12/05 Python
python excel和yaml文件的读取封装
2021/01/12 Python
Python中的流程控制详解
2021/02/18 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
浅谈CSS3动画的回调处理
2016/07/21 HTML / CSS
html svg生成环形进度条的实现方法
2019/09/23 HTML / CSS
为奢侈时尚带来了慈善元素:Olivela
2018/09/29 全球购物
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
关于.NET, HTML的五个问题
2012/08/29 面试题
建筑结构施工专业推荐信
2014/02/21 职场文书
年终晚会主持词
2014/03/25 职场文书
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
2014年四风个人对照检查及整改措施
2014/10/28 职场文书
初中学生操行评语
2014/12/26 职场文书
治理商业贿赂工作总结
2015/08/10 职场文书
《巨人的花园》教学反思
2016/02/19 职场文书
Spring Security使用单点登录的权限功能
2022/04/03 Java/Android