30 #include <mln/core/image/image2d.hh>
31 #include <mln/core/alias/neighb2d.hh>
33 #include <mln/data/fill.hh>
34 #include <mln/data/paste.hh>
35 #include <mln/data/convert.hh>
36 #include <mln/data/saturate.hh>
38 #include <mln/labeling/value.hh>
39 #include <mln/labeling/colorize.hh>
41 #include <mln/morpho/watershed/superpose.hh>
42 #include <mln/morpho/watershed/flooding.hh>
43 #include <mln/morpho/elementary/dilation.hh>
44 #include <mln/morpho/closing/area.hh>
45 #include <mln/morpho/closing/structural.hh>
47 #include <mln/transform/distance_front.hh>
48 #include <mln/transform/influence_zone_front.hh>
50 #include <mln/pw/all.hh>
51 #include <mln/core/image/dmorph/image_if.hh>
52 #include <mln/core/image/dmorph/sub_image.hh>
54 #include <mln/make/w_window2d.hh>
56 #include "apps/morphers/lazy_recorder.hh"
58 #include <mln/io/pbm/load.hh>
59 #include <mln/io/pbm/save.hh>
60 #include <mln/io/pgm/save.hh>
61 #include <mln/io/ppm/save.hh>
62 #include <mln/io/magick/save.hh>
64 #include <mln/literal/colors.hh>
72 const std::string& prefix)
76 s << std::setfill ('0') << std::setw (6) << 0;
78 prefix + s.str() + ".png");
79 for (
size_t i = 0; i < rec.decoration().sequence.size(); ++i)
83 mln_psite(I) p = rec.decoration().sequence[i].first;
84 mln_value(I) v = rec.decoration().sequence[i].second;
90 s << std::setfill ('0') << std::setw (6) << i + 1;
92 prefix + s.str() + ".png");
97 void usage(
char* argv[])
99 std::cerr <<
"usage: " << argv[0] <<
" input.pbm output.ppm" << std::endl;
104 int main(
int argc,
char* argv[])
107 Magick::InitializeMagick(*argv);
127 int ww[] = { 00, 11, 0, 11, 0,
188 pw::cst_<unsigned int> > > rec_iz =
195 save_colorized(rec_iz.unmorph_(),
"tmp_iz");