last-svn-commit-963-g7c8d8ed mln/morpho/skeleton_constrained.hh: Fix algorithm.

--- milena/ChangeLog | 4 ++++ milena/mln/morpho/skeleton_constrained.hh | 22 +++++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/milena/ChangeLog b/milena/ChangeLog index dff1510..5f2a930 100644 --- a/milena/ChangeLog +++ b/milena/ChangeLog @@ -1,3 +1,7 @@ +2011-09-06 Guillaume Lazzara <z@lrde.epita.fr> + + * mln/morpho/skeleton_constrained.hh: Fix algorithm. + 2011-09-02 Guillaume Lazzara <z@lrde.epita.fr> Regen generated files in Milena. diff --git a/milena/mln/morpho/skeleton_constrained.hh b/milena/mln/morpho/skeleton_constrained.hh index 6197509..3ada77e 100644 --- a/milena/mln/morpho/skeleton_constrained.hh +++ b/milena/mln/morpho/skeleton_constrained.hh @@ -32,6 +32,7 @@ /// Compute a skeleton under constraints. /// /// \todo Add an extension handling policy for the user to set it. +/// \fixme The fast version does not give the exact result! # include <mln/core/concept/image.hh> # include <mln/core/concept/neighborhood.hh> @@ -93,6 +94,8 @@ namespace mln mlc_is(V, bool)::check(); extension::adjust_duplicate(input, nbh); + extension::adjust_duplicate(constraint, nbh); + extension::adjust_duplicate(priority, nbh); // FIXME: Tests! @@ -107,9 +110,9 @@ namespace mln output = duplicate(input); extension::adjust_duplicate(output, nbh); - mln_piter(I) p(output.domain()); + mln_piter(I) p(input.domain()); for_all(p) - if (output(p) == false && + if (input(p) == false && is_simple.check(input, p)) // <-- is_simple.check // p is a simple point of the background. { @@ -120,7 +123,8 @@ namespace mln // Propagation. { P p; - mln_niter(N) n(nbh.foreground(), p); + + mln_niter(N) n(nbh, p); while (! q.is_empty()) { p = q.pop_front(); @@ -189,13 +193,13 @@ namespace mln output = duplicate(input); extension::adjust_fill(output, nbh, false); - mln_pixter(I) p_out(output); - for_all(p_out) - if (p_out.val() == false && - is_simple.check__(input, p_out)) // <-- is_simple.check - // p is a simple point of the background. + mln_pixter(I) p_in(input); + for_all(p_in) + if (p_in.val() == false && + is_simple.check__(input, p_in)) // <-- is_simple.check + // p is a simple point of the background. { - q.push(priority.element(p_out.offset()), p_out); + q.push(priority.element(p_in.offset()), p_in); } } -- 1.7.2.5
participants (1)
-
Guillaume Lazzara