使用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封装对象实现时间效果
Apr 23 Python
Python程序设计入门(2)变量类型简介
Jun 16 Python
解读Python中degrees()方法的使用
May 18 Python
轻松掌握python设计模式之访问者模式
Nov 18 Python
Anaconda入门使用总结
Apr 05 Python
对pycharm 修改程序运行所需内存详解
Dec 03 Python
使用python os模块复制文件到指定文件夹的方法
Aug 22 Python
pygame库实现移动底座弹球小游戏
Apr 14 Python
解决Tensorboard 不显示计算图graph的问题
Feb 15 Python
Python Numpy,mask图像的生成详解
Feb 19 Python
Python turtle库的画笔控制说明
Jun 28 Python
Python爬取股票信息,并可视化数据的示例
Sep 26 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集成FCK的函数代码
2008/09/27 PHP
php 引用(&amp;)详解
2009/11/20 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
2012/01/20 PHP
php警告Creating default object from empty value 问题的解决方法
2014/04/02 PHP
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
php创建无限级树型菜单
2015/11/05 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
PHP实现的支付宝支付功能示例
2019/03/26 PHP
javascript打开新窗口同时关闭旧窗口
2009/01/16 Javascript
JavaScript Cookie显示用户上次访问的时间和次数
2009/12/08 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
搭建pomelo 开发环境
2014/06/24 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
js设置document.domain实现跨域的注意点分析
2015/05/21 Javascript
基于jquery插件实现拖拽删除图片功能
2020/08/27 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
[04:16]完美世界DOTA2联赛PWL S2 集锦第一期
2020/11/23 DOTA
Windows下安装python MySQLdb遇到的问题及解决方法
2017/03/16 Python
python flask实现分页的示例代码
2018/08/02 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
详解如何管理多个Python版本和虚拟环境
2019/05/10 Python
对python tkinter窗口弹出置顶的方法详解
2019/06/14 Python
python实现数据分析与建模
2019/07/11 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
Python获取一个用户名的组ID过程解析
2019/09/03 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
房产公证书范本
2014/04/10 职场文书
求职信名称怎么写
2014/05/26 职场文书
烹饪大赛策划方案
2014/05/26 职场文书
人事主管岗位职责
2015/02/04 职场文书
担保书范文
2019/07/09 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书