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_TRANSFORM_DISTANCE_GEODESIC_HH
00027 # define MLN_TRANSFORM_DISTANCE_GEODESIC_HH
00028
00032
00033 # include <mln/canvas/distance_geodesic.hh>
00034 # include <mln/transform/internal/distance_functor.hh>
00035
00036
00037
00038 namespace mln
00039 {
00040
00041 namespace transform
00042 {
00043
00045 template <typename I, typename N, typename D>
00046 mln_ch_value(I, D)
00047 distance_geodesic(const Image<I>& input, const Neighborhood<N>& nbh, D max);
00048
00049
00050 # ifndef MLN_INCLUDE_ONLY
00051
00052 template <typename I, typename N, typename D>
00053 inline
00054 mln_ch_value(I, D)
00055 distance_geodesic(const Image<I>& input, const Neighborhood<N>& nbh, D max)
00056 {
00057 trace::entering("transform::distance_geodesic");
00058
00059 mln_precondition(exact(input).is_valid());
00060 mln_precondition(exact(nbh).is_valid());
00061
00062 mln_ch_value(I, D) output;
00063 internal::distance_functor<I> f;
00064 output = mln::canvas::distance_geodesic(input, nbh, max, f);
00065
00066 trace::exiting("transform::distance_geodesic");
00067 return output;
00068 }
00069
00070 # endif // ! MLN_INCLUDE_ONLY
00071
00072 }
00073
00074 }
00075
00076
00077 #endif // ! MLN_TRANSFORM_DISTANCE_GEODESIC_HH