26 #ifndef MLN_WORLD_BINARY_2D_PROJECTED_HISTO_HH
27 # define MLN_WORLD_BINARY_2D_PROJECTED_HISTO_HH
33 # include <mln/core/concept/image.hh>
34 # include <mln/core/image/image1d.hh>
35 # include <mln/core/image/image2d.hh>
36 # include <mln/core/alias/dpoint2d.hh>
37 # include <mln/geom/all.hh>
38 # include <mln/opt/at.hh>
39 # include <mln/value/int_u12.hh>
40 # include <mln/util/couple.hh>
52 util::couple<image1d<float>, image1d<float> >
53 projected_histo(
const Image<I>& input_,
bool value =
true)
55 mln_ch_value(I,
bool) input = exact(input_);
57 const
unsigned nrows = geom::nrows(input);
58 image1d<
float> row_histo(nrows);
59 data::fill(row_histo, 0);
61 const
unsigned ncols = geom::ncols(input);
62 image1d<
float> col_histo(ncols);
63 data::fill(col_histo, 0);
65 for (
unsigned row = 0; row < nrows; ++row)
67 for (
unsigned col = 0; col < ncols; ++col)
77 for (
unsigned i = 0; i < row_histo.ninds(); ++i)
78 row_histo.at_(i) = row_histo.at_(i) * 100 / ncols;
80 for (
unsigned i = 0; i < col_histo.ninds(); ++i)
81 col_histo.at_(i) = col_histo.at_(i) * 100 / nrows;
83 return util::couple<image1d<float>, image1d<float> > (row_histo, col_histo);
92 #endif // ! MLN_WORLD_BINARY_2D_PROJECTED_HISTO_HH