欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

itk--读写dicom图像

程序员文章站 2022-03-31 21:43:28
...

在ITK中,DICOM的范函性由GDCM库提供。这个开放的源码库由INSA-Lyon[26]的creatis 团队发展。虽然初这个库在一个LGPL许可下是开放式的,但是CREATIS对这个许可的限 制理解得很清晰,而且同意采取更多的BSD许可,这个许可可以供ITK使用。它们许可的改 变使得连同ITK描述GDCM成为可能。 GDCM仍然在原始的站点进行维护和改进。版本也用GDCM库的主要版本更新。

 读、写一幅 2D 图像 

为了读和写切片,我们这里使用itk::GDCMImageIO类,itk::GDCMImageIO类压缩了一 个优先的GDCM库的连接。用这种方法我们就可以进行从ITK到GDCM提供的DICOM的范函 性的存取。GDCMImageIO对象被作为itk::ImageFileWriter使用的ImageIO的对象连接。 

#include "itkImageFileReader.h" 
#include "itkImageFileWriter.h" 
#include "itkRescaleIntensityImageFilter.h" 
#include "itkGDCMImageIO.h" 

int main(int argc, char* argv[])

{

	using PixelType = unsigned short;
	constexpr unsigned int Dimension = 2;
	using ImageType = itk::Image< PixelType, Dimension >;

	using ReaderType = itk::ImageFileReader< ImageType >;
	ReaderType::Pointer reader = ReaderType::New();
	reader->SetFileName("D:\\software\\SLC\\0001.dcm");

	using ImageIOType = itk::GDCMImageIO;
	ImageIOType::Pointer dicomIO = ImageIOType::New();
	reader->SetImageIO(dicomIO);

	try
	{
		reader->Update();
	}
	catch (itk::ExceptionObject& ex)
	{
		std::cout << ex << std::endl;
		return EXIT_FAILURE;
	}
	ImageType::SizeType imgSize = reader->GetOutput()->GetLargestPossibleRegion().GetSize();
	cout << "read done!Original size: " << imgSize << endl;
	return EXIT_SUCCESS;
}

 

相关标签: itk