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同时兼容python2和python3的8个技巧分享
Jul 11 Python
用Python进行一些简单的自然语言处理的教程
Mar 31 Python
python中self原理实例分析
Apr 30 Python
python中将函数赋值给变量时需要注意的一些问题
Aug 18 Python
小白如何入门Python? 制作一个网站为例
Mar 06 Python
如何使用Python的Requests包实现模拟登陆
Apr 27 Python
Python使用folium excel绘制point
Jan 03 Python
一行python实现树形结构的方法
Aug 09 Python
在keras下实现多个模型的融合方式
May 23 Python
基于python纯函数实现井字棋游戏
May 27 Python
python爬不同图片分别保存在不同文件夹中的实现
Apr 02 Python
Elasticsearch 聚合查询和排序
Apr 19 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 面试碰到过的问题 在此做下记录
2011/06/09 PHP
PHP中基本HTTP认证技巧分析
2015/03/16 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
比较全面的event对像在IE与FF中的区别 推荐
2009/09/21 Javascript
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
javascript学习笔记(十五) js间歇调用和超时调用
2012/06/20 Javascript
DOM基础教程之使用DOM控制表单
2015/01/20 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
Vue中多元素过渡特效的解决方案
2020/02/05 Javascript
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
python获得图片base64编码示例
2014/01/16 Python
Python文件操作类操作实例详解
2014/07/11 Python
一波神奇的Python语句、函数与方法的使用技巧总结
2015/12/08 Python
python 统计数组中元素出现次数并进行排序的实例
2018/07/02 Python
python导入pandas具体步骤方法
2019/06/23 Python
Python getsizeof()和getsize()区分详解
2020/11/20 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
python 实现图片裁剪小工具
2021/02/02 Python
jupyter 添加不同内核的操作
2021/02/06 Python
英国二手iPhone、音乐、电影和游戏商店:musicMagpie
2018/10/26 全球购物
MATCHESFASHION.COM美国官网:英国奢侈品零售商
2018/10/29 全球购物
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
Hotels.com印度:酒店预订
2019/05/11 全球购物
会计专业自我鉴定范文
2013/10/06 职场文书
西北政法大学自主招生自荐信
2014/01/29 职场文书
实习生评语
2014/04/26 职场文书
2015年公司工作总结
2015/04/25 职场文书
信用卡工作证明范本
2015/06/19 职场文书
公司人事管理制度
2015/08/05 职场文书
学校远程教育工作总结
2015/08/11 职场文书
施工安全责任协议书
2016/03/23 职场文书
超越Nginx的Web服务器caddy优雅用法
2022/06/21 Servers
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技