70 #include <mln/value/int_u8.hh>
71 #include <mln/core/image/image2d.hh>
73 #include <mln/pw/all.hh>
75 #include <mln/fun/vv2v/diff_abs.hh>
76 #include <mln/world/inter_pixel/immerse.hh>
77 #include <mln/world/inter_pixel/compute.hh>
78 #include <mln/world/inter_pixel/neighb2d.hh>
80 #include <mln/morpho/watershed/topological.hh>
82 #include <mln/morpho/tree/compute_attribute_image.hh>
83 #include <mln/accu/stat/min.hh>
84 #include <mln/accu/stat/max.hh>
86 #include <mln/io/pgm/load.hh>
87 #include <mln/debug/println.hh>
90 int main(
int argc,
char* argv[])
94 std::cerr <<
"Usage: " << argv[0] <<
" input.pgm" << std::endl;
116 f_(p_ima) = input(p_f);
140 std::set<int_u8> values;
141 mln_piter_(w_t) p2(w.domain());
143 values.insert(w(p2));
146 for (std::set<int_u8>::const_iterator alpha = values.begin();
147 alpha != values.end(); ++alpha)
154 std::cout << *alpha <<
"-cc:" << std::endl;
179 mln_ch_value_(w_t, accu::stat::
max<int_u8>) init_max_val;
189 mln_piter_(w_t) e(w.domain());
190 mln_niter_(world::inter_pixel::dbl_neighb2d)
191 v_g(world::inter_pixel::e2v(), e);
198 init_min_val(e).take(f_(v_f));
199 init_max_val(e).take(f_(v_f));
203 mln_ch_value_(w_t, int_u8) min_val =
204 morpho::tree::compute_attribute_image_from(min_accu, t, init_min_val);
205 accu::stat::
max<int_u8> max_accu;
206 mln_ch_value_(w_t, int_u8) max_val =
207 morpho::tree::compute_attribute_image_from(max_accu, t, init_max_val);
209 typedef mln_ch_value_(w_t, int_u8) height_t;
213 height(e) = max_val(e) - min_val(e);
217 for (
unsigned alpha = 0; alpha <= 6; ++alpha)
221 fun::greater_v2b_expr_< pw::value_<w_t>,
222 pw::cst_<unsigned> >,
224 pw::cst_<unsigned> > > >
226 alpha_alpha_cc_t alpha_alpha_cc =
229 std::cout <<
"(" << alpha <<
", " << alpha <<
")-cc:" << std::endl;