四、读取一系列dcm图片,然后重新写入
一、程序功能
读取一系列的CT dcm图片,然后重新写入到一个文件夹
二、代码
- #pragma warning(disable:4996)
- #include "itkGDCMImageIO.h"
- #include "itkGDCMSeriesFileNames.h"
- #include "itkImageSeriesReader.h"
- #include "itkImageSeriesWriter.h"
- int main(int argc, char** argv)
- {
- //定义像素类型,图像类型,三维有符号数,定义指针
- typedef signed short PixelType;
- const unsigned int Dimension = ;
- typedef itk::Image< PixelType, Dimension > ImageType;
- typedef itk::ImageSeriesReader< ImageType > ReaderType;
- //声明读、写 DICOM 图 像 的 itk::GDCMImageIO对象
- //itk::GDCMSeriesFileNames对象将生成并将构成所有体数据的切片的文件名进行排序
- typedef itk::GDCMImageIO ImageIOType;
- typedef itk::GDCMSeriesFileNames NamesGeneratorType;
- ImageIOType::Pointer gdcmIO = ImageIOType::New();
- NamesGeneratorType::Pointer namesGenerator = NamesGeneratorType::New();
- //设置读取路径
- //用文件名发生器生成被读的文件名和被写的文件名
- namesGenerator->SetInputDirectory("D:\\Files\\ITKFiles\\ITK_5_ReadSeriesDCM\\Data\\InputData");
- const ReaderType::FileNamesContainer& filenames =namesGenerator->GetInputFileNames();
- //设置DICOM图像IO对象和被读的文件名的列表
- ReaderType::Pointer reader = ReaderType::New();
- reader->SetImageIO(gdcmIO);
- reader->SetFileNames(filenames);
- try
- {
- reader->Update();
- }
- catch (itk::ExceptionObject& ex)
- {
- std::cout << ex << std::endl;
- return EXIT_FAILURE;
- }
- //得到输出目录的名字
- const char* outputDirectory = "D:\\Files\\ITKFiles\\ITK_5_ReadSeriesDCM\\Data\\OutputData";
- //如果目录
- //还不存在的话,我们就选择创建目录。
- itksys::SystemTools::MakeDirectory(outputDirectory);
- //实例化写图像的程序
- typedef signed short OutputPixelType;
- const unsigned int OutputDimension = ;
- typedef itk::Image< OutputPixelType, OutputDimension > Image2DType;
- typedef itk::ImageSeriesWriter<ImageType, Image2DType > SeriesWriterType;
- //我们创建一个序列图像writer并从reader的输出连接writer的输入。这时我们传递GDCM
- //图像IO对象以便能用DICOM格式写这个图像。
- 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手册(也就是ITK软件的说明手册,官网有)
四、读取一系列dcm图片,然后重新写入的更多相关文章
- mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换等
mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换(上) MP3文件格式(二)---ID3v2 图:ID3V1标签结构 图:ID3V2标签 ...
- java读取远程url图片,得到宽高
链接地址:http://blog.sina.com.cn/s/blog_407a68fc0100nrb6.html import java.io.IOException;import java.awt ...
- WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放、图片立体轮播、图片倒影立体滚动)效果实现
原文:WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放.图片立体轮播.图片倒影立体滚动)效果实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7 ...
- RX系列四 | RxAndroid | 加载图片 | 提交表单
RX系列四 | RxAndroid | 加载图片 | 提交表单 说实话,学RxJava就是为了我们在Android中运用的更加顺手一点,也就是RxAndroid,我们还是先一步步来,学会怎么去用的比较 ...
- DCM 图片查看
因为要处理一些医学图像,需要把dcm格式的文件转换成jpg格式.本来用Sante DICOM Editor用得挺好的,方便查看dcm文件,但是在转换上每次只能转一张(本人没有找到用该软件批量转格式的方 ...
- python中用opencv读取并显示图片
一.读取并显示图片: import matplotlib.pyplot as plt # plt 用于显示图片 import matplotlib.image as mpimg # mpimg 用于读 ...
- VS中OpenCV用imread读取不到图片
转自:https://blog.csdn.net/u012423865/article/details/78116059 在VS中OpenCV用imread读取不到图片 今天在Visual Studi ...
- C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表
调用word的com组件将400条数据导入word表格中耗时10分钟简直不能忍受,使用NPOI组件耗时4秒钟.但是NPOI中替换书签内容的功能不知道是不支持还是没找到. 辅助类 Excel表格数据与D ...
- C++读取与保持图片
#include<iostream> using namespace std; void main(void) { //保存输入图像文件名和输出图像文件名 ]; ]; //图像数据长度 i ...
随机推荐
- Java之封装与访问权限控制(二)
目录 Java之封装与访问权限控制(二) 包:库单元 import import static Java常用包 Java之封装与访问权限控制(二) 访问权限控制是具体实现的隐藏,是封装性的一部分体现. ...
- Js实现回车登录,监听回车事件
需求 项目有个回车登录功能,在此记录下 实现 我们应该监听当前登录页面的所有回车操作. $("body").keydown(function () { var yzmStatus ...
- Koa 本地搭建 HTTPS 环境
openssl 首先本地需要安装 openssl,用于生成自签名证书. $ brew install openssl 检查安装: $ openssl version LibreSSL 2.6.5 生成 ...
- JVM G1垃圾回收算法简要介绍
JVM G1垃圾回收算法简要介绍 G1的特点 能够像CMS垃圾回收算法一样并发操作应用线程(潜台词:多核) 无需太长时间即可压缩空闲内存空间(潜台词:不会引起太多的GC停顿时间) 尽可能地让GC时长可 ...
- 在Vue中添加css扩展语言sass
npm install vue-loader --save-dev npm install node-sass --save-dev npm install sass-loader --save-de ...
- KVO-键值监听
键值监听,就是可以监听对象某个属性值的变化: 首先,在工程中,新建一个Person的类 @interface Person : NSObject @property (nonatomic, copy) ...
- 前端开发规范:2-HTML
HTML标签 文档声明,除非必须要兼容IE6等远古浏览器,否则一律使用HTML5文档类型申明<!DOCTYPE html> 标签闭合,img.br.hr 等自闭合标签不使用闭合斜杠 met ...
- [20191125]探究等待事件的本源.txt
[20191125]探究等待事件的本源.txt --//当工作中遇到oracle的性能问题时,查看awr报表提供很好的解决问题途径.但是有时候很容易想当然.--//比如以前我一看到 log file ...
- Linux平台达梦数据库V7单实例安装方式之图形方式
一 前言 我们在学习任何一个应用时,了解它的最初步骤通常是学会如何进行安装配置,后序才去关心如何使用,学习达梦数据库也是如此,而达梦数据库的安装提供了多种方式,接下来会一一介绍每种安装方式,达梦数据库 ...
- diango使用顺序
使用顺序 settings 静态文件配置 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #文件夹根目录 ...