itk에서 dcm 또는 nii를 읽습니다.gz 데이터

2169 단어 ITK
핵심 코드는 다음과 같습니다. dcm이면nii로 변환됩니다.gz:
	#include "itkGDCMSeriesFileNames.h"

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

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

	 nameGenarator->SetInputDirectory(FolderNames.at(i));
	 nameGenarator->Update();
	 using FilenamesContainer = std::vector<: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();
		
	}

좋은 웹페이지 즐겨찾기