12 #ifndef mitkConcentrationCurveGenerator_h
13 #define mitkConcentrationCurveGenerator_h
16 #include <itkBinaryFunctorImageFilter.h>
55 itkSetConstObjectMacro(DynamicImage,
Image);
57 itkGetConstObjectMacro(DynamicImage,
Image);
61 itkSetMacro(RelaxationTime,
double);
63 itkGetConstReferenceMacro(RelaxationTime,
double);
67 itkSetMacro(Relaxivity,
double);
69 itkGetConstReferenceMacro(Relaxivity,
double);
73 itkSetMacro(RecoveryTime,
double);
75 itkGetConstReferenceMacro(RecoveryTime,
double);
79 itkSetMacro(RepetitionTime,
double);
81 itkGetConstReferenceMacro(RepetitionTime,
double);
85 itkSetMacro(FlipAngle,
double);
87 itkGetConstReferenceMacro(FlipAngle,
double);
91 itkSetMacro(FlipAnglePDW,
double);
93 itkGetConstReferenceMacro(FlipAnglePDW,
double);
97 itkSetMacro(Factor,
double);
99 itkGetConstReferenceMacro(Factor,
double);
103 itkSetConstObjectMacro(PDWImage,
Image);
105 itkGetConstObjectMacro(PDWImage,
Image);
109 itkSetMacro(T2Factor,
double);
111 itkGetConstReferenceMacro(T2Factor,
double);
115 itkSetMacro(T2EchoTime,
double);
117 itkGetConstReferenceMacro(T2EchoTime,
double);
121 itkSetMacro(BaselineStartTimeStep,
unsigned int);
123 itkGetConstReferenceMacro(BaselineStartTimeStep,
unsigned int);
127 itkSetMacro(BaselineEndTimeStep,
unsigned int);
129 itkGetConstReferenceMacro(BaselineEndTimeStep,
unsigned int);
133 itkSetMacro(isTurboFlashSequence,
bool);
135 itkGetConstReferenceMacro(isTurboFlashSequence,
bool);
139 itkSetMacro(AbsoluteSignalEnhancement,
bool);
141 itkGetConstReferenceMacro(AbsoluteSignalEnhancement,
bool);
145 itkSetMacro(RelativeSignalEnhancement,
bool);
147 itkGetConstReferenceMacro(RelativeSignalEnhancement,
bool);
151 itkSetMacro(UsingT1Map,
bool);
153 itkGetConstReferenceMacro(UsingT1Map,
bool);
157 itkSetMacro(isT2weightedImage,
bool);
159 itkGetConstReferenceMacro(isT2weightedImage,
bool);
174 template<
class TPixel_input,
class TPixel_baseline>
175 mitk::Image::Pointer
convertToConcentration(
const itk::Image<TPixel_input, 3> *itkInputImage,
const itk::Image<TPixel_baseline, 3> *itkBaselineImage);
185 template<
class TPixel>
193 Image::ConstPointer m_DynamicImage;
194 Image::ConstPointer m_BaselineImage;
195 Image::ConstPointer m_PDWImage;
196 Image::Pointer m_ConvertSignalToConcentrationCurve_OutputImage;
197 Image::Pointer m_ConvertedImage;
199 bool m_isT2weightedImage;
201 bool m_isTurboFlashSequence;
202 bool m_AbsoluteSignalEnhancement;
203 bool m_RelativeSignalEnhancement;
208 double m_RecoveryTime;
210 double m_RepetitionTime;
212 double m_RelaxationTime;
218 double m_FlipAnglePDW;
224 unsigned int m_BaselineStartTimeStep;
226 unsigned int m_BaselineEndTimeStep;
#define MITKPHARMACOKINETICS_EXPORT
Converts a 4D MR signal image into a 4D contrast agent concentration image.
void PrepareBaselineImage()
Takes the 3D image of the first timepoint to set as baseline image.
ConcentrationCurveGenerator()
mitk::Image::Pointer convertToConcentration(const itk::Image< TPixel_input, 3 > *itkInputImage, const itk::Image< TPixel_baseline, 3 > *itkBaselineImage)
void CalculateAverageBaselineImage(const itk::Image< TPixel, 4 > *itkBaselineImage)
~ConcentrationCurveGenerator() override
virtual void Convert()
Loops over all timepoints, casts the current timepoint 3D mitk::image to itk and passes it to Convert...
mitkClassMacroItkParent(ConcentrationCurveGenerator, itk::Object)
mitk::Image::Pointer ConvertSignalToConcentrationCurve(const mitk::Image *inputImage, const mitk::Image *baselineImage)
Image::Pointer GetConvertedImage()
Performs the conversion and returns the 4D concentration image.
itk::Image< double, 3 > ConvertedImageType
ITK image type for converted 3D concentration frames.
Image class for storing multi-dimensional medical image data.
Find image slices visible on a given plane.