Indexation de base d images L indexation a pour objectif de faciliter l accès à des bases de données en extrayant une information synthétique. Cette information peut être apportée par des attributs décrivant la forme, la couleur et/ou la texture lorsqu il s agit de caractériser des bases de données images. Dans ce TP, nous proposons de construire notre propre base d images. Pour cela, nous avons à notre disposition différents objets, regroupés en 4 classes. L objectif va être de caractériser ces différentes classes. Nous évaluerons la pertinence de cette caractérisation en présentant au système de nouveaux objets et en vérifiant si ceux-ci sont assignés correctement à leur classe d appartenance. Pour effectuer cette vérification, nous allons créer une base d images de référence (ou base d apprentissage) et une base d images à tester (ou base d images requêtes). 1 Création de la base de données image La base de données image que vous allez créer est constituée de 4 classes : panneaux de signalisation, personnages, voitures, camions. Pour chaque classe, vous disposez de 6 objets (cf. figure 1). 1) A l aide du banc d acquisition à votre disposition, acquérir, pour chacun des 24 objets présentés ci-dessus, 5 images représentant l objet selon 5 angles de vue différents (cf. figure 2). Enregistrer les images au format.png en suivant l incrémentation suivante : de 001.png à 005.png pour le premier objet pris sous ses différents angles de vue, de 006.png à 010.png pour le deuxième objet pris sous ses différents angles de vue, etc Un objet de chaque classe, pris sous ses différents angles de vue, sera utilisé pour construire la base d apprentissage. Les 5 autres objets de la classe seront utilisés pour tester la pertinence de la caractérisation. La base d apprentissage est donc constituée de 20 images (5 images par classe) et la base à tester de 100 images (25 images par classe). 2 Caractérisation : extraction des attributs de forme La fonction qui va être utilisée dans ce TP pour extraire les attributs de forme nécessite une binarisation préalable des images. 2) Effectuer la binarisation d une des images de la base grâce à la fonction Ѿ Û. TP de vision 1
Figure 1 Base de données image : chaque ligne représente une classe. Figure 2 Acquisition d un objet selon 5 angles de vue différents. 3) Le seuil utilisé pour binariser les images pouvant varié d une image à l autre, utiliser la fonction graythresh pour déterminer de manière automatique le seuil en fonction de l image passée en paramètre. 4) Inverser l image de manière à ce que l objet apparaisse en blanc et le fond en noir. 5) Afin de détecter une unique région correspondant à l objet, utiliser les fonctions : bwareaopen : permet d élimination des objets de petites surfaces par analyse de connexité. TP de vision 2
ÛÐ Ð : attribue une étiquette aux pixels de chaque région représentant la forme (pixels blancs connexes) présente dans une image binaire et retourne le nombre de ces régions (analyse en composantes connexes). 6) En utilisant la fonction ÑÐÓ, traiter l image binarisée afin d obtenir une image dans laquelle la forme correspond au mieux à l objet de la scène réelle. La fonction Ö ÓÒÔÖÓÔ permet de mesurer différents paramètres de régions contenues dans une image d étiquettes et donc obtenues après une analyse en composantes connexes. Les paramètres mesurés par cette fonction sont les suivants : la surface, le périmètre, le diamètre équivalent, la longueur de l axe principal d inertie (longueur de la région), la longueur du second axe d inertie (largeur de la région), l angle de l axe principal d inertie (orientation de la région), les coordonnées du centre de gravité, les coordonnées du cadre circonscrit à la région (boundingbox), etc 7) Pour les images 001.png, 002.png et 031.png, calculer les coordonnées du centre de gravité des formes correspondantes, ainsi que leur surface, leur périmètre, leur diamètre équivalent, leur longueur, leur largeur et leur orientation. Conclure. 8) Écrire une fonction appelée ØØÖ ÙØ ÓÖÑ permettant de retourner le vecteur des attributs de forme à partir d une image en niveau de gris. Tester cette fonction. 3 Classification Maintenant qu il est possible de calculer un vecteur d attributs de forme à partir d une image, nous allons mettre en place la procédure de classification. Cette procédure va nous permettre d analyser la pertinence de nos attributs en mesurant le taux d images bien classées. Le processus de classification est divisé en deux étapes successives : 1. L apprentissage : l objectif est de "construire" des classes d objets à partir de l ensemble d images d apprentissage. Pour cela, les objets présents dans les images d apprentissage sont décrits par un ensemble d attributs. 2. La classification : durant cette seconde phase, nous utiliserons la méthode du plus proche voisin qui consiste à assigner chaque image requête à la classe de l image d apprentissage la plus similaire. Cette similarité entre images est mesurée en comparant les vecteurs d attributs. 3.1 Apprentissage L apprentissage consiste à ouvrir chacune des images de la base d apprentissage, calculer et enregistrer dans une variable le vecteur d attributs de chaque image d apprentissage ainsi que la classe correspondante. Pour cela, nous allons utiliser une boucle répétitive de la manière suivante : TP de vision 3
n b _ c l a s s e = 4 ; % d é f i n i l e nombre de c l a s s e s nb_image = 3 0 ; % d é f i n i l e nombre d images par c l a s s e chemin = C : \... \ Database \ ; nb_ima = n b _ c l a s s e * nb_image ; n b _ i m a _ t r a i n = nb_ima / 6 ; % pour chaque c l a s s e, s e u l un o b j e t s u r 6 e s t u t i l i s é pour l a p p r e n t i s s a g e A t t r i b u t s = z e r o s ( n b _ i m a _ t r a i n, 8 ) ; %% A p p r e n t i s a g e i m a _ l a b e l =0; f o r i _ t r a i n =1: nb_ima i f (((1 <= i _ t r a i n )&&( i _ t r a i n < = 5 ) ) ( ( 3 1 < = i _ t r a i n )&&( i _ t r a i n <=35)) ( ( 6 1 < = i _ t r a i n )&&( i _ t r a i n < = 6 5 ) ) ( ( 9 1 < = i _ t r a i n )&&( i _ t r a i n < = 9 5 ) ) ) i m a _ l a b e l = i m a _ l a b e l +1; % E n r e g i s t r e m e n t du numéro de l a c l a s s e dans un t a b l e a u n u m _ classe ( i m a _ l a b e l ) = f l o o r ( ( i _ t r a i n 1)/ nb_image ) + 1 ; % Concaténaion d es c h a î n e s de c a r a c t è r e s % pour c o n s t i t u e r l e chemain d a c c è s au f i c h i e r image i f ( i _ t r a i n / 1 0 < 1 ) f i c h i e r _ t r a i n = [ chemin Base \ 0 0 i n t 2 s t r ( i _ t r a i n ). png ] ; e l s e i f ( i _ t r a i n /100 < 1 ) f i c h i e r _ t r a i n = [ chemin Base \ 0 i n t 2 s t r ( i _ t r a i n ). png ] ; e l s e f i c h i e r _ t r a i n = [ chemin Base \ i n t 2 s t r ( i _ t r a i n ). png ] ; % A f f i c h a g e du numéro de l a c l a s s e disp ( [ f i c h i e r _ t r a i n C l a s s e i n t 2 s t r ( n u m _ classe ( i m a _ l a b e l ) ) ] ) ; % O u v e r t u r e de l image I m a _ t r a i n = imread ( f i c h i e r _ t r a i n ) ; % Conversion en n i v e a u x de g r i s Ima_gray = r g b 2 g r a y ( I m a _ t r a i n ) ; % A j o u t e r i c i s i n é c e s s a i r e d es o p é r a t i o n s de p r é t r a i t e m e n t % E x t r a c t i o n d es a t t r i b u t s de forme A t t r i b u t s ( i m a _ l a b e l, : ) = A t t r i b u t s F o r m e ( Ima_gray ) ; 9) Réaliser l apprentissage du processus de classification. 10) A l aide de la commande : s c a t t e r ( a t t r i b u t s _ t r a i n ( :, 1 ), a t t r i b u t s _ t r a i n ( :, 2 ), 2 * num_classe, n u m _ classe ) ; visualiser les nuages de points dont les coordonnées sont deux des attributs calculés (la surface et la longueur). Les attributs calculés peuvent avoir des échelles de valeurs très différentes, ce qui peut leur donner un poids différent lors du processus de comparaison et biaiser les résultats de classification. TP de vision 4
Afin d obtenir des données indépantes de l unité ou de l échelle choisie, il est nécessaire de centrer et réduire les variables utilisées. Pour cela, nous devons calculer la moyenne (fonction Ñ Ò) et l écart-type (fonction Ø ) des valeurs de chaque attribut sur l ensemble des données d apprentissage. Centrer une variable consiste à soustraire sa moyenne à sa valeur et réduire une variable consiste à diviser sa valeur par son écart-type. 11) Centrer et réduire les attributs de forme calculés pant l apprentissage. 3.2 Décision Nous allons maintenant mettre en place la procédure permettant de classer une image requête de la base test, l objectif étant de reconnaître le type d objet correspondant à l image analysée. Le classifieur utilisé pour cela sera le classifieur 1-ppv (algorithme du plus proche voisin). Cet algorithme nécessite de mesurer la distance euclidienne entre le vecteur d attributs de l image requête avec chacun des vecteurs d attributs des images de la base d apprentissage. L image d apprentissage pour laquelle la distance est minimale est alors l image la plus ressemblante à l image requête et sa classe indique la classe de l image requête. 12) Compléter le programme précédent afin d ouvrir une image de la base test et classer cette image par un algorithme 1-ppv. 4 Essais expérimentaux 4.1 Taux de classification Le taux de classification correspond au rapport entre la somme des images requêtes bien classées et le nombre total d images requêtes. 13) Écrire un programme permettant de calculer le taux de classification en vous inspirant du programme permettant l apprentissage. Un moyen de valider votre programme est de classer les images de la base d apprentissage et de vérifier que vous obtenez bien un taux de 100%. 4.2 Autres essais 14) Poursuivre les essais expérimentaux en utilisant la couleur, en testant la corrélation, en analysant d autres attributs de reconnaissance de forme, d autres classifieurs, en essayant de classer d autres objets que ceux utilisés pour construire les bases,... Relever à chaque fois les taux de classification, les temps de traitement, la matrice de confusion,... TP de vision 5