1 #include <mln/data/convert.hh>
2 #include <mln/morpho/elementary/laplacian.hh>
3 #include <mln/linear/gaussian.hh>
4 #include <mln/io/pgm/all.hh>
5 #include <mln/value/int_u8.hh>
6 #include <mln/arith/minus.hh>
7 #include <mln/morpho/contrast.hh>
8 #include <mln/core/alias/neighb2d.hh>
9 #include <mln/win/disk2d.hh>
11 int main(
int argc,
char *argv[])
17 std::cout << argv[0] <<
" <in.pgm> <out.pgm> <threshold>" << std::endl;
30 static const bool vals[] = { 1, 1, 1, 1, 1,
35 convert::from_to(vals, nbh);
38 image2d<int> laplace = morpho::elementary::laplacian(input, nbh);
42 mln_piter_(I) p(output.domain());
44 output(p) = math::min((
unsigned)input(p) + laplace(p), 255u);
46 I contrast = morpho::contrast(output, win::
disk2d(5));
48 io::pgm::save(contrast, "debug_contrast.pgm");
78 io::pgm::save(
data::convert(V(), output), argv[2]);