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在linux中输出带颜色的文字的方法
Jun 19 Python
Python图像灰度变换及图像数组操作
Jan 27 Python
插入排序_Python与PHP的实现版(推荐)
May 11 Python
Python之两种模式的生产者消费者模型详解
Oct 26 Python
python实现自动解数独小程序
Jan 21 Python
Python根据当前日期取去年同星期日期
Apr 14 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
Aug 05 Python
Python求正态分布曲线下面积实例
Nov 20 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
Nov 22 Python
python isinstance函数用法详解
Feb 13 Python
用 Django 开发一个 Python Web API的方法步骤
Dec 03 Python
Python创建文件夹与文件的快捷方法
Dec 08 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文件读取方法实例分析
2015/06/20 PHP
php处理单文件、多文件上传代码分享
2016/08/24 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
PHP网站常见安全漏洞,及相应防范措施总结
2021/03/01 PHP
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
使用JSON.parse将json字符串转换成json对象的时候会出错
2014/09/04 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
Bootstrap项目实战之子栏目资讯内容
2016/04/25 Javascript
IScroll5 中文API参数说明和调用方法
2016/05/21 Javascript
jQuery中deferred对象使用方法详解
2016/07/14 Javascript
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
基于angular2 的 http服务封装的实例代码
2017/06/29 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
2018/12/20 Javascript
通过说明与示例了解js五种设计模式
2019/06/17 Javascript
vue通过v-html指令渲染的富文本无法修改样式的解决方案
2020/05/20 Javascript
win7安装python生成随机数代码分享
2013/12/27 Python
Python MySQLdb Linux下安装笔记
2015/05/09 Python
Python父目录、子目录的相互调用方法
2019/02/16 Python
深入了解python中元类的相关知识
2019/08/29 Python
python实现生成Word、docx文件的方法分析
2019/08/30 Python
python超时重新请求解决方案
2019/10/21 Python
Django项目基础配置和基本使用过程解析
2019/11/25 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
《小石潭记》教学反思
2014/02/13 职场文书
机电一体化专业毕业生自荐信
2014/06/19 职场文书
日语专业求职信
2014/07/04 职场文书
小学数学教师研修感悟
2015/11/18 职场文书
2016秋季小学开学寄语
2015/12/03 职场文书
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis