本代码用ITK实现了DICOM图像 到 BMP图像的转换  并使用亮度调节转换出成像效果较好的 BMP图像。(代码中写死的文件位置,也可以通过输入路径参数来控制文件)

#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
#include "itkRescaleIntensityImageFilter.h"
#include "itkGDCMImageIO.h"
#include "itkBMPImageIO.h"
#include "itkCastImageFilter.h"int main()
{//定义输入的类型typedef signed short InputPixelType;const unsigned int inputDimension = 2;typedef itk::Image<InputPixelType,inputDimension> InputImageType;//设置输入的DCM图像typedef itk::ImageFileReader < InputImageType > ReaderType;ReaderType::Pointer reader = ReaderType::New();reader->SetFileName("CTAtt009_CT001.dcm");//设置DCM类型typedef itk::GDCMImageIO Imageiotype;Imageiotype::Pointer gdcmImageIo  = Imageiotype::New();reader->SetImageIO( gdcmImageIo );try{reader->Update();}catch (itk::ExceptionObject &e){std::cerr<<"error in file reader!!"<<std::endl;std::cerr<<e<<std::endl;return EXIT_FAILURE;}//------------------------------------------------------------------------输出//设置输出类型typedef unsigned char OutputPixelType;const unsigned int OutputDimension =2;typedef itk::Image<OutputPixelType,OutputDimension> OutputImageType;//-----------------------------------------------------------------------转换//实现DCM到BMP的转化typedef itk::CastImageFilter<InputImageType,OutputImageType> ImageCastType;ImageCastType::Pointer imageCast = ImageCastType::New();imageCast->SetInput(reader->GetOutput());try{imageCast->Update();}catch (itk::ExceptionObject &e){std::cerr<<"error in file cast111!!"<<std::endl;std::cerr<<e<<std::endl;return EXIT_FAILURE;}typedef itk::ImageFileWriter<OutputImageType> Writer1Type;Writer1Type::Pointer writer1 = Writer1Type::New();typedef itk::BMPImageIO bmpType;bmpType::Pointer bmpIO = bmpType::New();writer1->SetImageIO(bmpIO);writer1->SetFileName("tran.bmp");writer1->SetInput(imageCast->GetOutput());try{writer1->Update();}catch (itk::ExceptionObject &e){std::cerr<<"error in file writer111!!"<<std::endl;std::cerr<<e<<std::endl;return EXIT_FAILURE;}//----------------------------------亮度调节后的bmptypedef itk::RescaleIntensityImageFilter<InputImageType,OutputImageType> RescaleFilterType;RescaleFilterType::Pointer rescaler = RescaleFilterType::New();rescaler->SetOutputMinimum(0);rescaler->SetOutputMaximum(255);typedef itk::ImageFileWriter<OutputImageType> Writer2Type;Writer2Type::Pointer writer2 = Writer2Type::New();//typedef itk::BMPImageIO bmpType1;//bmpType1::Pointer bmpIO1 = bmpType1::New();writer2->SetFileName("tran2.dcm");rescaler->SetInput(reader->GetOutput());writer2->SetInput(rescaler->GetOutput());writer2->UseInputMetaDataDictionaryOff();writer2->SetImageIO(gdcmImageIo);try{writer2->Update();}catch (itk::ExceptionObject &e){std::cerr<<"error in file writer222!!"<<std::endl;std::cerr<<e<<std::endl;return EXIT_FAILURE;}//------------------------------------------------再将转换好的dcm图像读入并转换成BMPtypedef unsigned char InputPixelType1;typedef itk::Image<InputPixelType1,inputDimension> InputImageType1;typedef itk::ImageFileReader < InputImageType1 > ReaderType1;ReaderType1::Pointer reader2 = ReaderType1::New();reader2->SetFileName("tran2.dcm");try{reader2->Update();}catch (itk::ExceptionObject &e){std::cerr<<"error in file reader222!!"<<std::endl;std::cerr<<e<<std::endl;return EXIT_FAILURE;}//注意新的转换后的图像的像素类型的匹配typedef itk::CastImageFilter<InputImageType1,OutputImageType> ImageCastType2;ImageCastType2::Pointer imageCast2 = ImageCastType2::New();imageCast2->SetInput(reader2->GetOutput());try{imageCast2->Update();}catch (itk::ExceptionObject &e){std::cerr<<"error in file Cast22222222!!"<<std::endl;std::cerr<<e<<std::endl;return EXIT_FAILURE;}typedef itk::ImageFileWriter<OutputImageType> Writer3Type;Writer3Type::Pointer writer3 = Writer3Type::New();typedef itk::BMPImageIO bmpType;bmpType::Pointer bmpIO2 = bmpType::New();writer3->SetImageIO(bmpIO2);writer3->SetFileName("tran2222.bmp");writer3->SetInput(imageCast2->GetOutput());try{writer3->Update();}catch (itk::ExceptionObject &e){std::cerr<<"error in file writer33333!!"<<std::endl;std::cerr<<e<<std::endl;return EXIT_FAILURE;}return 0;
}

