使用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中有趣在__call__函数
Jun 21 Python
python黑魔法之编码转换
Jan 25 Python
解决Python 遍历字典时删除元素报异常的问题
Sep 11 Python
Python实现将HTML转换成doc格式文件的方法示例
Nov 20 Python
Python语言检测模块langid和langdetect的使用实例
Feb 19 Python
在python中实现同行输入/接收多个数据的示例
Jul 20 Python
Python的Lambda函数用法详解
Sep 03 Python
python Popen 获取输出,等待运行完成示例
Dec 30 Python
pytorch torchvision.ImageFolder的用法介绍
Feb 20 Python
python函数enumerate,operator和Counter使用技巧实例小结
Feb 22 Python
django 取消csrf限制的实例
Mar 13 Python
Python手动或自动协程操作方法解析
Jun 22 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中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
2013/06/21 PHP
PHP禁止个别IP访问网站
2013/10/30 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
laravel validate 设置为中文的例子(验证提示为中文)
2019/09/29 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
2013/11/20 Javascript
js实现身份证号码验证的简单实例
2014/02/19 Javascript
AngularJS入门(用ng-repeat指令实现循环输出
2016/05/05 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
Javascript中prototype的使用详解
2016/06/18 Javascript
jQuery实现微信长按识别二维码功能
2016/08/26 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
使用Bootstrap4 + Vue2实现分页查询的示例代码
2017/12/21 Javascript
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
2018/12/03 Javascript
Layui点击图片弹框预览的实现方法
2019/09/16 Javascript
JS正则表达式常见函数与用法小结
2020/04/13 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
Vuex实现简单购物车
2021/01/10 Vue.js
Python中动态获取对象的属性和方法的教程
2015/04/09 Python
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
Python实现快速计算词频功能示例
2018/06/25 Python
python解析yaml文件过程详解
2019/08/30 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
Python PyInstaller安装和使用教程详解
2020/01/08 Python
解决pycharm中导入自己写的.py函数出错问题
2020/02/12 Python
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
师范应届生教师求职信
2013/11/05 职场文书
医科大学生的自我评价
2013/12/04 职场文书
大学生万能检讨书范例
2014/10/04 职场文书
我的生日感言
2015/08/03 职场文书
热爱劳动主题班会
2015/08/14 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python