00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef MLN_SUBSAMPLING_GAUSSIAN_SUBSAMPLING_HH
00027 # define MLN_SUBSAMPLING_GAUSSIAN_SUBSAMPLING_HH
00028
00032
00033 # include <mln/geom/ncols.hh>
00034 # include <mln/geom/nrows.hh>
00035
00036
00037 # include <mln/linear/gaussian.hh>
00038 # include <mln/subsampling/subsampling.hh>
00039
00040
00041
00042 namespace mln
00043 {
00044
00045 namespace subsampling
00046 {
00047
00049 template <typename I>
00050 inline
00051 mln_concrete(I)
00052 gaussian_subsampling(const Image<I>& input, float sigma,
00053 const mln_dpsite(I)& first_p,
00054 const mln_deduce(I, site, coord)& gap);
00055
00056 # ifndef MLN_INCLUDE_ONLY
00057
00058
00059 template <typename I>
00060 inline
00061 mln_concrete(I)
00062 gaussian_subsampling(const Image<I>& input, float sigma,
00063 const mln_dpsite(I)& first_p,
00064 const mln_deduce(I, site, coord)& gap)
00065 {
00066 trace::entering("subsampling::gaussian_subsampling");
00067 mln_precondition(exact(input).is_valid());
00068
00069 mln_concrete(I) temp(exact(input).domain());
00070 mln_concrete(I) output(geom::nrows(input) / gap,
00071 geom::ncols(input) / gap);
00072
00073 linear::gaussian(input, 0.1, temp);
00074 output = impl::subsampling_(exact(temp), first_p, gap);
00075
00076 trace::exiting("subsampling::gaussian_subsampling");
00077 return output;
00078 }
00079
00080 # endif // ! MLN_INCLUDE_ONLY
00081
00082 }
00083
00084 }
00085
00086
00087 #endif // ! MLN_SUBSAMPLING_GAUSSIAN_SUBSAMPLING_HH