freVectorFieldSetVarianceCalculator.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   F.R.E.E. - flexible registration evaluation engine
00004   Version:   v.1.0.0
00005   Date:      $Date: 2006/09/01 12:00:00 $
00006   Module:    $RCSfile: freVectorFieldSetVarianceCalculator.h,v $
00007   Language:  C++
00008 
00009 
00010 
00011   Copyright (c) 2007 Ralf o Floca (Department of Medical Informatics,
00012   Institute for Medical Biometry and Informatics, University of Heidelberg,
00013   Germany). All rights reserved.
00014   See FREECopyright.txt or http://www.mi.med.uni-hd.de/free/copyright.htm
00015   for details.
00016 
00017      This software is distributed WITHOUT ANY WARRANTY; without even 
00018      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00019      PURPOSE.  See the above copyright notices for more information.
00020 
00021 =========================================================================*/
00022 #ifndef __freVectorFieldSetVarianceCalculator_h
00023 #define __freVectorFieldSetVarianceCalculator_h
00024 
00025 #include "freElementals.h"
00026 #include "freExceptions.h"
00027 #include "freEvents.h"
00028 #include "freVectorFieldSetCharacteristic.h"
00029 #include "freImageTypes.h"
00030 
00031 namespace FREE
00032 {
00033 
00046 template <unsigned int VImageDimension>
00047 class VectorFieldSetVarianceCalculator
00048 {
00049 
00050 public:
00051         typedef typename ImageTypes<VImageDimension>::TransformationFieldType VectorFieldType;
00052   typedef typename VectorFieldType::Pointer VectorFieldPointer;
00053   typedef std::vector< VectorFieldPointer > VectorFieldArrayType;
00054 
00055         typedef typename ImageTypes<VImageDimension>::InternalImageType VarianceFieldType;
00056   typedef typename VarianceFieldType::Pointer VarianceFieldPointer;
00057 
00058   virtual const char *GetNameOfClass() const
00059         {return "VectorFieldSetVarianceCalculator";};
00060 
00061 protected:
00063   VectorFieldPointer m_smpMeanVectorField;
00064 
00067   VarianceFieldPointer m_smpVarianceDifferenceField;
00068 
00071         std::string m_sFieldsPath;
00072 
00077   bool m_bFieldsOnDisk; // = true;
00078 
00080         unsigned int m_iSetSize;
00081 
00087   VectorFieldArrayType m_VectorFields;
00088 
00090         void ComputeDifferenceVectorFields();
00091 
00093         void ComputeVarianceDifferenceField();
00094 
00101         void SetVectorField(const VectorFieldPointer& smpField, unsigned int iIndex);
00109         VectorFieldPointer GetVectorField(unsigned int iIndex);
00110 
00113         void ClearVectorFields();
00114 
00120         std::string GetVectorFieldName(unsigned int iIndex);
00121 
00122 public:  
00125   static const int GetDimension() { return VImageDimension; };
00126 
00129         void SetFieldsPath(std::string sPath) { m_sFieldsPath = sPath; };
00130 
00133   const std::string GetFieldsPath() const {return m_sFieldsPath;};
00134 
00138         void SetSaveFieldsOnDisk(bool bOnDisk) { m_bFieldsOnDisk = bOnDisk; };
00139 
00142   const bool GetSaveFieldsOnDisk() const {return m_bFieldsOnDisk;};
00143 
00146         void AddVectorField(VectorFieldType* pVectorField);
00147 
00150   const unsigned int GetSetSize() { return m_iSetSize; };
00151 
00153   void Compute();
00154 
00157   inline VectorFieldType* GetMeanVectorField() { return m_smpMeanVectorField;};
00158 
00161   inline VarianceFieldType* GetVarianceField() { return m_smpVarianceDifferenceField;};
00162 
00164   void Reset();
00165 
00169   VectorFieldSetVarianceCalculator();
00170 
00171   virtual ~VectorFieldSetVarianceCalculator();
00172 
00176         ProgressEventBase::Pointer fnOnProgress;
00177 
00180         ProgressEventBase::Pointer fnOnNextVectorField;
00181 
00188         CallbackEventBase::Pointer fnOnNewDifferenceVectorField;
00189 };
00190 
00191 } //End of namespace FREE
00192 
00193 #ifndef ITK_MANUAL_INSTANTIATION
00194 #include "freVectorFieldSetVarianceCalculator.txx"
00195 #endif
00196 
00197 #endif

Generated at Sat Oct 13 18:02:05 2007 for f.r.e.e. - Flexible Registration and Evaluation Engine by doxygen 1.5.3 written by Dimitri van Heesch, © 1997-2000