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
00028 #ifndef OLENA_CONVOL_FAST_GAUSSIAN_FILTER_HH__
00029 # define OLENA_CONVOL_FAST_GAUSSIAN_FILTER_HH__
00030
00031 # include <oln/basics.hh>
00032 # include <oln/convert/basics.hh>
00033 # include <ntg/float.hh>
00034 # include <oln/core/behavior.hh>
00042 namespace oln {
00043 namespace convol {
00050 namespace fast {
00051
00052
00053
00074 template <class C, class B, class I, class BE>
00075 typename mute<I, typename convoutput<C, B, oln_value_type(I)>::ret>::ret
00076 gaussian(const convert::abstract::conversion<C, B>& input_conv,
00077 const abstract::image<I>& in, ntg::float_s sigma,
00078 const abstract::behavior<BE> &behavior);
00079
00101 template <class C, class B, class I, class BE>
00102 typename mute<I, typename convoutput<C, B, oln_value_type(I)>::ret>::ret
00103 gaussian_derivative(const convert::abstract::conversion<C, B>& input_conv,
00104 const abstract::image<I>& in, ntg::float_s sigma,
00105 const abstract::behavior<BE> &behavior);
00106
00128 template <class C, class B, class I, class BE>
00129 typename mute<I, typename convoutput<C, B, oln_value_type(I)>::ret>::ret
00130 gaussian_second_derivative(const convert::abstract::conversion<C, B>& input_conv,
00131 const abstract::image<I>& in,
00132 ntg::float_s sigma,
00133 const abstract::behavior<BE> &behavior);
00134
00135
00136
00178 template <class I, class BE> inline
00179 oln_concrete_type(I)
00180 gaussian(const abstract::image<I>& in, ntg::float_s sigma,
00181 const abstract::behavior<BE> &behavior)
00182 { return gaussian(convert::force<oln_value_type(I)>(), in, sigma,
00183 behavior); }
00184
00226 template <class I, class BE> inline
00227 oln_concrete_type(I)
00228 gaussian_derivative(const abstract::image<I>& in, ntg::float_s sigma,
00229 const abstract::behavior<BE> &behavior)
00230 { return gaussian_derivative(convert::force<oln_value_type(I)>(), in, sigma,
00231 behavior); }
00273 template <class I, class BE> inline
00274 oln_concrete_type(I)
00275 gaussian_second_derivative(const abstract::image<I>& in,
00276 ntg::float_s sigma,
00277 const abstract::behavior<BE> &behavior = mirror_behavior<>())
00278 { return gaussian_second_derivative(convert::force<oln_value_type(I)>(),
00279 in, sigma, behavior); }
00280
00281
00324 template <class I> inline
00325 oln_concrete_type(I)
00326 gaussian(const abstract::image<I>& in, ntg::float_s sigma)
00327 { return gaussian(convert::force<oln_value_type(I)>(), in, sigma,
00328 mirror_bhv()); }
00329
00374 template <class I> inline
00375 oln_concrete_type(I)
00376 gaussian_derivative(const abstract::image<I>& in, ntg::float_s sigma)
00377 { return gaussian_derivative(convert::force<oln_value_type(I)>(), in, sigma,
00378 mirror_bhv()); }
00379
00424 template <class I> inline
00425 oln_concrete_type(I)
00426 gaussian_second_derivative(const abstract::image<I>& in, ntg::float_s sigma)
00427 { return gaussian_second_derivative(convert::force<oln_value_type(I)>(), in, sigma,
00428 mirror_bhv()); }
00429 }
00430 }
00431 }
00432
00433 # include <oln/convol/fast_gaussian.hxx>
00434
00435 #endif // OLENA_CONVOL_FAST_GAUSSIAN_FILTER_HH__