Tomato
itkReadFileListFilter.h
1 //
2 // itkReadFileListFilter.h
3 // TomatoLib
4 //
5 // Created by Konrad Werys on 19/08/17.
6 // Copyright © 2017 Konrad Werys. All rights reserved.
7 //
8 
9 #ifndef TomatoLIB_ITKREADFILELISTFILTER_H
10 #define TomatoLIB_ITKREADFILELISTFILTER_H
11 
12 #include "CmakeConfigForTomato.h"
13 
14 #ifdef USE_ITK
15 
16 #include <iostream>
17 #include "itkImageFileReaderKW.h"
18 #include "itkTileImageFilter.h"
19 #include "itkMultiplyImageFilter.h"
20 #include "itkAddImageFilter.h"
21 #include "itkGDCMImageIO.h"
22 #include "itkMetaDataObject.h"
23 
24 namespace itk {
29  template< typename TImage>
30  class ReadFileListFilter :public ImageSource< TImage > {
31  public:
32 
34  typedef ReadFileListFilter Self;
35  typedef ImageSource <TImage> Superclass;
36  typedef SmartPointer <Self> Pointer;
37 
39  itkNewMacro(Self);
40 
43  typedef TImage ImageType3D;
44  typedef typename ImageType3D::PixelType PixelType;
45  typedef itk::Image< PixelType, 2 > ImageType2D;
46  typedef itk::ImageFileReaderKW< ImageType3D > ReaderType;
47  typedef itk::TileImageFilter< ImageType3D, ImageType3D > TileImageType;
48  typedef itk::AddImageFilter< ImageType3D, ImageType3D > AddImageType;
49  typedef itk::MultiplyImageFilter< ImageType3D, ImageType3D > MultiplyImageType;
50 
51  typedef std::vector<std::string> FileListType;
52  typedef std::vector<MetaDataDictionary> MetaDataDictionaryArrayType;
53 
54  typedef itk::MetaDataDictionary DictionaryType;
55  typedef itk::MetaDataObject< std::string > MetaDataStringType;
56 
57  // setters
58  void SetFileList(std::vector<std::string> fileList);
59  void SetDirName(std::string dirName);
60  itkSetMacro(Verbose, bool);
61 
62  template< typename TYPE >
63  vnl_vector<TYPE> GetVnlVectorFromStdVector(std::vector<TYPE> stdVector);
64 
65  // getters
66  vnl_vector<double> GetInvTimes();
67  vnl_vector<double> GetRepTimes();
68  vnl_vector<double> GetEchoTimes();
69  vnl_vector<double> GetTriggerTimes();
70  vnl_vector<double> GetAcqTimes();
71  vnl_vector<double> GetRelAcqTimes();
72 
73  const std::vector<std::string> &GetFileList() const;
74  const std::string &GetDirName() const;
75 
76  itkGetMacro(MetaDataDictionaryArray, MetaDataDictionaryArrayType);
77  itkGetObjectMacro(DicomIO, GDCMImageIO);
78  itkGetMacro(Verbose, bool);
79 
80  protected:
81 
82  ReadFileListFilter();
83 
84  virtual ~ReadFileListFilter(){};
85 
87  virtual void GenerateData() ITK_OVERRIDE;
88 
89  private:
90  ITK_DISALLOW_COPY_AND_ASSIGN(ReadFileListFilter);
91 
92  std::vector<std::string> m_FileList;
93  std::string m_DirName;
94  std::vector<double> m_InvTimes;
95  std::vector<double> m_InvTimes20051572;
96  std::vector<double> m_InvTimes00211189;
97  std::vector<double> m_InvTimesFromImageComments;
98  std::vector<double> m_RepTimes;
99  std::vector<double> m_EchoTimes;
100  std::vector<double> m_EchoTimes00191016;
101  std::vector<double> m_EchoTimes00209158;
102  std::vector<double> m_EchoTimesFromImageComments;
103  std::vector<double> m_TriggerTimes;
104  std::vector<double> m_AcqTimes;
105  MetaDataDictionaryArrayType m_MetaDataDictionaryArray;
106  GDCMImageIO::Pointer m_DicomIO;
107  bool m_Verbose;
108 
109  double FindInversionTime(ReaderType* reader);
110  double FindInversionTime20051572(ReaderType* reader);
111  double FindInversionTime00211189(ReaderType* reader);
112  double FindInversionTimeFromImageComments(ReaderType* reader);
113  double FindRepetitionTime(ReaderType* reader);
114  double FindEchoTime(ReaderType* reader);
115  double FindEchoTime00191016(ReaderType* reader);
116  double FindEchoTime00209158(ReaderType* reader);
117  double FindEchoTimeFromImageComments(ReaderType* reader);
118  double FindTriggerTime(ReaderType* reader);
119  double FindAcqTime(ReaderType* reader);
120  };
121 }
122 
123 #ifndef TOMATOLIB_COMPILED
124 #ifndef ITK_MANUAL_INSTANTIATION
125 #include "itkReadFileListFilter.hxx"
126 #endif //ITK_MANUAL_INSTANTIATION
127 #endif //TOMATOLIB_COMPILED
128 
129 #endif // USE_ITK
130 
131 
132 #endif //TomatoLIB_ITKREADFILELISTFILTER_H
Definition: itkImageFileReaderKW.h:31
Data source that reads image data from a single file.
Definition: itkImageFileReaderKW.h:76