一、程序功能

  读取一系列的CT dcm图片,然后重新写入到一个文件夹

二、代码

  

  1. #pragma warning(disable:4996)
  2. #include "itkGDCMImageIO.h"
  3. #include "itkGDCMSeriesFileNames.h"
  4. #include "itkImageSeriesReader.h"
  5. #include "itkImageSeriesWriter.h"
  6.  
  7. int main(int argc, char** argv)
  8. {
  9. //定义像素类型,图像类型,三维有符号数,定义指针
  10. typedef signed short PixelType;
  11. const unsigned int Dimension = ;
  12. typedef itk::Image< PixelType, Dimension > ImageType;
  13. typedef itk::ImageSeriesReader< ImageType > ReaderType;
  14.  
  15. //声明读、写 DICOM 图 像 的 itk::GDCMImageIO对象
  16. //itk::GDCMSeriesFileNames对象将生成并将构成所有体数据的切片的文件名进行排序
  17. typedef itk::GDCMImageIO ImageIOType;
  18. typedef itk::GDCMSeriesFileNames NamesGeneratorType;
  19. ImageIOType::Pointer gdcmIO = ImageIOType::New();
  20. NamesGeneratorType::Pointer namesGenerator = NamesGeneratorType::New();
  21.  
  22. //设置读取路径
  23. //用文件名发生器生成被读的文件名和被写的文件名
  24. namesGenerator->SetInputDirectory("D:\\Files\\ITKFiles\\ITK_5_ReadSeriesDCM\\Data\\InputData");
  25. const ReaderType::FileNamesContainer& filenames =namesGenerator->GetInputFileNames();
  26.  
  27. //设置DICOM图像IO对象和被读的文件名的列表
  28. ReaderType::Pointer reader = ReaderType::New();
  29. reader->SetImageIO(gdcmIO);
  30. reader->SetFileNames(filenames);
  31. try
  32. {
  33. reader->Update();
  34. }
  35. catch (itk::ExceptionObject& ex)
  36. {
  37. std::cout << ex << std::endl;
  38. return EXIT_FAILURE;
  39. }
  40. //得到输出目录的名字
  41. const char* outputDirectory = "D:\\Files\\ITKFiles\\ITK_5_ReadSeriesDCM\\Data\\OutputData";
  42. //如果目录
  43. //还不存在的话,我们就选择创建目录。
  44. itksys::SystemTools::MakeDirectory(outputDirectory);
  45.  
  46. //实例化写图像的程序
  47. typedef signed short OutputPixelType;
  48. const unsigned int OutputDimension = ;
  49. typedef itk::Image< OutputPixelType, OutputDimension > Image2DType;
  50. typedef itk::ImageSeriesWriter<ImageType, Image2DType > SeriesWriterType;
  51.  
  52. //我们创建一个序列图像writer并从reader的输出连接writer的输入。这时我们传递GDCM
  53. //图像IO对象以便能用DICOM格式写这个图像。
  54. SeriesWriterType::Pointer seriesWriter = SeriesWriterType::New();
  55. seriesWriter->SetInput(reader->GetOutput());
  56. seriesWriter->SetImageIO(gdcmIO);
  57.  
  58. namesGenerator->SetOutputDirectory(outputDirectory);
  59. seriesWriter->SetFileNames(namesGenerator->GetOutputFileNames());
  60. seriesWriter->SetMetaDataDictionaryArray(reader->GetMetaDataDictionaryArray());
  61. try
  62. {
  63. seriesWriter->Update();
  64. }
  65. catch (itk::ExceptionObject& excp)
  66. {
  67. std::cerr << "Exception thrown while writing the series " << std::endl;
  68. std::cerr << excp << std::endl;
  69. return EXIT_FAILURE;
  70. }
  71. return EXIT_SUCCESS;
  72. }

三、注意

  第一句是因为有的语法在现在不太符合规范,但是只是算是警告,而不是错误

四、参考书目

  《医学图像分割与处理》ITK手册(也就是ITK软件的说明手册,官网有)

