Simpleitk简单应用-python版本

news2024/11/13 18:19:19

安装:

pip install simpletik

读取

目前主流的医疗图像格式是nifti格式,相比于dicom格式更加简单和更加容易读取和操作。后缀名为nii或者nii.gz(nii为原格式,gz结尾的是经过压缩格式,因为医疗图像的重复像素特别多,通过压缩空间可以节省很多存储空间)。

import Simpleitk as sitk   # 通常取名为sitk 后续不再解释
path = r'自定义路径'
img = sitk.ReadImage(path) 
arr = sitk.GetArrayFromImage(img)

arr是一个numpy数组,此时要注意索引顺序,在源图像中的索引顺序为x-y-z,arr中的索引顺序为z-y-x

保存

tem = sitk.GetImageFromArray(arr)
tem.SetDirection(img.GetDirection())
tem.SetOrigin(img.GetOrigin())
tem.SetSpacing(img.GetSpacing())
sitk.WriteImage(tem,r'要保存的路径和文件名')

arr经过业务处理后,保存到本地,上述代码为基础步骤,如果不进行2-4行代码,则保存的图像属性为默认值:spacinga为(1,1,1),origin为(0,0,0),具体默认值为下图所示.,Direction

连通域

img = sitk.ReadImage(path) 
cc = sitk.ConnectedComponent(img)
stats = sitk.LabelIntensityStatisticsImageFilter()
stats.Execute(cc, img)
arr = sitk.GetArrayFromImage(cc)

数组arr是经过连通域分析的numpy数组,每个连通域被赋予不同的标签.
stats.Getlabels() 是获取所有的标签,输出一个包含所有标签的列表,因此可以通过len(stats.Getlabels())获取连通域的数量.
stats.GetBoundingBox(标签值) 可以获得某个连通域的bonding box,返回一个包含六个整数值的元组,(min_x, max_x, min_y, max_y, min_z, max_z)
stats.GetCenterOfGravity(标签值) 返回某个连通域的重心
stats.GetCentroid(标签值) 返回某个连通域的质心
stats.GetPhysicalSize(标签值) 返回某个连通域的体素数量 通常来统计各个连通域大小的排名
stats.GetMaximum() 获得最大像素值 不可以是彩色图像
stats.GetMaximumIndex() 获得最大像素值的索引
stats.GetNumberOfPixels() 获取图像像素的总数量

下面是通过连通域分析处理杂质的例子

img= sitk.GetImageFromArray(path)
cc = sitk.ConnectedComponent(img)
stats = sitk.LabelIntensityStatisticsImageFilter()
stats.Execute(cc, img)
arr = sitk.GetArrayFromImage(cc)

max_dict = {i:stats.GetPhysicalSize(i) for i in stats.GetLabels()}
maxsize = max(max_dict.values())
rate = 0.2  

for l in stats.GetLabels():
    size = max_dict.get(l)
    if size < maxsize * rate:
        arr [np.where(arr == l)] = 0

tem = sitk.GetImageFromArray(arr)
tem.SetDirection(img.GetDirection())
tem.SetOrigin(img.GetOrigin())
tem.SetSpacing(img.GetSpacing())
sitk.WriteImage(tem,r'要保存的路径和文件名')

通过循环获得最大连通域的像素数量,设定阈值为0.2,将小于此数量的连通域去掉,并将结果保存

暂时写到这,以后有新想法再写,其实通过sitk.GetArrayFromImage获取numpy数组后,可以通过很多库对图像进行处理.例如sklearn nilearn skimage库等等.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/740245.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Hello mysql】 mysql的基本查询(二)

Mysql专栏&#xff1a;Mysql 本篇博客简介&#xff1a;介绍mysql的基本查询 mysql的基本查询&#xff08;二&#xff09; 将筛选出来的数据插入到数据库中&#xff08;insertselect&#xff09;聚合函数统计班级共有多少同学统计班级手机的qq号有多少统计本次考试去重的数学成绩…

Xcode doesn’t support iPhone’s iOS 15.7.3 (19H307).

Xcode真机调试时&#xff0c;出现了Xcode doesn’t support iPhone’s iOS 15.7.3 (19H307).&#xff0c;Xcode不支持iPhone的版本。升级Xcode太耗时&#xff0c;用了找支持SDK文件方式解决了此问题。下图是本地的SDK支持文件。 从GitHub下载了15.7的设备支持文件&#xff0c…

N-123基于springboot房屋租赁管理系统

开发工具&#xff1a;IDEA&#xff0c;jdk1.8 服务器&#xff1a;tomcat9.0 数据库&#xff1a;mysql5.7 前端&#xff1a;jsp、bootstrap 技术&#xff1a; springbootmybatis-plus 系统主要分前台和后台&#xff0c;分租客、房东、管理员三个角色 系统功能介绍说明&am…

19 动态库和静态库

文章目录 静态库动态库dll模块入口函数 静态库 选择桌面向导里面的静态库 设置为发布版,设置重新生成 创建文件夹放入库和头文件 将库放入工程目录下面 在属性中选择C/C附加包含目录&#xff0c;选择include 属性中链接器选择附加目录将lib选中 #include <stdio.h> #i…

八数码问题-c语言

