SimpleITK学习(二)图像读取
通常我会用simpleitk来读取dicom文件,主要是为了将dicom文件转换为numpy矩阵,便于输入神经网络,读取dicom文件可分为两种情况,一.单独的dicom文件 二.一系列dicom文件,前者只是一张切片,通常是X光片,后者是很多张切片,合在一起通常代表CT图像。
一.
读取dicom文件
file = sitk.ReadImage(filepath)
获取基本信息,大小,像素间距,坐标原点,方向
file.GetSize()
file.GetOrigin()
file.GetSpacing()
file.GetDirection()
输出信息类似下面这样

还可以获取很多其它信息,这些信息以字典的形式存储,称为元数据

上面是字典的键,具体为什么是这种形式,还不太清楚
字典的值形式如下

上面输出的只是一小部分信息,利用microDicom软件打开一个dicom文件,可以看到详细的元信息

当然,最最重要的还是像素矩阵,这是我们用来训练模型的原料啊
pixel_array = sitk.GetArrayFromImage(file)#这个file是之前读取出来的文件
二.
读取dicom序列
reader = sitk.ImageSeriesReader()
reader.MetaDataDictionaryArrayUpdateOn()#这一步是加载公开的元信息
reader.LoadPrivateTagsOn()#这一步是加载私有的元信息
series_IDs = sitk.ImageSeriesReader.GetGDCMSeriesIDs(directorypath)#根据文件夹获取序列ID,一个文件夹里面通常是一个病人的所有切片,会分为好几个序列
dicom_names = reader.GetGDCMSeriesFileNames( directorypath,series_ID)#选取其中一个序列ID,获得该序列的若干文件名
reader.SetFileNames(dicom_names)#设置文件名
image3D = reader.Execute()#读取dicom序列
image3D是一个三维矩阵,也就是说是一个三维的立体的数据,可以像读取一张切片一样,读取它的原点,像素间隔,方向,等基本信息
但是元信息的读取,不能通过image3D本身,要通过reader
reader.GetMetaDataKeys(slice_index)
reader.GetMetaData(slice_index,key)
通过切片的索引来读取属于该切片的键,然后通过切片索引与键获取相应的值,这里的键值对与单张切片的形式一样
SimpleITK学习(二)图像读取的更多相关文章
- openCV学习——一、图像读取、显示、输出
openCV学习——一.图像读取.显示.输出 一.Mat imread(const string& filename,int flags=1),用于读取图片 1.参数介绍 filename ...
- Java学习-028-JSON 之二 -- 数据读取
JSON数据由 JSONObject.JSONArray.key_value 组合而成.通常来说,JSONObject 可以包含 JSONObject.JSONArray.key_value:JSON ...
- 【opencv学习笔记五】一个简单程序:图像读取与显示
今天我们来学习一个最简单的程序,即从文件读取图像并且创建窗口显示该图像. 目录 [imread]图像读取 [namedWindow]创建window窗口 [imshow]图像显示 [imwrite]图 ...
- ReactJS入门学习二
ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...
- Java学习-017-EXCEL 文件读取实例源代码
众所周知,EXCEL 也是软件测试开发过程中,常用的数据文件导入导出时的类型文件之一,此文主要讲述如何通过 EXCEL 文件中 Sheet 的索引(index)或者 Sheet 名称获取文件中对应 S ...
- Python的数据处理学习(二)
本文参考Paul Barry所著的<Head First Python>一书,参考代码均可由http://python.itcarlow.ie/站点下载.本文若有任何谬误希望不吝赐教~ 二 ...
- SpringMVC入门学习(二)
SpringMVC入门学习(二) ssm框架 springMVC 在上一篇博客中,我简单介绍了一下SpringMVC的环境配置,和简单的使用,今天我们将进一步的学习下Springmvc的操作. mo ...
- 深度学习与计算机视觉(12)_tensorflow实现基于深度学习的图像补全
深度学习与计算机视觉(12)_tensorflow实现基于深度学习的图像补全 原文地址:Image Completion with Deep Learning in TensorFlow by Bra ...
- go学习之文件读取问题(需更新)
go学习之文件读取问题(需更新) 一,问题: 今天做一个GO广度迷宫问题时,出现了一个奇怪的问题. 就是通过fmt.Fscanf()读取文件时,每行末尾多出一个0. 二,问题代码: 1,输入文件maz ...
- SimpleITK学习(一)基本概念
断断续续使用simpleitk处理CT和X光图片有些时间了,但是学的知识都比较零散,没有形成系统的概念,于是对着SimpleITK的英文文档https://simpleitk.readthedocs. ...
随机推荐
- 数据库版本控制工具:NeXtep Designer
下载地址:http://pan.baidu.com/s/1dFuxKFB NeXtep Open Designer 是一个强大的多人协同/多平台的开源数据库的开发工具,致力于于自动化和生产级的集成开发 ...
- linux 下 使用wget 下载 jdk资源 命令
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-co ...
- 白盒测试实践项目(day5)
在这几天的工作下,小组成员都基本完成了各自所负责的内容. 李建文同学完成提交了代码复审相关文档后,也经过小组的补充,彻底完成. 汪鸿同学使用FIndBugs工具完成了静态代码的测试,并且也完成了静态代 ...
- Java SimpleDateFormat用法
? Java中怎么才能把日期转换成想要的格式呢,或把字符串转换成一定格式的日期,如把数据库中的日期或时间转换成自己想要的格式,JAVA中提供了SimpleDateFormat类可以实现,以下是Si ...
- HDU 5119 Happy Matt Friends(DP || 高斯消元)
题目链接 题意 : 给你n个数,让你从中挑K个数(K<=n)使得这k个数异或的和小于m,问你有多少种异或方式满足这个条件. 思路 : 正解据说是高斯消元.这里用DP做的,类似于背包,枚举的是异或 ...
- 代码审查清单 Code Review
代码审查清单 常规项 代码能够工作么?它有没有实现预期的功能,逻辑是否正确等. 所有的代码是否简单易懂? 代码符合你所遵循的编程规范么?这通常包括大括号的位置,变量名和函数名,行的长度,缩进,格式和注 ...
- Java多线程设计模式(三)
目录(?)[-] Read-Wirte Lock Pattern Thread-Per-Message Pattern Worker Thread Pattern Read-Wirte Lock ...
- 推荐一款优秀的代码编辑软件--Source Insight
“工欲善其事,必先利其器”,好的工具能够提高我们办事的效率,进而提升团队乃至企业的竞争力. 对于软件开发工程师来说,选择一款优秀的代码编辑软件也是很重要的.最近,我看到有很多同事还在用微软的VC ++ ...
- CentOS 下 zookeeper 安装
搭建zookeeper需要几个条件 a. 配置Java环境 c. centos d. 下载 xshell5 (下载它只是为了更方便的使用linux) 一.新建一个myapp目录: 二.下载 ...
- Nginx使用
1. 基本使用 分linux和windows版 windows版可以直接双击exe运行,默认配置为80端口,只有两个页面 html目录下为页面.css.js等代码文件 conf目录下为配置文件 主要的 ...