projet de fin d'année - glossip · la vidéo est la touche multimédia la plus subtile et la...
TRANSCRIPT
Projet de Fin d'Année
2ème
année
Encadré par:
M. Rachid OULAD HAJ THAMI M. Youssef HADI
Réalisé par:
Mossaab BAGDOURI Saad SARHANI
Année Universitaire : 2005 - 2006
Université Mohammed VI Ecole Nationale Supérieure
d’Informatique et d’Analyse des Systèmes
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
à݃˜@ @
ى مع صعوبة معالجة مقطع الفيديو آوحدة متصلة، يصبح االنتقال إلى المجال المنفصل ال غن .حيث يتحول األمر إلى معالجة أسهل للصور المتتابعة. عنه
مساحات متتالية لكل واحدة وفي هذا الصدد، تمكن عملية التجزئة من تقسيم داللي للمقطع إلى .وبذلك يمكن القيام بتخزين تمثيلي لهذه المساحات في قاعدة بيانات. معنى مستقل بذاته
ى دة عل ان ويهدف هذا المشروع إلى الجمع بين تقنية للتجزيء معتم وان مع مبي ات األل إمكانيJMF لـJava.
Résumé Le traitement de la vidéo en tant qu'entité continue est délicat. Le passage au
domaine discret s'avère indispensable pour éditer une vidéo étant donné que les images
sont plus faciles à manipuler.
Dans ce sens, la segmentation fournit une décomposition sémantique d'une vidéo.
Les plans vidéo qu'elle génère sont des classes indépendantes sémantiquement les unes
des autres. Ceci étant, on a ainsi la possibilité d'effectuer un stockage représentatif de ces
images dans une base de données.
Ce projet intervient donc pour combiner une technique de segmentation basée sur
les histogrammes de couleur avec la richesse de l'API JMF de Java.
Abstract The processing of a video is a tough task. Therefore, it is necessary to pass from the
continuous aspect of a video to the discreet one, as the treatment of a frame is much
easier.
To cut up a video provides a well-based decomposition. In fact, the captured shots
are semantically independent. This helps to store typical data in the database.
Hence comes the interest of this project, as it combines both cut detection
techniques using color histogram and strength of Java’s JMF Library.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
RRReeemmmeeerrrccciiieeemmmeeennntttsss………
Il était agréable de nous acquitter d’une dette de reconnaissance envers
tous ceux, dont la contribution au cours de ce projet, a favorisé son aboutissement.
Ainsi, nous tenons vivement à remercier notre encadrant Mr Youssef
HADI qui n’a ménagé aucun effort pour nous aider et nous orienter le long de
notre projet. Nous remercions aussi notre professeur Mr Rachid OULAD HAJ
THAMI pour son encadrement précieux et pour le soutien qu’il nous a donné.
Que le corps professoral et administratif de l’ENSIAS trouve ici nos vifs
remerciements.
Nous remercions enfin toute personne qui a contribuée de près ou de loin à
l’élaboration de ce rapport.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Table des matières
Liste des figures ................................................................................................ 5
Introduction ...................................................................................................... 6
Chapitre 1 : Segmentation de la vidéo par les histogrammes de couleurs ... 8 1.1. Introduction ............................................................................................................ 8
1.2. Travaux antérieurs ................................................................................................ 9
1.3. Méthode proposée .................................................................................................. 9 1.3.1. La transformation réversible de couleur .................................................... 11 1.3.2. L’histogramme de couleur ........................................................................... 12
Chapitre 2 : Analyse et conception .............................................................. 14 2.1. UML ...................................................................................................................... 14
2.2. Analyse .................................................................................................................. 16
2.3. Conception ............................................................................................................ 17 2.3.1 Les cas d’utilisation........................................................................................ 17 2.3.2 Les diagrammes de séquence ........................................................................ 17 2.3.3. Le diagramme de classes .............................................................................. 21
Chapitre 3 : Outils de développement .......................................................... 23 3.1. Java........................................................................................................................ 23
3.1.1 Java Virtual Machine .................................................................................... 25 3.1.2 Java est interprété .......................................................................................... 25 3.1.3 Java est robuste .............................................................................................. 25 3.1.4 Types d’applications Java ............................................................................. 26
3.2. Java Media Framework : JMF ........................................................................... 26 3.2.1. Architecture JMF .......................................................................................... 26
3.3. XML ...................................................................................................................... 30 3.3.1. Caractéristiques ............................................................................................ 30 3.3.2. JDOM ............................................................................................................. 31
Chapitre 4 : Réalisation de l'application ...................................................... 33
Conclusions et perspectives .......................................................................... 38
Références ....................................................................................................... 39
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Liste des figures
Figure 1 - Diagramme des cas d’utilisation ...................................................................................... 17 Figure 2 - Diagramme de séquence du cas chargement de la vidéo ......................................... 18 Figure 3 - Diagramme de sequence du cas Play Vidéo ................................................................. 19 Figure 4 - Diagramme de sequence du cas Segmentation Vidéo ............................................... 20 Figure 5 - Diagramme de classes ........................................................................................................ 21 Figure 6 - Etapes de compilation ......................................................................................................... 24 Figure 7 - Player ....................................................................................................................................... 27 Figure 8 - Différents états d’un Player ............................................................................................... 27 Figure 9 - Processor ............................................................................................................................... 28 Figure 10 - Différents états d’un Processor ...................................................................................... 29 Figure 11 - Menu principal ..................................................................................................................... 33 Figure 12 - New Project .......................................................................................................................... 34 Figure 13 - Play Video ............................................................................................................................. 35 Figure 14 - Load Project ......................................................................................................................... 36 Figure 15 - Fichier XML .......................................................................................................................... 37
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Introduction
La vidéo est la touche multimédia la plus subtile et la plus prometteuse. L'essor
qu'ont connu les méthodes de traitement des vidéos est énorme. Mais c'est quoi d'abord
une vidéo? Une vidéo regroupe l'ensemble des techniques permettant la visualisation ou
l'enregistrement d'images animées accompagnées du son sur un support électronique.
Le traitement d'une vidéo requiert des connaissances solides sur les fichiers vidéo.
En effet, chaque type dispose de ces propres caractéristiques, et est donc plus sensible ou
moins au différents traitements, notamment la segmentation.
Il existe plusieurs formats des documents vidéo et se diffèrent par la technique de
compression utilisée :
• AVI (Audio Video Interleave : Video For Windows)
L'Audio Video Interleave (audio vidéo entrelacée) (dont l'acronyme est AVI), est
un format de fichier conçu pour stocker des données audio et vidéo. AVI utilise
un même paquet standard « fichier conteneur » afin d'être lu simultanément. Il a
été présenté par Microsoft en novembre 1992, en tant qu'élément de la vidéo pour
la technologie de Windows. Dans un fichier AVI, chaque composante audio ou
vidéo peut être compressé par n'importe quel codec. Le format DivX est souvent
utilisé comme codec vidéo, et le format mp3 comme codec audio, mais d'autres
codecs peuvent également être utilisés, par exemple XviD ou MPEG pour la
vidéo, et mp2, WAV etc. pour l'audio.
Le format AVI permet de réunir en un seul fichier une piste vidéo et jusqu'à 99
pistes audio, ce qui permet de bénéficier, par exemple, de plusieurs langues pour
un même film
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
• MPEG (Moving Pictures Expert Group)
MPEG, acronyme de Moving Picture Experts Group est le groupe de travail SC
29/WG 11 du comité technique mixte JTC 1 de l'ISO et de la CEI pour les
technologies de l'information chargé du développement de normes internationales
pour la compression, la décompression, le traitement et le codage de la vidéo, de
l'audio et de leur combinaison, de façon à satisfaire un large panel d'applications.
Les formats produits par MPEG sont ouverts, mais non libres : leur utilisation est
soumise au paiement de royalties.
Le travail que nous avons réalisé consiste à développer une application de
segmentation de la vidéo qui se base sur les histogrammes de couleurs. Le
développement a été réalisé en Java sur la plateforme NetBeans 5.0 en utilisant le
framework JMF (Java Media Framework) comme bibliothèque du traitement de la vidéo.
Afin de bien structurer la segmentation effectuée, une base de données native XML a été
adoptée.
Le présent document est structuré comme suit: le premier chapitre présente les
différentes approches de segmentation qui existent actuellement, puis le détail de la
méthode qui a été adoptée. Le deuxième chapitre fournit une analyse et une conception
globales indispensables pour l'implémentation de l'application. Le troisième chapitre est
un survol des outils de développement qui ont été choisis. Le quatrième chapitre illustre
les interfaces de l'application par l'intermédiaire de prises d'écrans. Finalement, une
conclusion et quelques perspectives ont été proposées.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Chapitre 1 :
Segmentation de la vidéo par les
histogrammes de couleurs
Dans ce chapitre, nous présentons la méthode qui sera utilisée pour réaliser la
segmentation d’une vidéo. Nous parlerons aussi des autres méthodes qui existent.
1.1. Introduction
Les données multimédia prennent une part de plus en plus importante dans les
applications actuelles. La plupart de ces applications nécessitent des outils pour
segmenter des séquences d’images dans le domaine temporel. Cette segmentation est
souvent effectuée par une détection des cuts (transitions brusques) ou d’autres effets plus
complexes (fondu, volet...). La segmentation est une étape cruciale dans des applications
telles que la gestion de bases de données multimédia ou la création automatique de
résumés de séquences télévisées ou de films. Elle peut être aussi utilisée comme
prétraitement pour le suivi d’objet en temps réel dans des scènes dynamiques (acquises
avec une caméra en mouvement).
Nous définissons le problème de segmentation vidéo comme la détection
automatique des frontières qui séparent les plans. Une vidéo peut être divisée en plus
petites composantes appelées plans qui sont des suites d’images qui proviennent d’une
seule opération d’enregistrement d’une unique caméra et qui représentent chacun une
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
action continue dans l’espace et le temps. Au cours du montage, les plans peuvent être
combinés de plusieurs façons pour produire la vidéo finale. Les frontières diffèrent en
fonction de la technique utilisée pour combiner deux plans. Le type le plus simple est la
coupure franche et résulte d’une simple juxtaposition de deux plans. D’autres types de
frontières telles les fondus et les volets résultent de l’addition d’images entre les plans
pour produire des effets de transitions plus graduels. Un fondu en ouverture fait
progressivement apparaître un plan à partir d’une image noire. A l’inverse, un fondu en
fermeture fait progressivement disparaître un plan vers une image constante. Un fondu
enchaîné est une combinaison d’un fondu en ouverture et un fondu en fermeture. Un
volet est une transition graduelle dans laquelle une image semble en pousser une autre en
dehors de l’écran. Dans cet article, nous sommes concernés par la détection des
transitions brusque de plans vidéo (coupure franche).
Nous rappellerons tout d’abord quelques méthodes classiques de détection des
changements de plan. La méthode proposée sera ensuite présentée.
1.2. Travaux antérieurs
Plusieurs méthodes ont été proposées pour la détection des coupes vidéo. La
plupart d’entres-elles définissent une mesure de différence, locale ou globale, entre les
trames consécutives en vue d’identifier les frontières de plans. Quand une image et
l'image suivante sont suffisamment différentes, une transition brusque (coupe) peut être
déterminée. Les méthodes présentes dans la littérature peuvent être principalement
regroupées en trois catégories utilisant respectivement les différences pixel à pixel, la
comparaison d’histogrammes, et l’estimation de mouvement. Il est important de noter
que les méthodes peuvent traiter des séquences vidéo non compressées ou compressées
[1].
Les méthodes basées sur les différences pixel à pixel détectent un changement de
plan en calculant une différence entre les pixels de l’image à l’instant t et ceux de l’image
à l’instant t+1. Si le nombre de pixels différents est supérieur à un seuil, alors on
considère que l’on est en présence d’un cut ou d’un autre effet. Dans [2], la comparaison
pixel à pixel a été présentée pour évaluer les différences en valeurs d'intensité ou de
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
couleur des pixels correspondants dans deux images successives. Le défaut principal de
ces méthodes est leur manque de robustesse au bruit et aux forts mouvements pouvant
être présents dans la scène. Les méthodes à base d’histogramme comparent deux images
successives en s’appuyant sur leurs histogrammes respectifs. Une différence des deux
histogrammes est calculée et comparée à un seuil. Comme dans le cas des méthodes
basées sur les différences pixel à pixel, un changement de plan est détecté si la différence
obtenue est supérieure au seuil. Plusieurs recherches ont été proposé pour prouver leur
performance, comme l’égalization d'histogramme [3], intersection d'histogramme [4],
histogramme sur le groupe d'images [5], et les teste normalisés [6]. Une autre question
intéressante est quel espace de couleur utilisé quand nous considérons des techniques
basées sur la couleur comme la comparaison d'histogramme de couleur [7]. Les
histogrammes monochromes et les histogrammes de couleur avec différents espaces de
couleur sont le plus utilisés pour détecter et identifier les transitions dans les plans vidéo.
Dans MPEG-7, les descripteurs de couleur emploient les différents espaces de couleur
[8], comme le monochrome, le RGB, le HSV, et le HMMD. Du fait de l’utilisation
d’histogrammes, il est possible de ne pas détecter un cut si les deux images concernées
ont un histogramme similaire mais un contenu différent. Les méthodes basées sur une
estimation du mouvement utilisent l’information de mouvement comme critère principal
pour la détection des changements de plan [1]. Les mouvements sont estimées pour
chaque pixel d’une image obtenue à l’instant t, et sont comparés avec ceux de l’image
correspondant à l’instant t+1. Les approches basées sur les blocks utilisent des
caractéristiques locales pour augmenter la robustesse aux mouvements des objets et le
mouvement de la caméra. Chaque image est divisé en un certain nombre de blocs et
comparés par la suite avec leurs contreparties dans l'image successive. Typiquement, la
similarité ou la dissimilarité entre deux images peut être mesurée en employant un
rapport de probabilité, comme proposé dans [2], [9]. Une frontière de transition est
identifiée si le nombre de blocs changés est au-dessus du seuil donné. Évidemment, cette
approche fournit une meilleure tolérance au mouvement ralenti ou petit entre les images.
Un nombre trop important de mouvements incohérents entre les deux images successives
implique alors la détection d’un changement de plan. Ces méthodes ne sont souvent pas
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
capables de traiter des séquences vidéo en temps réel, du fait des ressources nécessaires
pour les estimations de mouvement. Même si les différentes méthodes présentées
précédemment ont leurs propres avantages et inconvénients, elles utilisent toutes des
seuils fixés la plupart du temps de manière empirique. Ces seuils nécessitent des
paramétrages spécifiques au type de séquence vidéo analysée, et ne permettent donc pas
une acquisition de données non contrainte ni une méthode générique, c’est-à-dire
indépendante du domaine des séquences vidéo traitées.
1.3. Méthode proposée
La méthode adoptée dans ce travail est basée sur les histogrammes de couleurs [10].
La détection des changements de plans est ainsi assurée avec une précision satisfaisante.
1.3.1. La transformation réversible de couleur
Un codage typique des images consiste à attribuer à chaque pixel un triplet unique
associé aux composants rouge (Red), vert (Green) et bleue (Blue) – RGB. La
transformation en question associe chaque triplet (R, G, B) à un entier unique F(R, G, B).
La caractéristique principale de cette transformation est qu’elle est bijective, c'est-à-dire
qu’elle permet de retrouver la couleur (R, G, B) à partir de F(R, G, B).
Soit n un entier codé sur 8 bits, et im sa représentation au èmei bit. On définit le
vecteur U(n) par :
U(n) = )1(38
12 −
=∑ i
iim (1)
La fonction réversible de couleur est définit comme suit :
F(R,G,B) = 4U(G) + 2U(R) + U(B) (2)
R, G, B étant codés sur 8 bits. La fonction F est bijective de [ ]255..0 vers [ [242..0
[10].
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Cette transformation est basée sur une décomposition binaire des composantes de
couleurs, réalisée grâce au vecteur U. Remarquons que puisque U ne peut prendre en
argument que les valeurs de 0 à 255, les U(n) peuvent être calculées une fois pour toute.
Le temps de calcul sera ainsi plus rapide.
On constate aussi que dans la relation (2), le composant vert est plus pesant que le
rouge et le bleu. Ceci est dû au fait que l’œil humain est plus sensible aux variations de la
couleur verte qu’aux rouge ou au bleu.
1.3.2. L’histogramme de couleur
Afin de générer un histogramme de couleur à partir de la transformation réversible,
on réalise une quantification du F(R,G,B) de chaque pixel en M niveaux [10].
L’histogramme à M niveaux est établi par la relation :
)(kH F = ),)),,((( ,,, kBGRFQ jijijiF −∑δ pour Mk ≤≤0
=− )( jiδ ⎩⎨⎧
≠=
jipourjipour
01
Où FQ ( ) représente la fonction de quantification qui quantifie ),,( ,,, jijiji BGRF en
une valeur entre 0 à 255.
La différence entre deux histogrammes successives est un histogramme définit par :
idH = 21
0 1
1
)()()()(∑
−
= −
−⎟⎟⎠
⎞⎜⎜⎝
⎛+−M
j ii
ii
jHjHjHjH
pour i=1,2,….L-1
Avec L le nombre total d’images dans la séquence vidéo.
Si la différence idH entre l’image courante et la précédente est supérieure à un
seuil optimal T , l’images courante est considérée comme un cut, tandis que la franche
vidéo est générée automatiquement.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Conclusion
Dans ce chapitre, nous avons parcouru les différents types de méthodes qui
permettent la segmentation temporelle. Puis nous avons détaillé les bases mathématiques
de la méthode choisie. La prochaine partie sera consacrée à l’analyse et la conception de
l’application.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Chapitre 2 :
Analyse et conception
Dans ce chapitre, nous présentons l’analyse et la conception de l’application. Elles
ont été faite en utilisant la notation UML.
2.1. UML
UML est un langage graphique de modélisation des données et des traitements.
C’est une formalisation très réussie de la modélisation objet utilisée en génie logiciel. Il
est l’accomplissement de la fusion des précédents langages de modélisation objet Booch,
OMT Et OOSE.
Le formalisme d’UML
Le formalisme UML est composé de 13 types de diagrammes (9 en UML 1.3) [11].
UML n'étant pas une méthode, leur utilisation est laissée à l'appréciation de chacun,
même si le diagramme des cas d'utilisation est généralement considéré comme l'élément
central d'UML. De même, on peut se contenter de modéliser seulement partiellement un
système, par exemple certaines parties critiques.
UML se décompose en plusieurs sous-ensembles
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
• Les vues : Les vues sont les observables du système. Elles décrivent le
système d'un point de vue donné, qui peut être organisationnel, dynamique,
temporel, architectural, géographique, logique, etc. En combinant toutes ces
vues il est possible de définir (ou retrouver) le système complet.
• Les diagrammes : Les diagrammes sont des éléments graphiques. Ceux-ci
décrivent le contenu des vues, qui sont des notions abstraites. Les
diagrammes peuvent faire partie de plusieurs vues.
• Les modèles d'élément : Les modèles d'élément sont les briques des
diagrammes UML, ces modèles sont utilisés dans plusieurs types de
diagramme. Exemple d'élément : cas d'utilisation, classe, association, etc.
Les principaux diagrammes d’UML sont:
• Les diagrammes de cas d'utilisation : utilisés pour donner une vision
globale du comportement fonctionnel d'un système logiciel. Les deux
composants principaux des diagrammes de cas d'utilisation sont les acteurs
et les cas d'utilisation.
⇒ Les acteurs : ce sont des entités externes qui interagissent avec le
système.
⇒ Les cas d’utilisation : Ils permettent de décrire l'interaction entre
l'acteur et le système
• Les diagrammes de séquences : permettent de décrire les interactions entre
différentes entités et/ou acteurs : par exemple des objets dans un modèle
d'un logiciel, des sous-systèmes dans un modèle d'un système complet.
Le temps est représenté comme s'écoulant du haut vers le bas le long des
"lignes de vie" (lifeline) des entités, alors que les flèches représentent les
messages qui transitent d'une entité vers l'autre.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
• Le diagramme de classes : c’est un schéma utilisé en génie logiciel pour
représenter les classes et les interfaces d'un système ainsi que les différentes
relations entre celles-ci. Les relations possibles entre les classes sont :
⇒ héritage : principe de division par généralisation et spécialisation
⇒ association : connexion sémantique entre deux classes
⇒ agrégation : association avec relation de subordination
⇒ composition : agrégation avec cycle de vie dépendant
2.2. Analyse
Le but de notre application est de capturer les plans d’images à partir d’une vidéo.
Pour ce faire, nous avons opté pour la structuration suivante :
• Toutes les vidéos sont collectées dans une base de données.
• Chaque vidéo est identifiée par un répertoire qui porte le même nom que la
vidéo et qui contient le fichier XML généré ainsi que les images capturées.
Les fonctionnalités apportées par l’application sont :
• La gestion de la vidéo à partir des boutons play, pause, stop, forward…etc
• La décomposition de la vidéo en plans.
• La consultation d’une base de données XML contenant les informations sur
les plans détectés.
• La visualisation de l’image-clé de chaque plan.
• L'accès à une image vidéo par son numéro de séquence.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
2.3. Conception
2.3.1 Les cas d’utilisation
L’utilisateur de notre application a le choix entre deux options :
• La lecture de la vidéo qu’il a sélectionnée auparavant
• La décomposition de la vidéo en des plans et/ou la visualisation de ceux-ci
Dans tous les cas, le chargement de la vidéo est indispensable avant d’effectuer
l’une ou l’autre de ces choix.
Segmentation vidéo Play vidéo
Utilisateur Chargement vidéo
<<include>> <<include>>
Figure 1 - Diagramme des cas d’utilisation
2.3.2 Les diagrammes de séquence
Le diagramme correspondant au cas chargement de la vidéo est :
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Figure 2 - Diagramme de séquence du cas chargement de la vidéo
Les étapes successives de la phase de chargement sont :
• l’utilisateur choisit une vidéo à partir d’une liste
• l’appel de la méthode configure() du processor crée la connexion avec la
vidéo.
• l’appel de la méthode realize() permet au processor de connaître les
ressources dont il a besoin.
• Enfin, l’état prefetched résultant de prefetch indique que la vidéo est prête à
démarrer.
Une fois chargée, la vidéo peut donc être traitée. Dans le diagramme suivant, nous
avons opté par souci de clarté pour substituer les trois étapes de chargement décrite
précédemment - à savoir configure –-> realize –-> prefetch -, par une méthode virtuelle
charger vidéo qui renvoie un message vidéo_prête.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Figure 3 - Diagramme de sequence du cas Play Vidéo
Afin d’effectuer une lecture de la vidéo, les différentes fonctions proposées sont :
• start : lire la vidéo. Renvoie l’état lu.
• Pause : interrompre la lecture. Renvoie l’état lecture interrompue.
• Stop : arrêter la vidéo. Renvoie l’état vidéo arrêtée.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Enfin, le diagramme associé au cas de segmentation est le suivant :
Figure 4 - Diagramme de sequence du cas Segmentation Vidéo
La méthode cut() de l’objet processor est responsable du découpage des plans
vidéo. Quant à stocker_dans_BD(), elle permet de stocker les données concernant le
vidéo et les images capturées.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
2.3.3. Le diagramme de classes
imagenumFrameextension
Planid_Plandébut_Planfin_Plan
1..n1..n
Processornom
start()stop()pause()
Vidéoid_vidéonomhauteurlargeurtotalFramesextension
cut()
1..n1..n
1 11 1BD vidéonomtotal_vidéos
1..n1 1..n1
Figure 5 - Diagramme de classes
Classe BD vidéo
Cette classe est la collection des vidéos que l’utilisateur peut traiter. Elle est
représentée par un répertoire nommé VideoDB.
Classe Vidéo
Cette classe fournit toutes les données concernant une vidéo. L’attribut totalFrames
représente le nombre d’images dans la vidéo. Quant au couple (hauteur, largeur), il forme
les dimensions d’une image quelconque de cette vidéo.
Classe Processor
Cette classe est l’intermédiaire essentiel qui permet l’exécution et la segmentation
d’une vidéo. Ses méthodes correspondent aux boutons qui gèrent la lecture de la vidéo
(lire, interrompre et arrêter).
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Classe Plan
Afin de bien illustrer le fonctionnement de cette classe, éclaircissons davantage le
processus de segmentation. Les principales étapes sont :
• On calcule l’histogramme de chaque image, puis la distance entre deux
histogrammes de deux images successives. Un histogramme est une
fonction des couleurs de base rouge, vert et bleu.
• Si cette distance est supérieure à un certain seuil, l’image suivante est
tronquée. Le plan des images est alors l’intervalle d’images entre deux
troncatures successives.
Classe Image
Cette classe est associée aux images appartenant à un plan donné. Connaissant les
attributs Plan, début_Plan et fin_Plan, on peut déduire l’appartenance d’une image au
plan ou non grâce à l’attribut numFrame.
Conclusion
Dans ce chapitre, nous avons décrit les fonctionnalités de l’application, notamment
la lecture et la segmentation d’une vidéo. Nous avons ensuite présenté des diagrammes
UML qui montrent les interdépendances entre ces fonctionnalités.
D’autre part, la présence de deux relations d’agrégation dans le diagramme de
classes illustre le caractère arborescent de l’application. Le recours à une base de données
de type XML se voit ainsi justifiée.
La prochaine partie présente de manière détaillée les différents outils utilisés dans
l’application.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Chapitre 3 :
Outils de développement
Dans ce chapitre, nous allons donner les informations fondamentales concernant les
outils que l’on a utilisés, à savoir Java, JMF et XML.
3.1. Java
Java est à la fois un langage de programmation et une plateforme d'exécution [7].
Le langage Java a la particularité principale d'être portable, puisqu'il peut tourner sur
n'importe quelle machine disposant d'un interpréteur Java. Cette portabilité est
fondamentale sur Internet, où un nombre important de machines et systèmes
d'exploitation différents inondent le marché.
Dans un environnement interprété, le code Java n'est conçu pour aucune plate-
forme spécifique mais est un simple fichier texte dont l'extension est par convention
.java. Ce fichier source doit être un fichier texte dans sa plus simple expression (contient
uniquement les caractères ASCII de base).
Lorsque le programme est prêt à être "essayé", il s'agit de le compiler. Toutefois,
contrairement aux langages compilés traditionnels, pour lesquels le compilateur crée un
fichier binaire directement exécutable par un processeur donné, le code source Java est
compilé en un langage intermédiaire (appelé pseudo code ou bytecode) dans un fichier
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
portant le même nom que le fichier source à l'exception de son extension (.class). Ce
code intermédiaire est conçu pour une machine virtuelle: la Java Virtual Machine. Cela
explique la lenteur habituelle des interpréteurs, qui sont obligés de décoder chaque ligne
de code avant leur exécution. (voir Figure 6).
Figure 6 - Etapes de compilation
Fichier source
Machine Virtuelle Linux
Machine Virtuelle Windows
Machine Virtuelle Unix
Système Linux Système Windows Système Unix
Pseudo code
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Et voici un aperçu des autres aspects de Java :
3.1.1 Java Virtual Machine
Java est décrit à travers une machine virtuelle ou Java Virtual Machine. JVM est
l'équivalent d'un ordinateur virtuel résidant entièrement en mémoire. Cette JVM doit être
implantée sur chaque plate-forme. Une JVM fournit un niveau d'abstraction entre le
programme Java compilé et une plate-forme matérielle.
3.1.2 Java est interprété
Java est un langage interprété, bien que son aspect compilé n’est pas à négliger.
En effet, tous les codes de la JVM doivent être interprétés par chacune des plates-formes.
L’interprétation s’opère via un navigateur World Wide Web (www) ou un environnement
run-time spécial.
3.1.3 Java est robuste
Java se veut robuste dans la mesure où le langage, fortement typé, permet moins de
"bidouillages" que le langage C. Des bugs classiques de programmeurs C comme le
dépassement de tailles de tableau sont impossibles en Java.
Pour garantir la robustesse de Java, celui-ci a été débarrassé des pointeurs, notion
qui existe dans les langages classiques tels que C et C++. Il est impossible de référencer
une adresse mémoire, d'incrémenter ou décrémenter un pointeur pour se déplacer dans
des tableaux. De plus, Java vérifie toujours lors de l'utilisation de tableaux que le
programmeur ne cherche pas à utiliser des portions non allouées.
La gestion de la mémoire, sa désallocalion automatique via un Garbage Collecter
(GC) sont les garants d'une meilleure stabilité des applications. Le garbage collector
fonctionne comme un thread, c’est à dire un processus séparé tournant en tâche de fond
avec une basse priorité. Il fait des pans de mémoire lorsque l'utilisation du CPU est faible
ou lorsqu'un besoin de mémoire se fait sentir pour l'application.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
3.1.4 Types d’applications Java
Quatre types d'applications sont générés en Java :
• Les applets, des mini applications : tournant dans le cadre d'un navigateur
Web compatible Java.
• Des applications tournant dans leur propre environnement.
• Des applications en mode texte tournant dans une boîte DOS ou un shell
Unix.
• Des librairies, des collections de classes intégrées dans un package.
3.2. Java Media Framework : JMF
Java Media Framework (JMF) est une large et transparente API utilisée pour les
applications multimédias (Son / Vidéo). Cette API est une initiative de SUN qui souhaite
apporter une solution « time-based media processing » (processeur de media basé sur un
timeline) à Java. Les média basé sur le temps sont des données qui changent par rapport
au temps tels que les vidéos, l’audio, les séquences MIDI et d’autres animations [12].
3.2.1. Architecture JMF
Les différents composants qui forment l’architecture de JMF sont :
3.2.1.1. Data Source.
La source de données (DataSource) encapsule le flux du média.
3.2.1.2. Capture Device.
Cet objet représente un périphérique matériel qui peut être utilisé comme source de
données. Cela peut être un microphone, un appareil photo ou une caméra.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
3.2.1.3. Player
Figure 7 - Player
L’objet Player utilise un flux audio ou vidéo en entrée, puis le rend (l’affiche sur
l’écran pour une vidéo et le joue sur les enceintes pour le son). Il peut prendre plusieurs
états :
Figure 8 - Différents états d’un Player
• Unrealized : Le « Player » est instancié.
• Realized : dans cet état, le Player sait précisément les ressources dont il a besoin
et a les informations concernant le type de média qu’il va utiliser. Il peut
également fournir un ensemble de composants visuels et contrôle. L’ensemble
des connexions avec les composants systèmes est établi.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
• Prefetching : lorsque l’on appelle la méthode prefetch(), le Player se positionne
de l’état Realized vers Prefetching. Cet état déclare que le média est prêt à
présenter le média. Pendant cette période, le Player pré-charge les données de son
média, obtient les ressources exclusives et fait l’ensemble des traitements utiles à
la lecture du média.
• Prefectched : l’état dans lequel le Player a terminé le Prefetching. Le média est
prêt à démarrer.
• Started : le Player entre dans cet état après appel à sa méthode start(). Le média
est alors prêt à présenter les données du média.
3.2.1.4. Processor
Figure 9 - Processor
Un processor est un type particulier de player. On peut avec un processor contrôler
et modifier les données en entrée et/ou en sortie.
En plus des états indiqués pour le Player, le Processor en intègre deux autres :
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Figure 10 - Différents états d’un Processor
• Configuring : un Processor entre dans cet état à partir de l’état unrealized
et lorsque la méthode configure() est appelée. Un Processor est également
dans cet état lorsqu’il se connecte à la DataSource, de multiplexe le flux
d’entrée, et accède aux informations liées au format des données d’entrée.
• Configured : un Processor entre dans cet état lorsqu’il est connecté à la
DataSource et lorsque le format est déterminé.
3.2.1.5. DataSink
L’objet DataSink est l’interface de base pour lire un média à partir d’une
DataSource ou envoyer le résultat vers une destination. DataSink peut être utilisé pour
écrire un média dans un fichier.
3.2.1.6. Manager
Le Manager est une classe qui permet de connecter deux objets différents. Il est
utile notamment pour créer un Player à partir d’une DataSource.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
3.3. XML
3.3.1. Caractéristiques
Extensible Markup Language (« langage de balisage extensible »), généralement
abrégé XML, est un standard du World Wide Web consortium qui sert de base pour créer
des langages de balisage : c'est un « méta-langage » [13]. En ce sens, XML permet de
définir un vocabulaire et une grammaire associée sur base de règles formalisées. Il est
suffisamment général pour que les langages basés sur XML, appelés aussi dialectes
XML, puissent être utilisés pour décrire toutes sortes de données et de textes.
Contrairement à HTML - qui est aussi basé sur les balises-, XML décrit le contenu
plutôt que la présentation. C’est ainsi que XML permet de séparer le contenu de la
présentation.
Voici les principaux atouts de XML :
• La lisibilité : aucune connaissance ne doit théoriquement être nécessaire
pour comprendre un contenu d'un document XML
• Autodescriptif et extensible.
• Une structure arborescente : permettant de modéliser la majorité des
problèmes informatiques
• Universalité et portabilité : les différents jeux de caractères sont pris en
compte
• Déployable : il peut être facilement distribué par n'importe quels protocoles
à même de transporter du texte, comme http
• Intégrabilité : un document XML est utilisable par toute application
pourvue d'un parser (c'est-à-dire un logiciel permettant d'analyser un code
XML)
• Extensibilité : un document XML doit pouvoir être utilisable dans tous les
domaines d'applications
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Le succès de XML s'explique surtout par la définition d'interfaces de
programmation (API) standard pour les processeurs XML. Les API les plus largement
utilisées sont :
• SAX (acronyme de Simple API for XML): Ce type de parseur utilise des
événements pour piloter le traitement d'un fichier XML. Il est utilisé pour les
traitements au fur et à mesure de la réception d'un document XML.
• DOM (acronyme de Document Object Model) : Le principal rôle de DOM est de
fournir une représentation mémoire d'un document XML sous la forme d'un arbre
d'objets et d'en permettre la manipulation (parcours, recherche et mise à jour).
DOM permet également de générer de nouveaux documents XML, en créant un
arbre logique, qu'on transforme ensuite en document XML
Ces API sont les plus utilisées mais d'autres API à utilisations spécifiques existent,
notamment JDOM pour Java.
3.3.2. JDOM
JDOM présente de grandes similitudes avec le DOM en ce sens qu'il représente un
document XML via une structure arborescente [14]. Cependant, il s'en distingue parce
que JDOM est spécifiquement conçu pour JAVA et que du point de vue du développeur
JAVA, il s'avère beaucoup plus pratique à utiliser.
JDOM utilise DOM pour manipuler les éléments d'un Document Object Model
spécifique (créé grâce à un constructeur basé sur SAX). Il permet donc de construire des
documents, de naviguer dans leur structure, s'ajouter, de modifier, ou de supprimer leur
contenu.
3.3.2.1. Création d’un document XML
Pour créer un fichier XML, Il suffit de construire chaque élément puis de les ajouter
les uns aux autres de façon logique et arborescente. Un noeud est une instance de
org.jdom.Element.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
3.3.2.2. Sérialisation JDOM
Afin de visualiser la structure créée sur l’écran ou de l'envoyer en sortie vers un
fichier, JDOM utilise la classe XMLOutputter pour envoyer le code XML vers un flux
encapsulant une connection réseau, un fichier ou toute autre structure dans laquelle on
souhaite placer du code XML.
3.3.2.3. Parcourir une arborescence
On utilise pou cela la classe Java.Util.Iterator qui agit comme un curseur qui pointe
sur les différents nœuds de l’arborescence. La sélection d’un élément associé à tel nœud
se fait quant à elle par la méthode getChildren.
3.3.2.4. L’ajout des attributs
Pour ajouter des attributs au fichier XML, on utilise dans un premier temps le
constructeur new Attribute avec comme paramètres le nom de l'attribut et sa valeur. Dans
un deuxième temps, on affecte l'attribut à l'élément correspondant à l'aide de la méthode
setAttribute() prenant comme paramètre l'attribut que l'on désire attacher.
Conclusion
Les détails des outils mentionnés dans ce chapitre ont montré leur adaptation
pertinente aux besoins de notre application. Le prochain chapitre illustre les résultats de
l’application de ces outils à travers les interfaces réalisées.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Chapitre 4 :
Réalisation de l’application
Dans ce chapitre, nous présentons les différents résultats générés durant la phase de
test de notre application.
Au lancement de l’application, l’utilisateur a le choix entre deux menus : New
Project et Load Project. Le premier permet la lecture et la segmentation de la vidéo, alors
que Load Project permet la visualisation des cuts (miniatures des images capturées).
Figure 11 - Menu principal
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Le programme charge les vidéos contenues dans la base de données (le dossier
VideoDB). L’utilisateur doit sélectionner le nom de la vidéo qu’il veut manipuler. Deux
boutons lui sont proposés à ce niveau : Load et Cut.
Figure 12 - New Project
Après le chargement des données par le bouton Load, les autres boutons s’activent.
Le bouton Go to permet d’afficher instantanément l’image dont le numéro de séquence
est celui introduit dans la case.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Figure 13 - Play Video
Si l’utilisateur clique sur Cut, le processus de segmentation démarre. Après un laps
de temps passé dans le traitement, l’utilisateur a le droit d’afficher les miniatures des cuts
à partir de Load Project.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Figure 14 - Load Project
Finalement, l’utilisateur trouvera le fichier XML généré dans le répertoire associé à
la vidéo. Les niveaux de son arborescence sont les suivants:
• La base de données VideoDB des vidéos ;
• Puis la vidéo attribuée par la hauteur, la largeur et le nombre d’images ;
• Et enfin les capture associées à la vidéo, c'est-à-dire les images qui
succèdent immédiatement à une troncature.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Figure 15 - Fichier XML
Conclusion
Dans ce chapitre notre avons fait un tour des différentes fenêtres de notre
application, permettant ainsi d’apprécier leur hiérarchie ainsi que leur facilité
d’utilisation.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Conclusions et perspectives
Le travail qui a été réalisé durant ce projet sort du commun. En effet, il s'agissait de
travailler sur un sujet de recherche de haut niveau qui touche au fond le domaine
multimédia, à savoir effectuer la segmentation d'une vidéo. Outils de développement,
concepts mathématiques… tout à été mêlé pour produire un livrable satisfaisant, c'est-à-
dire qui génère les plans d'images de la vidéo et qui les stocke dans une base de données.
Le processus de réalisation n'a pas été dépourvu d'obstacles. Effectivement, l'API
JMF est très peu utilisée – il n'y a même pas de documentation officielle fournie par Sun
Microsystems. D'autre part, il a fallu beaucoup de patience et d'attention quand il
s'agissait par exemple de calculer les histogrammes ou de mesurer les distances entre les
pixel. La manipulation des objets multimédias de JMF a été quant à elle assez délicate.
Si l'application répond aux tâches de segmentation, le temps d'exécution demeure
néanmoins assez élevé. Ceci étant dû à la portabilité du langage Java, nous envisageons
de restreindre l'utilisation de Java aux interfaces et à certaines parties du code. Pour le
reste, on utilisera du code C/C++ qu'on va intégrer au code java grâce à l'API JNI (Java
Native Interface) de Sun.
Développement d'une application de segmentation de la vidéo en se basant sur les histogrammes de couleurs
ENSIAS, 2ème année, PFA A. U. 2005 - 2006
Références
[1] Sébastien Lefèvre, Jérôme Holler et Nicole Vincent, Segmentation temporelle de séquences d’images en couleurs compresses et non compresses en temps réel, Congrès francophone ORASIS de Vision par Ordinateur, Cahors (France), Juin 2001, pp. 329-338.
[2] H. Zhang, A. Kankanhalli, and S. Smoliar, Automatic Partitioning of Video, Multimedia Systems, Volume 1, Number 1, 1993, pp. 10-28.
[3] P. Aigrain and P. Joly, The Automatic Real-Time Analysis of File Editing and Transition Effects and Its Applications, Computer and Graphics, Volume 18, Number 1, 1994, pp. 93-103.
[4] M. J. Swain and D. H. Ballard, Color Indexing, International Journal of Computer Vision, Volume 7, Number 1, 1991, pp. 11-32.
[5] A. M. Ferman, A. M. Tekalp, and R. Mehrotra, Robust Color Histogram Descriptors for Video Segment Retrieval and Identification, IEEE Transactions on Image Processing, Volume 11, Number 5, 2002, pp. 497-507.
[6] A. Nagasaka and Y. Tanaka, Automatic Video Indexing and Full Video Search for Object Appearances, IFIP Transactions on Visual Database Systems II, E. Knuth and L. M. Wegner (Eds.), Elsevier, 1992, pp. 113-127.
[7] U. Gargi, S. Oswald, D. Kosiba, S. Devadiga, and R. Kasturi, Evaluation of Video Sequence Indexing and Hierarchical Video Indexing, Proceedings of SPIE Conference on Storage and Retrieval in Image and Video Databases, 1995, pp. 1522-1530.
[8] B. S. Manjunath, J. R. Ohm, V. V. Vasudevan, and A. Yamada, Color and Texture Descriptors, IEEE Trans. CSVT, Vol. 11, No. 6, pp. 703- 715, Jun. 2001.
[9] R. Kasturi and R. Jain, Dynamic Vision, Computer Vision: Principles, IEEE Computer Society Press, Washington DC, 1991, pp. 469-480.
[10] Youssef HADI, Fedwa ESSANNOUNI, Rachid OULAD HAJ THAMI, Ahmed SALAM and Driss ABOUTAJDINE, A New Approach for Video Cut Detection Using Color Histogram, ISIVC 2006, Hammat Tunis, 2006.
[11] Pascal ROQUES et Franck VALLE, UML en action : De l'analyse des besoins à la conception en Java, 2ème édition, EYROLLES, 2003.
[12] http://www.labo-sun.com/resource-fr-articles-998-1-java-j2se-jmf-java-media-framework.htm
[13] http://www.w3.org/TR/2006/PER-xml-20060614
[14] http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001