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天气预报采集器实现代码(网页爬虫)
Oct 07 Python
Windows和Linux下使用Python访问SqlServer的方法介绍
Mar 10 Python
python实现对excel进行数据剔除操作实例
Dec 07 Python
django启动uwsgi报错的解决方法
Apr 08 Python
Python列表推导式与生成器用法分析
Aug 02 Python
解决python3 Pycharm上连接数据库时报错的问题
Dec 03 Python
对Python中小整数对象池和大整数对象池的使用详解
Jul 09 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
Aug 26 Python
Python线程条件变量Condition原理解析
Jan 20 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
May 25 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
Jan 05 Python
matplotlib bar()实现百分比堆积柱状图
Feb 24 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编写和读取XML的几种方式
2013/01/12 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
2013/04/28 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
2014/12/24 PHP
PHP图像处理类库MagickWand用法实例分析
2015/05/21 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
通过实例解析PHP数据类型转换方法
2020/07/11 PHP
jquery下操作HTML控件的实现代码
2010/01/12 Javascript
ExtJS实现文件下载的方法实例
2013/11/09 Javascript
在javascript中实现函数数组的方法
2013/12/25 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
js实现上传图片及时预览
2016/05/07 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
Vue项目数据动态过滤实践及实现思路
2018/09/11 Javascript
vue+php实现的微博留言功能示例
2019/03/16 Javascript
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
javascript随机变色实例代码
2019/10/15 Javascript
微信小程序 自定义弹窗实现过程(附代码)
2019/12/05 Javascript
Node.js API详解之 string_decoder用法实例分析
2020/04/29 Javascript
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
JavaScript实现拖拽和缩放效果
2020/08/24 Javascript
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
Supersmart英国:欧洲市场首批食品补充剂供应商之一
2018/05/05 全球购物
欧洲领先的技术商店:eibmarkt.com
2019/05/10 全球购物
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
一套Delphi的笔试题一
2016/02/14 面试题
餐饮服务食品安全责任书
2014/07/25 职场文书
课前一分钟演讲稿
2014/08/26 职场文书
导游词之太湖
2019/10/08 职场文书
Redis实现订单自动过期功能的示例代码
2021/05/08 Redis
Mysql 用户权限管理实现
2021/05/25 MySQL
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL