ITK笔记――读取DICOM切片

匿名 (未验证) 提交于 2019-12-03 00:06:01

什么是DICOM

DICOM(Digital imaging and Communication in Medicine),医学数字成像与通信,它是一个国际标准(ISO 12052),由美国放射学院(ACR)和国家电气制造协会(NEMA)在1970年代共同制定,旨在统一格式,解决医学图像的处理、存储、打印以及传输。

GDCM

GDCM(Grassroots DICOM),开源库,DICOM标准的一种实现。ITK的DICOM设施,就是由它提供的。对应itk::GDCMImageIO类名。

读取DICOM切片

定义数据类型

	using InputPixelType = signed short; 	constexpr unsigned int InputDimension = 2;  	using InputImageType = itk::Image< InputPixelType, InputDimension >;

初始化GDCM接口

	using ImageIOType = itk::GDCMImageIO; 	ImageIOType::Pointer gdcmImageIO = ImageIOType::New();

设置ImageFileReader

	using ReaderType = itk::ImageFileReader< InputImageType >; 	ReaderType::Pointer reader = ReaderType::New(); 	reader->SetFileName(argv[1]); 	reader->SetImageIO(gdcmImageIO);

触发读取

	reader->Update();

VTK渲染

	QuickView viewer; 	viewer.AddImage(reader->GetOutput()); 	viewer.Visualize();

ReadDICOMImage.cxx

#include "itkImageFileReader.h" #include "itkGDCMImageIO.h"  #include "QuickView.h"  int main(int argc, char *argv[]) { 	if (argc < 2) 	{ 		std::cerr << "Usage: " << argv[0] << " DicomImage" << std::endl; 		return EXIT_FAILURE; 	}  	using InputPixelType = signed short; 	constexpr unsigned int InputDimension = 2;  	using InputImageType = itk::Image< InputPixelType, InputDimension >;  	using ImageIOType = itk::GDCMImageIO; 	ImageIOType::Pointer gdcmImageIO = ImageIOType::New();  	using ReaderType = itk::ImageFileReader< InputImageType >; 	ReaderType::Pointer reader = ReaderType::New(); 	reader->SetFileName(argv[1]); 	reader->SetImageIO(gdcmImageIO);  	try 	{ 		reader->Update(); 	} 	catch ( itk::ExceptionObject &ex) 	{ 		std::cerr << "exception in file reader " << std::endl; 		std::cerr << ex << std::endl; 		return EXIT_FAILURE; 	}  	QuickView viewer; 	viewer.AddImage(reader->GetOutput()); 	viewer.Visualize();  	return EXIT_SUCCESS; }

CMakeLists.txt

cmake_minimum_required(VERSION 3.9.5)   project(ReadDICOMImage)   find_package(ITK REQUIRED) include(${ITK_USE_FILE}) if (ITKVtkGlue_LOADED)   find_package(VTK REQUIRED)   include(${VTK_USE_FILE}) else()   find_package(ItkVtkGlue REQUIRED)   include(${ItkVtkGlue_USE_FILE})   set(Glue ItkVtkGlue) endif()   add_executable(ReadDICOMImage MACOSX_BUNDLE ReadDICOMImage.cxx) target_link_libraries(ReadDICOMImage   ${Glue}  ${VTK_LIBRARIES} ${ITK_LIBRARIES})

Example Download

Reference

Examples/IO/DicomImageReadWrite.cxx

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!