00001 /*========================================================================= 00002 00003 Library : Image Registration Toolkit (IRTK) 00004 Module : $Id: irtkImageTransformation.h 8 2009-03-02 16:12:58Z dr $ 00005 Copyright : Imperial College, Department of Computing 00006 Visual Information Processing (VIP), 2008 onwards 00007 Date : $Date: 2009-03-02 16:12:58 +0000 (Mon, 02 Mar 2009) $ 00008 Version : $Revision: 8 $ 00009 Changes : $Author: dr $ 00010 00011 =========================================================================*/ 00012 00013 #ifndef _IRTKIMAGETRANSFORMATION_H 00014 00015 #define _IRTKIMAGETRANSFORMATION_H 00016 00017 #include <irtkImage.h> 00018 00019 #include <irtkImageFunction.h> 00020 00021 #include <irtkTransformation.h> 00022 00038 class irtkImageTransformation 00039 { 00040 00041 public: 00042 00044 irtkImage *_input; 00045 00047 irtkImage *_output; 00048 00050 irtkTransformation *_transformation; 00051 00053 irtkImageFunction *_interpolator; 00054 00057 double _TargetPaddingValue; 00058 00061 double _SourcePaddingValue; 00062 00064 double _ScaleFactor; 00065 00067 double _Offset; 00068 00070 int _Invert; 00071 00072 public: 00073 00078 irtkImageTransformation(); 00079 00085 static irtkImageTransformation *New(irtkTransformation *); 00086 00088 virtual ~irtkImageTransformation(); 00089 00091 virtual void SetInput (irtkImage *); 00092 00094 virtual void SetInput (irtkImage *, irtkTransformation *); 00095 00097 virtual void SetOutput(irtkImage *); 00098 00100 virtual void SetTransformation(irtkTransformation *); 00101 00103 virtual void PutTargetPaddingValue(double); 00104 00106 virtual double GetTargetPaddingValue(); 00107 00109 virtual void PutSourcePaddingValue(double); 00110 00112 virtual double GetSourcePaddingValue(); 00113 00115 virtual irtkImageFunction *GetInterpolator(void); 00116 00118 virtual void PutInterpolator(irtkImageFunction *); 00119 00121 virtual void PutScaleFactorAndOffset(double = 1, double = 0); 00122 00124 virtual void InvertOn(void); 00125 00127 virtual void InvertOff(void); 00128 00130 virtual void Run(); 00131 00132 }; 00133 00134 inline void irtkImageTransformation::PutTargetPaddingValue(double PaddingValue) 00135 { 00136 _TargetPaddingValue = PaddingValue; 00137 } 00138 00139 inline double irtkImageTransformation::GetTargetPaddingValue() 00140 { 00141 return _TargetPaddingValue; 00142 } 00143 00144 inline void irtkImageTransformation::PutSourcePaddingValue(double PaddingValue) 00145 { 00146 _SourcePaddingValue = PaddingValue; 00147 } 00148 00149 inline double irtkImageTransformation::GetSourcePaddingValue() 00150 { 00151 return _SourcePaddingValue; 00152 } 00153 00154 inline irtkImageFunction *irtkImageTransformation::GetInterpolator() 00155 { 00156 return _interpolator; 00157 } 00158 00159 inline void irtkImageTransformation::PutInterpolator(irtkImageFunction *interpolator) 00160 { 00161 _interpolator = interpolator; 00162 } 00163 00164 inline void irtkImageTransformation::PutScaleFactorAndOffset(double ScaleFactor, double Offset) 00165 { 00166 _ScaleFactor = ScaleFactor; 00167 _Offset = Offset; 00168 } 00169 00170 inline void irtkImageTransformation::InvertOn() 00171 { 00172 _Invert = True; 00173 } 00174 00175 inline void irtkImageTransformation::InvertOff() 00176 { 00177 _Invert = False; 00178 } 00179 00180 #endif