26 #ifndef MLN_LABELING_COMPUTE_IMAGE_HH
27 # define MLN_LABELING_COMPUTE_IMAGE_HH
39 # include <mln/core/concept/image.hh>
40 # include <mln/core/concept/accumulator.hh>
41 # include <mln/core/concept/meta_accumulator.hh>
43 # include <mln/labeling/compute.hh>
62 template <
typename A,
typename I,
typename L>
63 mln_ch_value(L, mln_result(A))
65 const Image<I>& input,
66 const Image<L>& labels,
67 const mln_value(L)& nlabels);
80 template <typename A, typename I, typename L>
82 mln_ch_value(L, mln_result(A))
84 const Image<I>& input,
85 const Image<L>& labels,
86 const mln_value(L)& nlabels);
100 template <typename A, typename I, typename L>
102 mln_ch_value(L, mln_meta_accu_result(A, mln_value(I)))
104 const Image<I>& input,
105 const Image<L>& labels,
106 const mln_value(L)& nlabels);
109 # ifndef MLN_INCLUDE_ONLY
114 template <
typename A,
typename L>
117 const Image<L>& labels_,
118 const mln_value(L)& nlabels)
120 const L& labels = exact(labels_);
123 typedef mln_ch_value(L, A) O;
127 mln_piter(L) p(labels.domain());
130 mln_assertion(labels(p) <= nlabels);
131 output(p) = a[labels(p)];
140 template <
typename A,
typename I,
typename L>
142 mln_ch_value(L, mln_result(A))
144 const Image<L>& labels,
145 const mln_value(L)& nlabels)
149 trace::entering(
"labeling::compute_image");
151 mln_ch_value(L, mln_result(A)) output =
158 template <typename A, typename I, typename L>
160 mln_ch_value(L, mln_result(A))
162 const
Image<I>& input,
163 const
Image<L>& labels,
164 const mln_value(L)& nlabels)
166 trace::entering(
"labeling::compute_image");
169 compute(accu, input, labels, nlabels);
171 mln_ch_value(L, mln_result(A)) output =
172 internal::compute_image(res, labels, nlabels);
174 trace::exiting(
"labeling::compute_image");
178 template <
typename A,
typename I,
typename L>
180 mln_ch_value(L, mln_meta_accu_result(A, mln_value(I)))
182 const
Image<I>& input,
183 const
Image<L>& labels,
184 const mln_value(L)& nlabels)
186 trace::entering(
"labeling::compute_image");
188 typedef mln_meta_accu_result(A, mln_value(I)) T;
191 compute(accu, input, labels, nlabels);
193 mln_ch_value(L, T) output =
194 labeling::internal::compute_image(res, labels, nlabels);
196 trace::exiting(
"labeling::compute_image");
200 # endif // ! MLN_INCLUDE_ONLY
206 #endif // ! MLN_LABELING_COMPUTE_IMAGE_HH