【读取文件】python SimpleITK模块读取*.mhd和*.raw格式dicom文件_simpleitk读取raw-程序员宅基地

技术标签: 读取文件  python  SimpleITK  

        本文主要内容为使用SimpleITK进行*.mhd和*.raw格式dicom文件的读取。

        一个dicom文件一般分为metadata和image两部分,根据patient,study,series和image四层信息进行解析序列中的每一个dicom文件。
        *.mhd(metadata header)和*.raw格式dicom文件是为了读取方便,将一个序列的metadata(一个序列中的每一个dicom文件的metadata基本一致,坐标等信息可以由其中一个推算其它)集中到一个*.mhd文件(提取共同部分,并非每个dicom文件的metadata集中到一起),序列中的每一个dicom文件包含的image信息集中到*.raw文件,因此一个*.raw文件中包含多幅图像。

         *.mhd和 *.raw文件需要同时存在,否则无法完整读取。

以luna16 subset0中如下文件为例:

1.3.6.1.4.1.14519.5.2.1.6279.6001.105756658031515062000744821260.mhd
1.3.6.1.4.1.14519.5.2.1.6279.6001.105756658031515062000744821260.raw

######################### 读取数据 #####################################

In [1]: import SimpleITK as sitk
In [2]: dicom_mhd   = sitk.ReadImage("1.3.6.1.4.1.14519.5.2.1.6279.6001.105756658031515062000744821260.mhd")
In [3]: dicom_array = sitk.GetArrayFromImage(dicom_mhd)

######################### 使用数据 #####################################

# dicom_mhd中可以获取层间距,方向向量等等dicom文件metadata中包含的信息
In [4]: dicom_mhd.GetSpacing()	# x / y / z 方向的间距,毫米(mm)为单位
Out[4]: (0.7617189884185791, 0.7617189884185791, 2.5)
# dicom_array为序列包含的所有Image信息,使用SimpleITK读取时,传入参数dicom_mhd,会自动
# 读取 *.raw文件
In [5]: type(dicom_array)
Out[5]: numpy.ndarray
In [6]: dicom_array.shape
Out[6]: (121, 512, 512) # 第一维度为序列图像数量,后两维度为高度和宽度
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012633319/article/details/109460067

智能推荐

Fighting regressions with git bisect_h ttps://cheaperapp1.work/-程序员宅基地

文章浏览阅读557次。https://www.kernel.org/pub/software/scm/git/docs/git-bisect-lk2009.htmlFighting regressions with git bisectChristian [email protected]>2009/11/08Abstract"git bisect" _h ttps://cheaperapp1.work/

非对称加密(RSA、DSA、ECC)_dsa密钥长度-程序员宅基地

文章浏览阅读3.8k次。RSA目前最优秀的公钥方案,第一个能同时用于加密和数字签名的算法,能够抵抗到目前为止已知的所有密码攻击基于一个十分简单的数论事实:将两个大素数相乘十分容易,但对其进行因式分解却十分困难,所以可以将其乘积公开作为加密密钥密钥生成算法简述:(1)随机选择两个不相等的质数p和q(这两个质数越大,就越难被破解)(2)计算p和q的乘积n,n的二进制长度就是密钥的长度(实际应用中,RSA密钥1024位,重要场合为2048位)(3)计算n的欧拉函数φ(n)【φ(n) = (p-1)(q-1)】(4)随机选_dsa密钥长度

