$extrastylesheet
Olena  User documentation 2.1
An Image Processing Platform
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
samples-image2d.cc
1 // Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE)
2 //
3 // This file is part of Olena.
4 //
5 // Olena is free software: you can redistribute it and/or modify it under
6 // the terms of the GNU General Public License as published by the Free
7 // Software Foundation, version 2 of the License.
8 //
9 // Olena is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Olena. If not, see <http://www.gnu.org/licenses/>.
16 //
17 // As a special exception, you may use this file as part of a free
18 // software project without restriction. Specifically, if other files
19 // instantiate templates or use macros or inline functions from this
20 // file, or you compile this file and link it with other files to produce
21 // an executable, this file does not by itself cause the resulting
22 // executable to be covered by the GNU General Public License. This
23 // exception does not however invalidate any other reasons why the
24 // executable file might be covered by the GNU General Public License.
25 
29 
30 #include <mln/io/pbm/load.hh>
31 
32 #include "apps/graph-morpho/morpho.hh"
33 
34 #include "apps/graph-morpho/convert.hh"
35 #include "apps/graph-morpho/debug.hh"
36 
37 #include "apps/data.hh"
38 
39 
40 int main()
41 {
42  using namespace mln;
43 
44  // Remove borders so as to avoid side effects.
46 
47  /* Binary graph-based image with vertices aligned on a discrete 2D grid.
48 
49  Of course, it would have been better, simpler and faster to use a
50  cubical 1-complex here, but they are not yet available (as of
51  2009-09-10). */
52  typedef mln::bin_1complex_image2d ima_t;
53 
54  // ------------------------ //
55  // Dilations and erosions. //
56  // ------------------------ //
57 
58  /* Create an image corresponding to the graph X of the ISMM 2009
59  paper from Jean Cousty et al. */
60  image2d<bool> x = io::pbm::load(MLN_APPS_DIR "/graph-morpho/x.pbm");
61  ::debug::println_graph("x:", x);
62 
63  ::debug::println_graph("dilation_e2v(x):", dilation_e2v(x)) ;
64  ::debug::println_graph("erosion_v2e(x):", erosion_v2e(x));
65 
66  ::debug::println_graph("erosion_e2v(x):", erosion_e2v(x));
67  ::debug::println_graph("dilation_v2e(x):", dilation_v2e(x));
68 
69  ::debug::println_graph("dilation_graph(x):", dilation_graph(x));
70  ::debug::println_graph("erosion_graph(x):", erosion_graph(x));
71 
72  ::debug::println_graph("alpha3(x):", alpha3(x));
73  ::debug::println_graph("beta3(x):", beta3(x));
74 
75  // --------- //
76  // Filters. //
77  // --------- //
78 
79  // Create an image corresponding to the graph Y.
80  image2d<bool> y = io::pbm::load(MLN_APPS_DIR "/graph-morpho/y.pbm");
81  ::debug::println_graph("y:", y);
82 
83  ::debug::println_graph("opening_graph(y):", opening_graph(y));
84  ::debug::println_graph("half_opening_graph(y):", half_opening_graph(y));
85  ::debug::println_graph("beta3(alpha3(y)):", beta3(alpha3(y)));
86 
87  // Create an image corresponding to the graph Z.
88  image2d<bool> z = io::pbm::load(MLN_APPS_DIR "/graph-morpho/z.pbm");
89  ::debug::println_graph("z:", z);
90 
91  ::debug::println_graph("closing_graph(z):", closing_graph(z));
92  ::debug::println_graph("half_closing_graph(z):", half_closing_graph(z));
93  ::debug::println_graph("alpha3(beta3(z)):", alpha3(beta3(z)));
94 }