4/27
1. Création de l’algorithme de Borgefors
1.1 « Théorie préliminaire »
1.1.1 Théorie sur la notion de distance
Soit d une distance (euclidienne ou de chanfrein) sur le plan discret Z2. Etant donnés un pixel
p et un ensemble X de pixels de Z2, pour un rayon r > 0, il n'y a qu'un nombre fini de pixels x
de X tels que d(p,x) < r, donc en prenant parmi ceux-ci le plus proche de p, on obtient un pixel
x de X à distance minimum de p. On définit ainsi la distance d(p,X) de p à X comme le
minimum de la distance de p aux pixels de X :
d(p,X) = min { d(p,x) | x dans X }
On a d(p,X) = 0 si et seulement si p appartient à X, et pour tout pixel q, d(p,X) est inférieur ou
égal à d(p,q) + d(q,X).
Soient S une partie de Z2 et R une partie de S. La transformée de distance de R dans S est la
fonction TFDR,S définie sur S et à valeurs non-négatives, donnée par :
TFDR,S(p) = d(p,R) pour tout pixel p de S.
L'ensemble R est appelé marqueur, tandis que l'ensemble S est appelé domaine ou masque.
Notons que certains auteurs définissent la transformée de distance de R comme la fonction
associant à tout pixel p sa distance au complémentaire S \ R de R dans S.
L'approche naïve pour calculer la transformée de distance serait d'évaluer d(p,q) pour tout p
dans S et tout q dans R, et d'en déduire d(p,R), ce qui donnerait une complexité
proportionnelle à |S| × |R|. Lorsque le domaine est une grille rectangulaire et la distance est
une distance de chanfrein satisfaisant les conditions de Montanari, il existe un algorithme
séquentiel calculant la transformée de distance au terme de deux balayages du domaine. Sa
complexité est proportionnelle à |S| × m, où m est la taille du masque de chanfrein. Il s'appuie
sur deux concepts, l'ordre de balayage de la grille formant le domaine, et la décomposition du
masque de chanfrein en masque antérieur et masque postérieur.
1.1.2 Conclusion pratique sur la notion de distance
Lorsque l’on calcul une image de distance, on part d’une image binaire (NB) et on veut
obtenir une image de distance où chaque pixel du fond prendra la valeur minimale de la
distance au plus proche objet (chaque pixel objet étant à 0). Or un problème se pose puisque
l’on ne connaît pas la résolution de codage du pixel de l’image avant le calcul (et les valeurs
de pixel peuvent facilement dépasser 256 niveaux !). On prendra donc pour représenter
l’image de distance un type Niveau De Gris 32 bits codé en non-signé (NDG32), on obtiendra
ainsi une résolution de distances de 4 294 967 296.