Raw File
itkReadFileListFilter.h
//
//  itkReadFileListFilter.h
//  TomatoLib
//
//  Created by Konrad Werys on 19/08/17.
//  Copyright © 2017 Konrad Werys. All rights reserved.
//

#ifndef TomatoLIB_ITKREADFILELISTFILTER_H
#define TomatoLIB_ITKREADFILELISTFILTER_H

#include "CmakeConfigForTomato.h"

#ifdef USE_ITK

#include <iostream>
#include "itkImageFileReaderKW.h"
#include "itkTileImageFilter.h"
#include "itkGDCMImageIO.h"
#include "itkMetaDataObject.h"

namespace itk {
    /**
     * Reads DICOM files
     * @tparam TImage
     */
    template< typename TImage>
    class ReadFileListFilter :public ImageSource< TImage > {
    public:

        /** Standard class typedefs. */
        typedef ReadFileListFilter Self;
        typedef ImageSource <TImage> Superclass;
        typedef SmartPointer <Self> Pointer;

        /** Method for creation through the object factory. */
        itkNewMacro(Self);

        /** Run-time type information (and related methods). */

        typedef TImage ImageType3D;
        typedef typename ImageType3D::PixelType PixelType;
        typedef itk::Image< PixelType, 2 > ImageType2D;
        typedef itk::ImageFileReaderKW< ImageType3D > ReaderType;
        typedef itk::TileImageFilter< ImageType3D, ImageType3D > TileImageType;

        typedef std::vector<std::string> FileListType;
        typedef std::vector<MetaDataDictionary> MetaDataDictionaryArrayType;

        typedef itk::MetaDataDictionary   DictionaryType;
        typedef itk::MetaDataObject< std::string > MetaDataStringType;

        // setters
        void SetFileList(std::vector<std::string> fileList);
        void SetDirName(std::string dirName);
        itkSetMacro(Verbose, bool);

        template< typename TYPE >
        vnl_vector<TYPE> GetVnlVectorFromStdVector(std::vector<TYPE> stdVector);

        // getters
        vnl_vector<double> GetInvTimes();
        vnl_vector<double> GetRepTimes();
        vnl_vector<double> GetEchoTimes();
        vnl_vector<double> GetTriggerTimes();
        vnl_vector<double> GetAcqTimes();
        vnl_vector<double> GetRelAcqTimes();

        const std::vector<std::string> &GetFileList() const;
        const std::string &GetDirName() const;

        itkGetMacro(MetaDataDictionaryArray, MetaDataDictionaryArrayType);
        itkGetObjectMacro(DicomIO, GDCMImageIO);
        itkGetMacro(Verbose, bool);

    protected:

        ReadFileListFilter();

        virtual ~ReadFileListFilter(){};

        /** Does the real work. */
        virtual void GenerateData() ITK_OVERRIDE;

    private:
        ITK_DISALLOW_COPY_AND_ASSIGN(ReadFileListFilter);

        std::vector<std::string> m_FileList;
        std::string m_DirName;
        std::vector<double> m_InvTimes;
        std::vector<double> m_InvTimes20051572;
        std::vector<double> m_InvTimes00211189;
        std::vector<double> m_InvTimesFromImageComments;
        std::vector<double> m_RepTimes;
        std::vector<double> m_EchoTimes;
        std::vector<double> m_EchoTimes00191016;
        std::vector<double> m_EchoTimes00209158;
        std::vector<double> m_EchoTimesFromImageComments;
        std::vector<double> m_TriggerTimes;
        std::vector<double> m_AcqTimes;
        MetaDataDictionaryArrayType m_MetaDataDictionaryArray;
        GDCMImageIO::Pointer m_DicomIO;
        bool m_Verbose;

        double FindInversionTime(ReaderType* reader);
        double FindInversionTime20051572(ReaderType* reader);
        double FindInversionTime00211189(ReaderType* reader);
        double FindInversionTimeFromImageComments(ReaderType* reader);
        double FindRepetitionTime(ReaderType* reader);
        double FindEchoTime(ReaderType* reader);
        double FindEchoTime00191016(ReaderType* reader);
        double FindEchoTime00209158(ReaderType* reader);
        double FindEchoTimeFromImageComments(ReaderType* reader);
        double FindTriggerTime(ReaderType* reader);
        double FindAcqTime(ReaderType* reader);
    };
}

#ifndef TOMATOLIB_COMPILED
#ifndef ITK_MANUAL_INSTANTIATION
#include "itkReadFileListFilter.hxx"
#endif //ITK_MANUAL_INSTANTIATION
#endif //TOMATOLIB_COMPILED

#endif // USE_ITK


#endif //TomatoLIB_ITKREADFILELISTFILTER_H
back to top