Hi,
I am trying to write a generalized reader code for dicom series.
To get the component type of the data i am reading first dicom file of the series and using dicomIO->GetComponentType() .This will give whether the data is of uchar/char/unsigned short/short etc.
typedef itk::GDCMImageIO ImageIOType;
ImageIOType::Pointer dicomIO = ImageIOType::New();
dicomIO->LoadPrivateTagsOn();
using ReaderType = itk::ImageFileReader<ImageType>;
ReaderType::Pointer reader = ReaderType::New();
reader->SetImageIO(dicomIO);
reader->SetFileName(msclr::interop::marshal_as<std::string>(filename));
try
{
reader->Update();
}
catch (itk::ExceptionObject & excp)
{
}
int componentType = dicomIO->GetComponentType();
After that I am trying to create the series reader according to the component type.
using PixelType = signed short;
using ImageType = itk::Image<PixelType, 3>;
typedef itk::GDCMImageIO ImageIOType;
ImageIOType::Pointer dicomIO = ImageIOType::New();
typedef itk::GDCMSeriesFileNames NamesGeneratorType;
NamesGeneratorType::Pointer nameGenerator = NamesGeneratorType::New();
nameGenerator->SetUseSeriesDetails(true);
nameGenerator->AddSeriesRestriction("0008|0021");
nameGenerator->SetDirectory(""D:\\TestDicoms");
typedef std::vector< std::string > SeriesIdContainer;
const SeriesIdContainer& seriesUID = nameGenerator->GetSeriesUIDs();
SeriesIdContainer::const_iterator seriesItr = seriesUID.begin();
SeriesIdContainer::const_iterator seriesEnd = seriesUID.end();
while (seriesItr != seriesEnd)
{
++seriesItr;
}
std::string seriesIdentifier;
seriesIdentifier = seriesUID.begin()->c_str();
typedef std::vector< std::string > FileNamesContainer;
FileNamesContainer fileNames;
fileNames = nameGenerator->GetFileNames(seriesIdentifier);
typedef itk::ImageSeriesReader< ImageType > ReaderType;
ReaderType::Pointer reader = ReaderType::New();
reader->SetImageIO(dicomIO);
reader->SetFileNames(fileNames);
try
{
reader->Update();
}
catch (itk::ExceptionObject xptn)
{
}
How to set the PixelType according to component type.
Also is it the correct way to implement generalized reader?