iLab Neuromorphic Robotics Toolkit  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Kernels.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_KERNELS_H
37 #define INCLUDE_NRT_IMAGEPROC_FILTERING_KERNELS_H
38 
39 #include <nrt/Core/Image/Image.H>
41 
42 namespace nrt
43 {
44  /*! \defgroup imagekernels Convolution Kernels
45 
46  Functions to define kernels that can be used to filter images.
47 
48  \ingroup imagefiltering
49  \see imagefiltering */
50 
51  /*! @{ */ // **********************************************************************
52 
53  //! Create a 1D binomial distribution kernel (shape of size-by-1).
54  /*! The binomial kernel is often used for \ref lowpass "low pass filtering", as it offers a very good approximation to
55  a Gaussian and has nice signal processing properties. The kernels returned by this method are normalized to sum to
56  1.
57  \note While this method takes a template parameter for the numerical type, all internal operations are done in
58  double precision. */
59  template<class T>
60  Image<PixGray<T> > binomialKernel(int const size);
61 
62  //! Create a Gabor kernel with a a given scale and angle (in radians)
63  /*! A Gabor kernel is a 2D Gaussian modulated by rotated sinusoidal plane. Filtering with a Gabor will create result
64  in a map with high response to edges which are oriented near the same angle as the kernel.
65 
66  \see gaborKernel(const float stddev, const float period, const float phase, const float theta, const float bg,
67  const float ampl) */
68  template <class T>
69  Image<PixGray<T> > gaborKernel(float const scale, float const theta);
70 
71  //! Create a Gabor kernel
72  /*! \see gaborKernel(float const scale, float const theta) */
73  template <class T>
74  Image<PixGray<T> > gaborKernel(const float stddev, const float period, const float phase, const float theta,
75  const float bg = 0.0f, const float ampl = 1.0f);
76 
77  //! Create a Morphological kernel with a given size
78  /*! A Morphological kernel is a 2D binary image. */
79  template <class T>
80  Image<PixGray<T> > morphologyKernel(int size, bool const disk);
81 
82  /*! @} */ // **********************************************************************
83 }
84 
86 
87 #endif // INCLUDE_NRT_IMAGEPROC_FILTERING_KERNELS_H