Académique Documents
Professionnel Documents
Culture Documents
Indexation d'images
par l'histogramme des couleurs
Encadrement
B. Vigouroux et A. Clément
http://www.istia.univ-angers.fr/LISA
bertrand.vigouroux@univ-angers.fr alain.clement@univ-angers.fr
Remerciements
J’exprime tout d'abord ma gratitude à M. Bertrand Vigouroux : c’est lui qui m’a fait découvrir le
domaine fantastique du traitement d’image.
Enfin, je remercie M. Julio Rojas-Varela, pour sa gentillesse et son expertise dans la préparation
du café, ainsi que tous les autres membres du LISA.
Sommaire
1 – Introduction 1
4 – Conclusion 24
Références 25
L'image sous toutes ses formes (photographique, vidéo, graphique ou infographique) est
aujourd'hui mise à la disposition de nombreuses personnes, qu'il s'agisse de professionnels ou du
grand public. On peut trouver trois explications générales à ce phénomène :
• la démocratisation de l'informatique et l'évolution rapide des capacités de mémoire des
machines facilitent le traitement et le stockage de l'information numérique ;
• l'accès aux scanners et autres capteurs numériques (appareils photographiques,
caméscopes) de moins en moins chers et de plus en plus performants favorise la
croissance des banques d'images ;
• les progrès réalisés dans le domaine des réseaux de télécommunications permettent la
transmission et le partage de l'information numérique localement et mondialement, avec
des temps de transfert acceptables.
Les images fixes et les séquences d'images sont archivées dans des bases de données,
généralistes ou spécialisées, accessibles par les réseaux de télécommunications. L'accessibilité
des images dépend en grande partie des performances des outils de fouille de données
disponibles. Ces outils procèdent à partir d'index attribués aux images présentes dans les bases.
Deux familles d'indexation sont envisageables [Rui et al. 1999] :
• l'indexation par mots-clés nécessite l'intervention d'experts qui doivent décrire de la façon
la plus précise possible le contenu des images ; la méthode est très dépendante du point
de vue de l'expert, et constitue une tâche rapidement insurmontable en raison du
-1-
foisonnement des documents à indexer ;
• l'indexation par le contenu opère à deux niveaux : un bas niveau faisant référence aux
seules caractéristiques primaires (couleurs, textures) des images, et un niveau supérieur
utilisant leur contenu sémantique (analyse de scène).
Initiée vers la fin des années 70, l'indexation des images par mots-clés a été complétée – voire
supplantée – à partir du début des années 90 par l'indexation par le contenu.
L'indexation seule ne suffit pas pour réaliser un système de recherche d'image : il faut disposer
d'une métrique, ou à tout le moins d'une mesure de similitude, pour évaluer la distance entre les
index des images d'une base, et en extraire les images similaires. C'est sur ces deux concepts –
indexation et similitude – que sont construits les systèmes de recherche d'images (figure 1).
calcul de
requête
similitude
résultats
Ils procèdent selon des méthodologies qui peuvent être classées en deux catégories [Trémeau et
al. 2004] :
• la recherche d'images ou de catégories d'images sans requête initiale repose sur une
modélisation du système au moyen d'une fonction de pertinence, reflétant l'adéquation
entre l'image retournée et l'image souhaitée ; elle nécessite une interaction forte entre le
système et l'utilisateur qui, par un ajustement progressif des paramètres de la fonction de
pertinence, améliore les retours obtenus ;
• la recherche par l'exemple procède à partir d'une image requête, présentée par
l'utilisateur ; le système fournit en réponse les n images de la base qui présentent la plus
forte similitude avec l'image requête (n étant un paramètre choisi arbitrairement) ; là
-2-
encore une interaction est possible, pour modifier la requête ou la façon de mesurer la
similitude.
Les systèmes de recherche d'images, quels qu'ils soient, procèdent toujours en deux phases. La
première phase est la phase d'indexation de toutes les images de la base. Dans cette phase, le
temps de calcul importe peu, puisqu'il s'effectue hors la présence de l'utilisateur. Par contre, la
deuxième phase – celle de la recherche en ligne – est limitée en temps : la réponse du système
doit être obtenue avant que l'utilisateur soit lassé de l'attendre.
Il m'était demandé, au cours de ce stage, d'explorer diverses méthodes d'indexation des images,
fondées sur une représentation – complète ou réduite – de l'histogramme des couleurs. Le
chapitre 2 brosse un rapide panorama de ces méthodes, et décrit leur mise en oeuvre sous forme
de boîtes à outils implémentées sur la plate-forme Isaac d'analyse et de traitement des images
couleurs. Le chapitre 3 présente les méthodes permettant, à partir des index définis au chapitre 2,
de quantifier la similitude entre images ; là encore, quelques-unes de ces méthodes sont
implémentées sous forme de boîtes à outils de la plate-forme Isaac, et leur pertinence est testée
dans le cadre d'une recherche par l'exemple . Le chapitre 4, en forme de conclusion, dresse le
bilan du travail effectué.
-3-
2 – Indexation d'images par l'histogramme des couleurs
La couleur est un des attributs primaires les plus utilisés en indexation d'images. Rappelons
qu'un pixel d'une image couleur est caractérisé par un vecteur à trois composantes, quel que soit
le système colorimétrique utilisé. Les couleurs présentes dans une image sont décomptées dans
l'histogramme des couleurs. Cet histogramme – tridimensionnel – renferme une masse énorme
d'informations, qu'il faut élaguer pour créer des index pertinents en nombre aussi réduit que
possible.
L’histogramme d’une image couleur de résolution M " N est la représentation d’une fonction
discrète " (C) qui, à chaque couleur C présente dans l’image, associe le nombre " (C) de pixels
ayant cette couleur, encore appelé population
! de couleur C. Cette fonction est donc une
application de l’ensemble R3 des couleurs dans l’ensemble N des entiers naturels :
! !
$& R3 # N
" :% (2.1)
&'C a " (C)
Le quotient de " (C) par le nombre total MN de pixels de l’image peut être vu comme la densité
de probabilité " (C) d’une variable aléatoire dont l’image constitue un ensemble de réalisations :
!
! " C = # (C) !
( ) MN avec #" (C) = 1 (2.2)
C
!
La couleur moyenne de l'image est donnée par :
En règle générale, chaque composante colorimétrique est codée sur 8 bits. L’histogramme d’une
image de résolution M " N est alors constitué par un tableau tridimensionnel comportant 224
!
cellules. Chaque cellule de ce tableau doit pouvoir contenir un nombre entier positif ou nul au
! à MN, donc codé sur un nombre nb de bits tel que nb > log2 ( MN ) . En!effet, n bits
maximum égal
ne permettent de compter que jusqu'à 2n -1, et un nombre de bits est toujours entier ; de plus, le
codage des nombres en informatique fait en général appel à des multiples de 8 bits.
!
24
L’histogramme occupe alors 2 " nb bits. Pour une image dont la résolution est de 512 " 512
pixels, nb = 24 bits et l'histogramme occupe un espace mémoire de E8 = 3 " 224 octets, soit
! !
! !
-4-
environ 50 Mo.
Réaliser un système viable de recherche d'images fondé sur l'analyse des couleurs nécessite donc
une réduction drastique de l'espace mémoire utilisé pour modéliser l'histogramme. Trois
procédures peuvent être envisagées :
• la réduction du nombre de bits utilisé pour quantifier l'espace colorimétrique ;
• l'utilisation d'un histogramme compact ;
• la modélisation de l'histogramme par les premiers moments de la distribution des
couleurs.
Une première façon de réduire la quantité d'information présente dans un histogramme est de
requantifier les couleurs sur un nombre g de bits inférieur à 8, pour chacune des 3 composantes
colorimétriques. Cette requantification est acceptable tant que l'aspect visuel de l'image n'est pas
trop dégradé. A titre d'exemple, la figure 2.1 montre une même image (Lena), de résolution
512 " 512, dont les composantes colorimétriques ont été quantifiées sur différents nombres de
bits. Jusqu'à 5 – voire 4 – bits, l'aspect visuel reste acceptable, alors qu'il se dégrade rapidement
pour des nombres de bits inférieurs.
!
-5-
Ce résultat est en accord avec les règles de Sturges et de Scott, qui recommandent d'utiliser
respectivement 4 et 5 bits par composante colorimétrique de l'histogramme [Brunelli et Mich
1999].
Par un calcul analogue à celui développé au paragraphe précédent, on peut montrer que, lorsque
chaque composante colorimétrique est codée sur g bits, l'histogramme d'une image de résolution
512 " 512 occupe un espace mémoire de Eg = 3 " 23g octets. Les valeurs numériques de Eg sont
indiquées dans le tableau 2.1, pour diverses valeurs de g.
! !
g 8 7 6 5 4 3 2 1
Eg (ko) 50332 6292 787 99 13 1,6 0,2 0,03
L'analyse et le traitement d'images couleur peuvent être conduits selon deux stratégies : la
stratégie marginale ou la stratégie vectorielle. La première consiste à considérer chaque
composante colorimétrique indépendamment des deux autres. Elle présente l'avantage de la
simplicité, mais ignore les corrélations possibles entre composantes. La deuxième considère
simultanément les trois composantes colorimétriques, prenant ainsi en compte les corrélations
-6-
entre composantes. L'une ou l'autre de ces stratégies peut être appliquée à la modélisation de
l'histogramme des couleurs par la suite de ses moments.
En désignant par X l'une quelconque des trois composantes colorimétriques d'une image de
résolution M " N , la densité de probabilité de la valeur C de cette composante s'écrit, par
transposition à une dimension de l'équation (2) :
! # (C )
" (C ) = avec # " (C ) = 1 (2.4)
MN C
le nombre :
1 n
µn =
MN
$ (C " C!) # (C) (2.6)
C
En désignant par (C1 ,C2 ,C3 ) les trois composantes colorimétriques de la couleur C, les moments
! n. Le seul moment d'ordre 0 est m0,0,0 ; il vaut 1. Il y a trois moments d'ordre 1, à savoir m1,0,0,
m0,1,0 et m0,0,1 ; ils représentent les coordonnées de la couleur moyenne.
!
-7-
On appelle moments centrés d'ordre n = p + q + r ( n " 1) , pour la distribution des couleurs, les
nombres :
1 p q r
µ p, q, r =
MN
$ (C "!C)
1 (C " C) (!C " C) # (C)
2 3 (2.8)
C
Les moments centrés d'ordre 2 permettent d'écrire la matrice d'inertie sous la forme :
"µ2,0,0 µ1,0,1 µ1,1,0 %
! $ '
[µ] = $µ1,0,1 µ0,2,0 µ0,1,1 ' (2.9)
$#µ1,1,0 µ0,1,1 µ0,0,2 '&
Sa diagonalisation fournit :
• par les vecteurs propres, la direction des trois axes principaux d'inertie du nuage de points
!
que constitue l'histogramme ;
• par la racine carrée des valeurs propres, l'écart-type dans chacune de ces trois directions.
Le même résultat peut être obtenu en opérant, sur l'image étudiée, une décorrélation préalable
des composantes colorimétriques à l'aide d'une transformation de Kahrunen-Loeve, puis en
calculant les moments marginaux centrés d'ordre 2.
Le module que j'ai implémenté s'intitule IndexMoment1to4. Son code est listé dans l'annexe 2. A
partir d'une image codée dans l'espace colorimétrique RVB, il calcule les moments marginaux
d'ordres 1, 2, 3 et 4 dans cet espace. Il procède également à la décorrélation des composantes par
transformation de Kahrunen-Loeve (KL), et calcule les moments centrés d'ordre 2, 3 et 4 dans
l'espace de KL. Les index mémorisés sont :
-8-
• les coordonnées de la couleur moyenne dans l'espace RVB ;
• les écarts-types marginaux dans l'espace RVB ;
• la racine cubique des moments marginaux d'ordre 3 dans l'espace RVB ;
• l'asymétrie (skewness) marginale dans l'espace RBV ;
• la racine quatrième des moments marginaux d'ordre 4 dans l'espace RVB ;
• l'aplatissement (kurtosis) marginal dans l'espace RVB ;
• les trois composantes du vecteur unitaire de l'axe principal d'inertie ;
• les écarts-types marginaux dans l'espace de KL ;
• la racine cubique des moments marginaux d'ordre 3 dans l'espace de KL ;
• l'asymétrie marginale dans l'espace de KL ;
• la racine quatrième des moments marginaux d'ordre 4 dans l'espace de KL ;
• l'aplatissement marginal dans l'espace de KL .
L'asymétrie marginale est définie comme le rapport du moment marginal d'ordre 3 et du cube de
l'écart-type marginal ; elle vaut zéro pour une distribution symétrique de part et d'autre de la
moyenne.
L'aplatissement marginal est défini comme le rapport du moment marginal d'ordre 4 et de la
puissance quatrième de l'écart-type marginal ; il vaut 3 pour une distribution normale et 1,8 pour
une distribution uniforme.
2.6 – Résultats
Pour tester l'influence sur ces index de quelques modifications de l'image, nous avons utilisé la
base d'images MOVI, décrite dans l'annexe 3. Elle propose en particulier des images prises :
• en faisant varier l'intensité d'éclairement de la scène ;
• en faisant varier l'ouverture de la caméra ;
• en faisant varier la position de la source de lumière ;
• en déplaçant la caméra par rapport à la scène (rotations autour de l'axe optique,
translation dans une direction perpendiculaire ou parallèle à l'axe optique) ;
• etc.
Il est exclu de tester ici toutes ces possibilités. Nous nous bornerons à étudier l'influence de
l'intensité de l'éclairement, celle de l'ouverture de la caméra à éclairement constant, et celle de la
rotation de la caméra autour de son axe optique.
-9-
2.6.1 – Influence de l'intensité de l'éclairement de la scène
Une même scène, photographiée sous un éclairement de plus en plus faible, fournit la série
d'images présentée sur la figure 2.2. Les index calculés par le module IndexMoment1to4 sont
réunis dans le tableau A4.1 de l'annexe 4.
A titre d'exemple, la figure 2.3 présente l'évolution des moments marginaux d'ordre 1, dans
l'espace RVB, au fur et à mesure que l'intensité de l'éclairement diminue.
Figure 2.3 : Moments marginaux d'ordre 1, dans l'espace RVB, pour les images de la figure 2.1.
- 10 -
Des courbes monotones décroissantes similaires seraient obtenues pour la racine carrée des
moments d'ordre 2 et la racine quatrième des moments d'ordre 4, dans l'espace RVB comme dans
l'espace de KL. Par contre, la racine cubique des moments d'ordre 3, l'asymétrie et
l'aplatissement ne suivent pas une loi monotone, comme le montre la figure 2.4, à titre
d'exemple, pour la racine cubique de moments marginaux d'ordre 3 dans l'espace RVB .
Figure 2.4 : Racine cubique des moments marginaux d'ordre 3, dans l'espace RVB,
pour les images de la figure 2.1.
- 11 -
Une même scène, photographiée sous un éclairement constant, mais avec une ouverture
progressivement élargie, fournit la série d'images présentée sur la figure 2.5. Les index calculés
par la fonction IndexMoment1to4 sont réunis dans le tableau A4.2 de l'annexe 4.
A titre d'exemple, la figure 2.6 présente l'évolution des moments marginaux d'ordre 1, dans
l'espace RVB, au fur et à mesure que l'ouverture de la caméra augmente. Ceci reste vrai dans
l'espace de KL. Par contre, tous les autres index ont un comportement non monotone.
Figure 2.6 : Moments marginaux d'ordre 1, dans l'espace RVB, pour les images de la figure 2.4.
Une même scène, photographiée par une caméra qui tourne autour de son axe optique, fournit la
série d'images présentée sur la figure 2.7.
Les index calculés par la fonction IndexMoment1to4 sont réunis dans le tableau A4.3 de l'annexe
4. A titre d'exemple, la figure 2.8 présente l'évolution des moments marginaux d'ordre 1, dans
l'espace RVB, au fur et à mesure que la caméra tourne autour de son axe optique. Ces moments
sont pratiquement constants. Ceci reste vrai dans l'espace de KL et pour les autres paramètres,
excepté pour la racine cubique des moments marginaux d'ordre 3 dans l'espace de KL.
De tous ces résultats, on peut conclure que les index utilisés varient la plupart du temps avec les
conditions de prise de vue. Cela peut être un atout pour faire la différence entre deux images
d'une même scène prises dans des circonstances différentes, mais aussi un handicap si la
recherche d'images par l'exemple souhaite s'affranchir des conditions de prise de vue.
- 12 -
Rv01 Rv05 Rv09 Rv13 Rv17
Figure 2.8 : Moments marginaux d'ordre 1, dans l'espace RVB, pour les images de la figure 2.6.
- 13 -
3 – Recherche d'images par l'exemple
La similitude entre une image requête et les images d'une base s'évalue le plus souvent à l'aide
d'une mesure de distance entre les vecteurs associés à ces images ; ces vecteurs ont pour
composantes :
• soit la suite des populations de chaque couleur présente dans chaque image (déterminée
par l'histogramme, qu'il soit requantifié ou compact) ;
• soit la suite des index choisis pour donner une description approchée de l''histogramme.
Désignons par hi, j la j-ième des n composantes du vecteur d'index hi de l'image i. Le nombre
d (h1 ,h2 ) pourra être qualifié de distance entre les vecteurs h1 et h2 à condition que soient
vérifiées
! les conditions :
d (h1 ,h2 ) " 0
!
d (h1 ,h1 ) = 0
(3.1)
d (h1 ,h2 ) = d (h2 ,h1 )
d (h1 ,h3 ) # d (h1 ,h2 ) + d (h2 ,h3 )
En recherche d'images par l'exemple, la première similitude entre histogrammes qui ait été
utilisée est définie par [Swain and Ballard 1991] :
n
Elle a pour nom intersection d'histogramme. Dans cette expression, h1 est l'histogramme de
l'image requête, h2 celui de l'image à comparer à l'image requête. Il ne s'agit pas d'une distance,
!
puisqu'elle ne respecte pas la propriété de symétrie. Pour y remédier, on peut utiliser l'expression
- 14 -
suivante [Smith and Chang 1996] :
n
Cependant, la version de Jeffrey lui est préférée pour son respect de la symétrie et de l'inégalité
triangulaire [Puzicha et al. 1997] :
!
" n
2h1, j 2h2, j %
d Jeffrey (h1 ,h2 ) = ($$ h1, j log + h2, j log ' (3.5)
j=1 #
h1, j + h2, j h1, j + h2, j '&
Pour limiter la sensibilité au bruit de ces distances ou similitudes, on peut remplacer les
histogrammes par les histogrammes cumulés. Mais ceci nécessite au préalable un
!
ordonnancement des couleurs [Stricker and Orengo 1995].
Les distances entre vecteurs les plus utilisées appartiennent au domaine classique des distances
de Minkowski, définies par :
n
p
d Lp (h1 ,h2 ) = p
# (h 1, j " h2, j ) (3.6)
j=1
et la distance L∞ :
d L" (h1 ,h2 ) = max h1, j $ h2, j (3.9)
! 1# j# n
!
- 15 -
3.4 – Résultats
Une question se pose concernant les vecteurs d'index calculés au chapitre 2 : quelle combinaison
d'index est-il nécessaire d'utiliser pour optimiser la distance entre images différentes ? Pour
tenter de répondre à cette question, nous avons exploré sept possibilités, qui peuvent être
classées en trois catégories :
• dans la première catégorie (R1), le vecteur d'index est constitué des trois moments
marginaux d'ordre 1 dans l'espace RVB ;
• la deuxième catégorie regroupe trois sous-catégories ; la première (R2) adjoint aux index
précédents la racine carrée des moments marginaux d'ordre 2 dans l'espace RVB ; la
deuxième (R3) y ajoute les racines cubiques des moments marginaux d'ordre 3 dans
l'espace RVB, et la quatrième (R4) complète le vecteur avec les racines quatrièmes des
moments marginaux d'ordre 4 dans l'espace RVB ;
• la troisième catégorie reprend les éléments de la deuxième, mais subsitue aux moments
marginaux d'ordre 2, 3 et 4 de l'espace RVB ceux de l'espace de KL (catégories R5, R6 et
R7).
Les résultats obtenus en utilisant la distance euclidienne, pour quelques images de la base
MOVI, sont présentés :
• dans les tableaux 3.1 (pour les images de la figure 2.2) ;
• dans les tableaux 3.2 (pour les images de la figure 2.5) ;
• dans les tableaux 3.3 (pour les images de la figure 2.7).
Ils ont été établis à l'aide des index répertoriés dans l'annexe 4 (tableaux A4.1, A4.2 et A4.3).
Tableau 3.1 : Distances euclidiennes entre vecteurs d'index des images de la figure 2.2.
- 16 -
Index Distance de l'image Ca01 à l'image
utilisés Ca03 Ca05 Ca07 Ca09 Ca11
R1 12 63 131 233 288
R2 14 72 146 253 302
R3 15 73 152 272 327
R4 18 83 170 295 345
R5 14 72 146 253 302
R6 15 73 150 274 327
R7 18 84 169 297 345
Tableau 3.2 : Distances euclidiennes entre vecteurs d'index des images de la figure 2.5.
Tableau 3.3 : Distances euclidiennes entre vecteurs d'index des images de la figure 2.7.
Dans tous les cas, on constate que le fait d'augmenter le nombre d'index accroît la distance
mesurée entre les vecteurs. Ceci est susceptible d'améliorer la recherche d'images par l'exemple,
sauf dans le cas où des images similaires à l'image requête, mais prises dans des conditions
légèrement différentes d'illumination ou de position de la caméra, existent dans la base.
Le choix de l'espace RVB ou de l'espace de KL a peu d'incidence sur les distances mesurées.
Selon les circonstantes, ces distances sont plus grande dans l'espace RVB ou dans l'espace de
KL. On aurait pu penser pourtant que le nuage des points de l'histogramme était mieux
représenté dans l'espace de KL, centré sur le nuage, et orienté selon ses axes principaux d'inertie.
Ce résultat nous amène à utiliser uniquement, pour la suite de ce mémoire, les vecteurs d'index
des catégories 1 (R1) et 2 (R2, R3, R4), dont les composantes sont calculées dans l'espace RVB.
- 17 -
3.3.2 – Recherche d'images par l'exemple
Pour rechercher dans une base les 10 images les plus proches d'une image requête, j'ai
implémenté sur la plateforme Isaac un module intitulée Requete_Moments1to4, dont le code est
donné dans l'annexe 5. L'interface proposée par la boîte à outils est représentée sur la figure 3.1.
Figure 3.1 : Interface du module de recherche d'images par l'exemple sur la plateforme Isaac.
L'image requête est ouverte par la fonction Ouvrir image. La boîte à outil demande :
• une valeur numérique permettant de préciser la catégorie des vecteurs d'index utilisés,
dans l'espace RVB (k pour les index Rk, avec k = 1, 2, 3 ou 4) ;
• le nom du dossier contenant le fichier des index.
En retour, le système présente dans une fenêtre les dix images les plus proches de l'image
requête, classées de la plus proche à la plus lointaine, pour la catégorie d'index retenue, en
utilisant la distance euclidienne. Chaque image est surmontée de son classement et du nom de
son fichier, séparés par deux points. Il aurait été aisé d'introduire un paramètre supplémentaire
dans le module : le nombre d'images souhaité en réponse à une requête. Mais cela n'a pas été fait
dans le cadre de mon stage.
Pour tester ce module de recherche d'images par l'exemple, nous avons utilisé la base d'images
Goodshoot, décrite dans l'annexe 6. Cette base réunit plus de 7800 photos, classées en 100
- 18 -
dossiers thématiques CDddd. Les fichiers images ont pour nom dddiii, où ddd repère le dossier et
iii l'image dans le dossier. Chaque dossier contient 50 ou 100 images.
La figure 3.2 donne l'exemple d'une image requête, dont le fichier est numéroté 001003.
Figure 3.3 : Réponse à la requête présentée sur la figure 3.2, en utilisant la distance euclidienne
et les index R3.
3.3.2.2 – Résultats
La fenêtre représentée figure 3.3 a été réduite pour respecter les marges du document. Afin de
mieux appréhender la qualité de la réponse à la requête, les dix images qu'elle présente sont
reproduites sur la figure 3.4, avec une taille permettant une meilleure lisibilité. La première
image retournée est l'image requête elle-même, puisqu'elle appartient à la base de recherche. Sur
les autres images retournées, sept appartiennent au même dossier thématique (CD001) que celui
de l'image requête. Les deux autres appartiennent à des dossiers différents (CD088 et CD041).
- 19 -
Leur présence dans la réponse du système provient du fait que ce dernier ne prend en compte que
l'histogramme des couleurs, sans se préoccuper de la répartition des couleurs dans l'espace
image. On trouve là une illustration du phénomène appelé fossé sémantique.
Figure 3.4 : Réponse à la requête présentée sur la figure 3.2, en utilisant la distance euclidienne
et les index R3 (agrandissement de la figure 3.3).
D'autres essais sont rassemblés dans le tableau 3.4, pour différentes requêtes et différents choix
d'index (R1, R2, R3 et R4), en métrique euclidienne. Il est raisonnable de penser que plus la
réponse est pertinente, plus elle doit contenir d'images en provenance du même dossier
thématique que celui de l'image requête. Ceci permet d'évaluer la pertinence du système, en
comptant le nombre d'images retournées appartenant au dossier thématique de l'image requête,
mais différentes de celle-ci.
Ces comptages sont rassemblés dans le tableau 3.5, pour des retours de 2 à 10 images. Ils
montrent que pour les quatre premières images requêtes, le meilleur choix d'index est le choix
R2, alors que c'est le choix R3 pour l'avant dernière requête, et le choix R4 pour la dernière. Il
faudrait donc procéder à un beaucoup plus grand nombre d'essais pour déterminer
statistiquement quel est le choix le meilleur.
Il est intéressant aussi de présenter en requête une image n'appartenant pas à la base. Nous avons
donc présenté l'image Lena. Les résultats obtenus en utilisant les index R3 sont indiqués sur la
figure 3.5. Ils sont assez déroutants : Lena appartiendrait prioritairement à la thématique
Création et graphisme (CD024), et majoritairement (sur 10 retours) à la thématique Détails
- 20 -
nature (CD066). On peut en conclure que Lena ne faisait vraisemblablement pas partie des
catégories mentales des concepteurs de la base Goodshoot.
Tableau 3.4 : Images retournées pour différentes requêtes, en métrique euclidienne et pour
différents choix d'index.
- 21 -
Image Nombre d'images retournées
Index
requête 2 3 4 5 6 7 8 9 10
R1 1 1 1 1 1 2 2 2 3
R2 1 2 3 4 5 6 7 7 8
001003
R3 1 2 3 3 4 4 5 6 7
R4 1 2 3 4 5 5 5 6 7
R1 0 0 0 0 0 0 0 0 1
R2 1 2 3 3 4 4 4 4 5
001001
R3 0 0 0 0 0 1 1 1 1
R4 0 0 0 0 0 0 0 0 0
R1 0 0 0 0 0 0 0 0 0
R2 0 0 1 1 1 1 1 1 1
004076
R3 0 0 0 1 1 1 1 1 1
R4 0 0 0 0 0 0 0 0 0
R1 0 0 1 1 1 1 1 1 1
R2 1 1 1 1 1 1 1 1 1
013005
R3 0 0 1 1 1 1 1 1 1
R4 0 0 1 1 1 1 1 2 2
R1 0 0 0 0 0 0 0 1 1
R2 0 0 0 0 0 0 1 1 1
012002
R3 0 1 1 1 3 4 4 4 5
R4 0 0 0 1 2 2 2 2 2
R1 0 0 0 0 0 0 0 0 0
R2 0 0 0 0 0 0 0 0 0
021001
R3 0 0 0 0 0 0 1 1 1
R4 0 0 0 1 1 1 1 1 1
Tableau 3.4 : Nombre d'images retournées appartenant au même dossier que l'image requête, en
fonction du nombre d'images retournées.
- 22 -
requête (Lena)
Figure 3.5 : Réponse à la requête Lena, en utilisant la distance euclidienne et les index R3.
- 23 -
4 – Conclusion
L’indexation et la recherche d’images par le contenu, dans des bases généralistes, sont des
problèmes complexes mais incontournables étant donné la place que l’image numérique occupe
à présent dans notre société.
Bien que permettant une indexation relativement efficace, les primitives de bas niveau (en
particulier l'histogramme des couleurs) ne suffisent pas à réaliser un système de recherche
performant. Il faut pour cela leur adjoindre des descripteurs de plus haut niveau, prenant en
compte la répartition spatiale des couleurs dans l'image, par exemple à l'aide de techniques de
segmentation. Se pose alors le problème des poids respectifs à attribuer aux index issus des deux
types de descripteurs.
L'introduction de descripteurs de haut niveau a pour objectif de combler en partie le fossé
sémantique séparant le contenu colorimétrique d'une image de sa signification pour l'utilisateur.
Seuls les systèmes de recherche d'images interactifs sont susceptibles de combler entièrement ce
fossé.
- 24 -
Références
[Brunelli and Mich 1999] : R. Brunelli, O. Mich : On the Use of Histograms for Image Retrieval,
IEEE International Conference on Multimedia Computing and Systems, vol. 2, p. 143-147
(1999).
[Clément 2002] : Alain Clément : Algorithmes et outils informatiques pour l'analyse d'images
couleur. Application à l'étude de coupes histologiques de baies de raisin en microscopie optique,
thèse de doctorat n°510 en traitement des images et du signal, Université d'Angers, France, 5
juillet 2002.
[Kullback 1968] : S. Kullback : Information theory and statistics, Dover, New York (1968)
[Lawrence and Giles 1999] : Steve Lawrence, C. Lee Giles : Accessibility of information on the
web, Nature, vol. 400, p. 107-109 (1999).
[Rui et al. 1999] : Yong Rui, Thomas S. Huang, Shih-Fu Chang, Image Retrieval : Current
Techniques, Promising Directions, and Open Issues, Journal of Visual Communication and
Image Representation, vol. 10, p. 39-62 (1999).
[Smith and Chang 1996] : J.R. Smith, S.F. Chang : Tools and techniques for color image
retrieval, Storage and retrieval for image and video databases (SPIE), p. 426437 (1996).
[Stricker and Orengo 1995] : M. Stricker, M. Orengo : Similarity of color images, SPIE
Conference on Storage and Retrieval for Image and Video Databases III, p. 381-392 (1995).
[Swain et Ballard 1991] : Michael J. Swain, Dana H. Ballard : Color Indexing, International
Journal of Computer Vision, vol. 7, p. 11-32 (1991).
- 25 -
[Trémeau et al. 2004] : Alain Trémeau, Christine Fernandez-Maloigne, Pierre Bonton : Image
numérique couleur, de l'acquisition au traitement, Dunod, Paris (2004).
- 26 -
Annexe 1 : La plateforme Isaac
Isaac est une plateforme modulaire conçue pour à la fois accélérer la mise en oeuvre de
nouveaux algorithmes et permettre la création de véritables applications utilisables en routine.
Isaac offre au chercheur toute la puissance et la facilité de mise au point du langage Matlab,
enrichi par des objets de haut niveau qui assurent automatiquement l'interface avec la plateforme,
et grâce auxquels tout nouveau développement est immédiatement opérationnel.
Le développement d'un module permet de supprimer totalement l'écriture des interactions avec la
plateforme, en laissant la boîte à outils assurer le contrôle et le passage des paramètres, la gestion
des erreurs, ainsi que les modifications des objets et données en sortie.
Tout module est applicable à une image ouverte, un fichier sur disque ou un répertoire complet.
La réversibilité d'une opération est assurée, et les traitements conçus pour des images en niveaux
de gris peuvent être appliqués de manière marginale sur une ou plusieurs composantes d'une
image couleur.
Le coût de développement d'un algorithme est ainsi réduit au minimum, et permet au chercheur
de se consacrer à l'essentiel du traitement d'image.
Modularité
Les outils de traitement d'images développés dans Isaac sont regroupés en boîtes à outils,
répertoires thématiques dont le contenu est automatiquement pris en compte par la plateforme,
selon une philosophie de plug and play.
Objets coopératifs
L'architecture d'Isaac repose sur le modèle objet. Les différents objets d'Isaac communiquent
entre eux grâce à un langage d'événements, et adoptent un comportement coopératif qui leur
permet de réagir en temps réel, et ce quel que soit le nombre d'outils ouverts simultanément.
- 27 -
Un système configurable et évolutif
Isaac est entièrement configurable en fonction de son contexte d'utilisation, et s'enrichit de toute
nouvelle fonction développée, sans écriture de code supplémentaire.
La configuration du logiciel est mémorisée dans un fichier de préférences. Elle permet de choisir
entre les modes développement ou utilisation, de configurer l'interface graphique, de fixer les
comportements par défaut, et enfin d'optimiser le fonctionnement de la plateforme en privilégiant
soit la rapidité, soit l'encombrement mémoire.
En constante évolution, la plateforme est à ce jour riche de plus de 200 outils, et se révèle
particulièrement bien adaptée au développement de méthodes et d'applications en analyse
d'images et séries d'images en couleurs ou en niveaux de gris.
- 28 -
Annexe 2 : Code de la boîte à outils IndexMoment1to4
switch nargin
case 0
varargout{1} = {10,10}; % 10 repère un dossier
return
case 3
repentree = varargin{2}; % la deuxieme entree est un dossier
represul = varargin{3}; % la troisieme entree est un dossier
otherwise
error('invalid number of input arguments')
end
%--------------------------------------------------------------------------
image_files=dir(repentree); % "dir" affiche tous les fichiers du repertoire
ix=strncmp({image_files.name},'.',1); % on ignore les repertoires
iy = strcmp({image_files.name},'IndexMomentsHisto3D.mat'); % ainsi que les fichiers de donnees
iyy = strcmp({image_files.name},'IndexDistribution3D.mat');
iyyy = strcmp({image_files.name},'IndexStricker.mat');
iyyyy = strcmp({image_files.name},'IndexBitmap.mat');
iyyyyy = strcmp({image_files.name},'IndexHistogramme.mat');
iyyyyyy = strcmp({image_files.name},'IndexMoment1to4.mat');
[Mu1RGB,Mu2RGB,Mu3RGB,Mu4RGB,Mu2KL,...
Mu3KL,Mu4KL] = Moments1to4(img);
theresults{i}{1} = Mu1RGB;
theresults{i}{2} = Mu2RGB;
theresults{i}{3} = Mu3RGB;
theresults{i}{4} = Mu4RGB;
theresults{i}{5} = Mu2KL;
theresults{i}{6} = Mu3KL;
theresults{i}{7} = Mu4KL;
- 29 -
end
saved_file = fullfile(represul,'IndexMoment1to4.mat');
if exist(saved_file,'file')
content=load(saved_file);
files_names=[content.files_names image_files_full_names];
results=[content.results theresults];
save(saved_file,'files_names','results');
else
files_names=image_files_full_names;
results = theresults;
save(saved_file,'files_names','results');
end
%--------------------------------------------------------------------------
if nargout == 2
% 2 parametres de sortie obligatoires : image et matrice eventuellement vides
varargout{1} = [];
varargout{2} = [];
else
error('invalid number of output arguments');
end
Cette boîte à outil fait appel à la fonction Moments1to4, dont voici le code :
- 30 -
KurtosisRGB = Mom4RGB./Mu2RGB.^4;
% Valeurs propres et vecteurs propres de la matrice de variance
Xcov = cov(X,1);
[Vecp,Valp]=eig(Xcov);
% Tri selon les valeurs propres par ordre decroissant
[Vs,Vi]=sort(diag(Valp));
dirprincip = Vecp(:,Vi(3:-1:1));
vecp1 = dirprincip(:,1);
AxePrincipal = vecp1';
% Donnees centrees projetees dans la base des vecteurs propres
% de la matrice des variances triees par ordre decroissant
Xprinc = Xc*dirprincip;
% Memes parametres marginaux que ci-dessus,
% mais pour les donnees centrees
% projetees dans la base des vecteurs propres de la matrice des variances
% triees par ordre decroissant (espace de KL)
Mom2KL = mean(Xprinc.^2);
Mu2KL = nthroot(Mom2KL,2);
Mom3KL = mean(Xprinc.^3);
Mu3KL = nthroot(Mom3KL,3);
SkewnessKL = Mom3KL./Mu2KL.^3;
Mom4KL = mean(Xprinc.^4);
Mu4KL = nthroot(Mom4KL,4);
KurtosisKL = Mom4KL./Mu2KL.^4;
- 31 -
Annexe 3 : La base d'images MOVI
La base d'images MOVI est une base d'images d'environ 500 images en niveaux de gris ou en
couleurs (en codage RVB ou indexé), qui sont réalisées :
• soit à partir de scènes bidimensionnelles (images de photographies) ;
• soit à partir de scènes tridimensionnelles (images d'objets).
Différentes conditions de prises de vues de scènes identiques sont proposées. Les principales
sont les suivantes :
• ouverture de la caméra ;
• intensité d'éclairement de la scène ;
• spectre des couleurs utilisées pour éclairer la scène ;
• position de la source d'éclairement de la scène ;
• rotation verticale de la caméra autour de son axe optique ;
• rotation de la caméra de part et d'autre de son axe optique ;
• translation de la caméra le long de son axe optique ;
• translation horizontale de la caméra ;
• addition progressive d'objets dans le champ de la caméra.
- 32 -
Annexe 4 : Exemples d'index
Tableau A4.1 : Index obtenus pour une même scène éclairée avec une intensité lumineuse
décroissante de l'image Li01 à l'image Li15, l'ouverture de la caméra étant maintenue constante
(les images sont présentées sur la figure 2.2).
- 33 -
Image Ca01 Ca03 Ca05 Ca07 Ca09 Ca11
Mu1 R 43,55 51,94 86,51 131,86 193,28 221,92
Mu1 V 38,69 45,65 75,17 114,33 175,61 209,18
Mu1 B 30,69 35,96 59,13 90,61 145,70 179,95
Mu2 R 16,86 21,66 37,82 56,18 65,99 53,16
Mu2 V 14,12 18,45 33,62 51,25 69,68 63,01
Mu2 B 12,47 16,51 31,99 50,19 77,81 78,81
AxePrincipal R 0,67 0,66 0,63 0,62 0,53 0,46
AxePrincipal V 0,57 0,57 0,57 0,57 0,57 0,56
AxePrincipal B 0,48 0,49 0,53 0,54 0,63 0,69
Mu3 R 11,65 14,41 16,23 -17,04 -57,64 -59,33
Mu3 V 10,00 12,77 16,19 -14,29 -52,26 -64,36
Mu3 B 9,11 11,73 18,42 19,69 -28,51 -61,25
Skew R 0,33 0,29 0,08 -0,03 -0,67 -1,39
Skew V 0,36 0,33 0,11 -0,02 -0,42 -1,07
Skew B 0,39 0,36 0,19 0,06 -0,05 -0,47
Mu4 R 19,94 25,73 44,78 66,83 78,79 72,35
Mu4 V 16,56 21,75 39,35 60,24 80,91 80,28
Mu4 B 14,21 18,60 35,34 55,48 86,30 89,25
Kurt R 1,96 1,99 1,97 2,00 2,03 3,43
Kurt V 1,89 1,93 1,88 1,91 1,82 2,63
Kurt B 1,69 1,61 1,49 1,49 1,51 1,64
Mu2 KL1 24,73 32,31 59,03 90,01 121,54 111,16
Mu2 KL2 4,69 5,66 9,48 13,58 21,27 24,56
Mu2 KL3 2,41 2,55 3,05 3,88 6,26 6,87
Mu3 KL1 17,30 22,14 29,36 -12,76 -86,39 -106,45
Mu3 KL2 3,23 4,80 9,21 13,07 22,61 24,40
Mu3 KL3 0,31 -1,00 -2,52 -4,21 -6,92 -4,78
Skew KL1 0,34 0,32 0,12 0,00 -0,36 -0,88
Skew KL2 0,33 0,61 0,92 0,89 1,20 0,98
Skew KL3 0,00 -0,06 -0,57 -1,28 -1,35 -0,34
Mu4 KL1 28,69 37,73 68,46 104,64 139,39 137,10
Mu4 KL2 6,41 7,90 13,35 19,00 30,58 32,92
Mu4 KL3 3,26 3,51 4,79 7,01 10,93 11,44
Kurt KL1 1,81 1,86 1,81 1,83 1,73 2,31
Kurt KL2 3,50 3,79 3,94 3,83 4,27 3,23
Kurt KL3 3,33 3,59 6,13 10,66 9,29 7,69
Tableau A4.2 : Index obtenus pour une même scène éclairée avec une intensité lumineuse
constante et une ouverture de caméra croissante de l'image Ca01 à l'image Ca11 (les images sont
présentées sur la figure 2.5).
- 34 -
Image Rv01 Rv05 Rv09 Rv13 Rv17 Rv21 Rv25 Rv29 Rv33
Mu1 R 123,58 122,68 117,65 116,42 115,88 111,09 112,81 113,27 119,51
Mu1 V 131,15 128,38 125,85 123,79 126,59 121,18 123,40 122,51 127,39
Mu1 B 134,88 130,62 130,63 129,67 136,14 130,31 131,66 129,50 131,75
Mu2 R 32,94 33,53 33,42 34,92 35,00 33,53 34,45 34,68 33,56
Mu2 V 29,99 31,09 30,50 32,80 30,63 29,84 29,15 31,48 30,15
Mu2 B 36,22 37,21 36,75 39,54 36,39 36,10 35,06 38,71 37,41
AxePrincip R 0,54 0,53 0,54 0,53 0,57 0,55 0,58 0,53 0,53
AxePrincip V 0,57 0,57 0,56 0,57 0,57 0,58 0,57 0,57 0,57
AxePrincip B 0,62 0,63 0,62 0,63 0,59 0,61 0,58 0,63 0,63
Mu3 R 28,86 26,62 29,37 28,09 29,97 28,54 29,02 28,43 27,45
Mu3 V 15,60 13,79 15,44 11,32 16,80 12,02 16,84 6,12 10,88
Mu3 B -25,76 -25,05 -27,24 -31,74 -33,23 -34,28 -32,25 -32,65 -29,11
Skew R 0,67 0,50 0,68 0,52 0,63 0,62 0,60 0,55 0,55
Skew V 0,14 0,09 0,13 0,04 0,16 0,07 0,19 0,01 0,05
Skew B -0,36 -0,31 -0,41 -0,52 -0,76 -0,86 -0,78 -0,60 -0,47
Mu4 R 44,00 43,92 44,15 45,33 45,47 44,06 44,51 44,81 44,04
Mu4 V 40,16 40,86 40,06 42,45 40,97 40,02 38,97 40,77 40,08
Mu4 B 43,86 44,76 44,13 47,68 45,95 46,25 44,38 46,65 45,30
Kurt R 3,18 2,94 3,05 2,84 2,85 2,98 2,78 2,79 2,97
Kurt V 3,21 2,98 2,98 2,81 3,20 3,24 3,19 2,82 3,12
Kurt B 2,15 2,09 2,08 2,11 2,54 2,70 2,57 2,11 2,15
Mu2 KL1 52,56 54,28 53,60 57,22 53,08 51,29 50,26 55,00 52,65
Mu2 KL2 22,68 22,48 22,35 23,62 25,46 25,79 26,81 25,41 25,34
Mu2 KL3 4,46 4,97 5,02 5,19 4,64 4,70 4,56 4,56 4,49
Mu3 KL1 23,31 19,54 19,66 -23,83 15,68 -22,14 24,01 -27,88 -15,87
Mu3 KL2 11,84 15,96 9,68 6,93 10,76 14,06 11,49 -4,09 15,55
Mu3 KL3 -3,19 -3,37 -3,67 -3,62 4,07 4,27 3,94 -3,73 -3,21
Skew KL1 0,09 0,05 0,05 -0,07 0,03 -0,08 0,11 -0,13 -0,03
Skew KL2 0,14 0,36 0,08 0,03 0,08 0,16 0,08 0,00 0,23
Skew KL3 -0,36 -0,31 -0,39 -0,34 0,67 0,75 0,65 -0,55 -0,37
Mu4 KL1 69,74 70,79 69,75 73,50 70,90 68,99 67,19 70,67 69,51
Mu4 KL2 28,47 29,59 28,29 29,97 31,06 31,68 32,48 31,16 32,09
Mu4 KL3 7,26 7,78 7,75 8,05 7,92 8,03 7,79 7,52 7,47
Kurt KL1 3,10 2,89 2,87 2,72 3,18 3,27 3,20 2,73 3,04
Kurt KL2 2,48 3,01 2,57 2,59 2,21 2,28 2,15 2,26 2,57
Kurt KL3 7,02 5,98 5,70 5,78 8,45 8,50 8,53 7,41 7,68
Tableau A4.3 : Index obtenus pour une même scène photographiée avec une caméra opérant une
rotation verticale autour de son axe optique, de l'image Rv01 à l'image Rv33 (les images sont
présentées sur la figure 2.7).
- 35 -
Annexe 5 : Code de la boîte à outils
Requete_Moments1to4
switch nargin
case 0
varargout{1} = {21,10}; % 10 represents a directory
return
case 3
img = varargin{1}; % image requete
distance_type = varargin{2}; % distance type
rep = varargin{3}; %
otherwise
error('invalid number of input arguments')
end
%--------------------------------------------------------------------------
% chargement des fichiers d'index dans le workspace
indexdata_file = fullfile(rep,'MatriceIndex.mat');
content=load(indexdata_file);
nombre_images=size(content.files_names,2);
distance=zeros(nombre_images,1);
nombre_retourn = 10;
res = cell(nombre_retourn);
distance(i) = sqrt(sum((content.results{i}{1}-Mu1RGB).^2));
- 36 -
end
[dd,ind] = sort(distance);
for i=1:nombre_retourn
res{i} = content.files_names{ind(i)};
end
my_subplot(res);
case 2
distance(i) = sqrt(sum((content.results{i}{1}-Mu1RGB).^2)+...
sum((content.results{i}{2}-Mu2RGB).^2));
end
[dd,ind] = sort(distance);
for i=1:nombre_retourn
res{i} = content.files_names{ind(i)};
end
my_subplot(res);
case 3
tic
for i = 1:nombre_images % avec 2 + racine cubique du moment RGB d'ordre 3
distance(i) = sqrt(sum((content.results{i}{1}-Mu1RGB).^2)+...
sum((content.results{i}{2}-Mu2RGB).^2)+...
sum((content.results{i}{3}-Mu3RGB).^2));
% problem de distance, it's not a vector, make it a vector !
end
[dd,ind] = sort(distance);
for i=1:nombre_retourn
res{i} = content.files_names{ind(i)};
end
my_subplot(res);
case 4
distance(i) = sqrt(sum((content.results{i}{1}-Mu1RGB).^2)+...
sum((content.results{i}{2}-Mu2RGB).^2)+...
sum((content.results{i}{3}-Mu3RGB).^2)+...
sum((content.results{i}{4}-Mu4RGB).^2));
end
[dd,ind] = sort(distance);
for i=1:nombre_retourn
res{i} = content.files_names{ind(i)};
- 37 -
end
my_subplot(res);
case 5
distance(i) = sqrt(sum((content.results{i}{1}-Mu1RGB).^2)+...
sum((content.results{i}{5}-Mu2KL).^2));
end
[dd,ind] = sort(distance);
for i=1:nombre_retourn
res{i} = content.files_names{ind(i)};
end
my_subplot(res);
case 6
distance(i) = sqrt(sum((content.results{i}{1}-Mu1RGB).^2)+...
sum((content.results{i}{5}-Mu2KL).^2)+...
sum((content.results{i}{6}-Mu3KL).^2));
end
[dd,ind] = sort(distance);
for i=1:nombre_retourn
res{i} = content.files_names{ind(i)};
end
my_subplot(res);
case 7
distance(i) = sqrt(sum((content.results{i}{1}-Mu1RGB).^2)+...
sum((content.results{i}{5}-Mu2KL).^2)+...
sum((content.results{i}{6}-Mu3KL).^2)+...
sum((content.results{i}{7}-Mu4KL).^2));
end
[dd,ind] = sort(distance);
for i=1:nombre_retourn
res{i} = content.files_names{ind(i)};
end
my_subplot(res);
end
- 38 -
%--------------------------------------------------------------------------
if nargout == 2
% 2 params de sortie obligatoires : image et matrice eventuellement vides
varargout{1} = [];
varargout{2} = [];
else
error('invalid number of output arguments');
end
Ce module fait appel à deux fonctions : la fonction Moments1to4 déjà décrite dans l'annexe 2, et
la fonction my_subplot, dont voici le code :
function my_subplot(rep)
n = size(rep,2); % nombre d'images resultats a afficher
figure
for i = 1:n
axis off
axis image
path=rep{i};
[pathstr, name, ext, versn] = fileparts(path);
img = imread(path);
subplot(1,n,i),image(img,'CDataMapping','scaled');
tt=strcat(num2str(i),':',name);
title(tt);
axis off
axis image
end
- 39 -
Annexe 6 : La base d'images Goodshoot
Goodshoot.com est l'un des principaux éditeurs européens d'images numériques libres de droits.
La base Goodshoot réunit plus de 7800 photos, classées en 100 dossiers thématiques répertoriés
ci-dessous de CD000 à CD100, contenant chacun 50 ou 100 images :
- 40 -
Pour plus d'informations, le lecteur intéressé pourra contacter :
Goodshoot.com
1, place du 18 juin 1940
F-74940 Annecy-le-Vieux
Tél. : 33 (0) 4 50 27 67 33
Fax : 33 (0) 4 50 27 67 44
E-mail : info@goodshoot.com
http://www.goodshoot.com
http://www.goodshoot.fr
- 41 -
Résumé
Ce mémoire présente les principes généraux de l'indexation d'images par le contenu. Il explore
plus en détail les méthodes d'indexation fondées sur l'histogramme des couleurs, et s'efforce d'y
apporter des améliorations par l'affinement progressif d'une représentation simplifiée des
histogrammes, par le biais des premiers moments de la distribution des couleurs.
L'efficacité de l'indexation est testée sur un ensemble de 7800 images, constituant la base
Goodshoot. La méthode consiste à présenter une image requête, et à chercher dans la base les n
images les plus proches, classées par ordre de similitude décroissante (n peut être choisi
arbitrairement). L'ensemble est implémenté, sous forme de boîte à outils, sur la plateforme Isaac,
dédiée à l'analyse et au traitement des images couleur.
Abstract
This report presents the general principles of CBIR (Content-Based Image Retrieval). It
emphasizes on methods based on color histogram and tends to increase performance by
improving the histogram representation.
The efficiency and credibility of the indexation is tested on the image database Goodshoot which
contains 7800 images. The system compares the input image to the images of the database and
returns the n nearest ones, ranked by decreasing similarity (n is arbitrarily chosen by the user).
The program is developed on Isaac, a specialized software environment dedicated to color image
processing.