7 #ifndef Tomato_OxOriginalShmolliDicomReader_HXX 8 #define Tomato_OxOriginalShmolliDicomReader_HXX 10 #include <itkImageFileReader.h> 15 template<
typename MeasureType >
17 OriginalShmolliDicomReader<MeasureType>
21 typename ReadFileListFilterType::Pointer readerMag = ReadFileListFilterType::New();
22 readerMag->SetFileList(_filesMag);
25 typename SortInvTimesImageFilterType::Pointer sorterMag = SortInvTimesImageFilterType::New();
26 sorterMag->SetInvTimesNonSorted(readerMag->GetInvTimes());
27 sorterMag->SetInput(readerMag->GetOutput());
31 typename ReadFileListFilterType::Pointer readerPha = ReadFileListFilterType::New();
32 readerPha->SetFileList(_filesPha);
35 typename SortInvTimesImageFilterType::Pointer sorterPha = SortInvTimesImageFilterType::New();
36 sorterPha->SetInvTimesNonSorted(readerPha->GetInvTimes());
37 sorterPha->SetInput(readerPha->GetOutput());
40 if (sorterMag->GetInvTimesSorted() == sorterPha->GetInvTimesSorted()){
41 vnl_vector<InputPixelType > temp = sorterMag->GetInvTimesSorted();
42 _nSamples = temp.size();
44 _invTimes =
new InputPixelType[_nSamples];
45 KWUtil::copyArrayToArray(_nSamples, _invTimes, temp.data_block());
47 throw std::runtime_error(
"Mag and Pha inv times are not equal");
50 _imageMag = sorterMag->GetOutput();
51 _imagePha = sorterPha->GetOutput();
53 if (_filesT1.size() > 0) {
54 typename itk::ImageFileReader<Image2dType>::Pointer reader = itk::ImageFileReader<Image2dType>::New();
55 reader->SetFileName(_filesT1.at(0));
57 _imageT1color = reader->GetOutput();
60 if (_filesT1.size() > 1) {
61 typename itk::ImageFileReader<Image2dType>::Pointer reader = itk::ImageFileReader<Image2dType>::New();
62 reader->SetFileName(_filesT1.at(1));
64 _imageT1grey = reader->GetOutput();
67 if (_filesFitparams.size() > 0) {
68 typename itk::ImageFileReader<Image2dType>::Pointer reader = itk::ImageFileReader<Image2dType>::New();
69 reader->SetFileName(_filesFitparams.at(0));
71 _imageR2 = reader->GetOutput();
74 if (_filesFitparams.size() > 1) {
75 typename itk::ImageFileReader<Image2dType>::Pointer reader = itk::ImageFileReader<Image2dType>::New();
76 reader->SetFileName(_filesFitparams.at(1));
78 _imageA = reader->GetOutput();
81 if (_filesFitparams.size() > 2) {
82 typename itk::ImageFileReader<Image2dType>::Pointer reader = itk::ImageFileReader<Image2dType>::New();
83 reader->SetFileName(_filesFitparams.at(2));
85 _imageB = reader->GetOutput();
88 if (_filesFitparams.size() > 3) {
89 typename itk::ImageFileReader<Image2dType>::Pointer reader = itk::ImageFileReader<Image2dType>::New();
90 reader->SetFileName(_filesFitparams.at(3));
92 _imageT1star = reader->GetOutput();
95 if (_filesFitparams.size() > 4) {
96 typename itk::ImageFileReader<Image2dType>::Pointer reader = itk::ImageFileReader<Image2dType>::New();
97 reader->SetFileName(_filesFitparams.at(4));
99 _imageNShmolliSamplesUsed = reader->GetOutput();
102 if (_filesFitparams.size() > 5) {
103 typename itk::ImageFileReader<Image2dType>::Pointer reader = itk::ImageFileReader<Image2dType>::New();
104 reader->SetFileName(_filesFitparams.at(5));
106 _imageChiSqrt = reader->GetOutput();
109 if (_filesFitparams.size() > 6) {
110 typename itk::ImageFileReader<Image2dType>::Pointer reader = itk::ImageFileReader<Image2dType>::New();
111 reader->SetFileName(_filesFitparams.at(6));
113 _imageSnr = reader->GetOutput();
119 template<
typename MeasureType >
121 OriginalShmolliDicomReader<MeasureType>
122 ::copyFromImage(MeasureType* array,
const typename Image3dType::Pointer image,
const typename Image3dType::IndexType index){
124 typename Image3dType::SizeType size = image->GetLargestPossibleRegion().GetSize();
125 typename Image3dType::IndexType tempIndex = index;
127 for (
int i = 0; i < size[2]; ++i){
129 array[i] = image->GetPixel(tempIndex);
138 #endif //Tomato_OxOriginalShmolliDicomReader_H
Definition: OxCalculator.h:19