八数码问题 每个局面是三行三列的数字方阵&#xff0c;每个位置为0-8的一个数码且互不相同&#xff0c;求从初始局面&#xff08;自己设定&#xff09;如何“最快”移动到终止局面&#xff08;自己设定&#xff09;。 移动规则&#xff1a;每次只能0与其上下左右四个方向相邻…

91. 解码方法

91. 解码方法 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 91. 解码方法 https://leetcode.cn/problems/decode-ways/ 完成情况&#xff1a; 解题思路&#xff1a; 参考代码&#xff1a; package 西湖算法题解…

LLM 与架构新纪元:适应代码生成模式,突破软件开发瓶颈

TL;DR 版本&#xff1a; 今年 2 月&#xff0c;我们在 QCon 上分享了《组织级架构治理的正确落地方式》&#xff0c;其背后的一个核心思想是&#xff1a;架构即代码。围绕这个核心思想&#xff0c;我们构建了 ArchGuard 的治理功能&#xff0c;即架构规范转换为代码。 今年 5 月…

【Qt QML入门】Rectangle

Rectangle是用来在QML窗口上绘制一个可带边框、和可填充的矩形局域。 如效果图&#xff1a; QML代码如下&#xff1a; import QtQuick 2.15 import QtQuick.Window 2.15Window {width: 640height: 480visible: truetitle: qsTr("Hello World")//绘制一个可填充的矩…

开源堡垒机Guacamole二次开发记录之一

简介 项目中需要用到堡垒机功能&#xff0c;调研了一大圈&#xff0c;发现了Apache Guacamole这个开源项目。 Apache Guacamole 是一个无客户端的远程桌面网关&#xff0c;它支持众多标准管理协议&#xff0c;例如 VNC(RFB)&#xff0c;RDP&#xff0c;SSH 等等。该项目是Apa…

LabVIEW-模拟传感器采集数据并预测数据

一、题目 已知某传感器过去的一段时间内采集的数据为d1,d2,d3,......,dn&#xff0c;现欲以m点的数据宽度&#xff0c;预测 tao 步后的数据值&#xff0c;即将一维的时间序列数据重构为如下m1列的形式&#xff1a; d(1) d(2 ) ....... d(m), d(mtao) d(2) d(…

Python第一天学习之Python数据类型

1.数据类型介绍 2.数据转换 money 50 money "giao" print(money)Python会进行自动的转换&#xff0c;但是&#xff0c;运算就错误,在赋值时可以直接转换&#xff0c;但是在计算时无法直接转换。 money 50 money "giao" print(money1)数据类型转换 …

OpenSSL安装使用(四):DES加解密功能测试

OpenSSL是一个开放源代码的安全套接字层密码库&#xff0c;它主要用于互联网安全协议的实现&#xff0c;具有加密&#xff0c;认证和安全访问等功能。OpenSSL由Eric Young和Tim Hudson共同开发&#xff0c;源自SSLeay开放源代码密码库&#xff0c;后来和内容安全管理密码库&…

探索基于VSCode的远程开发插件,进行远程指令和本地指令的运行

需求 最近在研究VSCode的插件的时候&#xff0c;使用了VSCode的远程开发套件&#xff0c;Remote - SSH可以在本地的VSCode上登录远程机器&#xff0c;打开远程机器的某个文件夹进行开发。并且在开发过程中&#xff0c;能够使用几乎所有的VSCode插件。 当你使用这个插件链接到远…

Python(三):Python开发环境搭建

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

mybatis 注解方式操作 sql

前言:注解的方式在某些查询的时候还是比较方便的 mybatis注解配置 mapUnderscoreToCamelCase 配置Select 注解Insert 注解Delete 注解 和 Update 注解Provider 注解 mapUnderscoreToCamelCase 配置 别名设置&#xff0c;mapUnderscoreToCamelCase 配置 配置可以将 带下划线 sq…

python车牌识别

识别结果 蓝牌 绿牌 黄牌 环境 python:3.9\opencv:4.5.1 环境安装 pip3 install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple pip3 install hyperlpr -i https://pypi.tuna.tsinghua.edu.cn/simple 修改 cd /Library/Frameworks/Python.framework/Versi…

巧用word 邮件合并批量输出报告

在实际调查中&#xff0c;往往遇到很多统计信息要单独生成调查报告。word 邮件合并就能很好的帮助我们快速实现批量产出报告。 具体案例如下&#xff1a; 目前入河排污口调查正在如火如荼开展&#xff0c;我们排查收集了大量信息&#xff0c;整理为表格。 要将这些表格输出为…

算法训练营第三十四天||1005.K次取反后最大化的数组和 ● 134. 加油站● 135. 分发糖果

1005.K次取反后最大化的数组和 自己思路&#xff1a;自己想的就是把数组按从小到大排序&#xff0c;然后把前k小的数字都取反&#xff0c;然后相加起来&#xff0c;这个思路没有考虑到前k个小的数字中不全是负数的情况&#xff0c;比如这个数组全大于0的数&#xff0c;这种情况…

Redis熟悉到精通:开篇

文章目录 要点使用缓存技术的目的需要缓存机制的数据种类Redis学习资料 要点 掌握数据结构和缓存的基本使用方法; 掌握支撑Redis实现高可靠、高性能的技术; 高可靠 Redis之所以可以实现高可靠、高性能&#xff0c;和它的持久化机制、主从复制机制、哨兵、故障自动恢复、切片集…