21 #include <itkGDCMImageIO.h> 30 std::vector<std::string> parseStrategy;
31 parseStrategy.push_back(
"Automatic");
32 parseStrategy.push_back(
"CEST/WASABI");
33 parseStrategy.push_back(
"T1");
34 defaultOptions[
"Force type"] = parseStrategy;
36 std::vector<std::string> mappingStrategy;
37 mappingStrategy.push_back(
"Strict");
38 mappingStrategy.push_back(
"Fuzzy");
39 defaultOptions[
"Revision mapping"] = mappingStrategy;
41 std::vector<std::string> normalizationStrategy;
42 normalizationStrategy.push_back(
"Automatic");
43 normalizationStrategy.push_back(
"No");
44 defaultOptions[
"Normalize data"] = normalizationStrategy;
56 selector->LoadBuiltIn3DConfigs();
57 selector->LoadBuiltIn3DnTConfigs();
58 selector->SetInputFiles(relevantFiles);
60 mitk::DICOMFileReader::Pointer reader = selector->GetFirstReaderWithMinimumNumberOfOutputImages();
61 if (reader.IsNotNull())
65 reader->SetTagCache(
nullptr);
73 std::vector<BaseData::Pointer> result;
78 const std::string parseStrategy = options.find(
"Force type")->second.ToString();
79 const std::string mappingStrategy = options.find(
"Revision mapping")->second.ToString();
80 const std::string normalizationStrategy = options.find(
"Normalize data")->second.ToString();
82 for (
auto &item : dicomResult)
84 auto prop = item->GetProperty(
"files");
88 mitkThrow() <<
"Cannot load CEST file. Property \"files\" is missing after BaseDICOMReaderService::Read().";
95 DICOMTag siemensCESTprivateTag(0x0029, 0x1020);
97 scanner->AddTag(siemensCESTprivateTag);
98 scanner->SetInputFiles(relevantFiles);
100 mitk::DICOMTagCache::Pointer tagCache = scanner->GetScanCache();
105 std::string byteString = tagCache->GetTagValue(firstFrame, siemensCESTprivateTag).value;
113 item->GetPropertyList()->ConcatenatePropertyList(parsedPropertyList);
118 MITK_INFO <<
"Unnormalized CEST image was loaded and will be normalized automatically.";
120 normalizationFilter->SetInput(
image);
121 normalizationFilter->Update();
122 auto normalizedImage = normalizationFilter->GetOutput();
124 auto nameProp = item->GetProperty(
"name");
127 mitkThrow() <<
"Cannot load CEST file. Property \"name\" is missing after BaseDICOMReaderService::Read().";
130 result.push_back(normalizedImage);
134 result.push_back(item);
Provides the custom mime types for MitkCEST.
std::vector< itk::SmartPointer< BaseData > > Read() override
Representation of a DICOM tag.
DataCollection - Class to facilitate loading/accessing structured data.
std::map< std::string, us::Any > Options
Options for reading or writing data.
mitk::PropertyList::Pointer ParseDicomPropertyString(std::string dicomPropertyString)
parse the provided string and return a property list based on the closest revision parameter mapping ...
Describes a frame within a DICOM file.
The CustomMimeType class represents a custom mime-type which may be registered as a service object...
void SetDefaultOptions(const Options &defaultOptions)
us::ServiceRegistration< IFileReader > RegisterService(us::ModuleContext *context=us::GetModuleContext())
void SetParseStrategy(std::string parseStrategy)
std::vector< DICOMImageFrameInfo::Pointer > DICOMImageFrameList
Image class for storing images.
Options GetOptions() const override
returns a list of the supported options
mitk::Image::Pointer image
MITKCEST_EXPORT bool IsNotNormalizedCESTImage(const Image *cestImage)
std::vector< std::string > StringList
MITKDICOMREADER_EXPORT mitk::DICOMImageFrameList ConvertToDICOMImageFrameList(const DICOMDatasetAccessingImageFrameList &input)
std::vector< itk::SmartPointer< BaseData > > Read() override
Reads a path or stream and creates a list of BaseData objects.
mitk::DICOMFileReader::Pointer GetReader(const mitk::StringList &relevantFiles) const override
void SetRevisionMappingStrategy(std::string revisionMappingStrategy)