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

itk 读取dcm 或nii.gz数据

程序员文章站 2022-04-01 08:19:22
...

关键代码如下,判断如果是dcm,则转换为nii.gz:

	#include "itkGDCMSeriesFileNames.h"

     
    using NamesGeneratorType = itk::GDCMSeriesFileNames;
	NamesGeneratorType::Pointer nameGenarator = NamesGeneratorType::New();
	using FilenamesContainer = std::vector<std::string>;
    using ImageIOTypeDCM = itk::GDCMImageIO;
	using ImageIOTypeNII = itk::NiftiImageIO;
    using ReaderTypeNII = itk::ImageFileReader< Short3DImageType  >;
	using ReaderTypeDCM = itk::ImageSeriesReader<Short3DImageType>;

     string sPatientFileDir = "";
	
	 sPatientFileDir = FolderNames.at(i) + pPatientFileName;

	 nameGenarator->SetInputDirectory(FolderNames.at(i));
	 nameGenarator->Update();
	 using FilenamesContainer = std::vector<std::string>;
	 FilenamesContainer filenames = nameGenarator->GetInputFileNames();

	if ((_access(sPatientFileDir.data(), 0) != 0) && filenames.size()==0)//如果没有指定文件名的nii.gz并且检测到的dcm文件数为0,则判断不存在。
	{
		cout << sPatientFileDir << "not exist";
		continue;
	}
	bool bIsDcm = false;
	if (filenames.size() != 0)
	{
		bIsDcm = true;
	}
   

   Short3DImageType::Pointer OriImg;
	if (bIsDCM)
	{
		ReaderTypeDCM::Pointer Reader = ReaderTypeDCM::New();
		ImageIOTypeDCM::Pointer gNiftiImageIORead = ImageIOTypeDCM::New();
		Reader->SetImageIO(gNiftiImageIORead);
		Reader->SetFileNames(filenames);
		Reader->Update();
		OriImg = Reader->GetOutput();

		WriterType::Pointer WriterOri = WriterType::New();
		ImageIOTypeNII::Pointer NiftiImageIOOri = ImageIOTypeNII::New();
		WriterOri->SetImageIO(NiftiImageIOOri);
		WriterOri->SetInput(OriImg);
		string filepath = InputFileName;
		string InputFullFileName = filepath + "first_baseline_NCCT.nii.gz";
		WriterOri->SetFileName(InputFullFileName);
		WriterOri->Update();
	}
	else
	{
		ReaderTypeNII::Pointer Reader = ReaderTypeNII::New();
		Reader->SetFileName(InputFileName);
		ImageIOTypeNII::Pointer gNiftiImageIORead = ImageIOTypeNII::New();
		Reader->SetImageIO(gNiftiImageIORead);
		Reader->Update();
		OriImg = Reader->GetOutput();
		
	}

 

相关标签: ITK