$extrastylesheet
Olena  User documentation 2.1
An Image Processing Platform
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
slices_2d.cc
1 // Copyright (C) 2008, 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/debug/slices_2d.hh>
27 #include <mln/debug/iota.hh>
28 
29 
30 int main()
31 {
32  using namespace mln;
33 
34  {
35  point3d p_orig(-1, -2, -3);
36  box3d b(p_orig, p_orig + dpoint3d(4, 1, 2));
37  image3d<int> vol(b); // 5 x 2 x 3
38  debug::iota(vol);
39 
40  // 1 2 3
41  // 4 5 6
42  //
43  // 7 8 9
44  // 10 11 12
45  //
46  // 13 14 15
47  // 16 17 18
48  //
49  // 19 20 21
50  // 22 23 24
51  //
52  // 25 26 27
53  // 28 29 30
54 
55  image2d<int> ima = debug::slices_2d(vol, 2, 3,
56  -1);
57 
58  // 1 2 3 7 8 9
59  // 4 5 6 10 11 12
60  // 13 14 15 19 20 21
61  // 16 17 18 22 23 24
62  // 25 26 27 -1 -1 -1
63  // 28 29 30 -1 -1 -1
64 
65  mln_assertion(ima(ima.domain().pmin()) == 1);
66  mln_assertion(ima(ima.domain().pmax()) == -1);
67 
68  }
69 
70 
71  // Tests with ratio.
72 
73  {
74  int bg = 0;
75  image3d<int> vol(1, 1, 1);
76  image2d<int> ima;
77  float ratio;
78 
79  ratio = 1.f;
80  ima = debug::slices_2d(vol, ratio, bg);
81  mln_assertion(ima.nrows() == 1 && ima.ncols() == 1);
82 
83  ratio = 0.00001f;
84  ima = debug::slices_2d(vol, ratio, bg);
85  mln_assertion(ima.nrows() == 1 && ima.ncols() == 1);
86 
87  ratio = 100000.f;
88  ima = debug::slices_2d(vol, ratio, bg);
89  mln_assertion(ima.nrows() == 1 && ima.ncols() == 1);
90  }
91 
92 }