使用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中使用sys模板和logging模块获取行号和函数名的方法
Apr 15 Python
Python open()文件处理使用介绍
Nov 30 Python
Python的time模块中的常用方法整理
Jun 18 Python
Python画图学习入门教程
Jul 01 Python
django限制匿名用户访问及重定向的方法实例
Feb 07 Python
python使用matplotlib绘制热图
Nov 07 Python
Python实现合并excel表格的方法分析
Apr 13 Python
使用python实现ftp的文件读写方法
Jul 02 Python
基于sklearn实现Bagging算法(python)
Jul 11 Python
Django框架基础模板标签与filter使用方法详解
Jul 23 Python
python nmap实现端口扫描器教程
May 28 Python
Python逐行读取文件内容的方法总结
Feb 14 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程序之die调试法 快速解决错误
2009/09/17 PHP
解析link_mysql的php版
2013/06/30 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
PHP实现的简单AES加密解密算法实例
2017/05/29 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
2009/12/28 Javascript
Javascript学习笔记4 Eval函数
2010/01/11 Javascript
JQuery+JS实现仿百度搜索结果中关键字变色效果
2011/08/02 Javascript
Jquery 的扩展方法总结
2011/10/01 Javascript
仅IE支持clearAttributes/mergeAttributes方法使用介绍
2012/05/04 Javascript
js网页右下角提示框实例
2014/10/14 Javascript
jQuery中unbind()方法用法实例
2015/01/19 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
javascript数据结构中栈的应用之符号平衡问题
2017/04/11 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
详解如何修改 node_modules 里的文件
2020/05/22 Javascript
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
详解vue父子组件状态同步的最佳方式
2020/09/10 Javascript
[03:11]2014DOTA2国际邀请赛-VG掉入败者组 独家专访357
2014/07/19 DOTA
Python中用post、get方式提交数据的方法示例
2017/09/22 Python
Python编程实现的简单神经网络算法示例
2018/01/26 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
Python实现登陆文件验证方法
2018/10/06 Python
Python3中关于cookie的创建与保存
2018/10/21 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
Python如何在bool函数中取值
2020/09/21 Python
美国名牌香水折扣网站:Hottperfume
2021/02/10 全球购物
地理信息科学专业推荐信
2014/09/08 职场文书
2014年图书管理员工作总结
2014/12/01 职场文书
保卫工作个人总结
2015/03/03 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
百年校庆感言
2015/08/01 职场文书
git stash(储藏)的用法总结
2022/06/25 Servers