26 #ifndef MLN_MORPHO_LAPLACIAN_HH
27 # define MLN_MORPHO_LAPLACIAN_HH
36 # include <mln/morpho/includes.hh>
49 template <
typename I,
typename W,
typename O>
50 void laplacian(
const Image<I>& input,
const Window<W>& win,
54 template <
typename I,
typename W>
55 mln_trait_op_minus_twice(mln_concrete(I))
56 laplacian(const Image<I>& input, const Window<W>& win);
59 # ifndef MLN_INCLUDE_ONLY
61 template <
typename I,
typename W,
typename O>
65 trace::entering(
"morpho::laplacian");
66 mln_precondition(exact(output).domain() == exact(input).domain());
67 mln_precondition(! exact(win).is_empty());
74 trace::exiting(
"morpho::laplacian");
77 template <
typename I,
typename W>
79 mln_trait_op_minus_twice(mln_concrete(I))
82 trace::entering(
"morpho::laplacian");
83 mln_precondition(exact(input).is_valid());
84 mln_precondition(! exact(win).is_empty());
86 mln_trait_op_minus_twice(mln_concrete(I)) output;
87 initialize(output, input);
94 # endif // ! MLN_INCLUDE_ONLY
101 #endif // ! MLN_MORPHO_LAPLACIAN_HH