00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 #include <mln/core/image/image2d.hh>
00028 #include <mln/win/rectangle2d.hh>
00029 #include <mln/win/octagon2d.hh>
00030 #include <mln/win/diag2d.hh>
00031 #include <mln/win/backdiag2d.hh>
00032 #include <mln/core/alias/window2d.hh>
00033 
00034 #include <mln/io/pgm/load.hh>
00035 #include <mln/io/pgm/save.hh>
00036 
00037 #include <mln/value/int_u8.hh>
00038 #include <mln/data/fill.hh>
00039 #include <mln/morpho/dilation.hh>
00040 
00041 #include <mln/pw/value.hh>
00042 #include <mln/pw/cst.hh>
00043 #include <mln/fun/ops.hh>
00044 
00045 #include <mln/core/alias/neighb2d.hh>
00046 
00047   
00048 
00049 
00050 #if 0
00051 #  include <mln/neighb/image.hh>
00052 #endif
00053 
00054 #include "tests/data.hh"
00055 
00056 
00057 int main()
00058 {
00059   using namespace mln;
00060   using value::int_u8;
00061 
00062   
00063   border::thickness = 66;
00064 
00065   image2d<int_u8> lena;
00066   io::pgm::load(lena, MLN_IMG_DIR "/lena.pgm");
00067   win::rectangle2d rec(5, 3);
00068 
00069   { 
00070     image2d<int_u8> out = morpho::dilation(lena, rec);
00071     io::pgm::save(out, "dilation-out1.pgm");
00072   }
00073 
00074   {
00075     win::octagon2d oct(7);
00076     image2d<int_u8> out = morpho::dilation(lena, oct);
00077     io::pgm::save(out, "dilation-out2.pgm");
00078   }
00079 
00080   {
00081     image2d<bool> bin(lena.domain());
00082     data::fill(bin, pw::value(lena) > pw::cst(127u));
00083     image2d<bool> out = morpho::dilation(bin, rec);
00084 
00085     image2d<int_u8> test(lena.domain());
00086     image2d<int_u8>::fwd_piter p(lena.domain());
00087     for_all(p)
00088       test(p) = out(p) ? 255 : 0;
00089     io::pgm::save(test, "dilation-out3.pgm");
00090   }
00091 
00092   
00093 
00094 
00095 #if 0
00096   {
00097     image2d<int_u8> out = morpho::dilation(lena + c4());
00098     io::pgm::save(out, "dilation-out4.pgm");
00099   }
00100 
00101   {
00102     image2d<int_u8> out = morpho::dilation(lena + c8());
00103     io::pgm::save(out, "dilation-out5.pgm");
00104   }
00105 #endif
00106 }