对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医学图像的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 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

  • 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对象与引用的介绍

    对象 Python 中,一切皆对象.每个对象由:标识(identity).类型(type).value(值)组成. 1. 标识用于唯一标识对象,通常对应于对象在计算机内存地址.使用内置函数 id(obj)可返回对象 obj 的标识. 2. 类型用于表示对象存储的"数据"的类型.类型可以限制对象的取值范围以及可执行的操作.可以使用 type(obj)获得对象的所属类型. 3. 值表示对象所存储的数据的信息.使用 print(obj)可以直接打印出值. 对象的本质:一个内存块,拥有特定的值

  • 在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 append、extend与insert的区别

    最近在自学Python语言,看到向列表增加更多数据时被append(),extend(),insert()方法绕晕了. append 和extend都只需要一个参数,并且自动添加到数组末尾,如果需要添加多个,可用数组嵌套,但是  append是将嵌套后的数组作为一个对象, extend是将嵌套的数组内容作为多个对象,添加到原数组中 作为编程0基础的小白,觉得有必要自己再梳理一遍: 1.append()方法是指在列表末尾增加一个数据项. 例如:在students列表末尾增加"Gavin"

  • Python字典的核心底层原理讲解

    字典对象的核心是散列表.散列表是一个稀疏数组(总是有空白元素的数组),数组的每个单元叫做 bucket.每个 bucket 有两部分:一个是键对象的引用,一个是值对象的引用.所有 bucket 结构和大小一致,我们可以通过偏移量来读取指定 bucket.下面通过存储与获取数据的过程介绍字典的底层原理. 存储数据的过程 例如,我们将'name' = '张三' 这个键值对存储到字典map中,假设数组长度为8,可以用3位二进制表示. >>> map = {} >>> map

  • 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列表操作之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中if __name__ == '__main__'

    在Python,我们经常会编写 if __name__ == '__main__' 这么一段代码,这段代码该怎么来理解? 这段代码的功能理解如下: 一个python的文件有两种使用的方法: 作用一,直接作为脚本执行. 作用二,import到其他的python脚本中被调用(模块重用)执行. if __name__ == '__main__': 的作用就是控制这两种情况执行代码的过程,在if __name__ == '__main__': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执

  • 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

随机推荐