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定时执行指定函数的方法
May 27 Python
Python使用tablib生成excel文件的简单实现方法
Mar 16 Python
横向对比分析Python解析XML的四种方式
Mar 30 Python
在pycharm中python切换解释器失败的解决方法
Oct 29 Python
pyqt5实现俄罗斯方块游戏
Jan 11 Python
python实现维吉尼亚算法
Mar 20 Python
在Python中表示一个对象的方法
Jun 25 Python
pyqt5 键盘监听按下enter 就登陆的实例
Jun 25 Python
Django用户身份验证完成示例代码
Apr 03 Python
Python3获取cookie常用三种方案
Oct 05 Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 15 Python
Python创建SQL数据库流程逐步讲解
Sep 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/07/10 PHP
php 中英文语言转换类
2011/09/07 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
javascript setTimeout和setInterval计时的区别详解
2013/06/21 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
jQuery实现为图片添加镜头放大效果的方法
2015/06/25 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
jQuery Easyui datagrid/treegrid 清空数据
2016/07/09 Javascript
同步文本框内容JS代码实现
2016/08/04 Javascript
简单谈谈require模块化jquery和angular的问题
2017/06/23 jQuery
vue 动态改变静态图片以及请求网络图片的实现方法
2018/02/07 Javascript
elementUI 动态生成几行几列的方法示例
2019/07/11 Javascript
详解element-ui中表单验证的三种方式
2019/09/18 Javascript
python实现dict版图遍历示例
2014/02/19 Python
python实现井字棋游戏
2020/03/30 Python
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
python集合的创建、添加及删除操作示例
2019/10/08 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
python eventlet绿化和patch原理
2020/11/21 Python
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
小区物业门卫岗位职责
2014/04/10 职场文书
本科生就业推荐信
2014/05/19 职场文书
感恩老师演讲稿600字
2014/08/28 职场文书
医院办公室主任岗位职责
2015/04/01 职场文书
2015年艾滋病防治工作总结
2015/05/22 职场文书
教育教学读书笔记
2015/07/02 职场文书
合同范本之电脑出租
2019/08/13 职场文书
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python
MySQL数据库索引的最左匹配原则
2021/11/20 MySQL
详解TypeScript的基础类型
2022/02/18 Javascript