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_BINARIZATION_BINARIZATION_HH
00027 # define MLN_BINARIZATION_BINARIZATION_HH
00028
00034
00035 # include <mln/core/concept/function.hh>
00036 # include <mln/data/transform.hh>
00037
00038
00039 namespace mln
00040 {
00041
00042 namespace binarization
00043 {
00044
00052 template <typename I, typename F>
00053 inline
00054 mln_ch_value(I, bool)
00055 binarization(const Image<I>& input, const Function_v2b<F>& fun);
00056
00057
00058 # ifndef MLN_INCLUDE_ONLY
00059
00060 namespace impl
00061 {
00062
00063 template <typename I, typename F>
00064 inline
00065 mln_ch_value(I, bool)
00066 binarization_(const I& input, const Function_v2b<F>& fun)
00067 {
00068 trace::entering("binarization::impl::binarization_");
00069 mln_ch_value(I, bool) output(input.domain());
00070
00071 output = data::transform(input, fun);
00072
00073 trace::exiting("binarization::impl::binarization_");
00074 return output;
00075 }
00076
00077 }
00078
00079
00080
00081
00082
00083 template <typename I, typename F>
00084 inline
00085 mln_ch_value(I, bool)
00086 binarization(const Image<I>& input, const Function_v2b<F>& fun)
00087 {
00088 trace::entering("binarization::binarization");
00089 mln_precondition(exact(input).is_valid());
00090
00091 mln_ch_value(I, bool) output(exact(input).domain());
00092 output = impl::binarization_(exact(input), fun);
00093
00094 trace::exiting("binarization::binarization");
00095 return output;
00096 }
00097
00098 # endif // ! MLN_INCLUDE_ONLY
00099
00100 }
00101
00102 }
00103
00104
00105 #endif // ! MLN_BINARIZATION_BINARIZATION_HH