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_GRAPH_TO_NEIGHB_HH
00027 # define MLN_GRAPH_TO_NEIGHB_HH
00028 
00032 
00033 # include <mln/core/concept/image.hh>
00034 # include <mln/core/image/graph_elt_neighborhood_if.hh>
00035 
00036 namespace mln
00037 {
00038 
00039   namespace graph
00040   {
00041 
00048     template <typename I, typename M>
00049     graph_elt_neighborhood_if<mln_graph(I), mln_domain(I), M>
00050     to_neighb(const Image<I>& graph_image_, const Image<M>& graph_mask_image_);
00051 
00052 
00053 # ifndef MLN_INCLUDE_ONLY
00054 
00055     template <typename I, typename M>
00056     graph_elt_neighborhood_if<mln_graph(I), mln_domain(I), M>
00057     to_neighb(const Image<I>& graph_image_, const Image<M>& graph_mask_image_)
00058     {
00059       trace::entering("graph::to_neighb");
00060 
00061       const I& graph_image = exact(graph_image_);
00062       const M& graph_mask_image = exact(graph_mask_image_);
00063 
00064       mln_precondition(graph_image.is_valid());
00065       mln_precondition(graph_mask_image.is_valid());
00066       mlc_equal(mln_value(M),bool)::check();
00067 
00068       typedef graph_elt_neighborhood_if<mln_graph(I), mln_domain(I), M> nbh_t;
00069       nbh_t nbh(graph_mask_image);
00070 
00071       trace::exiting("graph::to_neighb");
00072       return nbh;
00073     }
00074 
00075 # endif // ! MLN_INCLUDE_ONLY
00076 
00077 
00078   } 
00079 
00080 } 
00081 
00082 #endif // ! MLN_GRAPH_TO_NEIGHB_HH