形态学基础算法之边界提取,空洞填充,连通分量提取,凸壳,细化和粗化_形态学处理实现边界提取-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏12次。边界提取孔洞填充X0是一副全黑的图像,但在孔洞的地方有一个白点。我们要对A图进行孔洞填充,首先求出A的补集作为备用,然后所用到的element B如上图。首先我们构建X0一幅全黑图像加上孔洞中的一点白作为初始图像,然后用B对X0进行膨胀,结果膨胀的结果超过了孔洞的大小,于是用之前构造的Ac对其求交集将其结果限制在孔洞内(由于我们的element是一个四连通元素,每一次膨胀其边界..._形态学处理实现边界提取

Gradle中使用Mybatis Generator生成bo和mapper_gradle8.5 mybatis generator-程序员宅基地

文章浏览阅读463次。Mybatis Generator是一个mybatis工具项目,用于生成mybatis的model,mapper,dao持久层代码。Mybatis Generator提供了maven plugin,ant target,java三种方式启动。现在主流的构建工具是Gradle,虽然mybatis generator没有提供gradle的插件,但gradle可以调用ant任务,因此,gradle也能启..._gradle8.5 mybatis generator

github入门教程(非常详细)从零基础入门到精通,看完这一篇就够了-程序员宅基地

文章浏览阅读2.7w次,点赞57次,收藏514次。如果你是一枚Coder,但是你不知道Github,那么我觉的你就不是一个菜鸟级别的Coder,因为你压根不是真正Coder,你只是一个Code搬运工。说明你根本不善于突破自己!为什么这么说原因很简单,很多优秀的代码以及各种框架源码都存放于github当中!_github

c 语言a作用,C语言菜鸟基础教程之a++与++a-程序员宅基地

文章浏览阅读3.4k次。(一)a++在C语言或其它语言中,++符号表示“自加”,就是变量在原来的基础上加1。例1:a = 0;a++;则此时a的值为1。同样的道理,--表示”自减”。例2:a = 100;a--;则此时a的值为99。注意,程序语言里没有”自乘”和”自除”的概念。验证程序:#include int main(){int a = 0; // 给a赋值a++;printf("After ++, a = %d\n..._a++使用时值为多少

随便推点

2022黑马程序员Java学习路线图_java从业者学习阶段和必学课程-程序员宅基地

文章浏览阅读3.7k次,点赞5次,收藏89次。初学者可按以下路线学习:入门:Java SE基础-->Java Web(含数据库+H5+js+vue)中级:Maven-->Git-->SSM框架 -->MybatisPlus-->Spring Boot-->传智健康【项目实战】--> 瑞吉外卖【项目实战】进阶:Spring Cloud(微服务开发,学这一套就够了) 也可分技术点学: (Dubbo-->Zookeeper-->RabbitMQ-->RocketMQ-->Docker-->Redis -->MongoDB-->搜索技术Elasticsea_java从业者学习阶段和必学课程

Ubuntu16安装maven后,使用时出现-bash: /usr/local/lib/apache-maven-3.6.3/bin/mvn: Permission denied_sh: /users/local/worktools/apache-maven-3.6.3/apac-程序员宅基地

文章浏览阅读2.1k次。已经安装配置好maven环境变量,输入mvn -version时出现-bash: /usr/local/lib/apache-maven-3.6.3/bin/mvn: Permission denied仔细查看maven目录下的bin文件夹中的mvn属性为 -rw-r–r--,死侍_sh: /users/local/worktools/apache-maven-3.6.3/apache-maven/src/bin/mvn: perm

linux进程间同步之POSIX信号量_posix进程同步-程序员宅基地

文章浏览阅读556次。 <阅读linux系统编程手册笔记> POSIX信号量跟System V信号量一样,都是用于进程和线程同步对同享资源的访问。信号量(POSIX,System V)是一个整数,其值是不能小于0的。 POSIX信号量主要分为:命名信号量、未命名信号量。 首先先介绍命名信号量。一、命名信号量 先来看看命名信号量的主要API:sem_open()函数用于创建或者打开一个..._posix进程同步

轻量级Java表达式引擎Aviator_aviator lambda-程序员宅基地

文章浏览阅读1.4w次,点赞4次,收藏34次。简介Aviator是一个高性能、轻量级的 java 语言实现的表达式求值引擎, 主要用于各种表达式的动态求值。现在已经有很多开源可用的 java 表达式求值引擎,为什么还需要 Avaitor 呢?Aviator的设计目标是轻量级和高性能,相比于Groovy、JRuby的笨重, Aviator非常小, 加上依赖包也才 537K,不算依赖包的话只有 70K; 当然, Aviator的语法是受限..._aviator lambda

单目相机测距之一_单目相机扫二维码 定位精度-程序员宅基地

文章浏览阅读5.2k次,点赞9次,收藏71次。其他参考基于OpenCV实现二维码发现与定位 Zbar+ROS+opencv二维码识别与定位研究(一) 基于二维码的单目视觉测距移动机器人定位研究 (opencv+Qt)的QR码精确定位与识别完全解析(精度可达±0.1mm,±0.1°) 基于二维码的室内定位技术(一)——原理转自https://zhou-yuxin.github.io/articles/201..._单目相机扫二维码 定位精度

数据库系统概论 ---知识点大全(期末复习版)_数据库系统概论期末复习-程序员宅基地

文章浏览阅读7.7k次,点赞51次,收藏459次。数据库复习知识点_数据库系统概论期末复习