simpleitk 读数据 图像 dicom nii 处理数据

2023-10-30

最近在使用 simpleITK 读取dicom nii 处理数据 非常方便,下面记录一下;

1.读取DICOM序列

医学图像中一个CT序列包含很多张图片,即一个case包含许多slice,使用SimpleITK可以直接读取一个序列

import SimpleITK as sitk
import numpy as np

reader = sitk.ImageSeriesReader()
dicom_names = reader.GetGDCMSeriesFileNames('D:/dicom')
reader.SetFileNames(dicom_names)
image = reader.Execute()

img_array = sitk.GetArrayFromImage(image)

 保存 mha nii

sitk.WriteImage(image,"111.mha")
sitk.WriteImage(image, folderPath + 'test.nii.gz')

2.读多个序列 DICOM :

import SimpleITK as sitk


reader = sitk.ImageSeriesReader()
series_IDs = sitk.ImageSeriesReader.GetGDCMSeriesIDs('D:/dicom')  
# 查看该文件夹下的序列数量
nb_series = len(series_IDs)
print(nb_series)
#生产图像对应的label
series_file_names = sitk.ImageSeriesReader.GetGDCMSeriesFileNames(file_path, series_IDs[0])
reader.SetFileNames(series_file_names)
image = reader.Execute()

3.读 单张 dicom

    import SimpleITK as sitk
    import numpy as np

    image = sitk.ReadImage(slice_path)
    image_array = sitk.GetArrayFromImage(image)  

4. read mhd

import SimpleITK as sitk

image = sitk.ReadImage(mhd_path)


Part2: 数据处理:

1.  图像重采样 ResampleImageFilter

    import SimpleITK as sitk

    reader = sitk.ImageSeriesReader()
    dicom_names = reader.GetGDCMSeriesFileNames('D:/dicom') 
    reader.SetFileNames(dicom_names)
    image = reader.Execute()

    resample = sitk.ResampleImageFilter()
    resample.SetOutputDirection(image.GetDirection())
    resample.SetOutputOrigin(image.GetOrigin())
    newspacing = [1, 1, 1]
    resample.SetOutputSpacing(newspacing)
    newimage = resample.Execute(image)

2.重新采样,插值:

#设置一个Filter
resample = sitk.ResampleImageFilter()
#设置插值方式(1)
resample.SetInterpolator(sitk.sitkLinear)
#默认像素值(2)
resample.SetDefaultPixelValue( 0 );
#沿着x,y,z,的spacing(3)
#The sampling grid of the output space is specified with the spacing along each dimension and the origin.
newspacing = [0.5,0.5,0.5]
resample.SetOutputSpacing(newspacing)
#设置original(4)
resample.SetOutputOrigin(image.GetOrigin())
#设置方向(5)
resample.SetOutputDirection(image.GetDirection())
#有几个值(6)
size = [880,880,1014]#注意你这个设置的是Filter,有了original,spacing,number,就应该是新的吧
#经试验确实size是改变pixel value的当 【1000,1000,1000】时value是0.618怎么算到的?
#原来的是 512 * 512 * 203  之前的voxle spacing  是 0.859375 *  0.859375 * 2.49997
# 1000 10000 1000 这个是总的要求的属
# 所以这个应该是之前的 不是算得的
resample.SetSize(size)
#设置输入的数据 ??

#设置transform
#transform = sitk.Euler3DTransform()
#resample.SetTransform( transform )
resample.SetDefaultPixelValue(0)
new = resample.Execute(image)
print(new.GetSize())
data = sitk.GetArrayFromImage(new)

3. 二值化 BinaryThreshold

#  SIMPLEITK处理
binaryimg = sitk.BinaryThreshold(image, -300, 299, 255, 0)

#  处理结果保存
sitk.WriteImage(binaryimg, "result.mha")

 4.镜像翻转

image_arr = sitk.GetArrayFromImage(image) # 
size = image.GetSize()
origin = image.GetOrigin() #order: x, y, z
spacing = image.GetSpacing() #order:x, y, z
direction = image.GetDirection()
print(spacing) 

pixelType = sitk.sitkUInt8
image_new = sitk.Image(size,pixelType)

image_arr_new = image_arr[:,:,::-1]
image_new = sitk.GetImageFromArray(image_arr_new)
image_new.SetDirection(direction)
image_new.SetSpacing(spacing)
image_new.SetOrigin(origin)

sitk.WriteImage(image_new,folderPath + "reverseX.nii.gz")

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

simpleitk 读数据 图像 dicom nii 处理数据 的相关文章

