$extrastylesheet
Olena  User documentation 2.1
An Image Processing Platform
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
opening/area_on_vertices.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 
26 #include <mln/core/image/edge_image.hh>
27 #include <mln/morpho/opening/area_on_vertices.hh>
28 #include <mln/util/graph.hh>
29 #include <mln/fun/i2v/array.hh>
30 
31 #include "tests/data.hh"
32 
33 
34 const unsigned result[] = { 100, 101, 101 };
35 
36 int main()
37 {
38  using namespace mln;
39 
40  util::graph gr;
41  gr.add_vertices(5);
42  gr.add_edge(1, 3);
43  gr.add_edge(1, 2);
44  gr.add_edge(2 ,4);
45 
47  for (unsigned i = 0; i < 5; ++i)
48  f(i) = 100 + i;
49  typedef edge_image<void,unsigned> e_ima_t;
50  e_ima_t e_ima(gr, f);
51  typedef e_ima_t::nbh_t nbh_t;
52  nbh_t nbh;
53 
54  e_ima_t clo = morpho::opening::area_on_vertices(e_ima, nbh, 3);
55 
56  unsigned i = 0;
57  mln_piter_(e_ima_t) p(clo.domain());
58  for_all(p)
59  mln_assertion(result[i++] == clo(p));
60 }