使用SimpleITK读取和保存NIfTI/DICOM文件实例


Posted in Python onJuly 01, 2020

我就废话不多说了,大家还是直接看代码吧~

## using simpleITK to load and save data.
import SimpleITK as sitk
itk_img = sitk.ReadImage('./nifti.nii.gz')
img = sitk.GetArrayFromImage(itk_img)
print("img shape:",img.shape)

## save 
out = sitk.GetImageFromArray(img)
# # out.SetSpacing(itk_img.GetSpacing())
# # out.SetOrigin(itk_img.GetOrigin())
sitk.WriteImage(out,'simpleitk_save.nii.gz')

读取DICOM序列

import sys
import SimpleITK as sitk
import numpy as np

dcm_directory = "./flair_dicom"
series_ids = sitk.ImageSeriesReader.GetGDCMSeriesIDs(dcm_directory)
print("series ids:",series_ids)

if not series_ids:
 print("ERROR: given directory dose not a DICOM series.")
 sys.exit(1)

series_file_names = sitk.ImageSeriesReader.GetGDCMSeriesFileNames(dcm_directory,series_ids[0])
series_reader = sitk.ImageSeriesReader()
series_reader.SetFileNames(series_file_names)
image3D = series_reader.Execute()
size = image3D.GetSize()
print( "Image size:", size[0], size[1], size[2] )

image_array = sitk.GetArrayFromImage(image3D)

# SimpleITK读取的图像数据的坐标顺序为zyx,即从多少张切片到单张切片的宽和高;
# 而据SimpleITK Image获取的origin和spacing的坐标顺序则是xyz

origin = image3D.GetOrigin()
spacing = image3D.GetSpacing()
print("origin:",origin," spacing:",spacing)

读取DICOM单个文件

import SimpleITK as sitk
import numpy as np
image = sitk.ReadImage(slice_path)
image_array = sitk.GetArrayFromImage(image) # z, y, x

补充知识:itk 读取图像,两种格式之间转换

我就废话不多说了,大家还是直接看代码吧~

/*******************************************************
 
	控制台运行程序
	输入:
		程序名称
		读取图像文件名
		保存图像文件名
	输出:
		保存另一种类型的图像
	功能:
		图像在jpeg和bmp两种格式之间互换
********************************************************/
 
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
#include "itkImageIOFactory.h"
#include "itkBMPImageIOFactory.h"
#include "itkJPEGImageIOFactory.h"
#include <iostream>
 
int main(int argc , char *argv[])
{
	if (argc < 3)
	{
		std::cerr << "Usage: " << std::endl;
		std::cerr << argv[0] << " inputImageFile outputImageFile " << std::endl;
		return EXIT_FAILURE;
	}
 
	itk::BMPImageIOFactory::RegisterOneFactory();
	itk::JPEGImageIOFactory::RegisterOneFactory();
 
	typedef itk::Image< unsigned char, 2 > ImageType;
	typedef itk::ImageFileReader< ImageType > ReaderType;
	typedef itk::ImageFileWriter< ImageType > WriterType;
 
	ReaderType::Pointer reader = ReaderType::New();
	WriterType::Pointer writer = WriterType::New();
 
	const char * inputFilename = argv[1];
	const char * outputFilename = argv[2];
 
	reader->SetFileName( inputFilename );
	writer->SetFileName( outputFilename );
 
	writer->SetInput( reader->GetOutput() );
	try
	{
		writer->Update();
	}
	catch( itk::ExceptionObject & err )
	{
		std::cerr << "ExceptionObject caught !" << std::endl;
		std::cerr << err << std::endl;
		return EXIT_FAILURE;
	}
 
	system("pause");
	return 0;
}

以上这篇使用SimpleITK读取和保存NIfTI/DICOM文件实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python翻译软件实现代码(使用google api完成)
Nov 26 Python
Python实现登录人人网并抓取新鲜事的方法
May 11 Python
python Django框架实现自定义表单提交
Mar 25 Python
Python3.5 创建文件的简单实例
Apr 26 Python
Python连接Redis的基本配置方法
Sep 13 Python
Python生成器的使用方法和示例代码
Mar 04 Python
对python中GUI,Label和Button的实例详解
Jun 27 Python
python下载库的步骤方法
Oct 12 Python
Python一行代码解决矩阵旋转的问题
Nov 30 Python
tornado+celery的简单使用详解
Dec 21 Python
Python中包的用法及安装
Feb 11 Python
Python容器类型公共方法总结
Aug 19 Python
使用Nibabel库对nii格式图像的读写操作
Jul 01 #Python
python 读取.nii格式图像实例
Jul 01 #Python
使用npy转image图像并保存的实例
Jul 01 #Python
python实现npy格式文件转换为txt文件操作
Jul 01 #Python
python与pycharm有何区别
Jul 01 #Python
tensorflow 动态获取 BatchSzie 的大小实例
Jun 30 #Python
浅谈TensorFlow之稀疏张量表示
Jun 30 #Python
You might like
php中var_export与var_dump的区别分析
2010/08/21 PHP
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
使用composer命令加载vendor中的第三方类库 的方法
2019/07/09 PHP
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
extJs 常用到的增,删,改,查操作代码
2009/12/28 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
封装的jquery翻页滚动(示例代码)
2013/11/18 Javascript
理解javascript回调函数
2014/12/28 Javascript
聊一聊JavaScript作用域和作用域链
2016/05/03 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
详解vuex结合localstorage动态监听storage的变化
2018/05/03 Javascript
使用JavaScript破解web
2018/09/28 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
Python爬取读者并制作成PDF
2015/03/10 Python
python中函数传参详解
2016/07/03 Python
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
tensorflow 获取模型所有参数总和数量的方法
2018/06/14 Python
Python嵌入C/C++进行开发详解
2020/06/09 Python
大都会艺术博物馆商店:The Met Store
2018/06/22 全球购物
师范应届生语文教师求职信
2013/10/29 职场文书
会计自荐书
2013/12/02 职场文书
四年级数学教学反思
2014/02/02 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
关于安全的标语
2014/06/10 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
民间个人借款协议书
2014/09/30 职场文书
公务员个人总结
2015/02/12 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
任命通知范文
2015/04/21 职场文书