ITK实现DICM图像转换成BMP图像相关推荐

  1. Python扩展库scipy.misc中图像转换成pillow图像

    众所周知,在数字图像处理领域中有很多基准测试图像,这些图像用来作为科研人员PK自己的算法时的参考,给大家提供一个公平的样本,针对同一个问题进行处理时,可以用这些基准图像做实验,比较常见的应该就是len ...

  2. RGB图像转换成YCbCr图像,rgb2ycbcr的使用,转换参数

    原理 YCbCr到RGB的转换 Y' = 0.257*R' + 0.504*G' + 0.098*B' + 16Cb' = -0.148*R' - 0.291*G' + 0.439*B' + 128C ...

  3. OpenCV | OpenCV将图像转换成黑白图像(二进制)

    将图像转换为黑白涉及两个步骤. 将源图像读取为灰度图像. 使用您选择的阈值将灰度图像转换为二进制图像. 如果源图像是灰度图像,则可以将步骤1中的图像读取为原始图像,然后继续步骤2.以下示例说明了从灰度 ...

  4. RGB图像转换成HSV图像,HSV图像转换为RGB图像

    HSV 即使用 色相(Hue).饱和度(Saturation).明度(Value) 来表示色彩的一种方式 色相:将颜色用0°到360°表示,就是我们日常讲的颜色名称,如红色.蓝色等. 色相与颜色对应关 ...

  5. rgb转hsv java_RGB图像转换成HSV图像

    HSV 即使用 色相(Hue).饱和度(Saturation).明度(Value) 来表示色彩的一种方式 色相:将颜色用0°到360°表示,就是我们日常讲的颜色名称,如红色.蓝色等. 色相与颜色对应关 ...

  6. Windows Forms:在C#中将图像转换成灰度图

    Windows Forms:在C#中将图像转换成灰度图 本文翻译自Windows Forms: Convert an image into grayscale in C# 这篇文章向你展示在C# Wi ...

  7. R语言使用magick包的image_animate函数和image_morph函数创建一个由n个图像组成的序列,逐渐将一个图像转换成另一个图像(sequence of image morph by)

    R语言使用magick包的image_animate函数和image_morph函数创建一个由n个图像组成的序列,逐渐将一个图像转换成另一个图像(Creates a sequence of n ima ...

  8. 在WPF中将图片转换成3D图像并可以旋转

    原文:在WPF中将图片转换成3D图像并可以旋转 时光偷走的,永远都是我们眼皮底下看不见的珍贵. https://pan.baidu.com/s/14dk-OU2SR0nxXj2bL4bVpQ 首先先看 ...

  9. html在线ocr文字识别源码,如何用OCR文字识别软件把图像转换成HTML

    之前给大家介绍了使用PDF转换成HTML文档首选ABBYY Mac),其实ABBYY FineReader无论Mac版还是Windows版都可以实现这一点,除此之外还可以将图像文件转换成HTML文档, ...

  10. 将有色液体图像转换成透明液体,CMU教机器人准确掌控向杯中倒多少水

    点击上方"迈微AI研习社",选择"星标★"公众号 重磅干货,第一时间送达 转载自:机器之心 后台回复"加群"进入-> CV 微信技术交 ...

最新文章

  1. 10000字的Pandas核心操作知识大全!
  2. 十天精通CSS3(11)
  3. 服务的实例已在运行中_亚马逊首次把macOS引入云服务
  4. 我为什么突然想转管理?
  5. 计算机怎样调整工作表位置,图表布局中调整图表大小和位置及跨工作表移动——想象力电脑应用...
  6. 《HTTP权威指南》学习笔记——HTTP报文
  7. java程序中my.ini_帮忙写个JAVA 读写ini配置文件小程序!!!!!
  8. UML在线画图工具ProcessOn
  9. discuz 登录代码
  10. 双目测距原理以及双目相机矫正
  11. m4a转换成mp3如何操作?
  12. 容器上搭建Skywalking
  13. vs qt中增加png图标
  14. intersect mysql,MySQL不支持INTERSECT和MINUS及其替代方法
  15. 细说2类骗人的物联卡,满满的都是套路!
  16. MATLAB机器人工具箱的安装与下载(基于已经安装了MATLAB软件)
  17. Git命令实现本地文件推送到git仓库
  18. 【Java基础知识】 异常处理机制
  19. Convolutional Networks for Image Semantic Segmentation
  20. Python 字母金字塔

热门文章

  1. 手机qq邮箱html,QQ邮箱
  2. QQ号能否成为互联网通行证?
  3. 微信语音怎么转发?微信转发语音居然是这样做的…
  4. 全网最详细SIFT算法原理实现
  5. c++ 度分秒相互转化
  6. 一些微信小程序demo源码
  7. 如何编写python代码
  8. EasyCVR接入Ehome协议设备PS流解析失败?一文分析PS流解析注意点
  9. MySql 语法(完整版)
  10. ADI官方提供的源码AD9361+ZC706 利用TCL构建Vivado工程,利用no-OS-master搭建SDK工程