26 #ifndef SCRIBO_UPSAMPLING_EAGLE_HH_
27 # define SCRIBO_UPSAMPLING_EAGLE_HH_
33 # include <mln/core/concept/image.hh>
34 # include <mln/core/def/coord.hh>
35 # include <mln/geom/min_row.hh>
36 # include <mln/geom/min_col.hh>
37 # include <mln/geom/max_row.hh>
38 # include <mln/geom/max_col.hh>
39 # include <mln/opt/at.hh>
40 # include <mln/make/box2d.hh>
55 eagle(const
Image<I>& ima);
59 # ifndef MLN_INCLUDE_ONLY
64 eagle(const
Image<I>& input_)
66 mln_trace(
"scribo::upsampling::eagle");
68 typedef mln_value(I) V;
69 const I& input = exact(input_);
71 mln_precondition(input.is_valid());
80 mln_piter(I) p(input.domain());
82 output(mln::make::
box2d(mrow, mcol,
83 mrow + 2 * input.
nrows() - 1,
84 mcol + 2 * input.
ncols() - 1));
89 prow = p.row() - mrow,
90 pcol = p.col() - mcol;
98 2 * prow + 1, 2 * pcol + 1);
99 mln_piter_(
box2d) pb(b);
100 V
value = opt::at(input, p.row(), p.col());
103 opt::at(output, mrow + pb.row(), mcol + pb.col()) =
value;
108 n = opt::at(input, p.row() - 1, p.col()),
109 s = opt::at(input, p.row() + 1, p.col()),
110 e = opt::at(input, p.row(), p.col() + 1),
111 w = opt::at(input, p.row(), p.col() - 1),
112 nw = opt::at(input, p.row() - 1, p.col() - 1),
113 ne = opt::at(input, p.row() - 1, p.col() + 1),
114 sw = opt::at(input, p.row() + 1, p.col() - 1),
115 se = opt::at(input, p.row() + 1, p.col() + 1),
116 value = opt::at(input, p.row(), p.col());
118 if (e != w || n != s || e != n)
120 opt::at(output, mrow + 2 * prow, mcol + 2 * pcol) = ((w == n && w == nw && nw == n) ? nw : value);
121 opt::at(output, mrow + 2 * prow, mcol + 2 * pcol + 1) = ((e == n && e == ne && ne == n) ? ne : value);
122 opt::at(output, mrow + 2 * prow + 1, mcol + 2 * pcol) = ((w == s && w == sw && sw == s) ? sw : value);
123 opt::at(output, mrow + 2 * prow + 1, mcol + 2 * pcol + 1) = ((e == s && e == se && se == s) ? se : value);
128 2 * prow + 1, 2 * pcol + 1);
129 mln_piter_(
box2d) pb(b);
130 V value = opt::at(input, p.row(), p.col());
133 opt::at(output, mrow + pb.row(), mcol + pb.col()) = value;
141 # endif // ! MLN_INCLUDE_ONLY
148 #endif // ! SCRIBO_UPSAMPLING_EAGLE_HH_