Vous êtes sur la page 1sur 45

LABORATOIRE d'INGÉNIERIE des SYSTÈMES AUTOMATISÉS

EA 4014 – Université d'Angers

Institut des Sciences et Techniques de l'Ingénieur d'Angers

Rapport de stage du master 2 recherche

Systèmes Dynamiques et Signaux

effectué par Dawei LIU

du 1° février au 30 juin 2007

Indexation d'images
par l'histogramme des couleurs

Encadrement

B. Vigouroux et A. Clément

LISA – 4 boulevard Lavoisier – BP 42018 – 49016 ANGERS CEDEX – France

Tél. +33 (0)2 41 73 53 20 Fax +33 (0)2 41 73 53 30

http://www.istia.univ-angers.fr/LISA

bertrand.vigouroux@univ-angers.fr alain.clement@univ-angers.fr
Remerciements

Ce mémoire a été effectué à l'Université d'Angers, au sein de Laboratoire d'Ingénierie des


Systèmes Automatisés (LISA). Il n'aurait jamais pu voir le jour sans la précieuse collaboration
de plusieurs personnes, auxquelles je tiens à exprimer ma profonde reconnaissance.

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.

Je remercie également M. Alain Clément pour sa patience et sa disponibilité. Il a facilité mon


intégration dans le laboratoire, en me faisant partager sa riche expérience de la programmation.

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

2 – Indexation d'images par l'histogramme des couleurs 4


2.1 – L'histogramme des couleurs 4
2.2 – Requantification de l'espace des couleurs 5
2.3 – L'histogramme compact 6
2.4 – Représentation de l'histogramme par les moments de la distribution
des couleurs 6
2.5 – Implémentation sur la plateforme Isaac 8
2.6 – Résultats 9

3 – Recherche d'images par l'exemple 14


3.1 – Distances et similitudes entre vecteurs 14
3.2 – Distance ou similitude entre histogrammes 14
3.3 – Distance entre vecteurs 15
3.4 – Résultats 16

4 – Conclusion 24

Références 25

Annexe 1 : La plateforme Isaac 26


Annexe 2 : Code de la boîte à outils IndexMoment1to4 28
Annexe 3 : La base d'images MOVI 31
Annexe 4 : Exemples d'index 32
Annexe 5 : Code de la boîte à outils Requete_Moments1to4 35
Annexe 6 : La base d'images Goodshoot 39
1 – Introduction

Avec l'expansion de l'informatique et du multimédia, une problématique nouvelle est apparue :


gérer les quantités énormes et croissantes de documents numériques aujourd'hui disponibles.
Deux exemples, parmi beaucoup d'autres, illustrent ce foisonnement :
• une estimation datant de février 1999 [Lawrence and Giles 1999] montrait que 180
millions d'images, correspondant à environ 3 téraoctets de mémoire, étaient reparties sur
800 millions de pages disponibles sur internet ; le développement récent de la "toile"
laisse imaginer les chiffres actuels ;
• la banque de données Corbis, propriété de Bill Gates, compte 65 millions d'images, dont
2 millions disponibles en ligne. Ces images aux thèmes variés (sport, actualité, art,
histoire, etc.), parfois œuvres de photographes renommés, sont issues de diverses
collections publiques ou privées du monde entier.

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).

base d'images indexation base indexée

calcul de
requête
similitude

résultats

Figure 1 : Architecture d'un système de recherche d'images.

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.

2.1 – L'histogramme des couleurs

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 :

! C = $ C" # (C) (2.3)


!
C

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.

2.2 – Requantification de l'espace 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.
!

g=8 g=7 g=6 g=5

g=4 g=3 g=2 g=1


Figure 2.1 : Image Lena, dont chaque composante colorimétrique est codée sur g bits
(pour g décroissant de 8 à 1).

-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

Tableau 2.1 : Espace mémoire nécessaire au stockage de l'histogramme de l'image Lena


lorsque chaque composante colorimétrique est codée sur g bits.

2.3 – L'histogramme compact

