日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ITK实现DICM图像转换成BMP图像

發布時間:2023/12/31 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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图像的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。