对python读取CT医学图像的实例详解
需要安装OpenCV和SimpleItk。
SimpleItk比较简单,直接pip install SimpleItk即可。
代码如下:
#coding:utf-8 import SimpleITK as sitk import cv2 #LKDS-00058,-102.655469971,108.188810974,438.759994507,12.2279986879 if __name__ == '__main__': filename = "F:/cancer_solution/data/train_subset00/LKDS-00058.mhd" ds = sitk.ReadImage(filename) img_array = sitk.GetArrayFromImage(ds) frame_num, width, height = img_array.shape outpath = "F:/cancer_solution/out/train/LKDS-00058" index = -1 for img_item in img_array: index = index + 1 cv2.imwrite("%s/%d.png"%(outpath,index),img_item) print "done!"
如上所示,就将CT影像解析成了多个单幅图片。
目前还不太理解(x,y,z)坐标是如何对应的。
但祈世间人无病,何愁架上药生尘。癌症,终有一天可以被战胜。
以上这篇对python读取CT医学图像的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Python对象与引用的介绍
对象 Python 中,一切皆对象.每个对象由:标识(identity).类型(type).value(值)组成. 1. 标识用于唯一标识对象,通常对应于对象在计算机内存地址.使用内置函数 id(obj)可返回对象 obj 的标识. 2. 类型用于表示对象存储的"数据"的类型.类型可以限制对象的取值范围以及可执行的操作.可以使用 type(obj)获得对象的所属类型. 3. 值表示对象所存储的数据的信息.使用 print(obj)可以直接打印出值. 对象的本质:一个内存块,拥有特定的值
-
python append、extend与insert的区别
最近在自学Python语言,看到向列表增加更多数据时被append(),extend(),insert()方法绕晕了. append 和extend都只需要一个参数,并且自动添加到数组末尾,如果需要添加多个,可用数组嵌套,但是 append是将嵌套后的数组作为一个对象, extend是将嵌套的数组内容作为多个对象,添加到原数组中 作为编程0基础的小白,觉得有必要自己再梳理一遍: 1.append()方法是指在列表末尾增加一个数据项. 例如:在students列表末尾增加"Gavin"
-
Python中extend和append的区别讲解
append() 方法向列表的尾部添加一个新的元素.只接受一个参数. >>> num = [1,2] >>> num.append(3) >>> num [1, 2, 3] >>> num.append('a') >>> num [1, 2, 3, 'a'] >>> num.append(6,7) Traceback (most recent call last): File "<p
-
在python中利用opencv简单做图片比对的方法
下面代码中利用了两种比对的方法,一 对图片矩阵(m x m)求解特征值,通过比较特征值是否在一定的范围内,判断图片是否相同.二 对图片矩阵(m x m)中1求和,通过比较sum和来比较图片. # -*- coding: utf-8 -*- import cv2 as cv import numpy as np import os file_dir_a='C:\Users\wt\Desktop\data\image1\\' file_dir_b='C:\Users\wt\Desktop\data\
-
Python可视化mhd格式和raw格式的医学图像并保存的方法
mhd格式的文件里面包含的是raw图像的一些头信息,比如图片大小,拍摄日期等等,那么如何可视化图像呢? import cv2 import SimpleITK as sitk import matplotlib.pyplot as plt import numpy as np image =sitk.ReadImage(path) image = sitk.GetArrayFromImage(image) #image = np.squeeze(image[slice, ...]) # if t
-
Python字典的核心底层原理讲解
字典对象的核心是散列表.散列表是一个稀疏数组(总是有空白元素的数组),数组的每个单元叫做 bucket.每个 bucket 有两部分:一个是键对象的引用,一个是值对象的引用.所有 bucket 结构和大小一致,我们可以通过偏移量来读取指定 bucket.下面通过存储与获取数据的过程介绍字典的底层原理. 存储数据的过程 例如,我们将'name' = '张三' 这个键值对存储到字典map中,假设数组长度为8,可以用3位二进制表示. >>> map = {} >>> map
-
python list中append()与extend()用法分享
1. 列表可包含任何数据类型的元素,单个列表中的元素无须全为同一类型. 2. append() 方法向列表的尾部添加一个新的元素.只接受一个参数.3. extend()方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表中. append()用法示例: >>> mylist = [1,2,0,'abc'] >>> mylist [1, 2, 0, 'abc'] >>> mylist.append(4) >>> myl
-
正确理解Python中if __name__ == '__main__'
在Python,我们经常会编写 if __name__ == '__main__' 这么一段代码,这段代码该怎么来理解? 这段代码的功能理解如下: 一个python的文件有两种使用的方法: 作用一,直接作为脚本执行. 作用二,import到其他的python脚本中被调用(模块重用)执行. if __name__ == '__main__': 的作用就是控制这两种情况执行代码的过程,在if __name__ == '__main__': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执
-
python列表操作之extend和append的区别实例分析
本文实例讲述了python列表操作之extend和append的区别.分享给大家供大家参考.具体如下: li = ['a', 'b', 'c'] li.extend(['d', 'e', 'f']) print li print len(li) print li[-1] li = ['a', 'b', 'c'] li.append(['d', 'e', 'f']) print li print len(li) print li[-1] 运行结果如下: ['a', 'b', 'c', 'd', '
-
Python使用post及get方式提交数据的实例
最近在使用Python的过程中,发现网上很少提到在使用post方式时,怎么传一个数组作为参数的示例,此处根据自己的实践经验,给出相关示例: 单纯的post请求: def http_post(): url = "http://152.1.12.11:8080/web" postdata = dict(d=2, p=10) post = [] post.append(postdata) req = urllib2.Request(url, json.dumps(post)) #需要是jso
随机推荐
- AngularJS动态生成div的ID源码解析
- JavaScript/VBScript脚本程序调试(Wscript篇)
- Spring Boot如何使用Spring Security进行安全控制
- Python利用前序和中序遍历结果重建二叉树的方法
- Javascript学习笔记之函数篇(六) : 作用域与命名空间
- BootStrap智能表单实战系列(四)表单布局介绍
- Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
- vuejs如何配置less
- jQuery EasyUI API 中文文档 - ComboTree组合树
- Android应用开发中单元测试分析
- oracle清空所有表数据
- JS注册/移除事件处理程序(ExtJS应用程序设计实战)
- nginx rewrite 伪静态配置参数详细说明
- C#中深度复制和浅度复制详解
- 解析Android声明和使用权限
- Angular中使用MathJax遇到的一些问题
- python使用opencv按一定间隔截取视频帧
- Java基于Lock的生产者消费者模型示例
- C#利用VS中插件打包并发布winfrom程序
- vue如何引入sass全局变量