next up previous contents
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 $D(p) \leq t$ 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.


\begin{algorithmic}\AINPUT{ an image $I$\space including and object $O$\space an...
...wap($list1$ ,$list2$ )
\STATE $t \leftarrow t+1$
\ENDWHILE
\end{algorithmic}

next up previous contents
Next: Accuracy Up: Geodesic DT algorithms Previous: Bucket sorting algorithm
Olivier Cuisenaire
1999-10-05