使用SimpleITK读取和保存NIfTI/DICOM文件实例

 更新时间:2020年07月01日 09:58:49   作者:reallocing  
这篇文章主要介绍了使用SimpleITK读取和保存NIfTI/DICOM文件实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

我就废话不多说了,大家还是直接看代码吧~

## 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 chinesecalendar报错:"no available data for year {}, only year between [{}, {}] supported"

    python chinesecalendar报错:"no available data for ye

    这篇文章主要介绍了python chinesecalendar报错:“no available data for year {}, only year between [{}, {}] supported“的相关知识,需要的朋友可以参考下
    2023-03-03
  • python代码实现AVL树和红黑树

    python代码实现AVL树和红黑树

    专注于Python数据结构,想要深入了解AVL树和红黑树的读者们,你们的机会来了!在这篇指南中,我们将带你探索这两种神奇树结构的奥秘,紧张刺激的实战代码演示,让你一窥这两种树的独特魅力,准备好了吗?让我们一起踏上这场Python树结构之旅!
    2023-12-12
  • python实现合并两个有序列表的示例代码

    python实现合并两个有序列表的示例代码

    这篇文章主要介绍了python实现合并两个有序列表的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python实现html转png的完美方案介绍

    Python实现html转png的完美方案介绍

    这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-03-03
  • python反爬虫方法的优缺点分析

    python反爬虫方法的优缺点分析

    在本篇文章里小编给大家整理的是一篇关于python反爬虫方法的优缺点分析,需要的朋友们可以学习下。
    2020-11-11
  • Python如何通过ip2region解析IP获得地域信息

    Python如何通过ip2region解析IP获得地域信息

    这篇文章主要介绍了Python如何通过ip2region解析IP获得地域信息,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Pycharm新建模板默认添加个人信息的实例

    Pycharm新建模板默认添加个人信息的实例

    今天小编就为大家分享一篇Pycharm新建模板默认添加个人信息的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 使用scipy.optimize的fsolve,root函数求解非线性方程问题

    使用scipy.optimize的fsolve,root函数求解非线性方程问题

    这篇文章主要介绍了使用scipy.optimize的fsolve,root函数求解非线性方程问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • python机器学习理论与实战(二)决策树

    python机器学习理论与实战(二)决策树

    这篇文章主要介绍了python机器学习理论与实战第二篇,决策树的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 一篇文章带你了解python标准库--os模块

    一篇文章带你了解python标准库--os模块

    在本篇内容里小编给大家整理的是关于Python中os模块及用法相关知识点,有兴趣的朋友们可以学习下,希望能给你带来帮助
    2021-08-08

最新评论