四、读取一系列dcm图片,然后重新写入的更多相关文章

  1. mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换等

    mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换(上) MP3文件格式(二)---ID3v2 图:ID3V1标签结构 图:ID3V2标签 ...

  2. java读取远程url图片,得到宽高

    链接地址:http://blog.sina.com.cn/s/blog_407a68fc0100nrb6.html import java.io.IOException;import java.awt ...

  3. WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放、图片立体轮播、图片倒影立体滚动)效果实现

    原文:WPF技术触屏上的应用系列(四): 3D效果图片播放器(图片立体轮放.图片立体轮播.图片倒影立体滚动)效果实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7 ...

  4. RX系列四 | RxAndroid | 加载图片 | 提交表单

    RX系列四 | RxAndroid | 加载图片 | 提交表单 说实话,学RxJava就是为了我们在Android中运用的更加顺手一点,也就是RxAndroid,我们还是先一步步来,学会怎么去用的比较 ...

  5. DCM 图片查看

    因为要处理一些医学图像,需要把dcm格式的文件转换成jpg格式.本来用Sante DICOM Editor用得挺好的,方便查看dcm文件,但是在转换上每次只能转一张(本人没有找到用该软件批量转格式的方 ...

  6. python中用opencv读取并显示图片

    一.读取并显示图片: import matplotlib.pyplot as plt # plt 用于显示图片 import matplotlib.image as mpimg # mpimg 用于读 ...

  7. VS中OpenCV用imread读取不到图片

    转自:https://blog.csdn.net/u012423865/article/details/78116059 在VS中OpenCV用imread读取不到图片 今天在Visual Studi ...

  8. C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表

    调用word的com组件将400条数据导入word表格中耗时10分钟简直不能忍受,使用NPOI组件耗时4秒钟.但是NPOI中替换书签内容的功能不知道是不支持还是没找到. 辅助类 Excel表格数据与D ...

  9. C++读取与保持图片

    #include<iostream> using namespace std; void main(void) { //保存输入图像文件名和输出图像文件名 ]; ]; //图像数据长度 i ...

随机推荐

  1. Java之封装与访问权限控制(二)

    目录 Java之封装与访问权限控制(二) 包:库单元 import import static Java常用包 Java之封装与访问权限控制(二) 访问权限控制是具体实现的隐藏,是封装性的一部分体现. ...

  2. Js实现回车登录,监听回车事件

    需求 项目有个回车登录功能,在此记录下 实现 我们应该监听当前登录页面的所有回车操作. $("body").keydown(function () { var yzmStatus ...

  3. Koa 本地搭建 HTTPS 环境

    openssl 首先本地需要安装 openssl,用于生成自签名证书. $ brew install openssl 检查安装: $ openssl version LibreSSL 2.6.5 生成 ...

  4. JVM G1垃圾回收算法简要介绍

    JVM G1垃圾回收算法简要介绍 G1的特点 能够像CMS垃圾回收算法一样并发操作应用线程(潜台词:多核) 无需太长时间即可压缩空闲内存空间(潜台词:不会引起太多的GC停顿时间) 尽可能地让GC时长可 ...

  5. 在Vue中添加css扩展语言sass

    npm install vue-loader --save-dev npm install node-sass --save-dev npm install sass-loader --save-de ...

  6. KVO-键值监听

    键值监听,就是可以监听对象某个属性值的变化: 首先,在工程中,新建一个Person的类 @interface Person : NSObject @property (nonatomic, copy) ...

  7. 前端开发规范:2-HTML

    HTML标签 文档声明,除非必须要兼容IE6等远古浏览器,否则一律使用HTML5文档类型申明<!DOCTYPE html> 标签闭合,img.br.hr 等自闭合标签不使用闭合斜杠 met ...

  8. [20191125]探究等待事件的本源.txt

    [20191125]探究等待事件的本源.txt --//当工作中遇到oracle的性能问题时,查看awr报表提供很好的解决问题途径.但是有时候很容易想当然.--//比如以前我一看到 log file ...

  9. Linux平台达梦数据库V7单实例安装方式之图形方式

    一 前言 我们在学习任何一个应用时,了解它的最初步骤通常是学会如何进行安装配置,后序才去关心如何使用,学习达梦数据库也是如此,而达梦数据库的安装提供了多种方式,接下来会一一介绍每种安装方式,达梦数据库 ...

  10. diango使用顺序

    使用顺序 settings 静态文件配置 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #文件夹根目录 ...