31 #include <mln/core/image/image2d.hh>
32 #include <mln/core/alias/neighb2d.hh>
34 #include <mln/labeling/blobs.hh>
35 #include <mln/io/pbm/load.hh>
36 #include <mln/io/pgm/save.hh>
37 #include <mln/io/ppm/save.hh>
38 #include <mln/debug/println.hh>
39 #include <mln/draw/line.hh>
41 #include <mln/value/int_u8.hh>
42 #include <mln/core/alias/point2d.hh>
44 #include <mln/util/site_pair.hh>
46 #include <mln/core/image/edge_image.hh>
48 #include <mln/data/fill.hh>
49 #include <mln/norm/l2.hh>
51 #include <mln/labeling/colorize.hh>
53 #include "influence_zones.hh"
78 std::cout <<
"n seeds = " << nlabels << std::endl;
105 std::vector< std::vector<bool> > adj(nlabels + 1);
106 for (
unsigned l = 1; l <= nlabels; ++l)
107 adj[l].
resize(nlabels + 1,
false);
114 if (iz.has(r) && iz(
p) != iz(r))
117 adj[iz(
p)][iz(r)] =
true;
119 adj[iz(r)][iz(
p)] =
true;
121 if (iz.has(b) && iz(
p) != iz(b))
124 adj[iz(
p)][iz(b)] =
true;
126 adj[iz(b)][iz(
p)] =
true;
146 std::vector<point2d> v_site (nlabels + 1,
point2d(0,0));
151 v_site[label(
p)] =
p;
153 std::cout << "v_site size = " << v_site.size() << std::endl;
156 std::vector<util::edge_id_t> e;
158 for (
unsigned l = 1; l <= nlabels; ++l)
159 for (
unsigned ll = l + 1; ll <= nlabels; ++ll)
162 sites.append(site_t(v_site[l], v_site[ll]));
163 e.push_back(g.add_edge(l, ll));
166 std::cout <<
"e size = " << e.size() << std::endl;
179 dist_values_t dist_values(sites.size());
180 for (
unsigned i = 0; i < dist_values.size(); ++i)
187 dist_ima_t dist_ima(g, sites, dist_values);
201 mln_piter_(dist_ima_t) e(dist_ima.domain());
209 dist_max.
take(dist_ima(e));
216 std::cout <<
"distance max = " << dist_max << std::endl;
227 main(
int argc,
char* argv[])
231 std::cerr <<
"usage: " << argv[0] <<
" input.pbm lambda output.ppm"
235 std::string input_filename = argv[1];
236 unsigned lambda = atoi(argv[2]);
237 std::string output_filename = argv[3];
251 ima_t ima = make_graph_image(seeds);
255 typedef ima_t::nbh_t nbh_t;
258 typedef unsigned wst_val_t;
264 wst_ima_t wst_ima = chain(ima, nbh, lambda, nbasins);
272 mln_piter_(wst_ima_t) e(wst_ima.domain());