• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List

dilation.cc

00001 // Copyright (C) 2007, 2008, 2009, 2010 EPITA Research and Development
00002 // Laboratory (LRDE)
00003 //
00004 // This file is part of Olena.
00005 //
00006 // Olena is free software: you can redistribute it and/or modify it under
00007 // the terms of the GNU General Public License as published by the Free
00008 // Software Foundation, version 2 of the License.
00009 //
00010 // Olena is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013 // General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU General Public License
00016 // along with Olena.  If not, see <http://www.gnu.org/licenses/>.
00017 //
00018 // As a special exception, you may use this file as part of a free
00019 // software project without restriction.  Specifically, if other files
00020 // instantiate templates or use macros or inline functions from this
00021 // file, or you compile this file and link it with other files to produce
00022 // an executable, this file does not by itself cause the resulting
00023 // executable to be covered by the GNU General Public License.  This
00024 // exception does not however invalidate any other reasons why the
00025 // executable file might be covered by the GNU General Public License.
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   /* FIXME: Re-enable these tests for Olena 1.1, when associated
00048      neighborhoods (i.e., the neighb::image morpher) are supported and
00049      shipped.  */
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   // FIXME: Do we really need such a high value?
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   /* FIXME: Re-enable these tests for Olena 1.1, when associated
00093      neighborhoods (i.e., the neighb::image morpher) are supported and
00094      shipped.  */
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 }

Generated on Tue Oct 4 2011 15:23:41 for Milena (Olena) by  doxygen 1.7.1