00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __freConstrainedAccuracySOMetric_txx
00023 #define __freConstrainedAccuracySOMetric_txx
00024
00025 #include "freConstrainedAccuracySOMetric.h"
00026
00027 namespace FREE
00028 {
00029
00030 template <unsigned int VImageDimension>
00031 typename ConstrainedAccuracySOMetric<VImageDimension>::DecomposedMeasureType
00032 ConstrainedAccuracySOMetric<VImageDimension>::
00033 ComputeDecomposedValue( const ParametersType & parameters ) const
00034 {
00035 DecomposedMeasureType result(this->GetNumberOfValues());
00036 result.Fill(0.0);
00037
00038 DecomposedMeasureType constraints;
00039 DecomposedMeasureType values(this->Superclass::GetNumberOfValues());
00040 values.Fill(0.0);
00041
00042 if (ComputeConstraintPenalties(parameters,constraints))
00043 {
00044
00045
00046
00047 values = Superclass::ComputeDecomposedValue(parameters);
00048 }
00049
00050 for (unsigned int iPos = 0; iPos != values.Size(); ++iPos)
00051 {
00052 result.SetElement(iPos, values[iPos]);
00053 }
00054
00055 for (unsigned int iPos = 0; iPos != constraints.Size(); ++iPos)
00056 {
00057 result.SetElement(iPos+values.Size(), constraints[iPos]);
00058 }
00059
00060 return result;
00061 };
00062
00063 template <unsigned int VImageDimension>
00064 ConstrainedAccuracySOMetric<VImageDimension>::
00065 ConstrainedAccuracySOMetric()
00066 {
00067 this->m_MaxConstraintPenalty = 100000;
00068 ResetConstraints();
00069 };
00070
00071 }
00072
00073 #endif