itk에서 dcm 또는 nii를 읽습니다.gz 데이터
2169 단어 ITK
#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();
}