使用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类参数self使用示例
Feb 17 Python
Python中3种内建数据结构:列表、元组和字典
Nov 30 Python
安装Python的web.py框架并从hello world开始编程
Apr 25 Python
tensorflow实现简单的卷积神经网络
May 24 Python
Python爬取数据保存为Json格式的代码示例
Apr 09 Python
Python、 Pycharm、Django安装详细教程(图文)
Apr 12 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
Jun 18 Python
python多进程(加入进程池)操作常见案例
Oct 21 Python
使用matlab或python将txt文件转为excel表格
Nov 01 Python
浅谈Python3实现两个矩形的交并比(IoU)
Jan 18 Python
将自己的数据集制作成TFRecord格式教程
Feb 17 Python
Python3.8安装Pygame教程步骤详解
Aug 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调用数据库的存贮过程
2006/10/09 PHP
使PHP自定义函数返回多个值
2006/11/26 PHP
php快速url重写 更新版[需php 5.30以上]
2010/04/20 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
PHP封装的mysqli数据库操作类示例
2019/02/16 PHP
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
jQuery使用技巧简单汇总
2013/04/18 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
JS、CSS加载中的小问题探讨
2013/11/26 Javascript
JavaScript中的console.time()函数详细介绍
2014/12/29 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
js 获取元素所有兄弟节点的实现方法
2016/09/06 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
js中的闭包实例展示
2018/11/01 Javascript
js实现点击生成随机div
2020/01/16 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
[03:21]【TI9纪实】Old Boys
2019/08/23 DOTA
python中实现php的var_dump函数功能
2015/01/21 Python
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
python实现websocket的客户端压力测试
2019/06/25 Python
Python实现寻找回文数字过程解析
2020/06/09 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
最常使用的求职信
2014/05/25 职场文书
日语专业毕业生自荐书
2014/06/18 职场文书
党员自我对照检查材料
2014/08/19 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
大学学生会竞选稿
2015/11/19 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书
Matlab如何实现矩阵复制扩充
2021/06/02 Python