Une alternative à la requantification des composantes colorimétriques sur un nombre réduit de


bits réside dans le calcul de l'histogramme compact [Clément et Vigouroux 2001]. Soit Q le
nombre de cellules occupées dans l’histogramme classique. En pratique, Q est toujours très
inférieur au nombre total 224 de cellules disponibles. Le principe de l’histogramme compact
consiste à ne coder que les Q cellules effectivement occupées. L’histogramme compact est
représenté par un tableau de dimension Q " 3 pour stocker les composantes colorimétriques, et
!
un tableau de dimension Q "1 pour les effectifs correspondants. A titre d'exemple, pour l'image
Lena, l'histogramme compact occupe un espace mémoire de 144 ko. Pour atteindre un tel résultat
!
avec un histogramme classique, il faudrait réduire à 5 le nombre de bits utilisé pour coder chaque
!
composante colorimétrique de l'image (voir tableau 2.1).

2.4 – Représentation de l'histogramme par les moments de la distribution des couleurs

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.

2.4.1 – Approche marginale

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

où " (C ) est le nombre de pixels présentant la valeur C comme composante X.

! On appelle moment d'ordre !


n, pour la distribution des valeurs de la composante X, le nombre :
1 n
! mn =
MN
# C " (C ) (2.5)
C

Le moment m0 d'ordre 0 vaut 1, le moment m1 d'ordre 1 est la valeur moyenne C de la


composante X.
!
On appelle moment centré d'ordre n ( n " 1) , pour la distribution des valeurs de!la composante X,

le nombre :
1 n
µn =
MN
$ (C " C!) # (C) (2.6)
C

Le moment centré µ1 vaut 0, le moment centré µ2 est la variance de la composante X ; sa racine


carrée est l'écart-type. La suite des γ premiers moments de l'histogramme en donne une
!
description de plus en plus fidèle au fur et à mesure que γ augmente.

2.4.2 – Approche vectorielle

En désignant par (C1 ,C2 ,C3 ) les trois composantes colorimétriques de la couleur C, les moments

d'ordre n = p + q + r pour la distribution des couleurs sont les nombres :


1 p
m p, q, r =
! #C 1 C2q C3r" (C) (2.7)
MN C
!
Il y a autant de moments d'ordre n que de permutations des nombres ( p, q,r ) ayant pour somme

! 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.

2.5 – Implémentation sur la plateforme Isaac

La plateforme Isaac d'analyse et de traitement des images couleur a été développée il y a


quelques années par Alain Clément [Clément 2002]. Ses principales caractéristiques sont
décrites en Annexe 1. Elle est conçue de façon à pouvoir être enrichie, de manière simple, par
des algorithmes implémentés sous forme de boîtes à outils.
Des trois méthodes d'indexation des images par l'histogramme des couleurs présentées dans ce
chapitre, je n'en ai implémenté qu'une, celle relative à la représentation approchée de
l'histogramme par les premiers moments de la distribution des couleurs. En effet, l'indexation par
histogramme requantifié a largement été explorée depuis les travaux pionniers de Swain et
Ballard [Swain et Ballard 1991]. De même, le calcul de l'histogramme compact est implémenté
sur la plateforme Isaac depuis sa conception.

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.

Li01 Li03 Li05 Li07

Li09 Li11 Li13 Li15


Figure 2.2 : Même scène prise sous des éclairements décroissants.

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.

2.6.2 – Influence de l'ouverture de la caméra

Ca01 Ca03 Ca05

Ca07 Ca09 Ca11


Figure 2.5 : Même scène prise avec une ouverture de caméra croissante.

- 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.

2.6.3 – Influence de la rotation de la caméra autour de l'axe optique

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

Rv21 Rv25 Rv29 Rv33


Figure 2.7 : Même scène photographiée avec différentes orientations de la caméra.

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

3.1 – Distances et similitudes entre vecteurs

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 )

qui traduisent respectivement les propriétés de positivité, d'identité, de symétrie et d'inégalité


triangulaire. Si ces propriétés ne sont pas – ou pas toutes – respectées, on parle plutôt de
!
similitude entre vecteurs, avec pour notation s(h1 ,h2 ) .

3.2 – Distance ou similitude entre histogrammes


!

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

" min(h 1, j , h2, j )


j=1
sSwain (h1 ,h2 ) = n
(3.2)
"h 1, j
j=1

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

" min(h 1, j , h2, j )


j=1
d Smith (h1 ,h2 ) = (3.3)
# n n &
min%%" h1, j , " h2, j ((
$ j=1 j=1 '
Issue de la théorie de l'information, la divergence de Kullback-Leibler [Kullback 1968] permet
de mesurer la dissimilarité entre deux distributions :
!
n
h1, j
sKullback (h1 ,h2 ) = " h1, j log (3.4)
j=1
h2, j

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].

3.3 - Distance entre vecteurs

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

où p est un réel positif.


Les distances les plus utlisées sont la distance L1 :
!
n
d L1 (h1 ,h2 ) = # h1, j " h2, j (3.7)
j=1

la distance L2 (ou distance euclidienne) :


n
2
! d L2 (h1 ,h2 ) = 2 # (h " h2, j ) (3.8)
1, j
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

3.4.1 - Choix des index

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).

Index Distance de l'image Li01 à l'image


utilisés Li03 Li05 Li07 Li09 Li11 Li13 Li15
R1 7 28 65 115 149 194 230
R2 7 29 67 120 156 204 243
R3 8 34 94 154 183 225 258
R4 8 35 96 159 191 239 277
R5 7 28 67 119 155 204 243
R6 9 78 115 152 178 217 251
R7 9 79 116 156 185 229 268

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.

Index Distance de l'image Rv01 à l'image


utilisés Rv05 Rv09 Rv13 Rv17 Rv21 Rv25 Rv29 Rv33
R1 5 9 12 9 17 14 14 6
R2 5 9 12 9 17 14 15 7
R3 6 9 14 12 19 15 19 9
R4 6 9 15 12 19 15 19 9
R5 5 9 12 9 17 14 15 7
R6 8 10 49 14 49 16 56 40
R7 8 10 49 15 49 17 56 40

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

3.3.2.1 – Mode opératoire

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.2 : Exemple d'image requête (image 001003 de la base Goodshoot).

En réponse à la requête, le module Requete_Moments1to4 renvoie à l'écran la fenêtre donnée sur


la figure 3.3, lorsqu'on utilise les index R3. Le temps de réponse est d'environ 5 secondes.

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.

1:001003 2:001005 3:001006 4:001018 5:088020

6:001017 7:041078 8:001014 9:001002 10:001023

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.

Image Images retournées, avec leur classement


Index
requête 2 3 4 5 6 7 8 9 10
R1 001023 042049 088030 004063 054019 001008 004068 088020 001010
R2 001005 001018 001023 001001 001008 001006 001011 040075 001010
001003
R3 001005 001006 001018 088020 001017 041078 001014 001002 001023
R4 001005 001006 001018 001004 001011 041078 074012 001023 001010
R1 054016 040075 045099 007015 042023 096004 042071 021095 001018
R2 001018 001011 001005 040075 001003 089011 040007 042018 001004
001001
R3 084004 035027 042018 025096 040007 001011 060055 054016 082028
R4 084004 035027 025096 060055 084005 024042 082028 042018 095027
R1 002032 020031 020044 039046 002086 006033 020025 026034 047061
R2 009055 027006 004085 026023 049056 025077 009088 045002 002086
004076
R3 009055 027006 045002 004085 026023 049056 013079 025003 013035
R4 009055 027006 045002 013079 004085 049056 010074 026023 013035
R1 040065 004071 013006 004036 002077 014080 023076 070024 100071
R2 013006 040065 004071 028020 020006 020017 054026 070024 047080
013005
R3 020003 020016 013085 028005 026083 047088 047008 020005 012008
R4 020003 020016 013085 026083 028005 047088 020005 013006 047008
R1 047033 047091 025085 047032 047085 009009 028026 012006 047004
R2 025085 025088 004002 006093 047091 047032 012003 047033 036087
012002
R3 014082 012078 082070 006077 012003 012079 004053 037039 012001
R4 014082 006077 082070 012003 012078 083024 004055 036032 037039
R1 084046 086029 020059 094046 094023 095047 089032 078076 078021
R2 095047 094023 020087 020058 084046 035017 078022 084045 094046
021001
R3 035017 095047 023096 094023 022046 035055 021029 035048 020058
R4 035017 023096 022046 021029 035055 096031 095047 035048 063049

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)

1:024045 2:057021 3:066013 4:066045 5:024051

6:078090 7:081021 8:066035 9:052006 10:074096

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 et Vigouroux 2001] : Alain Clément, Bertrand Vigouroux : Un histogramme compact


pour l’analyse d’images multi-composantes, Actes du 18° colloque GRETSI sur le Traitement
du Signal et des Images, Toulouse, France, 10 – 13 septembre, 2001, vol. 1, p. 305-307.

[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).

[Puzicha et al. 1997] : J. Puzicha, T. Hofman, J. Buhman : Non-parametric similarity measures


for unsupervised texture segmentation and image retrieval, IEEE Conference on Computer
Vision and Pattern Recognition, p. 267-272 (1997).

[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

Une plateforme conçue pour la recherche

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.

Une interface standardisée

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

function varargout = IndexMoment1a4(varargin)


% Calcul des differents parametres statistiques
% caracterisant la distribution des couleurs d'une image
% et sauvegarde de ces parametres dans un
% ENTREE:
% - image couleur rgb brute
% - repentree : repertoire des images a indexer
% - represul : repertoire de lecture/ecriture des resultats cumules de mesure
% SORTIE:
% - néant
% Isaac Macintosh - Bertrand VIGOUROUX et Dawei LIU 2007/03/27

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');

iz= ix | iy | iyy | iyyy | iyyyy | iyyyyy| iyyyyyy ;


image_files=image_files(~iz); % on s'interesse uniquement aux fichiers images

s=size(image_files,1); % nombre d'images dans le repertoire


image_files_full_names=cell(1,s);
theresults=cell(1,s);

for i=1:s % pour chaque image dans le repertoire


image_files_full_names{i}=fullfile(repentree,image_files(i).name); % construction du nom complet
img=imread(image_files_full_names{i}); % lecture des images

[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 :

function [Mu1RGB,Mu2RGB,Mu3RGB,Mu4RGB,Mu2KL,Mu3KL,Mu4KL] = Moments1to4(Image)


% Calcul des differents parametres statistiques
% caracterisant la distribution des couleurs d'une image.
% ENTREE:
% - image
% SORTIE:
% - image inchangee
% - les parametres statistiques calcules
% Isaac Macintosh - Bertrand VIGOUROUX 01.06.07

% Transformation [MxNx3] en [MNx3]


D = size(Image,1)*size(Image,2) ; % nombre de pixel dans l'image
X = double(reshape(im2uint8(Image),D,3));
Mu1RGB = mean(X);
% Donnees centrees autour de leur moyenne
MM = repmat(Mu1RGB,size(X,1),1);
Xc = X-MM;
% Ecart-type = racine carree Mu2 des moments centres d'ordre 2 (RGB)
Mom2RGB = mean((Xc).^2);
Mu2RGB = nthroot(Mom2RGB,2);
% Racine cubique Mu3 des moments centres d'ordre 3 (RGB)
Mom3RGB = mean(Xc.^3);
Mu3RGB = nthroot(Mom3RGB,3);
SkewnessRGB = Mom3RGB./Mu2RGB.^3;
% Racine 4eme Mu4 des moments centres d'ordre 4 (RGB)
Mom4RGB = mean(Xc.^4);
Mu4RGB = nthroot(Mom4RGB,4);

- 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

Image Li01 Li03 Li05 Li07 Li09 Li11 Li13 Li15


Mu1 R 196,76 193,06 181,20 158,36 125,35 101,53 67,36 37,36
Mu1 V 173,52 169,15 155,19 131,00 98,52 76,85 48,12 27,58
Mu1 B 95,13 91,44 80,86 64,41 45,21 34,17 22,92 17,87
Mu2 R 52,67 53,07 53,30 50,35 43,04 35,96 24,67 11,95
Mu2 V 58,53 58,24 55,70 49,49 38,65 30,70 18,48 6,75
Mu2 B 49,26 47,88 43,28 35,43 24,62 16,99 7,48 3,14
AxePrincipal R 0,57 0,58 0,60 0,64 0,69 0,72 0,79 0,88
AxePrincipal V 0,65 0,65 0,64 0,64 0,62 0,62 0,58 0,47
AxePrincipal B 0,51 0,50 0,47 0,43 0,37 0,31 0,20 0,12
Mu3 R -48,01 -46,48 -40,47 -26,97 24,38 23,36 19,50 11,96
Mu3 V -36,84 -33,35 -20,81 25,19 23,86 21,40 15,86 6,67
Mu3 B 47,44 46,51 42,73 35,88 26,32 19,15 8,79 2,45
Skew R -0,76 -0,67 -0,44 -0,15 0,18 0,27 0,49 1,00
Skew V -0,25 -0,19 -0,05 0,13 0,24 0,34 0,63 0,97
Skew B 0,89 0,92 0,96 1,04 1,22 1,43 1,62 0,48
Mu4 R 68,31 68,19 67,28 63,85 57,17 48,08 33,18 17,23
Mu4 V 70,63 70,30 67,72 61,89 48,63 38,66 24,01 9,51
Mu4 B 65,25 63,92 58,34 48,33 34,74 25,17 11,91 4,45
Kurt R 2,83 2,73 2,54 2,59 3,11 3,20 3,27 4,32
Kurt V 2,12 2,12 2,18 2,44 2,51 2,51 2,85 3,95
Kurt B 3,08 3,18 3,30 3,46 3,97 4,81 6,43 4,05
Mu2 KL1 89,75 89,32 86,16 77,36 61,66 49,31 31,17 13,57
Mu2 KL2 22,90 21,85 18,89 14,97 10,99 8,46 4,97 3,09
Mu2 KL3 6,90 6,66 6,01 5,68 5,37 4,65 3,16 2,13
Mu3 KL1 -47,21 -41,16 25,63 45,56 44,75 37,62 26,52 13,72
Mu3 KL2 -18,43 -17,70 -13,94 -5,72 5,51 2,89 -1,08 1,34
Mu3 KL3 5,98 5,82 4,74 4,31 4,37 3,85 -2,12 -0,82
Skew KL1 -0,15 -0,10 0,03 0,20 0,38 0,44 0,62 1,03
Skew KL2 -0,52 -0,53 -0,40 -0,06 0,13 0,04 -0,01 0,08
Skew KL3 0,65 0,67 0,49 0,44 0,54 0,57 -0,30 -0,06
Mu4 KL1 109,08 108,63 105,51 97,37 80,68 65,05 41,82 19,55
Mu4 KL2 32,56 31,56 27,46 20,70 14,35 10,97 6,49 4,39
Mu4 KL3 9,75 9,47 8,52 7,88 7,44 6,61 4,43 2,84
Kurt KL1 2,18 2,19 2,25 2,51 2,93 3,03 3,24 4,31
Kurt KL2 4,09 4,36 4,47 3,66 2,91 2,83 2,92 4,10
Kurt KL3 3,99 4,10 4,04 3,70 3,70 4,09 3,87 3,17

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

function varargout = RequeteMoments1a4(varargin)


%
% Recherche d'une image par l'exemple
% par l'utilisation des moments de la distribution des couleurs
%
% ENTREE:
% - image requete
% - choix d'une distance
% 0 : Stricker et Orengo
% 1 : 0 + Kurtosis marginal
% 2 : principal
% 3 : vectoriel
% - rep : repertoire d'images
%
% SORTIE:
% - neant
%
% Isaac Macintosh - Bertrand VIGOUROUX et Dawei LIU 2007/03/27

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);

% calcul des parametres de l'image requete


[Mu1RGB,Mu2RGB,Mu3RGB,Mu4RGB,Mu2KL,...
Mu3KL,Mu4KL] = Moments1to4(img);

% calcul des distances selon le type choisi


switch distance_type
case 1 % avec uniquement la valeur moyenne

for i = 1:nombre_images % pour chaque image on calculer un distance

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

for i = 1:nombre_images % avec 1 + ecart-type RGB

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

for i = 1:nombre_images % avec 3 + racine quatrieme du moment RGBd'ordre 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

for i = 1:nombre_images % avec 1 + ecart-type KL

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

for i = 1:nombre_images % avec 5 + racine cubique du moment KL d'ordre 3

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

for i = 1:nombre_images % avec 6 + racine quatrieme du moment KL d'ordre 4

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 :

CD001 Fonds et paysages CD051 Communication et Internet


CD002 Personnages CD052 Soins et beauté
CD003 Lagons et palmiers CD053 Mappemondes, globes et espace
CD004 Arbres et forêts CD054 Concept et surréalisme
CD005 Cascades et eaux CD055 Textures eaux II
CD006 Sports et loisirs CD056 Concepts et idées
CD007 Textures et fonds CD057 Personnages et loisirs
CD008 Montagnes CD058 Panoramiques montagne
CD009 Habitats et villes CD059 New York
CD010 Affaires et transports CD060 Euro et symboles
CD011 Affaires et finances CD061 Familles
CD012 Champs et fleurs CD062 Portraits
CD013 Animaux CD063 Enfants
CD014 Les 4 saisons CD064 Couples
CD015 Textures nature CD065 Routes et paysages
CD016 Fruits et légumes CD066 Détails Nature
CD017 Textures eaux CD067 Trafic et Industrie
CD018 Textures tissus CD068 Affaires et Corporate
CD019 High-tech CD069 Affaires et Attitudes
CD020 Familles et enfants CD070 San Francisco et LA
CD021 Affaires et communication CD071 Familles à la plage
CD022 Affaires et idées CD072 Mondes opposés
CD023 Couples et ados CD073 Concepts colorés
CD024 Création et graphisme CD074 Paysages sauvages
CD025 France et symboles CD075 Affaires au Bureau
CD026 Personnages et vacances CD076 Concepts miniatures
CD027 Sites célèbres du monde CD077 Séniors au quotidien
CD028 Sport et action CD078 Beauté féminine
CD029 Affaires, espace et industrie CD079 Back office
CD030 Paysages panoramiques CD080 Couples d’aujourd’hui
CD031 Affaires et création CD081 E-Commerce
CD032 Super panoramiques CD082 Consommateurs d'aujourd'hui
CD033 Transports et industrie CD083 Claviers et Ordinateurs
CD034 Seniors CD084 Habitat et concepts
CD035 Plats et gastronomie CD085 Les sens en action
CD036 Eléments et nature CD086 Chiffres et Graphiques
CD037 Ciel et Soleil CD087 Paysages Tropicaux
CD038 USA et Symboles CD088 Vacances et Icones
CD039 Micro textures CD089 Personnages et téléphones mobiles
CD040 Super textures CD090 Business en mouvement
CD041 Affaires et Euro CD091 Portraits de business
CD042 Affaires et concepts CD092 Business et entretiens
CD043 Technologie et communication CD093 Autour de la piscine
CD044 Médecine et santé CD094 Familles à la maison
CD045 Gastronomie moderne CD095 Portraits de famille
CD046 Panoramiques nature CD096 Concepts et Assurance
CD047 Agriculture CD097 Vie de Famille
CD048 Villes européennes CD098 Fruits Colorés
CD049 Noël et fêtes CD099 Foule à Paris
CD050 Paysages étonnants CD100 Aventure et Expédition

- 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.

Vous aimerez peut-être aussi