iLab Neuromorphic Robotics Toolkit  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ImagePyramidImpl.H
Go to the documentation of this file.
1 /*! @file
2  @author Randolph Voorhies
3  @copyright GNU Public License (GPL v3)
4  @section License
5  @verbatim
6  // ////////////////////////////////////////////////////////////////////////
7  // The iLab Neuromorphic Robotics Toolkit (NRT) //
8  // Copyright 2010-2012 by the University of Southern California (USC) //
9  // and the iLab at USC. //
10  // //
11  // iLab - University of Southern California //
12  // Hedco Neurociences Building, Room HNB-10 //
13  // Los Angeles, Ca 90089-2520 - USA //
14  // //
15  // See http://ilab.usc.edu for information about this project. //
16  // ////////////////////////////////////////////////////////////////////////
17  // This file is part of The iLab Neuromorphic Robotics Toolkit. //
18  // //
19  // The iLab Neuromorphic Robotics Toolkit is free software: you can //
20  // redistribute it and/or modify it under the terms of the GNU General //
21  // Public License as published by the Free Software Foundation, either //
22  // version 3 of the License, or (at your option) any later version. //
23  // //
24  // The iLab Neuromorphic Robotics Toolkit is distributed in the hope //
25  // that it will be useful, but WITHOUT ANY WARRANTY; without even the //
26  // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR //
27  // PURPOSE. See the GNU General Public License for more details. //
28  // //
29  // You should have received a copy of the GNU General Public License //
30  // along with The iLab Neuromorphic Robotics Toolkit. If not, see //
31  // <http://www.gnu.org/licenses/>. //
32  // ////////////////////////////////////////////////////////////////////////
33  @endverbatim */
34 
35 
36 // ######################################################################
37  template <class PixType> inline
39 { }
40 
41 // ######################################################################
42 template <class PixType> inline
44  itsOctaves(octaves)
45 { }
46 
47 // ######################################################################
48 template<class PixType> inline
49 nrt::ImagePyramid<PixType>::ImagePyramid(size_t numOctaves, size_t layersPerOctave) :
50  itsOctaves(std::vector<nrt::ImagePyramid<PixType>::Octave>
51  (numOctaves, std::vector<Image<PixType>>(layersPerOctave)))
52 { }
53 
54 // ######################################################################
55 template<class PixType>
56 template<class OtherPix>
58  itsOctaves(other.numOctaves())
59 {
60  for(size_t i=0; i<other.numOctaves(); ++i)
61  {
62  itsOctaves[i].layers().resize(other.octave(i).numLayers());
63  for(size_t j=0; j<other.octave(i).numLayers(); ++j)
64  itsOctaves[i].layer(j) = Image<PixType>(other.octave(i).layer(j));
65  }
66 }
67 
68 // ######################################################################
69  template <class PixType> inline
71 { return itsOctaves.size(); }
72 
73 // ######################################################################
74 template <class PixType> inline
76 { return itsOctaves.at(o); }
77 
78 // ######################################################################
79 template <class PixType> inline
81 { return itsOctaves.at(o); }
82 
83 // ######################################################################
84 template <class PixType> inline
85 std::vector<typename nrt::ImagePyramid<PixType>::Octave> & nrt::ImagePyramid<PixType>::octaves()
86 { return itsOctaves; }
87 
88 // ######################################################################
89 template <class PixType> inline
90 std::vector<typename nrt::ImagePyramid<PixType>::Octave const> const & nrt::ImagePyramid<PixType>::octaves() const
91 { return itsOctaves; }
92 
93 // ######################################################################
94 template <class PixType> inline
96 { }
97 
98 // ######################################################################
99 template <class PixType> inline
101  itsLayers(layers)
102 { }
103 
104 // ######################################################################
105 template <class PixType> inline
106 nrt::ImagePyramid<PixType>::Octave::Octave(Octave const & other) :
107  itsLayers(other.itsLayers)
108 { }
109 
110 // ######################################################################
111 template <class PixType> inline
113 { return itsLayers.size(); }
114 
115 // ######################################################################
116 template <class PixType> inline
118 { return itsLayers.at(l); }
119 
120 // ######################################################################
121 template <class PixType> inline
123 { return itsLayers.at(l); }
124 
125 // ######################################################################
126 template <class PixType> inline
127 std::vector<nrt::Image<PixType>> & nrt::ImagePyramid<PixType>::Octave::layers()
128 { return itsLayers; }
129 
130 // ######################################################################
131 template <class PixType> inline
132 std::vector<nrt::Image<PixType>> const & nrt::ImagePyramid<PixType>::Octave::layers() const
133 { return itsLayers; }
134