在医学图像上经常使用的一个库-SimpleITK,很多处理都只懂个大概或者只会简单的读取,保存图像,这里对常用的一些操作进行总结:

import  SimpleITK as sitk

1、sitk.Cast(sitk.ReadImage(),sitk.sitkFloat32) 图像转换数据类型

2、sitk.ReadImage(图像路径)读取图像,如.mhd .nii .nrrd等

3、sitk.WriteImage(image,图像路径)保存图像

4、sitk.GetArrayFromImage(sitk.ReadImage()) 将sitk图像转换成数组

5、sitk.GetImageFromArray() 将数组转换成sitk图像

6、rescalFilt = sitk.RescaleIntensityImageFilter() 改变图像的像素值,转换为[0,255]

rescalFilt.SetOutputMaximum(255)

rescalFilt.SetOutputMinimum(0)

itkimage = rescalFilt.Execute(sitk.ReadImage())

7、resampler = sitk.ResampleImageFilter() 图像重采样

resampler.SetReferenceImage(itkimage)#需要重新采样的目标图像

resampler.SetSize(newSize.tolist())

resampler.SetTransform(sitk.Transform(3, sitk.sitkIdentity))

resampler.SetInterpolator(sitk.sitkNearestNeighbor)

itkimgResampled = resampler.Execute(itkimage)#得到重新采样后的图像

8、sitk.Threshold(sitk.ReadImage(), 0, 1.0, 255) 将图像中像素值<0和>1.0的像素值改为255,否则保持不变

9、sitk.BinaryThreshold(sitk_src, lowerThreshold=lowervalue, upperThreshold=uppervalue, insideValue=255, outsideValue=0) 图像二值化

10、image1 = sitk.ReadImage() 对sitk的image1处理完后恢复到世界坐标系

image2 = sitk.GetArrayFromImage(image1)

origin =  image1.GetOrigin()

spacing = image1.GetSpacing()

direction = image1.GetDirection()

image2 = sitk.GetImageFromArray(image2)

image2.SetOrigin(origin)

image2.SetSpacing(spacing)

image2.SetDirection(direction)

11、sitk_src_gaus = sitk.DiscreteGaussianImageFilter() 图像高斯滤波

sitk_src_gaus.SetVariance(3)

sitk_src_gaus.SetMaximumError(0.2)

sitk_src_gaus = sitk_src_gaus.Execute(sitk.ReadImage())

12、sitk.BinaryMorphologicalOpening(sitk.ReadImage() != 0, kernelsize) 图像的形态学操作:开、闭、膨胀、腐蚀

sitk.BinaryMorphologicalClosing(sitk.ReadImage() != 0, kernelsize)

sitk.BinaryDilate(sitk.ReadImage() != 0, kernelsize)

sitk.BinaryErode(sitk.ReadImage() != 0, kernelsize)

13、sitk_xorop = sitk.XorImageFilter() 图像的逻辑运算:异或、非

sitk_mask1 = sitk_xorop.Execute(imag1, imag2) image1和image2是sitk图像的二值化结果

sitk_notop = sitk.NotImageFilter()

sitk_mask2 = sitk_notop.Execute(image) image是sitk图像的二值化结果

14、sitk.BinaryFillhole(sitk的二值化图像)去除二值化图像内的孔洞

15、去除小的目标:

def RemoveSmallConnectedCompont(sitk_maskimg, rate=0.5):"""remove small object:param sitk_maskimg:input binary image:param rate:size rate:return:binary image"""cc = sitk.ConnectedComponent(sitk_maskimg)stats = sitk.LabelIntensityStatisticsImageFilter()stats.SetGlobalDefaultNumberOfThreads(8)stats.Execute(cc, sitk_maskimg)maxlabel = 0maxsize = 0for l in stats.GetLabels():size = stats.GetPhysicalSize(l)if maxsize < size:maxlabel = lmaxsize = sizenot_remove = []for l in stats.GetLabels():size = stats.GetPhysicalSize(l)if size > maxsize * rate:not_remove.append(l)labelmaskimage = sitk.GetArrayFromImage(cc)outmask = labelmaskimage.copy()outmask[labelmaskimage != maxlabel] = 0for i in range(len(not_remove)):outmask[labelmaskimage == not_remove[i]] = 255outmask_sitk = sitk.GetImageFromArray(outmask)outmask_sitk.SetDirection(sitk_maskimg.GetDirection())outmask_sitk.SetSpacing(sitk_maskimg.GetSpacing())outmask_sitk.SetOrigin(sitk_maskimg.GetOrigin())return outmask_sitk

16、取最大连通域

cc = sitk.ConnectedComponent(binarysitk_image)
stats = sitk.LabelIntensityStatisticsImageFilter()
stats.SetGlobalDefaultNumberOfThreads(8)
stats.Execute(cc, binarysitk_image)
maxlabel = 0
maxsize = 0
for l in stats.GetLabels():size = stats.GetPhysicalSize(l)if maxsize < size:maxlabel = lmaxsize = size
labelmaskimage = sitk.GetArrayFromImage(cc)
outmask = labelmaskimage.copy()
outmask[labelmaskimage == maxlabel] = 1
outmask[labelmaskimage != maxlabel] = 0
outmasksitk = sitk.GetImageFromArray(outmask)
outmasksitk.SetSpacing(binarysitk_image.GetSpacing())
outmasksitk.SetOrigin(binarysitk_image.GetOrigin())
outmasksitk.SetDirection(binarysitk_image.GetDirection())

17、获取读取图像的数据类型

image = sitk.ReadImage(image_path)

image_type = image.GetPixelID()

