Participants : Luc Robert, Grégoire Malandain
Les Diagrammes
de Décision Binaires ( BDD) permettent de
manipuler de manière efficace des fonctions logiques de variables
booléennes. Nous avons étudié diverses applications des
BDD à la représentation et au traitement d'images
binaires.
Dans une première application, nous représentons une image binaire (dont les pixels valent 0 ou 1) par le BDD de la fonction logique dont les variables sont les bits des coordonnées des pixels, et qui retourne vrai si et seulement si la valeur du pixel dans l'image est 1.
Cette représentation possède de multiples avantages : Tout
d'abord, elle permet de manipuler indifféremment des images de
dimension arbitraire. Ensuite, elle est très compacte : Pour un
ordre particulier des variables, le BDD est isomorphe à
un k-d tree où on aurait identifié et fusionné
tous les sous-arbres équivalents ; en permutant les variables
dans le BDD, on peut encore le réduire. Enfin, en
travaillant directement sur les BDD, on peut effectuer
de manière très efficace un grand nombre d'opérations de
traitement d'image (comptage des pixels à 1, opérations logiques
sur les images incluant les applications classiques de
morphologie mathématique : érosion-dilation, ouverture,...).
Une seconde application est la génération de code efficace pour les algorithmes de traitement d'images binaires à base de masques (ceci inclut les opérations de morphologie et de topologie discrète sur les images). Nous avons traité le cas particulier de l'amincissement 3D : en chaque voxel, une fonction logique complexe des valeurs aux 26 voxels voisins est évaluée, afin de savoir si le voxel doit ou non être conservé. En pré-calculant le BDD correspondant à cette fonction et en le compilant sous forme de code C, nous obtenons une nouvelle fonction équivalente à la précédente, et qui s'exécute en moyenne 100 fois plus vite.