Lorsque deux segments remplissent les conditions, ils sont fusionnés en un seul par composition ou assimilation (voir figure 4.31).
Le choix des segments à analyser lors de chaque itération est guidé par la chronologie du dessin, c'est à dire que les segments sont étudiés du plus ancien au plus récent. Lorsque deux d'entre eux sont fusionnés, le segment résultant prend la place du plus ancien dans la chronologie. Cette approche se justifie par les résultats de notre étude qui ont montré que les traits (et donc les segments qui en découlent) sont tracés par groupes, dans une même phase. Ainsi, les fusions les plus nombreuses concernent des segments proches chronologiquement. Toutefois, des phases ultérieures de modification et de révision pourront aussi entraîner des fusions, c'est pourquoi chaque segment est tout de même comparé à tous les autres. Bien que pouvant paraître coûteuse au premier abord, cette comparaison est en fait relativement rapide, une majorité de candidats étant rapidement éliminés par le premier critère positionnel (appartenance à la même zone de dessin).
Bien que l'implémentation de cet algorithme soit réalisée à partir d'opération simples et optimisées par notre implémentation globale du système (boites englobantes et distances en cache, comparaisons, etc.), il convient d'anticiper d'éventuelles remarques quand à sa complexité. En effet, le principe de parcourir tous les segments pour les comparer à tous les autres conduit à réaliser des boucles imbriquées, donnant à notre algorithme une complexité d'ordre N2 (la taille de la donnée est le nombre de segments). Ce n'est toutefois pas une limite, étant donné que le nombre de segments manipulé pour chaque dessin reste tout de même dans des proportions très faibles. Nous en voulons pour preuve que le total des 24 dessins complets de notre étude formaient un corpus d'environ 10000 traits. Même si chacun d'eux est décomposé en deux segments, lors de la segmentation, nous atteignons une moyenne d'environ 900 segments par dessin, ce qui ne posera pas de problème de complexité algorithmique. De plus, le traitement de détection des phases permet déjà de filtrer un certain nombre de segments qui ne seront pas transmis à cet algorithme et enfin notre implémentation sous forme de processus indépendants garantit que l'algorithme ne bloquera pas l'interaction, même en cas de traitements lourds.
Un point d'étude plus intéressant concerne par contre le comportement «local» de cet algorithme, que nous avons déjà évoqué rapidement dans le chapitre 5, page . En effet, la méthode proposée est basée sur des heuristiques qui qualifient bien les cas possibles et les singularités présents dans le domaine d'application de nos travaux. Mais, comme toute méthode de ce type, elle pose le problème du comportement de l'algorithme au voisinage très proche des seuils choisis. C'est pourquoi nous envisageons de combiner ces heuristiques à une étude plus globale du graphe 2D formé par les points et segments du dessin, une étude topologique.
|
Nous avons commencé à explorer une telle méthode, et identifié déjà trois cas, représentés
dans la figure A.4. Le cas A, par exemple, permet d'identifier des segments issus de
traits que l'on pourrait qualifier de révision (graphes composés de seulement deux sommets et
une arrête). Dés lors, nos heuristiques positionnelles peuvent être appliquées pour déterminer à
quel segment le fusionner. Le cas B peut être identifié par une recherche de pendants (sommets de
degré 1) dans le graphe global afin de les fusionner (en utilisant nos heuristiques) pour former des
cycles élémentaires. Cette méthode repose toutefois sur l'hypothèse que le dessin final va être
représenté par un graphe planaire où tout sommet est dans un cycle (chaque cycle étant une
face). Bien que ce soit le cas à la fin du dessin de l'enveloppe du bâtiment, cette
hypothèse n'est pas vérifiée en début de dessin (tous les traits de l'enveloppe n'ont pas été
dessinés, les faces ne sont pas toutes entièrement formées).
Il faudra alors envisager de retarder l'interprétation, ou de la décomposer en étapes. Il parait
concevable d'utiliser dans ce but le résultat de notre étude montrant que la majorité des traits
principaux primaires (l'enveloppe de la forme) sont tracés lors de la première phase
constructive. Lors de cette phase, seules des fusions de points seraient prises en compte afin de
former un premier graphe qui pourrait être révisé par la suite par fusions de segments comme proposé
précédemment. Bien que n'étant plus vraiment «temps réel», cette approche permettrait une
vision plus globale de l'interprétation, pouvant éviter des choix trop hâtifs grâce à une
considération plus globale du problème.
Toujours dans cette optique de considérer le problème d'un point de vue global, il nous semble important d'envisager la mise en place de mécanismes de retour arrière sur les traitements, afin de pouvoir remettre en question l'interprétation et la corriger. Nous avons observé que le comportement des filtres était déterministe, dans le sens où l'interprétation des mêmes traits dans les mêmes conditions (chronologie, machine utilisée et ressources disponibles) sera toujours la même. Par contre, rien ne garantit qu'effectuer un traitement avant l'autre donnera le même résultat (fusionner deux points avant deux segments, par exemple). C'est pourquoi il nous semble important, pour améliorer ces traitements et leur robustesse, d'étudier ces points et de mettre en place ces mécanismes de retour arrièreA.6.
stuf