使用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中的Descriptor描述符类
Jun 14 Python
Python彩色化Linux的命令行终端界面的代码实例分享
Jul 02 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
Mar 16 Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
Jul 11 Python
python内置函数:lambda、map、filter简单介绍
Nov 16 Python
VScode编写第一个Python程序HelloWorld步骤
Apr 06 Python
Python中创建二维数组
Oct 17 Python
TensorFlow Autodiff自动微分详解
Jul 06 Python
Python如何给你的程序做性能测试
Jul 29 Python
利用Python批量识别电子账单数据的方法
Feb 08 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
Oct 16 Python
python实现学员管理系统(面向对象版)
Jun 05 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
《神奇女侠:血脉》神力女超人大战犯罪公司
2020/04/09 欧美动漫
浅析PHP绘图技术
2013/07/03 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
destoon实现底部添加你是第几位访问者的方法
2014/07/15 PHP
PHP高级编程实例:编写守护进程
2014/09/02 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
php mysql like 实现多关键词搜索的方法
2016/10/29 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
关于javascript 回调函数中变量作用域的讨论
2009/09/11 Javascript
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
漂亮的jquery提示效果(仿腾讯弹出层)
2013/02/05 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
JavaScript加强之自定义event事件
2013/09/21 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
2014/09/21 Javascript
vue获取input输入值的问题解决办法
2017/10/17 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
vue配置请求本地json数据的方法
2018/04/11 Javascript
详解React中合并单元格的正确写法
2019/01/08 Javascript
Javascript中window.name属性详解
2020/11/19 Javascript
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
Python实现批量读取图片并存入mongodb数据库的方法示例
2018/04/02 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
Django Aggregation聚合使用方法解析
2019/08/01 Python
SneakerStudio英国:最佳运动鞋商店
2019/05/22 全球购物
英国网上电器商店:Electricshop
2020/03/15 全球购物
工作疏忽检讨书
2014/01/25 职场文书
初中班主任评语大全
2014/04/24 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
企业文化宣传标语
2014/06/09 职场文书
房屋租房协议书范本
2014/12/04 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
Python自动化爬取天眼查数据的实现
2021/06/15 Python
Go中的条件语句Switch示例详解
2021/08/23 Golang
一文简单了解MySQL前缀索引
2022/04/03 MySQL