26 #ifndef MLN_MORPHO_GRADIENT_HH
27 # define MLN_MORPHO_GRADIENT_HH
40 # include <mln/morpho/includes.hh>
52 template <
typename I,
typename W>
53 mln_concrete(I)
gradient(const Image<I>& input, const Window<W>& win);
59 template <typename I, typename W>
66 template <typename I, typename W>
71 # ifndef MLN_INCLUDE_ONLY
74 template <
typename I,
typename W>
78 trace::entering(
"morpho::gradient");
79 mln_precondition(exact(input).is_valid());
80 mln_precondition(! exact(win).is_empty());
86 trace::exiting(
"morpho::gradient");
91 template <
typename I,
typename W>
95 trace::entering(
"morpho::gradient_internal");
96 mln_precondition(exact(input).is_valid());
97 mln_precondition(! exact(win).is_empty());
103 trace::exiting(
"morpho::gradient_internal");
108 template <
typename I,
typename W>
112 trace::entering(
"morpho::gradient_external");
113 mln_precondition(exact(input).is_valid());
114 mln_precondition(! exact(win).is_empty());
120 trace::exiting(
"morpho::gradient_external");
124 # endif // ! MLN_INCLUDE_ONLY
131 #endif // ! MLN_MORPHO_GRADIENT_HH