首页 > 其他分享 >SimpleITK 简单使用

SimpleITK 简单使用

时间:2023-07-13 11:33:36浏览次数:27  
标签:sitk itk img 简单 filename SimpleITK 使用 array

SimpleITK

ITK是一个开源、跨平台的框架,提供给开发者增强功能的图像分析和处理套件(推荐使用)。

Note:注意SimpleITK不支持中文,即路径中不能有中文

X射线图像对应的读取

 1 # @file   : itk_p1.py
 2 # @Time   : 2021/8/28 16:27
 3 # @Author : wmz
 4 import SimpleITK as sitk
 5 filename = '1.dcm'
 6 itk_img = sitk.ReadImage(filename)
 7 img_array = sitk.GetArrayFromImage(itk_img)
 8 print(img_array.shape)
 9 
10 # 输出:(对应信息:frame_num, width, height)注意:img_array对应的是图像的矩阵信息
11 
12 # (1, 512, 512)

推荐用法:

 1 # -*- coding : UTF-8 -*-
 2 # @file   : itk_p2.py
 3 # @Time   : 2021/8/28 19:43
 4 # @Author : wmz
 5 
 6 import SimpleITK as sitk
 7 # 推荐用法
 8 filename = '1.dcm'
 9 itk_img = sitk.ReadImage(filename)
10 img_array = sitk.GetArrayFromImage(itk_img)[0]
11 print(img_array.shape)

 CT图像的读取

1 import SimpleITK as sitk
2 filename = '*.mhd'
3 itk_img = sitk.ReadImage(filename)
4 img_array = sitk.GetArrayFromImage(itk_img)
5 print(img_array.shape)
6 输出:(对应信息:frame_num, width, height)帧参数:frame_num,代表CT扫描层数注意:img_array对应的是图像的矩阵信息
7 
8 (133, 512, 512)

将CT影像拆分成多个单幅图像

方法一:

 1 import SimpleITK as sitk
 2 import cv2
 3 filename = '*.mhd'
 4 itk_img = sitk.ReadImage(filename)
 5 img_array = sitk.GetArrayFromImage(itk_img)
 6 frame_num, width, height = img_array.shape
 7 outpath = 'F:/data/LUNA16'#存放拆分得到的图像路径
 8 index = -1
 9 for img_item in img_array:
10     index = index + 1
11     cv2.imwrite("%s/%d.png" % (outpath, index), img_item)
12 print("done!")

方法二:

1 import SimpleITK as sitk
2 import os
3 import cv2
4 filename = '*.mhd'
5 path = 'F:/data/LUNA16'   #存放拆分得到图像的路径
6 itk_img = sitk.ReadImage(filename)
7 img_array = sitk.GetArrayFromImage(itk_img)
8 for i, im in enumerate(img_array):
9   cv2.imwrite(os.path.join(path, '{}.png'.format(i)), im)

如下图所示是CT影像拆分出来的部分图像。拆分得到的图像大小均为512*512,总数是:frame_num张。

标签:sitk,itk,img,简单,filename,SimpleITK,使用,array
From: https://www.cnblogs.com/ybqjymy/p/17549955.html

相关文章

  • 使用Clion开发esp32
    一、概述Clion是一款专门开发C以及C++所设计的跨平台的IDE。它是以IntelliJ为基础设计的,包含了许多智能功能来提高开发人员的生产力。这种强大的IDE帮助开发人员在Linux、OSX和Windows上来开发C/C++,同时它还能使用智能编辑器来提高代码质量、自动代码重构并且深度整合Cmake编......
  • Jmeter各组件介绍 及 使用(二)
    本篇主要讲述Jmeter的各个组件及简单使用,其中包括以下内容:一、测试片段及使用二、用户自定义变量  测试片段及使用测试片段添加--TestPlan--添加--测试片段--测试片段测试片段使用【第一种方式】--线程组--添加--逻辑控制器--include控制器测试片段使用【第二种方式】-......
  • 如何实现只有80对外开放的宿主机,使用docker实现mysql和redis和外部通信的具体操作步
    使用Docker实现MySQL和Redis与外部通信引言在现代软件开发中,往往需要使用到各种数据库和缓存技术。MySQL是一种常用的关系型数据库,而Redis是一种常用的内存缓存数据库。在部署这些数据库和缓存时,我们常常需要与外部的系统进行通信,例如通过网络连接,提供服务给其他系统。本文将介绍......
  • 如何实现在前端使用typescript的具体操作步骤
    在前端使用Typescript介绍Typescript是一种由微软开发的开源编程语言,它是JavaScript的超集,可以编译为纯JavaScript代码。Typescript增加了静态类型检查、面向对象编程和更好的工具支持,使得前端开发更加可靠和可维护。本文将教你如何在前端项目中使用Typescript。步骤下......
  • [Vue] 使用pdf-lib和@pdf-lib/fontkit 报错 fontkit.create is not a function
    描述:pdf-lib注册了@pdf-lib/fontkit后(pdfDoc.registerFontkit(fontkit)),内部调用了fontkit的create方法,但是这个方法不存在。我在控制台打印了下fontkit对象,发现fontkit包了一层default,即 fontkit.default.create(),所以找不到这个方法, pdf-lib使用的是 fo......
  • 使用Notepad++做下划线与驼峰的互换
    下划线转驼峰匹配规则:([a-z])_([a-z])替换规则:\1\U\2\E原:转换后:驼峰转下划线匹配规则:([a-z])([A-Z])替换规则:\1_\L\2\E原:转换后......
  • ubuntu20使用iptables-persistent libfakeroot libxtables-dev netfilter-persistent
    实施防火墙是保护服务器安全的重要一步。其中很大一部分是决定将对您的网络实施流量限制的单个规则和策略。像iptables这样的防火墙还允许您对应用规则的结构框架有发言权。在本指南中,您将学习如何构建防火墙,作为更复杂规则集的基础。该防火墙将主要关注提供合理的默认值和建立......
  • Linux 命令都无法使用
    配置javaJDK后,错误export之后linux所有命令无法使用经检查是因为jdk的环境变量PATH和调用命令的环境变量相同导致调用命令的环境变量无法使用解决方法1:直接在linux命令界面输入如下,然后回车导入环境变量以及常用命令的地址exportPATH=/usr/local/sbin:/usr/local/bin:/sbin:/......
  • 使用C#编写.NET分析器(完结)
    译者注这是在Datadog公司任职的KevinGosse大佬使用C#编写.NET分析器的系列文章之一,在国内只有很少很少的人了解和研究.NET分析器,它常被用于APM(应用性能诊断)、IDE、诊断工具中,比如Datadog的APM,VisualStudio的分析器以及Rider和Reshaper等等。之前只能使用C++编写,自从.NETNative......
  • 若依微服务使用openfeign ,写了一个接口,但是其他项目引入的时候显示找不到这个Bean:Coul
    启动报错:org.springframework.beans.factory.UnsatisfiedDependencyException:Errorcreatingbeanwithname'tokenController':Unsatisfieddependencyexpressedthroughfield'sysLoginService';nestedexceptionisorg.springframework.beans.fa......