1 #include <mln/core/image/dmorph/extended.hh>
2 #include <mln/core/image/dmorph/image_if.hh>
3 #include <mln/core/routine/extend.hh>
4 #include <mln/core/var.hh>
6 #include <mln/data/transform.hh>
7 #include <mln/data/paste.hh>
9 #include <mln/fun/p2b/big_chess.hh>
11 #include <mln/value/rgb8.hh>
12 #include <mln/literal/colors.hh>
14 #include <tests/data.hh>
16 #include <doc/tools/sample_utils.hh>
21 struct saturate_rgb8 :
public Function_v2v<saturate_rgb8>
29 v2.red() > 50 ? v2.red() -= 50 : v2.red() = 0;
30 v2.green() > 50 ? v2.green() -= 50 : v2.green() = 0;
31 v2.blue() > 50 ? v2.blue() -= 50 : v2.blue() = 0;
43 struct my_ext :
public Function_v2v<my_ext>
50 if ((p.row() + p.col()) % 20)
65 border::thickness = 5;
70 box2d bbox_enlarged = lena.domain();
71 bbox_enlarged.
enlarge(border::thickness);
72 mln_VAR(ima_roi, lena | fun::p2b::big_chess<box2d>(lena.domain(), 10));
79 doc::ppmsave(tmp,
"extend");
84 doc::ppmsave(ext_with_val,
"extend");
87 mln_VAR(ext_with_fun, extended_to(
extend(ima_roi, my_ext()), bbox_enlarged));
89 doc::ppmsave(ext_with_fun,
"extend");
93 mln_VAR(ext_with_ima,
extend(ima_roi, lena));
95 doc::ppmsave(ext_with_ima,
"extend");
100 data::fill((mask | ima_roi.domain()).rw(),
false);
101 mln_VAR(ima_ext,
data::transform(lena | (pw::value(mask) !=
false), saturate_rgb8()));
104 doc::ppmsave(lena,
"extend");