Automatique spotting des logos dans les images de documents
Etudiant :
Zakaria MELK
Soutenance de mi-parcours
Encadrants :
Muhammad Muzzamil Luqman
Jean-Yves Ramel
Dimosthenis Karatzas
PFE 2011-2012
ID : 5
Présentation du projet
Objectifs
Architecture du système
Description de l’existant
Avancement du projet
Planning
Modules développés
2
Plan
3
Présentation du projet
Tobacco800 database
ObjectifsAutomatique spotting des logos dans les images de documents
• Encapsulation des graphes (Graph Embedding )
• Système d’indexation des images de documents• Tabacco800 : - 1290 images de documents
- Complexité réelle
4
Objectif 1
• Une méthode pour transformer, des graphes attribués, en vecteurs
numériques Recherche de sous-graphe par encapsulation explicite de graphes : Application à la localisation de contenu dans
les images de documents graphiques, Luqman, M., Brouard, T., Ramel, J., & Llados, J. (2011).
Fuzzy Multilevel Graph Embedding, , Luqman, M., Ramel, J., Llados, J. & Brouard, T.. (2011).
Graph embedding
10 9 1,97 0,03 1 0 0 3 0 0 0 0 3 0 0 0 3 0 0 0 3 0 2 1 0 0 0 0 1 0 2 0 2,31 0,69 0 0 3 0 0 0 1 1 1 0 0 0 3 0 0 2 1
5
Objectif 2
Mode
« Apprentissage »
Mode
« Spotting»
Base de données
Résultats
Système d’indexation des images de documentsArchitecture fonctionnelle
Logo
6
Mode
« Apprentissage »
Base de données
Mode Apprentissage « Learning »
Entrée
Une collection d'images de documents
Prétraitement des images
Un ensemble d'opérations pour améliorer la qualité des images initiales (ex: Binarisation, segmentation, ...)
Vectorisation
La décomposition de l'image en un ensemble d'objets énumérés (vecteurs, courbe, arcs, ...)
Construction de graphe
Une représentation des objets repérés lors de la vectorisation sous forme d'un graphe évalué (ajout des
attributs des nœuds et des arcs)
Prétraitement des graphes
L'ajout des attributs de vraissemblance et de l'homogéinitélocal au graphe
Extraction des cliques (sous-graphes de 2 noeuds)
Encapsulation explicite des graphes dans des vecteurs numériques (VFCs)
Affecter un vecteur, appelé Vecteur Flou de Caractéristiques, à chaque clique d'ordre 2 (les vecteurs doivent être de même
dimension pour toutes les cliques du même graphe)
Groupement des VFCs en classes (Clustering)
un algo de clustering
Sortie
La mise en Œuvre d'un
classificateur
La création d'un index
•Image vs graphe vs cliques vs (vecteurs + classes)
7
Mode SpottingRésultats
Logo
Entrée
Un logo sélectionné dans l'image de document
Prétraitement de l'image sélectionnée
Un ensemble d'opérations pour améliorer la qualité du logo sélectionné (ex: Binarisation, segmentation, ...)
Vectorisation
La décomposition du logo en un ensemble d'objets énumérés (vecteurs, courbe, arcs, ...)
Construction de graphe
Une représentation des objets repérés lors de la vectorisation sous forme d'un graphe évalué (ajout des attributs des noeuds
et des arcs)
Prétraitement du graphe
L'ajout des attributs de vraissemblance et de l'homogéinité local au graphe
Extraction des cliques (sous-graphes de 2 noeuds)
Encapsulation explicite des graphes dans des vecteurs numériques (VFCs)
Affecter un vecteur, appelé Vecteur Flou de Caractéristiques, à chaque clique d'ordre 2 (les vecteurs doivent être de même dimension pour
toutes les cliques du même graphe)
Classification des VFCs
Classifier les VFCs selon les classes déjà calculées lors de la phase d'apprentissage en utilisant un classificateur
Recherche dans l'indexcalculer le score des combinaisons des cliques correspondant à la requête . Un score de 1 signifie que le sous-graphe trouvé correspond à 100% à
l'image requête
Sortie
Localiser le sous-graphe requête dans les graphes résultat (Colorier la zone recherchée dans les images en sortie)
8 8
Présentation du projet
Description de l’existant
VectoGraph
Un logiciel en C++ développé par [J.Y.Ramel RFAI, LI] permettant à partir d’une image « bmp
monochrome » de donner une représentation sous forme d’un graphe
Weka
Un logiciel développé en Java qui offre un contenu scientifique important surtout pour les
chercheurs dans le domaine de l’apprentissage automatique.
11
ObjectifsAutomatique spotting des logos dans les images de documents
• encapsulation des graphes (Graph Embedding ) : Une
méthode pour transformer, des graphes attribués, en
vecteurs numériques
10 9 1,97 0,03 1 0 0 3 0 0 0 0 3 0 0 0 3 0 0 0 3 0 2 1 0 0 0 0 1 0 2 0 2,31 0,69 0 0 3 0 0 0 1 1 1 0 0 0 3 0 0 2 1
• Système d’indexation des images de documents
12
Modules développés
…
AG1 = (V1,E1,Uv,UE)
AG2 = (V2,E2,Uv,UE)
AG3 = (V3,E3,Uv,UE)
…
AGe = (Ve,Ee,Uv,UE)
AGm = (Vm,Em,Uv,UE)
Doc1.gxl
Doc2.gxl
DocE.gxl
DocM.gxl
• Parseur GXL
(GXL java API)
• Calcul de degré
des nœuds
• Ajout de la
ressemblance des
arcs pour les
nœuds
• Ajout de la
ressemblance des
nœuds pour les
arcs
• Fonctions pour le
calcul de la
ressemblance
• …
La classe : Graph
Graph.java
Entrée Sortie
13
Modules développés
listNumNodesAttributes
listNumEdgesAttributes
listSymbNodesAttributes
listSymbEdgesAttributes
• Lecture des
graphes contenus
dans un répertoire
• Ajout de la
ressemblance
pour chaque
graph
• Construire pour
chaque attribut la
liste de ses
valeurs dans tous
les graphes
• …
La classe : PreLearning
PreLearning.java
Entrée Sortie
Graph.java<<use>>
directoryPath
14
Modules développés
• getInitCrispInterval
• getFuzzyTrapzInterval
• Utilisation de la
librairie « nrc.fuzzy »
• …
La classe : Learning
Learning.java
Entrée SortielistNumNodesAttributes
listNumEdgesAttributes
listSymbNodesAttributes
listSymbEdgesAttributes
listNodesFuzzyIntervals
listEdgesFuzzyIntervals
listNodesCrispIntervals
listEdgesCrispIntervals
15
Modules développés
La classe : GraphEmbedded
GraphEmbedded.java
Entrée Sortie
listNodesFuzzyIntervals
listEdgesFuzzyIntervals
listNodesCrispIntervals
listEdgesCrispIntervals
AG1 = (V1,E1,Uv,UE)
AG2 = (V2,E2,Uv,UE)
AG3 = (V3,E3,Uv,UE)
…
AGe = (Ve,Ee,Uv,UE)
AGm = (Vm,Em,Uv,UE)
FSMV1
FSMV2
FSMV3
….
FSMVe
FSMVm
FSMV (Fuzzy Structural Multilevel Feature Vector)
Graph.java
• EmbeddingNumericAttributes
• EmbeddingSymbolicAttributes
• setSignature
16
Modules développés
Diagramme de classes
spottingLogo.model spottingLogo.logic
GraphAttributes
ErrConst
Interval
GraphEmbedded
Learning
PreLearning
<<use>><<use>>
1…*
1…*