iLab Neuromorphic Robotics Toolkit  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
LowPassHelpers.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 #ifndef INCLUDE_NRT_IMAGEPROC_FILTERING_DETAILS_LOWPASSHELPERS_H
37 #define INCLUDE_NRT_IMAGEPROC_FILTERING_DETAILS_LOWPASSHELPERS_H
38 
40 #include <nrt/Core/Image/Image.H>
41 
42 namespace nrt
43 {
44  /*! @defgroup lowpasshelpers Low-Pass Helpers
45 
46  Optimized high performance low-pass filters. In general, you should can just call lowPassX(), lowPassY(), or
47  lowPass(), which will call the right function for you, but you may call these directly if you wish to skip a few
48  'if' statements.
49 
50  \ingroup lowpass
51  \see lowpass */
52 
53  //! Low-pass filter, coeff * [0.25 0.5 0.25], applied in X only
54  /*! \ingroup lowpasshelpers */
55  template <NRT_PROMOTE_PIX_NO_DEFAULT_PROMO>
56  Image<DestType> lowPass3x(Image<PixType> const & src);
57 
58  //! Low-pass filter, coeff * [0.25 0.5 0.25], applied in X only, GenericImage version
59  /*! \ingroup lowpasshelpers */
60  template <typename promo>
61  GenericImage lowPass3x(GenericImage const & src);
62 
63  //! Low-pass filter, coeff * [0.25 0.5 0.25], applied in Y only
64  /*! \ingroup lowpasshelpers */
65  template <NRT_PROMOTE_PIX_NO_DEFAULT_PROMO>
66  Image<DestType> lowPass3y(Image<PixType> const & src);
67 
68  //! Low-pass filter, coeff * [0.25 0.5 0.25], applied in Y only, GenericImage version
69  /*! \ingroup lowpasshelpers */
70  template <typename promo>
71  GenericImage lowPass3y(GenericImage const & src);
72 
73  //! Low-pass filter, coeff * [0.25 0.5 0.25], applied separably in X and Y
74  /*! \ingroup lowpasshelpers */
75  template <NRT_PROMOTE_PIX_NO_DEFAULT_PROMO>
76  Image<DestType> lowPass3(Image<PixType> const & src);
77 
78  //! Low-pass filter, coeff * [0.25 0.5 0.25], applied separably in X and Y, GenericImage version
79  /*! \ingroup lowpasshelpers */
80  template <typename promo>
81  GenericImage lowPass3(GenericImage const & src);
82 
83  //! Low-pass filter, Anderson's 5x5 separable, applied in X
84  /*! \ingroup lowpasshelpers */
85  template <NRT_PROMOTE_PIX_NO_DEFAULT_PROMO>
87 
88  //! Low-pass filter, Anderson's 5x5 separable, applied in Y
89  /*! \ingroup lowpasshelpers */
90  template <NRT_PROMOTE_PIX_NO_DEFAULT_PROMO>
92 
93  //! Low-pass filter, 9x9 separable, applied in X
94  /*! \ingroup lowpasshelpers */
95  template <NRT_PROMOTE_PIX_NO_DEFAULT_PROMO>
97 
98  //! Low-pass filter, 9x9 separable, applied in Y
99  /*! \ingroup lowpasshelpers */
100  template <NRT_PROMOTE_PIX_NO_DEFAULT_PROMO>
102 
103  //! Low-pass filter, 9x9 separable
104  /*! \ingroup lowpasshelpers */
105  template <NRT_PROMOTE_PIX_NO_DEFAULT_PROMO>
106  nrt::Image<DestType> lowPass9(nrt::Image<PixType> const & src, bool const go_x = true, bool const go_y = true);
107 }
108 
109 #endif // INCLUDE_NRT_IMAGEPROC_FILTERING_DETAILS_LOWPASSHELPERS_H
110