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基础入门学习笔记(Python环境搭建)
Jan 13 Python
Python 中的range(),以及列表切片方法
Jul 02 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 Python
Python自定义一个类实现字典dict功能的方法
Jan 19 Python
Python基于滑动平均思想实现缺失数据填充的方法
Feb 21 Python
python中aioysql(异步操作MySQL)的方法
Apr 11 Python
python判断所输入的任意一个正整数是否为素数的两种方法
Jun 27 Python
django之静态文件 django 2.0 在网页中显示图片的例子
Jul 28 Python
python爬虫 urllib模块url编码处理详解
Aug 20 Python
django中使用POST方法获取POST数据
Aug 20 Python
python实现静态服务器
Sep 05 Python
python3的pip路径在哪
Jun 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启用zlib压缩文件的配置方法
2013/06/12 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
Javascript----文件操作
2007/01/18 Javascript
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
javascript对下拉列表框(select)的操作实例讲解
2013/11/29 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
2014/12/20 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
详解JavaScript中数组的reduce方法
2016/12/02 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
2020/07/28 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
利用Python实现图书超期提醒
2016/08/02 Python
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
python之pandas用法大全
2018/03/13 Python
Python入门必须知道的11个知识点
2018/03/21 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
python能做什么 python的含义
2019/10/12 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
python encrypt 实现AES加密的实例详解
2020/02/20 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
2021年值得向Python开发者推荐的VS Code扩展插件
2021/01/25 Python
美国狗旅行和户外用品领先供应商:kurgo
2020/08/18 全球购物
忠诚奉献演讲稿
2014/09/12 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
优秀班主任推荐材料
2014/12/17 职场文书
前台接待岗位职责范本
2015/04/03 职场文书
如何在CSS中绘制曲线图形及展示动画
2021/05/24 HTML / CSS