使用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文件实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python可视化mhd格式和raw格式的医学图像并保存的方法

    mhd格式的文件里面包含的是raw图像的一些头信息,比如图片大小,拍摄日期等等,那么如何可视化图像呢? import cv2 import SimpleITK as sitk import matplotlib.pyplot as plt import numpy as np image =sitk.ReadImage(path) image = sitk.GetArrayFromImage(image) #image = np.squeeze(image[slice, ...]) # if t

  • python读取dicom图像示例(SimpleITK和dicom包实现)

    1. 用SimpleITK读取dicom序列: import SimpleITK as sitk import numpy as np img_path='F:\\dataset\\pancreas\\Output\\thick\\original\\1' mask_path='F:\\dataset\\pancreas\\Output\\thick\\groundtruth\\1' reader = sitk.ImageSeriesReader() img_names = reader.Get

  • python sitk.show()与imageJ结合使用常见的问题

    在python中配置simpleITK时,遇到了以下这个问题. simpleITK已经通过pip install安装,但是sitk.show()功能无法正常使用,类似如下 实例代码 import SimpleITK as sitk import sys import os example = sitk.ReadImage("filename") sitk.show(example) 在sitk.show()这一步会出现以下错误 "Traceback (most recent

  • 使用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) # #

  • python使用nibabel和sitk读取保存nii.gz文件实例

    nii.gz格式是医学图像常用的压缩格式,python中可用nibabel和sitk来读取保存. 使用nibabel 由于使用nibabel图像会旋转90度,所以读取保存的时候还得保存映射信息,3维图像格式为(z, y, x) 读取nii.gz文件 img = nib.load('xxxxx.nii.gz') img_affine = img.affine img = img.get_data() 保存nii.gz文件 nib.Nifti1Image(img,img_affine).to_fil

  • python使用numpy读取、保存txt数据的实例

    1.首先生成array数组 import numpy as np a = np.random.rand(5,5) print(a) 结果: array([[0.17374613, 0.87715267, 0.93111376, 0.53415215, 0.59667207], [0.6865835 , 0.15873242, 0.2842251 , 0.73840834, 0.37163279], [0.06556834, 0.68446787, 0.91136611, 0.82796704,

  • 使用Python对Dicom文件进行读取与写入的实现

    Pydicom 单张影像的读取 使用 pydicom.dcmread() 函数进行单张影像的读取,返回一个pydicom.dataset.FileDataset对象. import os import pydicom # 调用本地的 dicom file folder_path = r"D:\Files\Data\Materials" file_name = "PA1_0001.dcm" file_path = os.path.join(folder_path,fi

  • Python实现读取并保存文件的类

    本文实例讲述了Python实现读取并保存文件的类.分享给大家供大家参考,具体如下: 这个类写在一个叫class_format.py 的文件里, 放在D盘 >>> import os >>> os.chdir("D:\\") >>> os.getcwd() 'D:\\' >>> os.listdir(".") ...... 有一个testcsv.txt 文件放在D盘,内容如下(oi的两边有空格):

  • JavaScript中读取和保存文件实例

    话说今天只是粗略浏览了一下Proxy SwitchySharp的源码,就收获了不少东西,其中就包括本文要介绍的读取和保存文件. 因为Google还不提供同步插件数据的功能,所以导入和导出插件配置就必须和文件打交道了.而出于安全原因,只有IE才提供访问文件的API:但随着HTML 5的到来,其他浏览器也纷纷支持了. 首先说读取文件.W3C提供了一些File API,其中最重要的是FileReader这个类. 先列出需要用到的HTML标签: 复制代码 代码如下: <input type="fi

  • Python3 tkinter 实现文件读取及保存功能

    tkinter介绍 tkinter是python自带的GUI库,是对图形库TK的封装 tkinter是一个跨平台的GUI库,开发的程序可以在win,linux或者mac下运行 # !/user/bin/env Python3 # -*- coding:utf-8 -*- """ file:window.py.py create time:2019/6/27 14:54 author:Loong Xu desc: 窗口 """ import tki

  • python 读取dicom文件,生成info.txt和raw文件的方法

    目标:利用python读取dicom文件,并进行处理生成info.txt和raw文件 实现:通过pydicom读取dicom文件 代码: import numpy import pydicom import os # dicom文件所在的文件夹目录 PathDicom = '/home/lk/testdata/1.3.6.1.4.1.9328.50.1.42697596859477567872763647333745089432/' # 筛选出文件夹目录下所有的dicom文件 lstFilesD

  • Python vtk读取并显示dicom文件示例

    因为做项目的原因,所以接触到了医学图像dicom文件.vtk刚开始看,这里仅仅只是其最简单的读取显示功能.此处用到了vtk库,可自行百度安装方法. 下面附上代码: from vtk import * # reader the dicom file reader = vtkDICOMImageReader() reader.SetDataByteOrderToLittleEndian() reader.SetFileName("00efb2fedf64b867a36031a394e5855a.dc

  • PyPDF2读取PDF文件内容保存到本地TXT实例

    我就废话不多说了,大家还是直接看代码吧! from PyPDF2.pdf import PdfFileReader import pandas as pd def Pdf_to_txt(pdf): for i in range(0, pdf.getNumPages()): title = [] lin1, lin2, lin3, lin4, lin5, lin6, lin7, lin8 = [], [], [], [], [], [], [], [] extractedText = pdf.ge

随机推荐