• Aucun résultat trouvé

L’utilisation de critères globaux simples, telle la description textuelle ou l’écartement des chaînettes, autorise un accès rapide mais peu discri-minant à la base de données de filigranes. Les requêtes effectuées selon ces critères ne permettront donc pas de retrouver un filigrane possédant une forme particulière.

Deux approches autorisant des requêtes morphologiques sont envisa-geables. La première approche consiste à indexer les filigranes sur la base de critères locaux ou structurels, tels que la forme globale (paragraphe 5-6), ainsi que sur l’arrangement des régions composant le filigrane (posi-tionnement des régions les unes par rapport aux autres). La reconnais-sance d’objets sur la base de telles caractéristiques conduit cependant à des algorithmes de complexité exponentielle en fonction du nombre de ré-gions à mettre en correspondance [109]. Il est nécessaire dans ce cas d’uti-liser des heuristiques fortes pour limiter la croissance de l’espace de solutions, par exemple en tenant compte du nombre et de l’arrangement de régions présentes dans le filigrane modèle.

La seconde approche au problème de la recherche morphologique de filigranes consiste en une mise en correspondance (donc un appariement) global des filigranes. Plutôt que d’effectuer cet appariement par corréla-tion, ce qui serait prohibitif en terme de temps de calcul, un algorithme utilisant la généralisation du principe des tables de hashing a été dévelop-pé. Tous les filigranes sont regroupés dans une seule table bidimension-nelle [115], dans laquelle les points d’accès sont les contours des filigranes eux-mêmes (figure 5.26). Il est alors possible, ne possédant par

Figure 5.26: Construction de la table de hashing bidimensionnelle pour la re-cherche selon la forme des filigranes. (a) Le filigrane d’index 1 est en noir, celui d’index 2 en gris. (b) Valeurs reproduites dans la table de

1

exemple qu’un fragment de filigrane, de retrouver le (ou les) filigranes ayant cette même forme en commun (figure 5.27).

L’algorithme de mise en correspondance apparie un filigrane donné avec tous les autres et fournit une liste ordonnée des filigranes les plus si-milaires au filigrane modèle (figure 5.27). L’algorithme permet donc de retrouver tous les filigranes ayant tout ou partie en commun avec la forme utilisée comme modèle. De plus, le fait qu’une liste ordonnée de filigranes soit produite plutôt qu’une réponse unique permet que soit inclus dans la solution des filigranes présentant des variations de forme et de taille par rapport au modèle.

L’algorithme, présenté à la figure 5.28, recherche la position d’un pattern sur un ensemble de N images. On effectue une convolution entre chacune des images et le pattern. La position où la valeur est la plus élevée est retenue quoiqu’en pratique, plusieurs positions soient généralement retenues pour avoir un résultat comportant plusieurs images (figure 5.27).

Le taux de similarité tk est calculé en prenant le nombre total de pixels en commun entre le filigrane et le pattern. Une version optimisée de cet al-gorithme a été développée permettant de ne parcourir l’image qu’aux po-sitions des contours et non pas sur l’ensemble des pixels du pattern (boucle de la ligne 4 de la figure 5.28).

Le principe de l’algorithme utilisé implique une complexité en temps de calcul linéairement proportionnelle à la taille du filigrane recherché.

Pour une machine standard (Sun SparcStation 10) le temps de recherche est d’environ quatre secondes par filigrane inspecté avec un pattern de re-cherche de 42x48 pixels de taille 1’000x1’000 et une table de hashing

Figure 5.27: Recherche morphologique sur un petit pattern. (a) Motif utilisé comme critère de recherche. (b.1-b.5) Liste ordonnée des filigranes obtenus ayant une partie similaire avec le pattern.

(b.1)) (b.2)) (b.3)) (b.4)) (b.5))

(a))

comportant 3’000 images. Ce temps est excessif pour une recherche aveugle dans l’ensemble de la base de données; il est donc nécessaire au préalable de préciser un sous-ensemble de recherche au moyen des autres critères décrits dans les paragraphes précédents.

Pour résoudre ce problème de temps de calcul, une autre solution a consisté à implémenter cet algorithme de mise en correspondance sur une machine parallèle (IBM 9076 Scalable POWERparallel System, SP 2, comportant 14 processeurs). Grâce à cette architecture, nous avons réduit le temps de calcul à 13 ms par filigrane [81]. Ce gain, d’un facteur 300, permet d’effectuer des recherches de filigranes en un temps inférieur à une minute. Cet algorithme est directement accessible à travers Internet.

Un utilitaire a été spécialement créé permettant d’atteindre directement la machine parallèle SP2 depuis l’interface Web.

La figure 5.27 nous montre un exemple de recherche à partir d’une fleur de lys (figure 5.27.a). La liste ordonnée des filigranes obtenus pré-sente le filigrane le plus similaire à gauche (figure 5.27.b1) et le moins semblable à droite (figure 5.27.b5). Le filigrane le plus similaire est ici ce-lui où le motif a été extrait (similarité de 100%). Sur ces images, le motif utilisé pour la recherche est en surimpression à la position de concordance maximale. D’autres exemples peuvent être trouvés dans l’annexe A-5.

Figure 5.28: Algorithme de mise en correspondance globale entre filigranes, per-mettant de retrouver les K filigranes les plus similaires au filigrane d’entrée P.

Soit la table de Hashing H de taille Xh et Yh contenant F filigranes et le filigrane P à chercher est de taille Xp et Yp. P est binaire (0 ou 1).

1. - tk = 0, mk=0 pour k=1..K

2. - Pour x allant de 0 à Xh-Xp et y de 0 à Yh-Yp 3. - Mf = 0 pour f allant de 1 à F

4. - Pour i allant de 0 à Xp et j de 0 à Yp 5. - Pour tout f=1..F: Mf+=Hf(x+i,y+j).P(i,j) 6. avec Hf(x+i,y+j)=1 si f H(x+i,y+j) 7. - S’il existe un f et un k tel que Mf > tk 8. alors tk = Mf et mk = f

- Les mk contiennent les index des K meilleurs filigranes corres-pondant le mieux à P. Les tk contiennent le nombre de pixels en commun entre le filigrane d’index mk et P.

Cette méthode présente néanmoins les inconvénients suivants:

• la taille de la table de hashing est très importante (8 MB pour 3’000 filigranes) et ne possède pas de structure hiérarchique comme les arbres-R (chapitre 3). Elle doit donc être manipulée dans son en-semble en mémoire centrale, ce qui entraîne des problèmes de swapping;

• l’algorithme doit être exécuté sur une machine spécialisée pour que les temps de recherche soient compatibles avec une utilisation inte-ractive du système;

• le rajout ou la suppression de nouveaux filigranes dans la table de hashing entraîne une reconstruction totale de la table;

• si la grandeur du pattern de recherche est très importante (de la taille du filigrane), les temps de calculs deviennent prohibitifs, même sur un ordinateur parallèle (voir le chapitre 6);

• l’algorithme utilisé est très sensible aux variations de tailles et d’orientations du pattern. Cet algorithme est donc essentiellement utilisé pour retrouver des motifs identiques.

Malgré ces différents problèmes, les multiples essais ont montrés que dans le cas de la recherche de motifs bien précis et de tailles raisonnables (plus petit que 100 par 100 pixels), cet algorithme retrouve effectivement les images possédant le pattern recherché.