Next: Accuracy
Up: Geodesic DT algorithms
Previous: Bucket sorting algorithm
Circular propagation algorithm
Unfortunately, the above algorithm isn't always optimal, as
illustrated in section
. The reason for this
is that the order used in the bucket sorting propagation,
distE(dp), may be different from the metric order D(p).
Indeed, the value of dpath isn't exactly m.d after m
dilations by Bd, but may vary because of the discrete shape of
Bd.
Therefore, it is more efficient to replace the bucket sorting
propagation by a variant of Ragnelmam's circular propagation
algorithm [127]. In this method, all pixels in the
propagation front are stored in a single list, but are only
propagated if the value of their distance is lower than a given
threshold. If not, they are left in the list for later processing.
After all pixels in the list have been considered for propagation
with a given threshold, this threshold is incremented and the list
is processed again.
For the Bd-geodesic DT, things are a little more complex.
Indeed, in a non-convex domain,
diste(dp+n) isn't always larger
than
diste(dp). In particular, when turning around a corner of
the domain, it may decrease locally. A single list circular
propagation could then create multiple propagation fronts. To
handle this, we use two lists. list1 contains all pixels for
which
and list2 those for which D(p) > t. The
threshold t is only incremented once list1 is empty. The
algorithm goes as follows.
Algorithm 9
Bd-geodesic DT by circular propagation.
Next: Accuracy
Up: Geodesic DT algorithms
Previous: Bucket sorting algorithm
Olivier Cuisenaire
1999-10-05