iLab Neuromorphic Robotics Toolkit  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RangeOps.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_MATH_RANGEOPS_H
37 #define INCLUDE_NRT_IMAGEPROC_MATH_RANGEOPS_H
38 
41 #include <nrt/Core/Typing/Macros.H>
42 #include <nrt/Core/Typing/Range.H>
43 
44 namespace nrt
45 {
46 
47  /*! @defgroup rangeops Image Range Manipulations
48  These methods are used to manipulate the ranges of values stored in Images, e.g. normalization and rectification.
49  \ingroup imagemath */
50 
51  /*! @{ */ // **********************************************************************
52 
53  //! Progressive attenuation of borders by "size" pixels
54  template <class PixType>
55  void inplaceAttenuateBorders(Image<PixType>& a, int size);
56 
57  //! Half-wave rectify an Image.
58  /*! This is equivalent to perform pixel = std::max(0, pixel) on each pixel of the Image. */
59  template <class PixType>
60  void inplaceRectify(Image<PixType> & dst);
61 
62  //! Normalize pixel values to range [mi .. ma]
63  template <class PixType>
64  void inplaceNormalize(Image<PixType> & dst, PixType const & mi, PixType const & ma);
65 
66  //! Normalize pixel values to range [mi .. ma], also get old range back into [oldmi.. oldma]
67  template <class PixType>
68  void inplaceNormalize(Image<PixType> & dst, PixType const & mi, PixType const & ma, PixType & oldmi, PixType & oldma);
69 
70  //! Normalize pixel values to range [mi .. ma]
71  template <NRT_PROMOTE_PIX(void)>
72  Image<DestType> const normalize(Image<PixType> const src, DestType const & mi, DestType const & ma);
73 
74  //! Normalize pixel values to range [mi .. ma], also get old range back into [oldmi.. oldma]
75  template <NRT_PROMOTE_PIX(void)>
76  Image<DestType> normalize(Image<PixType> const src, DestType const & mi, DestType const & ma,
77  PixType & oldmi, PixType & oldma);
78 
79  //! Normalize pixel values to range [mi .. ma], GenericImage version
80  template <class promo = void>
81  GenericImage const normalize(GenericImage const src, double const & mi, double const & ma);
82 
83  //! Normalize pixel values to zero mean, unit variance (ZMUV)
84  template <NRT_PROMOTE_PIX(float)>
85  Image<DestType> const zmuv(Image<PixType> const src);
86 
87  //! Normalize pixel values to zero mean, unit variance (ZMUV)
88  template <class PixType>
89  void inplaceZmuv(Image<PixType> & src);
90 
91  /*! @} */ // **********************************************************************
92 
93 } // end namespace nrt
94 
95 //! Include implementation details
97 
98 #endif // INCLUDE_NRT_IMAGEPROC_MATH_RANGEOPS_H