18 #ifndef __otbMRFEnergy_h
19 #define __otbMRFEnergy_h
37 template<
class TInput1,
class TInput2>
62 itkSetMacro(NumberOfParameters,
unsigned int);
63 itkGetConstMacro(NumberOfParameters,
unsigned int);
68 return this->m_Parameters;
73 if (parameters.
Size() != m_NumberOfParameters)
75 itkExceptionMacro(<<
"Invalid number of parameters");
77 m_Parameters = parameters;
83 itkExceptionMacro(<<
"GetSingleValue() has to be declared in child classes.");
88 return GetSingleValue(value1, value2);
96 bool isInside =
false;
97 unsigned int insideNeighbors = 0;
98 for (
unsigned long pos = 0; pos < it.
Size(); ++pos)
100 if (pos != centerIndex)
102 value1 = it.
GetPixel(pos, isInside);
105 result += GetSingleValue(value1, value2);
110 return result / insideNeighbors;
118 bool isInside =
false;
119 unsigned int insideNeighbors = 0;
120 for (
unsigned long pos = 0; pos < it.
Size(); ++pos)
122 if (pos != centerIndex)
124 value1 = it.
GetPixel(pos, isInside);
127 result += GetSingleValue(value1, value2);
132 return result / insideNeighbors;
138 m_NumberOfParameters(1),
145 template<
class TInput2>
165 itkSetMacro(NumberOfParameters,
unsigned int);
166 itkGetConstMacro(NumberOfParameters,
unsigned int);
171 return this->m_Parameters;
176 if (parameters.
Size() != m_NumberOfParameters)
178 itkExceptionMacro(<<
"Invalid number of parameters");
180 m_Parameters = parameters;
186 itkExceptionMacro(<<
"GetSingleValue() has to be declared in child classes.");
191 return GetSingleValue(value1, value2);
199 bool isInside =
false;
200 unsigned int insideNeighbors = 0;
201 for (
unsigned long pos = 0; pos < it.
Size(); ++pos)
203 if (pos != centerIndex)
205 value1 = it.
GetPixel(pos, isInside);
208 result += GetSingleValue(value1, value2);
213 return result / insideNeighbors;
219 m_NumberOfParameters(1),