33 #include <mln/core/image/image2d.hh>
34 #include <mln/core/alias/neighb2d.hh>
35 #include <mln/core/alias/window2d.hh>
36 #include <mln/core/image/dmorph/image_if.hh>
37 #include <mln/core/var.hh>
39 #include <mln/accu/center.hh>
40 #include <mln/accu/stat/mean.hh>
42 #include <mln/io/ppm/save.hh>
43 #include <mln/io/ppm/load.hh>
44 #include <mln/io/pgm/load.hh>
45 #include <mln/io/pgm/save.hh>
47 #include <mln/value/rgb8.hh>
48 #include <mln/value/int_u8.hh>
49 #include <mln/value/label_16.hh>
51 #include <mln/data/transform.hh>
53 #include <mln/labeling/wrap.hh>
54 #include <mln/labeling/mean_values.hh>
56 #include <mln/convert/to_fun.hh>
58 #include <mln/morpho/gradient.hh>
59 #include <mln/morpho/closing/area.hh>
60 #include <mln/morpho/watershed/flooding.hh>
61 #include <mln/morpho/elementary/dilation.hh>
63 #include <mln/make/vertex_image.hh>
64 #include <mln/make/edge_image.hh>
65 #include <mln/make/region_adjacency_graph.hh>
67 #include <mln/math/diff_abs.hh>
69 #include <mln/debug/draw_graph.hh>
75 struct dist : Function_vv2v< dist >
82 unsigned d = math::diff_abs(c1.red(), c2.red());
84 d_ = math::diff_abs(c1.green(), c2.green());
89 d_ = math::diff_abs(c1.blue(), c2.blue());
99 template <
typename I,
typename V>
100 struct edge_to_color : Function_v2v< edge_to_color<I,V> >
104 edge_to_color(
const I& ima)
110 operator()(
const unsigned& e)
const
112 return convert::to<V>(ima_(e));
120 template <
typename I,
typename V,
typename E>
122 image2d<mln_value(I)>
124 const V& ima_v,
const E& ima_e,
133 edge_to_color<E, mln_value(I)>(ima_e));
138 mln_piter(V) p(ima_v.domain());
142 box2d b(p + tl, p + br);
180 io::ppm::save(labeling::mean_values(input_ppm, wshed, nbasins),
181 "tmp_wshed_mean_colors.ppm");
213 "tmp_wst_rag_graph_image_white.ppm");