2 #ifndef OPENGM_TRUNCATED_ABSOLUTE_DIFFERENCE_FUNCTION_HXX 3 #define OPENGM_TRUNCATED_ABSOLUTE_DIFFERENCE_FUNCTION_HXX 14 template<
class T,
class I =
size_t,
class L =
size_t>
16 :
public FunctionBase<TruncatedAbsoluteDifferenceFunction<T, I, L>, T, I, L> {
24 size_t shape(
const IndexType)
const;
27 template<
class ITERATOR> T
operator()(ITERATOR)
const;
30 size_t numberOfLabels1_;
31 size_t numberOfLabels2_;
40 template <
class T,
class I,
class L>
46 template <
class T,
class I,
class L>
53 template<
class INDEX_OUTPUT_ITERATOR,
class VALUE_OUTPUT_ITERATOR >
55 template<
class INDEX_INPUT_ITERATOR,
class VALUE_INPUT_ITERATOR>
60 template <
class T,
class I,
class L>
64 const LabelType numberOfLabels1,
65 const LabelType numberOfLabels2,
66 const ValueType parameter1,
67 const ValueType parameter2
69 : numberOfLabels1_(numberOfLabels1),
70 numberOfLabels2_(numberOfLabels2),
71 parameter1_(parameter1),
72 parameter2_(parameter2)
75 template <
class T,
class I,
class L>
76 template <
class ITERATOR>
84 return abs(value) > parameter1_ ? parameter1_ * parameter2_ :
abs(value) * parameter2_;
90 template <
class T,
class I,
class L>
96 return (i==0 ? numberOfLabels1_ : numberOfLabels2_);
100 template <
class T,
class I,
class L>
107 template <
class T,
class I,
class L>
110 return numberOfLabels1_ * numberOfLabels2_;
113 template <
class T,
class I,
class L>
122 template <
class T,
class I,
class L>
131 template <
class T,
class I,
class L>
132 template<
class INDEX_OUTPUT_ITERATOR,
class VALUE_OUTPUT_ITERATOR >
137 INDEX_OUTPUT_ITERATOR indexOutIterator,
138 VALUE_OUTPUT_ITERATOR valueOutIterator
140 *indexOutIterator = src.
shape(0);
142 *indexOutIterator = src.
shape(1);
144 *valueOutIterator = src.parameter1_;
146 *valueOutIterator = src.parameter2_;
149 template <
class T,
class I,
class L>
150 template<
class INDEX_INPUT_ITERATOR,
class VALUE_INPUT_ITERATOR >
154 INDEX_INPUT_ITERATOR indexInIterator,
155 VALUE_INPUT_ITERATOR valueInIterator,
158 const size_t shape1=*indexInIterator;
160 const size_t shape2=*indexInIterator;
161 const ValueType param1=*valueInIterator;
163 const ValueType param2=*valueInIterator;
169 #endif // OPENGM_TRUNCATED_ABSOLUTE_DIFFERENCE_FUNCTION_HXX
Fallback implementation of member functions of OpenGM functions.
size_t shape(const IndexType) const
extension a value table encoding this function would have
T operator()(ITERATOR) const
#define OPENGM_ASSERT(expression)
truncated absolute differents between the labels of 2 variables
const size_t FUNCTION_TYPE_ID_OFFSET
User-defined function have ids smaller than FUNCTION_TYPE_ID_OFFSET.
TruncatedAbsoluteDifferenceFunction(const LabelType=2, const LabelType=2, const ValueType=ValueType(), const ValueType=ValueType())
size_t size() const
number of entries a value table encoding this function would have (used for I/O)