ITK实现DICM图像转换成BMP图像
本代码用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图像相关推荐
- Python扩展库scipy.misc中图像转换成pillow图像
众所周知,在数字图像处理领域中有很多基准测试图像,这些图像用来作为科研人员PK自己的算法时的参考,给大家提供一个公平的样本,针对同一个问题进行处理时,可以用这些基准图像做实验,比较常见的应该就是len ...
- 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 ...
- OpenCV | OpenCV将图像转换成黑白图像(二进制)
将图像转换为黑白涉及两个步骤. 将源图像读取为灰度图像. 使用您选择的阈值将灰度图像转换为二进制图像. 如果源图像是灰度图像,则可以将步骤1中的图像读取为原始图像,然后继续步骤2.以下示例说明了从灰度 ...
- RGB图像转换成HSV图像,HSV图像转换为RGB图像
HSV 即使用 色相(Hue).饱和度(Saturation).明度(Value) 来表示色彩的一种方式 色相:将颜色用0°到360°表示,就是我们日常讲的颜色名称,如红色.蓝色等. 色相与颜色对应关 ...
- rgb转hsv java_RGB图像转换成HSV图像
HSV 即使用 色相(Hue).饱和度(Saturation).明度(Value) 来表示色彩的一种方式 色相:将颜色用0°到360°表示,就是我们日常讲的颜色名称,如红色.蓝色等. 色相与颜色对应关 ...
- Windows Forms:在C#中将图像转换成灰度图
Windows Forms:在C#中将图像转换成灰度图 本文翻译自Windows Forms: Convert an image into grayscale in C# 这篇文章向你展示在C# Wi ...
- 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 ...
- 在WPF中将图片转换成3D图像并可以旋转
原文:在WPF中将图片转换成3D图像并可以旋转 时光偷走的,永远都是我们眼皮底下看不见的珍贵. https://pan.baidu.com/s/14dk-OU2SR0nxXj2bL4bVpQ 首先先看 ...
- html在线ocr文字识别源码,如何用OCR文字识别软件把图像转换成HTML
之前给大家介绍了使用PDF转换成HTML文档首选ABBYY Mac),其实ABBYY FineReader无论Mac版还是Windows版都可以实现这一点,除此之外还可以将图像文件转换成HTML文档, ...
- 将有色液体图像转换成透明液体,CMU教机器人准确掌控向杯中倒多少水
点击上方"迈微AI研习社",选择"星标★"公众号 重磅干货,第一时间送达 转载自:机器之心 后台回复"加群"进入-> CV 微信技术交 ...
最新文章
- 10000字的Pandas核心操作知识大全!
- 十天精通CSS3(11)
- 服务的实例已在运行中_亚马逊首次把macOS引入云服务
- 我为什么突然想转管理?
- 计算机怎样调整工作表位置,图表布局中调整图表大小和位置及跨工作表移动——想象力电脑应用...
- 《HTTP权威指南》学习笔记——HTTP报文
- java程序中my.ini_帮忙写个JAVA 读写ini配置文件小程序!!!!!
- UML在线画图工具ProcessOn
- discuz 登录代码
- 双目测距原理以及双目相机矫正
- m4a转换成mp3如何操作?
- 容器上搭建Skywalking
- vs qt中增加png图标
- intersect mysql,MySQL不支持INTERSECT和MINUS及其替代方法
- 细说2类骗人的物联卡,满满的都是套路!
- MATLAB机器人工具箱的安装与下载(基于已经安装了MATLAB软件)
- Git命令实现本地文件推送到git仓库
- 【Java基础知识】 异常处理机制
- Convolutional Networks for Image Semantic Segmentation
- Python 字母金字塔