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