26 #ifndef MLN_DATA_APPROX_MEDIAN_HH
27 # define MLN_DATA_APPROX_MEDIAN_HH
33 # include <mln/data/median.hh>
34 # include <mln/win/rectangle2d.hh>
35 # include <mln/win/disk2d.hh>
36 # include <mln/win/octagon2d.hh>
37 # include <mln/win/hline2d.hh>
38 # include <mln/win/vline2d.hh>
39 # include <mln/win/diag2d.hh>
40 # include <mln/win/backdiag2d.hh>
67 median(const Image<I>& input, const win::rectangle2d& win);
83 median(const Image<I>& input, const win::disk2d& win);
99 median(const Image<I>& input, const win::octagon2d& win);
103 # ifndef MLN_INCLUDE_ONLY
109 template <
typename I>
112 median(const Image<I>& input, const win::rectangle2d& win)
114 mln_trace(
"data::approx::median");
116 mln_concrete(I) output;
118 win::hline2d win1(win.width());
128 template <typename I>
131 median(const Image<I>& input, const win::disk2d& win)
133 mln_trace(
"data::approx::median");
135 const unsigned len = win.diameter() / 3 + 1;
136 mln_concrete(I) output;
138 win::diag2d win1(len);
141 win::backdiag2d win2(len);
144 win::hline2d win3(len);
147 win::vline2d win4(len);
154 template <typename I>
157 median(const Image<I>& input, const win::octagon2d& win)
159 return median(input, win::disk2d(win.length()));
162 # endif // ! MLN_INCLUDE_ONLY
171 #endif // ! MLN_DATA_APPROX_MEDIAN_HH