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

samples-complex1d.cc

00001 // Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE)
00002 //
00003 // This file is part of Olena.
00004 //
00005 // Olena is free software: you can redistribute it and/or modify it under
00006 // the terms of the GNU General Public License as published by the Free
00007 // Software Foundation, version 2 of the License.
00008 //
00009 // Olena is distributed in the hope that it will be useful,
00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012 // General Public License for more details.
00013 //
00014 // You should have received a copy of the GNU General Public License
00015 // along with Olena.  If not, see <http://www.gnu.org/licenses/>.
00016 //
00017 // As a special exception, you may use this file as part of a free
00018 // software project without restriction.  Specifically, if other files
00019 // instantiate templates or use macros or inline functions from this
00020 // file, or you compile this file and link it with other files to produce
00021 // an executable, this file does not by itself cause the resulting
00022 // executable to be covered by the GNU General Public License.  This
00023 // exception does not however invalidate any other reasons why the
00024 // executable file might be covered by the GNU General Public License.
00025 
00032 
00033 #include <mln/io/pbm/load.hh>
00034 
00035 #include "apps/graph-morpho/morpho.hh"
00036 
00037 #include "apps/graph-morpho/convert.hh"
00038 #include "apps/graph-morpho/debug.hh"
00039 
00040 #include "apps/data.hh"
00041 
00042 
00043 int main()
00044 {
00045   using namespace mln;
00046 
00047   /* Binary graph-based image with vertices aligned on a discrete 2D grid.
00048 
00049      Of course, it would have been better, simpler and faster to use a
00050      cubical 1-complex here, but they are not yet available (as of
00051      2009-09-10).  */
00052   typedef mln::bin_1complex_image2d ima_t;
00053 
00054   // ------------------------ //
00055   // Dilations and erosions.  //
00056   // ------------------------ //
00057 
00058   /* Create an image corresponding to the graph X of the ISMM 2009
00059      paper from Jean Cousty et al.  */
00060   image2d<bool> x_pbm = io::pbm::load(MLN_APPS_DIR "/graph-morpho/x.pbm");
00061   ima_t x = ::convert::to_complex_image(x_pbm);
00062   ::debug::println_graph("x:", x);
00063   
00064   ::debug::println_graph("dilation_e2v(x):", dilation_e2v(x));
00065   ::debug::println_graph("erosion_v2e(x):",  erosion_v2e(x));
00066 
00067   ::debug::println_graph("erosion_e2v(x):",  erosion_e2v(x));
00068   ::debug::println_graph("dilation_v2e(x):", dilation_v2e(x));
00069 
00070   ::debug::println_graph("dilation_graph(x):", dilation_graph(x));
00071   ::debug::println_graph("erosion_graph(x):",  erosion_graph(x));
00072 
00073   ::debug::println_graph("alpha3(x):", alpha3(x));
00074   ::debug::println_graph("beta3(x):",  beta3(x));
00075 
00076   // --------- //
00077   // Filters.  //
00078   // --------- //
00079 
00080   // Create an image corresponding to the graph Y.
00081   image2d<bool> y_pbm = io::pbm::load(MLN_APPS_DIR "/graph-morpho/y.pbm");
00082   ima_t y = ::convert::to_complex_image(y_pbm);
00083   ::debug::println_graph("y:", y);
00084 
00085   ::debug::println_graph("opening_graph(y):",      opening_graph(y));
00086   ::debug::println_graph("half_opening_graph(y):", half_opening_graph(y));
00087   ::debug::println_graph("beta3(alpha3(y)):",      beta3(alpha3(y)));
00088 
00089   // Create an image corresponding to the graph Z.
00090   image2d<bool> z_pbm = io::pbm::load(MLN_APPS_DIR "/graph-morpho/z.pbm");
00091   ima_t z = ::convert::to_complex_image(z_pbm);
00092   ::debug::println_graph("z:", z);
00093 
00094   ::debug::println_graph("closing_graph(z):",      closing_graph(z));
00095   ::debug::println_graph("half_closing_graph(z):", half_closing_graph(z));
00096   ::debug::println_graph("alpha3(beta3(z)):",      alpha3(beta3(z)));
00097 }

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