18、获取所在坐标点处的连通域

label_image = SimpleITK.ConnectedComponent(image)#image必须是二值图像
label_image_array = SimpleITK.GetArrayFromImage(label_image)
output = np.zeros_like(label_image_array)
point = [122,235,456]
value = label_image.GetPixel(point)
if value != 0:output[label_image_array == value] = 1
output = SimpleITK.GetImageFromArray(output)
output.SetOrigin(image.GetOrigin())
output.SetSpacing(image.GetSpacing())
output.SetDirection(image.GetDirection())

19、快速建立一个与当前图像相同大小的全零图像(SimpleITK类型的图像)

Image_new = sitk.Image(img.GetSize()[0],img.GetSize()[1],img.GetSize()[2],sitk.sitkFloat32)#生成新图像的spacing为[1,1,1]

ITK对应python中SimpleITK库的常用函数举例相关推荐

  1. Python中处理字符串的常用函数汇总【文末送书】

    正式的Python专栏第23篇,同学站住,别错过这个从0开始的文章! 今天我们说了字符串的基础,格式化,这次我们讲解字符串的常用函数,不要错过! (文本送书,评论区抽取一位送书) 前两篇都在本文同个专 ...

  2. python中Numpy库的ravel()函数

    python 中的 ravel() 函数将数组多维度拉成一维数组. 书上这样写"如果结果中的值在原始数组中是连续的,则 ravel 不会生成底层数值的副本".按照书上的内容,可知是 ...

  3. python中csv库的writer函数_指定格式csv.writer在Python中

    我正在使用csv.DictWriter从一组词典输出csv文件.我使用以下函数:def dictlist2file(dictrows, filename, fieldnames, delimiter= ...

  4. python opencv创建图像_使用Python中OpenCV库创建一幅图片的RGB通道图片

    我们知道,在使用PhotoShop进行图片的抠取.创建和存储选区.存储图像的色彩资料等复杂操作时,经常会用到一个功能,那就是"RGB"通道,它能从三原色角度对一幅图片进行精准处理. ...

  5. python中requests库的用途-数据爬虫(三):python中requests库使用方法详解

    有些网站访问时必须带有浏览器等信息,如果不传入headers就会报错,如下 使用 Requests 模块,上传文件也是如此简单的,文件的类型会自动进行处理: 因为12306有一个错误证书,我们那它的网 ...

  6. python中requests库的用途-python中requests库session对象的妙用详解

    在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息. 妙用1 requests库的session对象能够帮我们跨请求保持某些参数,也 ...

  7. Python中os库的使用

    文章目录 Python中os库的使用 1. path子库 1.1 获取绝对路径 1.2 归一化path的表示形式 1.3 得到文件的相对路径 1.4 获取目录名 1.5 获取文件名 1.6 路径组合 ...

  8. python docx库安装_详解python中docx库的安装过程

    python中docx库的简介 python-docx包,这是一个很强大的包,可以用来创建docx文档,包含段落.分页符.表格.图片.标题.样式等几乎所有的word文档中能常用的功能都包含了,这个包的 ...

  9. python网络爬虫系列教程——python中requests库应用全解

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python中requests库的基础应用,网页数据挖掘的常用库之一.也就是说最主要的功能是从网页抓取数据. 使用前需要先联网安装reques ...

最新文章

  1. java.lang.ClassNotFoundException: Didn't find class org.apache.http.Protoco
  2. java integer最大值_五分钟学会java中的基础类型封装类
  3. 灰度共生矩阵及其数字特征_数字系统及其表示
  4. Python十行代码带你穿越管世界
  5. 在ASP.NET中使用FCKeditor V2
  6. 开源监控解决方案Nagios+Cacti+PNP4Nagios+NConf+NDOUtils+Nagvis(九)NagVis安装
  7. 怎么添加本地音乐_编辑视频如何添加本地音乐?原来方法这么简单,用手机就能制作...
  8. 使用IntelliJ IDEA和Maven构建Java web项目并打包部署
  9. 计算机word页面设置A5,word页面缩放怎样设置
  10. 在本地计算机无法启动t6,启动用友T6时出现“不能登录到服务器[]请检查T6管理服务是否已启动。...
  11. 高绩效团队-VUCA时代的五个管理策略《三》—创新管理
  12. 联想T260 G3服务器系统安装手册
  13. “阿里云大数据技术实战训练营”江苏省大学生万人计划学术冬令营活动成功举行...
  14. 小何~初次认识PIL
  15. 很多人大一就开始学习C语言,你真的学到了吗?
  16. 感人的真实故事(同事介绍的)
  17. CocosCreator像素鸟小游戏实现(有源码)超详细教程 TS实现小游戏 零基础开发
  18. k8s探针检测php,k8s实践11:kubernetes监测探针简单测试
  19. 基于MATLAB对系统的串联滞后校正
  20. mysql如何返回上一步_月亮上没有火箭和发射塔,嫦娥五号完成任务后,是如何起飞返回的...

热门文章

  1. 快嘴旺旺群群发 官方
  2. 一键 html代码排序,SEO中常用HTML代码大全,及权重排序
  3. 魔兽争霸窗口模式补丁
  4. VUE3+Ts使用高德地图组件@vuemap/vue-amap语法检测Amap is not defind
  5. Ubuntu 执行 bash 脚本异常
  6. python方式对接AWS的kinesis
  7. 对话Facebook人工智能实验室主任、深度学习专家Yann LeCun
  8. Swift 图片加水印
  9. 计算机三级网络技术-综合题(3、4)
  10. 吉大计算机物联网工程学院,许德智