随机推荐

  • csharp: Export or Import excel using NPOI

    excel 2003 using System using System Collections Generic using System ComponentModel using System Data using System Draw
  • 网络安全人才的发展情况是怎么样的呢?快上车,带你了解

    前言 根据报告执行的数据分析情况 今年因疫情影响及新基建的提出 导致网络安全人才的择业及网络安全从业人员的流动受到一些影响 目前网络安全人才培养方面存在以下几个主要特点 1 在校网络安全人才中性别比例愈加趋于均衡 网络安全学生中女性占比连续
  • 【MySQL】数据库主主备份

    我们先以A服务器为起点 配置它的数据库同步到B 这就是主 从复制了 之后再反过来做一次 就可以互相备份了 热备份的条件 1 mysql的版本都要高于3 2 2 两者数据库版本相同 3 主主备份相当于在原先主从备份的基础上反过来再操作一次 范
  • 算法的鲁棒性

    在机器学习领域 总是看到 算法的鲁棒性 这类字眼 比如这句 L1范数比L2范数鲁棒 鲁棒 的英文是robustness 其是一个特别大的研究领域 最权威的著作当属稳健统计的2本厚书 文献 1 和 2 有志之士可作研究 本人的硕士论文对算法鲁
  • 存储显示联机服务器,存储和服务器如何连接

    存储和服务器如何连接 内容精选 换一换 通过内网连接云手机实例时 需要在租户VPC中创建一台弹性云服务器 作为连接云手机的跳板机器 若创建云手机服务器时未使用自定义网络 还需在云手机租户的VPC和服务器所在VPC之间建立对等连接 如图1所示
  • E70_433半双工无线模组,伪全双工方案

    E70 433半双工无线模组 伪全双工方案 前言 架构设计 外侧输入模块 外侧输出模块 内侧发帧模块 内侧接受模块 实现代码 通用宏定义 代码解析 通用工具函数 代码解析 串口输入输出函数 代码解析 核心业务代码 发送模块 代码解析 接收模
  • uint8 int8

    signed char int8 unsigned char uint8 int int16 unsigned int uint16 long int32 unsigned long uint32 long long int64 unsig
  • python设计个性签名

    python设计个性签名 1 设计个性签名即根据输入的汉字 在签名网站上爬取相应的签名并可视化输出设计结果 2 签名展示举例 可根据需要自行修改 潇洒签 代码展示 import tkinter from tkinter import fro
  • 用python写一个简单的对话框

    前几天 同事说他学过C 做对话框 然后他问我可不可以用python写个对话框 今天我就来写个python的简单版本对话框 大家都是成年人且单身 那么就来写个相亲的对话框 import time print 快过年了 相亲队伍火热报名中 ti
  • Charles 下载并激活(现在已经不用下载Jar包了)。完美解决

    Charles下载网址 https www charlesproxy com download 1 Charles先下载 安装 2 安装完成之后 https www zzzmode com mytools charles 输入任意名字 点击
  • Hadoop Hive sql语法详解

    Hive 是基于Hadoop 构建的一套数据仓库分析系统 它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据 可以将结构 化的数据文件映射为一张数据库表 并提供完整的SQL查询功能 可以将SQL语句转换为MapRe
  • 简单案例分析

    今天做了几个案例 我不太会 还有人说我笨 还说我逻辑思维有问题 其实我感觉也是 他说的对 我就是有点笨 逻辑还跟不上 我希望多对别人宽容与帮助 多给那些原本就不太会的同学一些鼓励 案例1 设计并实现打印一个四位数的逆序数的程序 例如 123
  • 计算日期间隔的巧妙代码C++

    int Date daysTo int year int month int day int y1 m1 d1 int y2 m2 d2 m1 m 9 12 y1 y m1 10 d1 365 y1 y1 4 y1 100 y1 400 m
  • oracle-超全的多表查询连接

    Oracle 聚合函数 Oracle 日期 时间函数 一 简述 1 两个表的连接 是通过将一个表中的一列或者多列同另一个表中的列连接而建立起来的 用来连接两张表的表达式组成了连接条件 当连接成功后 第二张表中的数据就同第一张表连接起来了 并
  • C#学习笔记 LINQ简单使用

    LINQ是C 中的一项非常好用的功能 全程是语言集成查询Language Integrated Query LING和SQL类似 但是不仅可以查询数据库中的数据 还可以查询文件 XML 对象集合等等 要使用LINQ特性 需要引用System
  • 购物车测试点

  • 【计算机网络】湖科大微课堂笔记 p67-70 应用层概述、客户-服务器方式和对等方式、动态主机配置协议DHCP、域名系统DNS

    文章目录 应用层概述 客户 服务器方式和对等方式 动态主机配置协议DHCP 小结 域名系统DNS 小结 一些例题 应用层概述 客户 服务器方式和对等方式 客户 服务器方式 对等方式 动态主机配置协议DHCP DHCP的作用 DHCP工作过程
  • mysql事务回滚是什么意思_Mysql事务提交及事务回滚是什么意思

    本篇文章主要给大家介绍mysql事务提交及事务回滚的相关知识 事务可以说是一段sql 语句的批处理 但是这个批处理是一个atom 原子 不可分割 要么都提交执行 要么回滚 rollback 都不执行 关于事务的详细定义介绍 我们在之前的文章
  • 6678开发板NDK网口通信完整实现(附源码)

    写在前面 1 已经有很多前辈做过很优秀的记录 本篇尽量讲得详细一点 能够让新手直接上手 2 在整个调试过程中 会遇到各种各样的问题 如果遇到问题请看第四部分 大部分问题应该能解决掉 不能解决的就评论区留言 3 我的CCS安装路径是 C Ti
  • simpleitk 读数据 图像 dicom nii 处理数据

    最近在使用 simpleITK 读取dicom nii 处理数据 非常方便 下面记录一下 1 读取DICOM序列 医学图像中一个CT序列包含很多张图片 即一个case包含许多slice 使用SimpleITK可以直接读取一个序列 impor