/vol/vipdata/irtk/packages/transformation/include/irtkImageTransformation.h

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