27 #ifndef SCRIBO_UTIL_COMPUTE_SUB_DOMAINS_HH
28 # define SCRIBO_UTIL_COMPUTE_SUB_DOMAINS_HH
34 # include <mln/core/image/image2d.hh>
35 # include <mln/util/couple.hh>
47 compute_sub_domains(
const Image<I>& ima,
unsigned n_scales,
unsigned s);
50 # ifndef MLN_INCLUDE_ONLY
56 unsigned sub(
unsigned nbr,
unsigned down_scaling)
58 return (nbr + down_scaling - 1) / down_scaling;
67 compute_sub_domains(
const Image<I>& ima_,
unsigned n_scales,
unsigned s)
69 mln_trace(
"scribo::util::compute_sub_domains");
71 const I& ima =
exact(ima_);
72 mln_precondition(ima.is_valid());
78 internal::sub(n(1).second(), s));
79 for (
unsigned i = 3; i <= n_scales + 1; ++i)
81 internal::sub(n(i - 1).second(), 2));
90 n(n_scales + 1).second()), 1u);
92 for (
unsigned i = n_scales; i > 1; --i)
95 2 * out(i + 1).first().
ncols()),
96 2 * out(i + 1).second());
98 out(1).second() =
std::max(out(2).first().
ncols() * s - ima.ncols(),
99 out(2).first().nrows() * s - ima.nrows());
104 # endif // ! MLN_INCLUDE_ONLY
110 #endif // ! SCRIBO_UTIL_COMPUTE_SUB_DOMAINS_HH