使用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实现简单EXCEL数据统计的实例
Jan 24 Python
利用python3随机生成中文字符的实现方法
Nov 24 Python
python输入错误密码用户锁定实现方法
Nov 27 Python
python中数据爬虫requests库使用方法详解
Feb 11 Python
python实现图片批量压缩程序
Jul 23 Python
selenium+python实现1688网站验证码图片的截取功能
Aug 14 Python
python中正则表达式与模式匹配
May 07 Python
python中JWT用户认证的实现
May 18 Python
使用Python FastAPI构建Web服务的实现
Jun 08 Python
python中selenium库的基本使用详解
Jul 31 Python
Python实现机器学习算法的分类
Jun 03 Python
Python采集壁纸并实现炫轮播
Apr 30 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以ROOT权限执行系统命令的方法
2011/02/10 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
php如何连接sql server
2015/10/16 PHP
javascript 写类方式之八
2009/07/05 Javascript
prototype 学习笔记整理
2009/07/17 Javascript
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
JS实现图片放大镜效果的方法
2015/02/27 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
2016/12/01 Javascript
Bootstrap表单简单实现代码
2017/03/06 Javascript
node跨域请求方法小结
2017/08/25 Javascript
如何让微信小程序页面之间的通信不再变困难
2019/06/03 Javascript
浅谈vue限制文本框输入数字的正确姿势
2019/09/02 Javascript
python 参数列表中的self 显式不等于冗余
2008/12/01 Python
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
KMP算法精解及其Python版的代码示例
2016/06/01 Python
python增加矩阵维度的实例讲解
2018/04/04 Python
VSCode下配置python调试运行环境的方法
2018/04/06 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
简单介绍python封装的基本知识
2019/08/10 Python
用python-webdriver实现自动填表的示例代码
2021/01/13 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
跑鞋、网球鞋、网球拍、服装及装备:Holabird Sports
2016/09/19 全球购物
运动会广播稿200字
2014/01/15 职场文书
绿化先进工作者事迹材料
2014/01/30 职场文书
大学生求职计划书
2014/04/30 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
个人委托函范文
2015/01/29 职场文书
2015年入党决心书
2015/02/05 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书
2007年老电脑安装win11会怎么样? 网友实测win11在老电脑运行良好
2021/11/21 数码科技
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS