ITK学习笔记——dicom序列读取写入

2024-05-14 00:08

本文主要是介绍ITK学习笔记——dicom序列读取写入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

由于dicom通常都是一系列的图片,为方便后续处理,需要一次性将许多dicom图像一起读取写入。
维数变成了三维,除了长宽,多了切片数。

#include "itkGDCMImageIO.h"
#include "itkGDCMSeriesFileNames.h"
#include "itkImageSeriesReader.h"
#include "itkImageSeriesWriter.h"#include <vector>
#include "itksys/SystemTools.hxx"int main( int argc, char* argv[] )
{typedef signed short    PixelType;const unsigned int      Dimension = 3;typedef itk::Image< PixelType, Dimension >      ImageType;typedef itk::ImageSeriesReader< ImageType >     ReaderType;typedef itk::GDCMImageIO                        ImageIOType;typedef itk::GDCMSeriesFileNames                NamesGeneratorType;ImageIOType::Pointer gdcmIO = ImageIOType::New();NamesGeneratorType::Pointer namesGenerator = NamesGeneratorType::New();namesGenerator->SetInputDirectory( "C:/input" );    //输入目录const ReaderType::FileNamesContainer & filenames =namesGenerator->GetInputFileNames();unsigned int numberOfFilenames =  filenames.size();std::cout << numberOfFilenames << std::endl;for(unsigned int fni = 0; fni<numberOfFilenames; fni++){std::cout << "filename # " << fni << " = ";std::cout << filenames[fni] << std::endl;}ReaderType::Pointer reader = ReaderType::New();reader->SetImageIO( gdcmIO );reader->SetFileNames( filenames );try{reader->Update();}catch (itk::ExceptionObject &excp){std::cerr << "Exception thrown while writing the image" << std::endl;std::cerr << excp << std::endl;return EXIT_FAILURE;}const char * outputDirectory = "C:/output";    //输出目录itksys::SystemTools::MakeDirectory( outputDirectory );typedef signed short    OutputPixelType;const unsigned int      OutputDimension = 2;typedef itk::Image< OutputPixelType, OutputDimension >    Image2DType;typedef itk::ImageSeriesWriter<ImageType, Image2DType >  SeriesWriterType;SeriesWriterType::Pointer seriesWriter = SeriesWriterType::New();seriesWriter->SetInput( reader->GetOutput() );seriesWriter->SetImageIO( gdcmIO );namesGenerator->SetOutputDirectory( outputDirectory );seriesWriter->SetFileNames( namesGenerator->GetOutputFileNames() );seriesWriter->SetMetaDataDictionaryArray(reader->GetMetaDataDictionaryArray() );try{seriesWriter->Update();}catch( itk::ExceptionObject & excp ){std::cerr << "Exception thrown while writing the series " << std::endl;std::cerr << excp << std::endl;return EXIT_FAILURE;}return EXIT_SUCCESS;
}

这篇关于ITK学习笔记——dicom序列读取写入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/987191

相关文章

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Spring Boot读取配置文件的五种方式小结

《SpringBoot读取配置文件的五种方式小结》SpringBoot提供了灵活多样的方式来读取配置文件,这篇文章为大家介绍了5种常见的读取方式,文中的示例代码简洁易懂,大家可以根据自己的需要进... 目录1. 配置文件位置与加载顺序2. 读取配置文件的方式汇总方式一:使用 @Value 注解读取配置方式二

基于Python实现读取嵌套压缩包下文件的方法

《基于Python实现读取嵌套压缩包下文件的方法》工作中遇到的问题,需要用Python实现嵌套压缩包下文件读取,本文给大家介绍了详细的解决方法,并有相关的代码示例供大家参考,需要的朋友可以参考下... 目录思路完整代码代码优化思路打开外层zip压缩包并遍历文件:使用with zipfile.ZipFil

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

解决Java中基于GeoTools的Shapefile读取乱码的问题

《解决Java中基于GeoTools的Shapefile读取乱码的问题》本文主要讨论了在使用Java编程语言进行地理信息数据解析时遇到的Shapefile属性信息乱码问题,以及根据不同的编码设置进行属... 目录前言1、Shapefile属性字段编码的情况:一、Shp文件常见的字符集编码1、System编码