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
1.5.3 written by Dimitri van Heesch,
© 1997-2000