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
00027 #ifndef MLN_SUBSAMPLING_GAUSSIAN_SUBSAMPLING_HH
00028 # define MLN_SUBSAMPLING_GAUSSIAN_SUBSAMPLING_HH
00029
00033
00034 # include <mln/geom/ncols.hh>
00035 # include <mln/geom/nrows.hh>
00036
00037
00038 # include <mln/linear/gaussian.hh>
00039 # include <mln/subsampling/subsampling.hh>
00040
00041
00042
00043 namespace mln
00044 {
00045
00046 namespace subsampling
00047 {
00048
00050 template <typename I>
00051 inline
00052 mln_concrete(I)
00053 gaussian_subsampling(const Image<I>& input, float sigma,
00054 const mln_dpsite(I)& first_p,
00055 const mln_deduce(I, site, coord)& gap);
00056
00057 # ifndef MLN_INCLUDE_ONLY
00058
00059
00060 template <typename I>
00061 inline
00062 mln_concrete(I)
00063 gaussian_subsampling(const Image<I>& input, float sigma,
00064 const mln_dpsite(I)& first_p,
00065 const mln_deduce(I, site, coord)& gap)
00066 {
00067 trace::entering("subsampling::gaussian_subsampling");
00068 mln_precondition(exact(input).is_valid());
00069
00070 (void) sigma;
00071
00072 mln_concrete(I) temp(exact(input).domain());
00073 mln_concrete(I) output(geom::nrows(input) / gap,
00074 geom::ncols(input) / gap);
00075
00076 linear::gaussian(input, 0.1, temp);
00077 output = impl::subsampling_(exact(temp), first_p, gap);
00078
00079 trace::exiting("subsampling::gaussian_subsampling");
00080 return output;
00081 }
00082
00083 # endif // ! MLN_INCLUDE_ONLY
00084
00085 }
00086
00087 }
00088
00089
00090 #endif // ! MLN_SUBSAMPLING_GAUSSIAN_SUBSAMPLING_HH