PROCEDE ET DISPOSITIF DE CODAGE ET DE DECODAGE D'UNE SEQUENCE D'IMAGES VIDEO
La présente invention concerne un procédé et un dispositif de codage et de décodage de séquences d'images.
Plus précisément, l'invention se situe dans le domaine de l'adaptation dans le temps des coefficients obtenus sur un maillage d'une image, les coefficients étant produits par des transformées en ondelettes de seconde génération.
Plusieurs techniques de codage d'images sont connues à ce jour, comme par exemple les techniques de transformation en cosinus discrets (DCT) basées sur des structures de blocs, telles que celles proposées par les organismes de normalisation ISO/MPEG acronyme de International Standardization Organization /Moving Picture Expert Group et/ou ITU-T acronyme de International Télécommunication Union - Télécommunication Standardization Sector.
Selon ces standards de codage vidéo, une séquence vidéo est traitée de manière à supprimer les redondances spatiales et temporelles des images de la séquence. La séquence codée, plus particulièrement selon le codage de type MPEG-4, est alors constituée d'un ensemble d'images I/B/P. Les images I, appelées images Intra sont
codées de la même façon que des images fixes et servent de référence aux autres images de la séquence. Les images P, appelées images prédites contiennent deux types d'informations : une information d'erreur compensée en mouvement et des vecteurs de mouvements représentatifs du mouvement relatif à une image précédente. Ces deux informations sont déduites d'une ou de plusieurs images précédentes qui peuvent être de type I ou de type P. Les images B, appelées images bidirectionnelles contiennent aussi ces deux informations mais sont ces dernières sont basées maintenant sur deux références, à savoir une référence à une image antérieure à l'image B lors de la reproduction de la séquence vidéo et une référence à une image postérieure à l'image B lors de la reproduction de la séquence vidéo, les images antérieures et postérieures pouvant être de type I ou de type P.
Les techniques de codage utilisant des structures de blocs conduisent à l'apparition de forts effets, ou artefacts, qui réduisent fortement la qualité visuelle de la restitution de l'image. Les codages de type MPEG-4 ou ITU-T/H263 sont désormais considérés comme ayant atteint leurs limites, notamment à cause de la structure de blocs rigides de taille fixe qui sont utilisés comme support de l'ensemble des calculs et opérations de codage. Ceci est d'autant plus vrai lorsque les images et/ou séquences d'images sont fortement compressées.
D'autres techniques de codage d'images utilisent à la place des transformées en cosinus discrets des transformées en ondelettes. Les transformées en ondelettes sont un outil mathématique très simple pour décomposer les fonctions dans un schéma hiérarchique. Succinctement, les transformées en ondelettes permettent de décomposer une fonction en une fonction d'approximation et une autre fonction de détails qui influence la fonction originale à diverses échelles. Les transformées en ondelettes sont ainsi adaptées à une analyse multirésolution d'une image par exemple.
De la même façon que les techniques de codage utilisant des transformées en cosinus discrets, les techniques de codage utilisant les transformées en ondelettes génèrent, lorsque les images et/ou séquences d'images sont fortement compressées, un effet de sur-oscillation ou « ringing » en terminologie anglo-saxonne donnant à l'image restituée un aspect flou.
Afin de réduire la quantité d'informations transmises, il est connu de ne pas transmettre certaines informations d'une image dans une séquence d'images si celles- ci sont peu différentes de celles de l'image précédente. Ces techniques créent aussi
une dégradation des images reconstruites. Il a été en effet constaté qu'avec une telle technique, la qualité des images reconstruites se dégrade dans le temps.
L'invention a pour but de résoudre les problèmes de l'art antérieur en proposant un procédé de codage d'une séquence d'images vidéo, la séquence d'images vidéo étant décomposée en sous-séquences d'images vidéo, un maillage étant effectué sur les images de la séquence vidéo, des coefficients étant déterminés pour chaque image à partir d'au moins une transformée en ondelettes, caractérisé en ce que le procédé comporte les étapes de :
- association d'une partie du maillage d'une image à chaque sous-séquence vidéo,
- formation d'un signal de données comprenant la partie du maillage associée et des informations représentatives des coefficients.
Corrélativement, l'invention propose un dispositif de codage d'une séquence d'images vidéo, la séquence d'images vidéo étant décomposée en sous-séquences d'images vidéo, un maillage étant effectué sur les images de la séquence vidéo, des coefficients étant déterminés pour chaque image à partir d'au moins une transformée en ondelettes, caractérisé en ce que le dispositif comporte :
- des moyens d'association d'une partie du maillage d'une image à chaque sous- séquence vidéo,
- des moyens de formation d'un signal de données comprenant la partie du maillage associée et des informations représentatives des coefficients.
Ainsi, le signal de données représentatif de la séquence d'images vidéo est de taille réduite sans dégrader pour autant la qualité de la séquence d'images vidéo lorsqu'elle sera décodée. Associer une partie d'un maillage d'une image à une sous- séquence d'images vidéo évite d'avoir à transmettre pour chaque image vidéo de la séquence d'images vidéo ladite partie du maillage.
Plus précisément, la partie du maillage est la topologie du maillage et la transformée des images en coefficients est effectuée en transformant la géométrie des maillages de chacune des images de la sous-séquence vidéo en coefficients à partir de transformées en ondelettes de seconde génération.
Ainsi, en associant une partie d'un maillage d'une image et plus précisément la topologie du maillage à une sous-séquence d'images vidéo on évite d'avoir à transmettre pour chaque image vidéo de la séquence d'images vidéo la topologie de son maillage.
Ainsi, les images de la sous-séquence vidéo variant peu, l'inclusion des coefficients de chaque image de la sous-séquence avec seulement une seule topologie garantit lors du décodage de la séquence d'images vidéo une bonne qualité de restitution de la séquence d'images décodées. Plus précisément, les informations représentatives des coefficients transformés' sont les coefficients d'au moins une image de référence de la sous-séquence d'images vidéo et pour chaque autre image de la sous-séquence d'images vidéo, les informations sont représentatives de la différence entre les coefficients de chaque autre image et les coefficients de l'image de référence. Ainsi, en incluant dans le signal de données la différence entre les coefficients de chaque autre image et les coefficients de l'image de référence, le nombre de bits nécessaires au codage de la séquence d'images vidéo est réduit. Les sous-séquences d'images vidéo étant constituées d'une suite d'images ne présentant que peu de variations entre elles, les différences sont alors minimes et peuvent donc ainsi être représentées sur moins de bits.
Avantageusement, on associe à une sous-séquence d'images vidéo un nombre prédéterminé d'images de référence en fonction du nombre d'images contenues dans la sous-séquence d'images vidéo.
Ainsi, lorsqu'une sous-séquence d'images est relativement longue, plusieurs images de référence permettent de former des sous-parties de sous-séquences d'images vidéo. Les différences entre les coefficients dans ces sous-parties restent minimes et peuvent donc ainsi être représentées sur moins de bits.
Préférentiellement, on insère dans le signal de données des informations pour différencier les coefficients de l'au au moins une image de référence des autres coefficients.
Ainsi, les coefficients de l'au moins une image de référence sont aisément identifiables lors du décodage de la séquence d'images vidéo.
Plus précisément, le maillage est un maillage régulier.
Avantageusement, au moins deux types différents de transformées en ondelettes sont appliqués sur au moins deux régions différentes d'au moins une image de la sous- séquence vidéo.
En effet, les différents types de transformées en ondelettes existantes présentent des propriétés de codage distinctes. On exploite ces différentes propriétés en
appliquant à différentes régions d'une image, le type de tranformée en ondelettes dont les propriétés sont les mieux adaptées au contenu de chacune des régions de l'image.
On optimise ainsi le codage global de la séquence d'images vidéo en adaptant le codage par des transformées en ondelettes à des régions de l'image de caractéristiques différentes, et en utilisant, si nécessaire, plusieurs types de transformées en ondelettes distinctes pour le codage d'une même image de la séquence vidéo.
Plus précisément, les sous-séquences d'images vidéo dans la séquence d'images vidéo sont déterminées par comparaison de différences de coefficients d'images de la séquence vidéo à un seuil prédéterminé. En variante, les sous-séquences d'images vidéo dans la séquence d'images vidéo sont déterminées par comparaison du rapport signal bruit entre une image et une image compensée en mouvement par rapport à un seuil prédéterminé.
L'invention concerne aussi un procédé de décodage d'un signal de données représentatif d'une séquence d'images vidéo, caractérisé en ce que le procédé comporte les étapes de :
- détermination dans le signal de données, d'images d'une sous-séquence d'images vidéo,
- obtention des coefficients des images de la sous-séquence d'images vidéo à partir d'informations contenues dans le signal de données, - transformation des coefficients obtenus selon une transformée inverse de transformée en ondelettes,
- reconstruction de chacune des images de la sous-séquence vidéo à partir des coefficients transformés et d'une partie du maillage associée à la sous-séquence d'images vidéo et contenue dans le signal de données. Corrélativement, l'invention propose un dispositif de décodage d'un signal de données représentatif d'une séquence d'images vidéo, caractérisé en ce que le dispositif comporte :
- des moyens de détermination dans le signal de données, d'images d'une sous-séquence d'images vidéo, - des moyens de transformation des coefficients des images de la sous- séquence vidéo obtenus à partir du signal de données selon une transformée en ondelettes,
- des moyens de reconstruction de chacune des images de la sous-séquence vidéo à partir des coefficients transformés et d'une partie du maillage associée à la sous-séquence d'images vidéo et contenue dans le signal de données.
L'invention concerne aussi un signal de données représentatif d'une séquence d'images vidéo, caractérisé en ce que la séquence d'images vidéo est divisée en sous- séquences vidéo, le signal comportant pour chaque sous-séquence d'images vidéo des informations représentatives des coefficients des images de la sous-séquence d'images vidéo et des informations représentatives d'une partie d'un maillage d'une image de la séquence d'images vidéo. Plus précisément, les informations représentatives des coefficients des images de la sous-séquence d'images vidéo sont constituées des coefficients d'au moins une image de référence de la sous-séquence d'images vidéo et pour chaque autre image de la sous-séquence d'images vidéo de la différence entre les coefficients de chaque autre image et les coefficients de l'image de référence et en ce que le signal comporte au moins une information prédéterminée identifiant les coefficients de l'au moins une image de référence de la sous-séquence d'images vidéo.
Plus précisément, la partie du maillage est la topologie du maillage d'une image de la séquence d'images vidéo et les coefficients des images de la sous-séquence d'images vidéo sont des coefficients d'une transformée en ondelettes de seconde génération de la géométrie des maillages de chacune des images de la sous-séquence d'images vidéo.
Les avantages du décodeur et du signal de données étant identiques à ceux mentionnés pour le codeur, ceux-ci ne seront pas rappelés.
L'invention concerne aussi le programme d'ordinateur stocké sur un support d'informations, ledit programme comportant des instructions permettant de mettre en œuvre le procédé de codage et/ou le procédé de décodage précédemment décrits, lorsqu'ils sont chargés et exécutés par un système informatique.
Les caractéristiques de l'invention mentionnées ci-dessus, ainsi que d'autres, apparaîtront plus clairement à la lecture de la description suivante d'un exemple de réalisation, ladite description étant faite en relation avec les dessins joints, parmi lesquels: la Fig. 1 représente un dispositif mettant en œuvre l'invention; la Fig. 2 représente l'algorithme de codage de séquences d'images selon un premier mode de réalisation de l'invention ;
la Fig. 3 représente l'algorithme de maillage d'une image et de détermination d'un type de transformée en ondelettes de seconde génération à appliquer sur au moins une partie d'une image selon l'invention ; la Fig. 4a représente l'algorithme de détermination, selon un second mode de réalisation, de sous-séquences vidéo parmi la séquence d'images vidéo ainsi que les images de référence, dans ces sous-séquences vidéo, utilisées pour coder les autres images de leur sous-séquence vidéo respective, la Fig. 4b représente l'algorithme de codage selon un second mode de réalisation des autres images vidéo de chaque sous-séquence vidéo par rapport à leur image de référence respective ; les Figs 5a et 5b représentent des exemples de séquences d'images dans lesquelles sont déterminées des sous-séquences d'images selon les premier et second modes de réalisation ; la Fig. 6 représente l'algorithme de décodage selon l'invention d'un signal de données représentatif d'une séquence d'images vidéo.
Nous allons, dans un premier temps, décrire les fondements des transformées en ondelettes dites de seconde génération. Ces transformées en ondelettes ont été introduites par W. Dahmen dans un article « Décomposition of refinable spaces and applications to operator équations » Numer. Algor., N° 5 1993, pp 229-245, par J.M Carnicer, W Dahmen et JM. PENA dans un article « Local décomposition of refinable spaces » Appl Comp. Harm. Anal. 3, 1996, pp 127-153 puis développées par Wim Sweldens dans un document intitulé « The lifting Scheme : A construction of second génération wavelets », SIAM Journal of Mathematical analysis, Nov 1996.
Ces transformées en ondelettes sont construites à partir d'une subdivision irrégulière de l'espace d'analyse, et sont basées sur une méthode d'interpolation pondérée et moyennée. Ces ondelettes sont particulièrement bien adaptées pour les analyses sur des supports compacts et sur les intervalles. Elles conservent les propriétés des ondelettes de première génération, à savoir une bonne localisation temps fréquence et une bonne rapidité de calcul. Les transformées en ondelettes de seconde génération disposent d'un certain nombre de propriétés. Comme les transformées en ondelettes de première génération, elles forment une base de Riez sur L (R) ainsi qu'une base uniforme pour une grande variété d'espaces de fonctions. Comme les transformées en ondelettes de première génération, les coefficients de décomposition sur la base uniforme sont connus ou
peuvent être simplement déterminés. Les transformées en ondelettes sont soit orthogonales, soit bi-orthogonales. Comme les transformées en ondelettes de première génération, les transformées en ondelettes ainsi que leurs duales ont des propriétés locales dans l'espace et en fréquence. Les propriétés de localisation en fréquence découlent directement de la régularité de la transformée en ondelette pour les hautes fréquences et du nombre de moments polynomiaux nuls pour les basses fréquences. Comme les transformées en ondelettes de première génération, les transformées en ondelettes de seconde génération peuvent aussi être utilisées en analyse multirésolution. Les transformées en ondelettes de seconde génération disposent en outre des propriétés fondamentales dont ne disposent pas les transformées en ondelettes de première génération.
Les transformées en ondelettes de seconde génération peuvent être définies sur des domaines arbitraires, tels que les courbes, les surfaces ou les variétés. Les transformées en ondelettes de seconde génération permettent l'analyse sur des courbes et des surfaces.
Les transformées en ondelettes de seconde génération permettent l'utilisation d'algorithmes adaptés à des échantillons de données irréguliers.
L'analyse multirésolution et l'application de ces transformées en ondelettes de seconde génération sur un intervalle borné, et en particulier sur un maillage triangulaire sont présentées dans un article de M Lounsbery, T DeRose, J Warren intitulé « Multirésolution Analysis for Surfaces of Arbitrary Topological Type » ACM Transactions on Graphics, 1994. Cette analyse multirésolution est intimement liée au processus de subdivision récursive. Les surfaces d'objets à trois dimensions ou d'images d'une séquence vidéo sont représentées par un maillage polyédrique. Le maillage est une surface linéaire par morceaux, se composant par exemple de faces triangulaires. La représentation des surfaces par un maillage triangulaire permet de compresser, d'éditer, de transférer efficacement des séquences d'images vidéo. Quand on décrit un maillage, et plus particulièrement un maillage triangulaire, celui-ci est composé de deux parties. Une première partie représentant la connectivité des sommets, des arêtes et des faces déterminant la topologie du maillage et une seconde partie comprenant l'ensemble des positions des sommets définissant ainsi la géométrie du maillage.
Le document de Wim Sweldens, intitulé « The lifting Scheme : A construction of second génération wavelets », SIAM Journal of Mathematical analysis, Volume 29, number 2, pp 511-546, 1998 décrit une méthode de transformation généralisée permettant de calculer les coefficients de ces transformées en ondelettes sans avoir à utiliser les produits de convolution ainsi que les transformées de Fourier. Ainsi, c'est un excellent outil pour la construction des transformées en ondelettes de seconde génération en ce sens que la transformation de Fourier n'est plus nécessaire. Cette méthode permet une reconstruction, par de simples opérations sur des lignes et des colonnes d'une matrice d'analyse de séparer le signal à traiter en échantillons pairs et impairs, de prédire les échantillons impairs en fonction des échantillons pairs. La prédiction réalisée, on met à jour le signal afin de préserver les propriétés initiales. Cet algorithme peut être réitéré autant de fois que nécessaire.
Nous allons maintenant décrire en référence à la Fig. 1 un dispositif de codage et/ou de décodage mettant en œuvre l'invention. Ce dispositif 10 est adapté à coder un signal numérique constitué d'une séquence vidéo et/ou à décoder un signal numérique constitué d'une séquence vidéo préalablement codée selon l'invention.
Le dispositif 10 est par exemple un micro-ordinateur. Il peut aussi être un moyen de visualisation de séquences d'images vidéo tel qu'un téléviseur ou tout autre dispositif de codage et/ou de décodage de séquences d'images vidéo. Le dispositif 10 comporte un bus de communication auquel sont reliés une unité centrale
100, une mémoire morte 102, une mémoire vive 103, un écran 104, un clavier 114, un disque dur 108, un lecteur/enregistreur de disque compact ou CD, une interface de communication avec un réseau de communication 113, une carte d'entrée sortie 106 reliée à un moyen de capture de séquence d'images 107 tel qu'une caméra.
Le disque dur 108 mémorise les programmes mettant en œuvre l'invention, ainsi que les données traitées selon l'invention. Ces programmes peuvent aussi être lus par l'intermédiaire du disque compact ou reçus via le réseau de communication 113, ou encore mémorisés en mémoire morte 102. De manière plus générale, les programmes selon la présente invention sont mémorisés dans un moyen de stockage. Ce moyen de stockage est lisible par un ordinateur ou un microprocesseur 100. Ce moyen de stockage est intégré ou non au dispositif, et peut être amovible.
Lors de la mise sous tension du dispositif 10, les programmes selon la présente invention sont transférés dans la mémoire vive 103 qui contient alors le code exécutable de l'invention ainsi que les variables nécessaires à la mise en œuvre de l'invention. Le dispositif 10 peut recevoir des données à traiter depuis un dispositif périphérique 107, tel qu'un caméscope numérique, ou tout autre moyen d'acquisition ou de stockage de données.
Le dispositif 10 peut également recevoir des données à traiter, depuis un dispositif distant via le réseau de communication 113 et/ou transmettre un signal de données comprenant les données codées selon l'invention à destination d'un dispositif distant par l'intermédiaire du même réseau de communication 113.
Le réseau de communication 113 est par exemple un réseau de type Internet ou un réseau de télécommunication téléphonique par lequel une communication de type visioconférence est établie entre deux dispositifs 10. Le réseau de communication 113 peut aussi être un réseau de diffusion Hertzien ou satellite d'informations vidéo codées selon la présente invention.
Le dispositif 10 comporte un écran 104 apte à reproduire les séquences d'images vidéo décodées selon l'invention et/ou les séquences d'images vidéo à traiter selon l'invention. Le dispositif 10 comporte aussi un clavier 114 servant d'interface utilisateur.
Par l'intermédiaire de ce clavier 114, l'utilisateur peut sélectionner certains paramètres de l'invention et/ou activer les programmes selon l'invention.
La Fig. 2 représente l'algorithme de codage de séquences d'images vidéo selon un premier mode de réalisation de l'invention. Au lancement de l'application, le processeur 100 du dispositif 10 lit à partir de la mémoire morte 102, les instructions du programme correspondant aux étapes E200 à E214 de la Fig. 2 et les charge en mémoire vive 103 pour les exécuter.
A l'étape E200, le processeur 100 prend la première image II d'une séquence vidéo I à coder et détermine un maillage de celle-ci. Un maillage est une représentation sous forme graphe de l'image. La détermination du maillage sera explicitée ultérieurement plus en détail en regard de la Fig. 3.
La séquence vidéo est par exemple mémorisée sur un disque CD compris dans le lecteur 109 ou reçue par l'intermédiaire de l'interface entrée/sortie 106 d'un dispositif de capture d'images 107 ou encore reçue du réseau de communication 113 par
l'intermédiaire de l'interface de communication 112. La séquence vidéo I est par exemple la séquence d'images vidéo représentée en Fig. 5a. Cette séquence d'images vidéo I est dans notre exemple constituée de dix-sept images notées II à 117.
Le maillage ainsi déterminé, le processeur 100 à l'étape E201 détermine les coefficients de transformée en ondelettes de seconde génération à partir du maillage. Pour cela, on applique la transformée en ondelettes en utilisant la technique de Lifting sur l'ensemble des positions des sommets définissant la géométrie du maillage. La transformée en ondelettes de seconde génération est effectuée pour un nombre prédéterminé de niveaux de résolution. La technique de Lifting est semblable à celle telle que décrite dans le document de Wim Sweldens, intitulé « The lifting Scheme : A construction of second génération wavelets ».
Il est à remarquer que, dans un mode particulier, comme cela sera décrit en référence à la Fig. 3, différents types de transformées en ondelettes sont appliqués sur différentes parties de l'image à traiter. A titre d'exemple, une transformée en ondelettes connue sous le nom d' ondelettes de Butterfly est affectée aux zones de texture, une transformée en ondelettes connue sous le nom d'ondelettes de Loop est affectée aux zones de contours d'objets naturels, une transformée en ondelettes connue sous le nom d'ondelletes de Catmull-Clark est affectée aux zones de contours d'objets non naturels et enfin une transformée en ondelettes connue sous le nom d'ondelettes affines est affectées aux singularités.
Cette opération effectuée, le processeur 100 mémorise à l'étape E202 les coefficients de la transformée en ondelettes de la première image II dans la mémoire vive 103. Ces coefficients sont alors considérés comme des coefficients de référence. Cette image II en Fig. 5a est marquée d'une lettre R représentative de sa fonction d'image de référence.
Le processeur 100 à l'étape suivante E203 prend l'image suivante 12 de la séquence vidéo I à coder et détermine un maillage de celle-ci. La détermination d'un maillage sera explicité ultérieurement en regard de la Fig. 3. Le maillage ainsi déterminé, le processeur 100 à l'étape E204 détermine les coefficients de la transformée en ondelettes de seconde génération à partir du maillage. Pour cela, on applique la transformée en ondelettes pour un nombre prédéterminé de niveaux de résolution en utilisant la technique de Lifting sur
l'ensemble des positions des sommets définissant la géométrie du maillage de l'image en cours de traitement.
Il est à remarquer que, comme précédemment, différents types de transformées en ondelettes sont appliqués sur différentes parties de l'image à traiter. Cette opération effectuée, le processeur 100 lit à l'étape E205 les coefficients de référence mémorisés à l'étape E202 de la transformée en ondelettes de la première image II dans la mémoire vive 103.
Le processeur 100 effectue alors à l'étape E206 la différence entre les coefficients de référence de l'image II et les coefficients de la transformée en ondelettes de seconde génération déterminés pour l'image 12 à l'étape E204. Bien entendu la différence est calculée pour chaque coefficient correspondant à un sommet identique ou similaire d'une même surface dans les deux images II et 12.
La différence calculée, le processeur 100 vérifie à l'étape E207 si les différences calculées sont inférieures à un seuil prédéterminé. La différence entre chaque coefficient peut être utilisée pour cette vérification ou une moyenne des différences peut aussi être utilisée. Ce seuil est soit prédéterminé et fixé, soit modifiable par l'utilisateur par l'intermédiaire du clavier 114 du dispositif 10.
Dans l'affirmative, le processeur 100 passe à l'étape E207 et vérifie si une partie du maillage de la seconde image 12 s'est déplacée par rapport au maillage de l'image de référence II. Ceci correspond à un mouvement d'un objet dans la séquence vidéo. Dans l'affirmative, le processeur 100 code ce déplacement et mémorise celui-ci à l'étape E210. Il est à remarquer que les étapes E209 et E210 peuvent aussi ne pas être effectuées par le processeur 100 dans l'algorithme tel que décrit.
Si un faible déplacement existe ou si aucune partie du maillage de la seconde image 12 ne s'est déplacée par rapport au maillage de l'image de référence II, le processeur 100 mémorise à l'étape E211 les différences de coefficients calculées à l'étape E206 dans la mémoire vive 103.
Cette opération effectuée, le processeur 100 vérifie s'il existe d'autres images dans la séquence vidéo I à coder. Dans notre exemple, dix-sept images sont à coder et le processeur retourne alors à l'étape E203.
Le processeur 100 effectue de la même manière que celle précédemment décrite les étapes E203, E204, E205, E206, E207, E209, E210, E211 et E212.
Il en est de même pour les images 13 à 15. Les différences des coefficients entre chacune de ces images avec les coefficients de référence sont ainsi mémorisées.
Le processeur 100 effectue aussi les mêmes opérations pour l'image 16 qui, dans notre exemple, correspond à un changement de plan. La différence entre les coefficients de la transformée en ondelettes de seconde génération des images II à 16 étant supérieure au seuil noté Seuil à l'étape E207, le processeur 100 passe à l'étape E208.
Le processeur 100 à l'étape E208 vérifie si d'autres coefficients de référence existent dans la mémoire vive 103.
Dans notre cas, seuls les coefficients de référence de la transformée en ondelettes de seconde génération de l'image II sont mémorisés. Le processeur 100 passe alors à l'étape E202 et mémorise à cette étape les coefficients de la transformée en ondelettes de seconde génération de l'image 16 déterminés à l'étape E204.
Les coefficients de référence utilisés par la suite correspondent alors aux coefficients de l'image 16.
Le processeur 100 effectue de la même manière que celle précédemment décrite les étapes E203, E204, E205, E206, E207, E209, E210, E211 et E212 pour les images 17 à 19.
Dans notre exemple, l'image 110 correspond à un changement de plan. La différence entre les coefficients de la transformée en ondelettes de seconde génération des images 110 et 16 étant supérieure au seuil à l'étape E207, le processeur 100 passe à l'étape E208.
Le processeur 100 à l'étape E208 vérifie si d'autres coefficients de référence existent dans la mémoire vive 103.
Dans notre exemple, les coefficients de référence de l'image II sont aussi mémorisés dans la mémoire vive 103. Le processeur passe à l'étape E205, lit ceux-ci et effectue à l'étape E206 la différence entre les coefficients de référence de l'image
II et les coefficients de la transformée en ondelettes de seconde génération déterminés pour l'image 110 à l'étape E204.
La différence calculée, le processeur 100 vérifie à l'étape E207 si les différences calculées sont inférieures à un seuil prédéterminé. L'intérêt de garder en mémoire les coefficients des différentes images de référence, en l'occurrence II et 16, repose sur le fait qui si la séquence vidéo revient sur une scène précédente dans un temps relativement court, les coefficients de référence mémorisés n'ont pas besoin d'être recalculés, ce qui apporte un gain de temps non négligeable. De même, lors de l'insertion des coefficients de référence dans
le signal de données, ceux-ci ne seront insérés qu'une seule fois. Un simple indicateur dans le signal de données indiquera quels coefficients dans le signal de données devront être considérés comme coefficients de référence pour chaque sous-séquence vidéo. Selon notre exemple, l'image 110 correspond à un nouveau plan dans la séquence vidéo. Le test de l'étape E207 est donc négatif. Le processeur retourne alors à l'étape E205.
Le processeur 100 effectue de la même manière que celle précédemment décrite les étapes E203, E204, E205, E206, E207, E209, E210, E211 et E212 pour les images 111 à I17.
Ainsi, selon l'exemple de la Fig. 5a, le processeur 100 a mémorisé en mémoire vive 103 les coefficients de la transformée en ondelettes des images II, 16 et 110 ainsi qu'une partie de leurs maillages respectifs. Cette partie est représentative de la connectivité des sommets, des arêtes et des faces déterminant la topologie du maillage.
Toujours selon l'exemple de la Fig. 5a, le processeur 100 a mémorisé en mémoire vive 103 les différences entre les coefficients de la transformée en ondelettes des images 12 à 15 et les coefficients de la transformée en ondelettes de l'image II, les différences entre les coefficients de la transformée en ondelettes des images 17 à 19 et les coefficients de la transformée en ondelettes de l'image 16 et les différences entre les coefficients de la transformée en ondelettes des images II 1 à 117 et les coefficients de la transformée en ondelettes de l'image 110.
Ainsi, la séquence vidéo de la Fig. 5a a été subdivisée en trois sous-séquences vidéo notées Sl à S3. A chaque sous-séquence vidéo, sont associés au moins une partie d'un maillage et les coefficients de la transformée en ondelettes de seconde génération d'une image de référence dans la sous-séquence vidéo, la différence entre les coefficients de la transformée en ondelettes de seconde génération de chaque autre image de la sous-séquence vidéo et les coefficients de la transformée en ondelettes de l'image de référence. II est à remarquer qu'en variante, la différence peut être calculée entre les coefficients de la transformée en ondelettes de seconde génération d'une image de la sous-séquence vidéo I et les coefficients de la transformée en ondelettes de l'image suivante.
Toutes les images II à 117 ayant été traitées, le processeur 100 à l'étape E212 passe à l'étape E213.
A l'étape E213, le processeur 100 code les coefficients ainsi que les différences de coefficients obtenus précédemment. Ces coefficients ainsi que leurs différences sont par exemple codés préférentiellement selon une technique de type Zerotree. Cette technique est par exemple décrite dans la publication « Embedded Image Coding Using Zerotree of Wavelet Coefficients » de J.M Shapiro IEEE Transcations on signal Processing, Vol 41, NO 12, décembre 1993.
En effet, dans la transformée en ondelettes, chaque coefficient d'une sous bande a quatre coefficients dans la sous bande inférieure. Grâce à cette structure, si un coefficient à une sous-bande de basse résolution donnée est insignifiant par rapport à un seuil prédéterminé, tous les coefficients de la même orientation dans la même position spaciale à des sous-bandes de fréquence plus hautes sont aussi insignifiants vis-à-vis de ce même seuil prédéterminé. Un arbre de symboles nuls est alors défini commençant à une racine elle aussi nulle et référencée comme une fin de bloc. Ainsi, beaucoup de coefficients à des sous-bandes de fréquence plus hautes peuvent être effacés. Cet algorithme est intéressant en ce sens que le codage peut s'arrêter à n'importe quel point. Il autorise aussi un encodage précis par rapport à un débit donné.
Alternativement, le codage peut aussi être effectué en utilisant la méthode de type EBCOT (Embedded Block Coding with Optimized Truncation of the embedded bit-stream). Cette méthode est décrite dans la publication de D Taubman « High performance scalable Image compression with EBCOT » IEEE Transactions on Image
Processing Vol 9, NO 7, Juillet 2000.
Cette opération réalisée, le processeur 100 passe à l'étape E214 et met les coefficients codés sous forme d'un signal de données ou bitstream.
Les coefficients codés sont par exemple transmis par ordre de priorité. Les données sont transmises sous la forme : numéro de paquet/en-tête comprenant entre autres le nombre de coefficients dans le paquet, des informations représentatives de la zone de l'image concernée, le nombre de plans de bits utilisés pour coder l'image, le type de transformée en ondelettes utilisée pour coder certaines zones de l'image, des informations sur le maillage telles que la topologie de celui-ci ainsi que des champs prédéterminés indiquant que les coefficients suivant ces champs prédéterminés sont des coefficients d'images de référence selon l'invention. D'autres champs indiquent
aussi l'image de référence utilisée lors du calcul des différences de coefficients des autres images des sous-séquences vidéo.
Préférentiellement, le signal est sous forme de paquets consécutifs, chaque entête de paquet comprenant un champ début de paquet, le numéro de paquet en question, le type de transformée en ondelettes utilisé, un champ image de référence permettant d'indiquer que les coefficients du paquet sont des coefficients d'images de référence et ne sont donc pas des différences de coefficients entre deux images, un champ numéro de buffer indiquant, lorsqu'une séquence ou une sous-séquence comprend une pluralité d'images de référence, l'image de référence ayant été utilisée lors du codage des coefficients compris dans la sous-séquence.
Le champ numéro de paquet contient un identifiant du paquet attribué par ordre suivant la taille du paquet.
Le champ en-tête d'informations comprend les sous-champs suivant :
- le nombre de coefficients dans le paquet ; - la zone de l'image considérée représentée à partir de la topologie du maillage ;
- le nombre de plans de bits utilisés pour le codage des coefficients en question.
Le champ type de transformée en ondelettes indique si la transformée en ondelettes appliquée à la zone de l'image dont le paquet est issu est par exemple une transformée en ondelettes de Loop, de Butterfly, de Catmull-Clark ou encore une transformée en ondelettes de type affine, ou de tout autre type choisi en fonction de la zone de l'image considérée.
Le champ maillage permet quant à lui de transmettre la topologie du maillage de chaque image de référence.
Il est à remarquer qu'en variante, le signal de données comporte des informations indiquant l'image de référence ayant servi au codage d'au moins une autre image, l'image de référence faisant partie d'un groupe d'images de référence codées dans le signal de données. La Fig. 3 représente l'algorithme de maillage d'une image et de détermination d'un type de transformée en ondelettes de seconde génération à appliquer sur au moins une partie d'une image selon l'invention.
Au lancement de l'application, le processeur 100 du dispositif 10 lit à partir de la mémoire morte 102, les instructions du programme correspondant aux étapes E300 à E308 de la Fig. 3 et les charge en mémoire vive 103 pour les exécuter.
Le maillage tel que décrit dans le présent algorithme est effectué pour chacune des images à coder.
A l'étape E300, le processeur 100 effectue un maillage régulier et dense de l'image, c'est-à-dire que l'image est subdivisée par exemple en surfaces triangulaires. La densité de ce maillage est prédéterminée. Elle peut aussi être adaptée en fonction de la séquence d'image ou de l'image à coder. Cette étape réalisée, le processeur 100 effectue la boucle constituée des étapes
E301 à E305. Cette boucle correspond à la réalisation à partir du maillage régulier et dense d'un maillage optimal par fusion des triangles du maillage sur des critères de débit distorsion prédéterminés et en fonction des différentes propriétés des différentes zones de l'image. Ce maillage optimal donne une subdivision irrégulière de l'image et permet néanmoins l'emploi des transformées en ondelettes de seconde génération sur celui-ci.
Le processeur 100 à l'étape E301 optimise ainsi les triangles du maillage dense, fusionne les triangles voisins en fonction de critères débit distorsion prédéterminés et permute les arêtes des triangles fusionnés du maillage. Cette détermination du maillage est selon un mode particulier conforme à celle telle que décrite dans l'article de M Lounsbery, T DeRose, J Warren intitulé « Multiresolution Analysis for Surfaces of Arbitrary Topological Type ».
A l'étape suivante E302, le processeur 100 quantifie les nœuds des nouveaux triangles formés. Cette opération effectuée, le processeur 100 passe à l'étape suivante E303 qui consiste à vérifier qu'une maille ne s'est pas retournée pendant l'étape d'optimisation E301.
A l'étape suivante E304, le processeur 100 quantifie les nœuds des nouveaux triangles formés. Le processeur 100 vérifie ensuite à l'étape E305 si la boucle constituée des étapes E301 à 305 a été réalisée un nombre prédéterminé de fois et dans la négative réitère une nouvelle fois cette boucle.
Il est à remarquer ici qu'en variante, la détermination du maillage peut être effectuée de la façon inverse que celle précédemment décrite. Un premier maillage
grossier peut être appliqué sur l'image, ensuite, on subdivise les mailles en quatre mailles, par exemple jusqu'à obtenir un maillage final semi-régulier. Cette méthode est plus particulièrement décrite dans la publication de P Gioia « Reducing the number of wavelet coefficients by géométrie partioning » Computational geometry, Theory and Applications Vol 14, 1999, pp 25-48.
Dans l'affirmative, le processeur 100 passe à l'étape E306 qui, consiste à effectuer des opérations de gestion des bords. La gestion des bords consiste en l'application d'un homéomorphisme du maillage à un tore selon la méthode dite de périodisation. En variante, la gestion des bords consiste à effectuer une symétrie des données en prolongeant les diagonales situées aux frontières et qui ne sont pas orientées dans l'une des directions du maillage.
Ainsi, un maillage hiérarchique semi-adaptatif est réalisé. Cette étape effectuée, le processeur 100 détermine dans l'image à l'étape E307 des zones de nature distinctes. Ces zones sont de manière non limitative des zones de singularité, des zones de texture, des zones de contours d'objets naturels ou non naturels.
Ces zones sont déterminées à partir des caractéristiques du maillage et plus particulièrement de la densité de celui-ci autour d'un point et d'une région autour de ce point. Si à un point du maillage, la densité de maillage est importante et autour de celui-ci, le maillage est vide. Ce point est alors considéré comme une singularité isolée. Si à un point du maillage, la densité de maillage est importante et autour de celui-ci, le maillage est aussi dense. Cette zone est alors considérée comme une zone de texture. Si à un point du maillage la densité de maillage est importante et autour de celui-ci et la densité de maillage est forte selon une direction particulière, cette zone est alors considérée comme une zone de contour. La différenciation d'un contour naturel d'un contour non naturel est effectuée en analysant la direction particulière du maillage. En effet, les objets naturels ont des contours plus incertains que les contours des objets non naturels. La direction des contours non naturels est donc plus uniforme que celle des contours non naturels. La détermination des zones étant effectuée, le processeur 100 passe à l'étape
E308 et affecte à chaque zone déterminée un type de transformée en ondelettes adapté.
A titre d'exemple, une transformée en ondelettes connue sous le nom d'ondelettes de Butterfly est affectée aux zones de texture, une transformée en ondelettes connue sous le nom d'ondelettes de Loop est affectée aux zones de
contours d'objets naturels, une transformée en ondelettes connue sous le nom d'ondelletes de Catmull-Clark est affectée aux zones de contours d'objets non naturels et enfin une transformée en ondelettes connue sous le nom d'ondelettes affines est affectées aux singularités. L'algorithme de la Fig. 4a détermine, selon un second mode de réalisation, les sous-séquences vidéo parmi la séquence vidéo, ainsi que les images de référence dans ces sous-séquences vidéo utilisées pour coder les autres images de leurs sous- séquences vidéo respectives.
Dans ce second mode de réalisation, la séquence vidéo n'est pas subdivisée en sous-séquences vidéo en fonction d'une comparaison de différences de coefficients de transformée en ondelettes de seconde génération à un seuil prédéterminé. Dans ce second mode, la séquence vidéo est subdivisée en sous-séquences vidéo en fonction de la comparaison de PSNR (ratio signal sur bruit) entre une image compensée en mouvement et l'image originale par rapport à un seuil prédéterminé S. Au lancement de l'application, le processeur 100 du dispositif 10 lit à partir de la mémoire morte 102, les instructions du programme correspondant aux étapes E400 à E421 de la Fig. 4a et les charge en mémoire vive 103 pour les exécuter.
A l'étape E400, le processeur 100 initialise les variables i et k à la valeur 1. La variable i est une variable associée à l'image courante. La variable k est une variable associée aux sous-séquences de la séquence d'images.
Le processeur 100, à l'étape suivante E401, lit la première image 121 de la séquence vidéo. La séquence vidéo est par exemple mémorisée sur un disque CD compris dans le lecteur 109 ou reçue par l'intermédiaire de l'interface entrée/sortie
106 d'un dispositif de capture d'images 107 ou encore reçue du réseau de communication 113 par l'intermédiaire de l'interface de communication 112. La séquence vidéo est par exemple la séquence vidéo représentée en Fig. 5b. Cette séquence vidéo est dans notre exemple constituée de dix-sept images notées 121 à 137.
A l'étape E402, le processeur 100 affecte à la variable DEB(Ic) la valeur de la variable i. La variable Deb(k) correspond à une variable représentative du début d'une sous-séquence vidéo.
Le processeur 100 passe ensuite à l'étape E404 qui consiste à lire l'image suivante de la séquence vidéo, en l'occurrence l'image 122.
Le processeur 100 détermine ensuite à l'étape E405 le mouvement entre l'image précédente 121 et l'image 122. Cette détermination de mouvement est par exemple
effectuée en effectuant de l'appariement de blocs, ou block matching, entre les deux images.
Ensuite, à l'étape E406, le processeur 100 calcule l'image compensée en mouvement de l'image courante 122. Les étapes E405 et E406 utilisent préférentiellement la méthode de compensation de mouvement telle que décrite dans le document Joint final Committee Draft of Joint Vidéo Spécification (ITU-T Rec H.264 ISO/IEC 14496-10 AVC) Thomas Wiegand, Klagenfurt, 22 juillet 2002.
Le processeur 100 passe ensuite à l'étape E407 qui consiste à calculer le PSNR entre l'image compensée en mouvement et l'image courante 122.
Ce calcul effectué, à l'étape E408, le processeur 100 compare le PSNR précédemment calculé à un seuil S prédéterminé.
Si le PSNR est supérieur au seuil S, l'image 122 fait partie de la même séquence que l'image 121, ce qui dans notre exemple est le cas. Il n'existe que peu de mouvement entre les images. Aucun changement de plan dans la séquence vidéo n'est intervenu. Le processeur 100 passe alors à l'étape E409.
Le processeur 100, à cette étape, affecte à la variable Fin(k) représentative de la fin d'une sous-séquence vidéo la valeur courante de i, soit la valeur 2.
Cette étape réalisée, le processeur vérifie à l'étape E410 si la dernière image de la séquence vidéo a été traitée, ce qui n'est pas le cas dans notre exemple. Le processeur 100 retourne alors à l'étape E403.
Le processeur 100 va réitérer la boucle constituée des étapes E403 à E410 tant que le PSNR calculé est supérieur au seuil S.
Dans notre exemple, la boucle constituée des étapes E403 à E410 est réitérée pour les images 123 à 126.
Lorsque le processeur 100 compare le PSNR calculé entre l'image compensée en mouvement et l'image courante 126, celui-ci est selon notre exemple inférieur au seuil S. Le processeur 100 passe donc à l'étape E411.
A l'étape E411, le processeur 100 affecte à la variable Fin(k) représentative de la fin d'une sous-séquence vidéo la valeur courante de i, soit la valeur 6. La première sous-séquence vidéo S21 est ainsi constituée des images 121 à 125.
Cette étape réalisée, le processeur vérifie à l'étape E412 si la dernière image de la séquence vidéo a été traitée, ce qui n'est pas le cas dans notre exemple. Le
processeur 100 passe à l'étape E413, incrémente la variable k d'une unité et retourne alors à l'étape E402.
A l'étape E402, le processeur 100 affecte ensuite à la variable DEB(k) la valeur de la variable i. Le processeur 100 passe ensuite à l'étape E404 qui consiste à lire l'image suivante de la séquence vidéo, en l'occurrence l'image 127.
Le processeur 100 détermine ensuite à l'étape E405 le mouvement entre l'image précédente 126 et l'image 127.
Ensuite, à l'étape E406, le processeur 100 calcule l'image compensée en mouvement de l'image courante 127.
Le processeur 100 passe ensuite à l'étape E407 qui consiste à calculer le PSNR entre l'image compensée en mouvement et l'image courante 127.
Ce calcul effectué, à l'étape E408, le processeur 100 compare le PSNR précédemment calculé à un seuil S prédéterminé. Si le PSNR est supérieur au seuil S, l'image 127 fait partie de la même séquence que l'image 126, ce qui dans notre exemple est le cas. Il n'existe que peu de mouvement entre les images. Aucun changement de plan dans la séquence vidéo n'est intervenu. Le processeur 100 passe alors à l'étape E409.
Le processeur 100, à cette étape, affecte à la variable Fin(k) représentative de la fin d'une sous-séquence vidéo la valeur courante de i, soit la valeur 7.
Le processeur 100 va réitérer la boucle constituée des étapes E403 à E410 tant que le PSNR est supérieur au seuil S.
Dans notre exemple, la boucle constituée des étapes E403 à E410 est réitérée pour les images 126 à 129. Lorsque le processeur 100 compare le PSNR calculé entre l'image compensée en mouvement et l'image courante 130, celui-ci selon notre exemple est inférieur au seuil S. Le processeur 100 passe donc à l'étape E411.
A l'étape E411, le processeur 100 affecte à la variable Fin(k) représentative de la fin de la seconde sous-séquence vidéo la valeur courante de i, soit la valeur 10. La seconde sous-séquence vidéo S22 est ainsi constituée des images 126 à 129.
Cette étape réalisée, le processeur vérifie à l'étape E412 si la dernière image de la séquence vidéo a été traitée, ce qui n'est pas le cas dans notre exemple. Le processeur 100 passe à l'étape E413, incrémente la variable k d'une unité et retourne alors à l'étape E402.
Le processeur 100 effectue les mêmes opérations pour les images 131 à 137 que celles précédemment décrites. Elles ne seront pas re-décrites.
La dernière sous-séquence vidéo est alors constituée des étapes 130 à 137.
Lorsque le processeur 100 a traité l'image 137, le test de l'étape E410 s'avère positif. Le processeur passe donc à l'étape suivante E414.
Le processeur 100 à cette étape initialise la variable k à la valeur 1.
Cette opération réalisée, le processeur 100 détermine à l'étape E415 la taille notée Taille(k) de la sous-séquence courante, en l'occurrence la sous-séquence S21. La taille est déterminée à partir des variables Fin(k) et Deb(k) déterminées précédemment.
Le processeur 100 compare ensuite à l'étape E416 la taille déterminée à une valeur prédéterminée T. En effet, selon l'invention, deux traitements différents sont effectués selon la taille de la sous-séquence traitée.
Dans notre exemple, la taille de la séquence S21 est égale à cinq images. Ceci étant inférieur à T, le processeur passe à l'étape E417.
A cette étape, le processeur 100 détermine l'image de référence de la sous- séquence. L'image de référence est ici prise comme l'image placée au milieu de la sous-séquence vidéo. Ceci est particulièrement intéressant car les variations entre les différentes images de la sous-séquence sont ainsi réduites. Selon ce mode de réalisation, la différence entre les images de la sous-séquence et l'image de référence est moindre. Moins de bits sont alors nécessaires pour coder ces différences.
Selon notre exemple, l'image 123 est alors l'image de référence.
Cette opération réalisée, le processeur 100 vérifie à l'étape E420 si toutes les sous-séquences précédemment déterminées ont été traitées. Selon notre exemple, le test est négatif et le processeur 100 retourne à l'étape
E415.
Le processeur 100 effectue de la même façon les étapes E415 à 417 pour la seconde sous-séquence S22, et l'image 128 est alors l'image de référence.
Pour la sous-séquence S23, le processeur 100 détermine une taille de huit images et considère cette taille comme supérieure au seuil T. Le test de l'étape E416 est donc négatif. Le processeur 100 passe donc à l'étape E418.
A l'étape E418, le processeur 100 détermine le nombre M d'images de références nécessaires à un codage optimal de la sous-séquence. Ce nombre M est déterminé en fonction du nombre d'images contenues dans la sous-séquence et par
exemple, à partir d'une table mémorisée dans la mémoire morte 102. A titre d'exemple, pour huit images, M est considéré comme égal à deux. Il est à remarquer que pour des raisons de simplification, un nombre restreint d'images est considéré dans la séquence vidéo et la sous-séquence vidéo. Bien entendu, dans une réalisation pratique, le nombre d'images dans une sous-séquence vidéo est beaucoup plus important et une image de référence est déterminée pour un nombre beaucoup plus important d'images.
Le nombre d'images de référence pour une sous-séquence étant déterminé, le processeur 100 passe à l'étape E419 et détermine les images de référence dans la sous- séquence S23 en découpant la sous-séquence S23 en M sous-parties de manière équidistante et choisit l'image centrale de chaque sous-partie comme image de référence de la sous-partie. Selon notre exemple, la sous-séquence S23 est formée des deux sous-parties notées S'23 et S"23 et l'image 131 est l'image de référence de la sous-partie S'23 tandis que l'image 136 est l'image de référence de la sous-partie S"23.
Cette opération effectuée, le processeur 100 vérifie si toutes les sous-séquences ont été traitées et passe ensuite à l'étape E500 de la Fig. 4b.
L'algorithme de la Fig. 4b code selon un second mode de réalisation les autres images vidéo de chaque sous-séquence vidéo par rapport à leur image de référence respective.
Au lancement de l'application, le processeur 100 du dispositif 10 lit à partir de la mémoire morte 102, les instructions du programme correspondant aux étapes E500 à E523 de la Fig. 4b et les charge en mémoire vive 103 pour les exécuter.
Le processeur 100 initialise la variable k représentative de la sous-séquence à traiter à la valeur 1.
Le processeur vérifie à l'étape suivante E501 si la sous-séquence courante comporte plusieurs images de référence. Selon notre exemple, la sous-séquence Sl ne comporte qu'une seule image de référence, l'image 123. Le processeur passe alors à l'étape E502. A cette étape, le processeur 100 lit l'image de référence de la sous-séquence en cours de traitement, en l'occurrence l'image 123.
Le processeur 100 effectue ensuite à l'étape E503 un maillage sur l'image de référence et la détermination de type de transformée en ondelettes à appliquer sur des zones de l'image conformément à l'algorithme de la Fig. 3 précédemment décrit.
Cette opération réalisée, le processeur 100 détermine à l'étape E504 les coefficients de la transformée en ondelettes de seconde génération à partir du maillage déterminé à l'étape précédente. Pour cela, on applique la transformée en ondelettes, pour un nombre prédéterminé de niveaux de résolution, en utilisant la technique de Lifting sur l'ensemble des positions des sommets définissant la géométrie du maillage de l'image en cours de traitement.
Il est à remarquer que, comme précédemment, différents types de transformée en ondelettes sont appliqués sur différentes parties de l'image à traiter.
A titre d'exemple, une transformée en ondelettes connue sous le nom d'ondelertes de Butterfly est affectée aux zones de texture, une transformée en ondelettes connue sous le nom d'ondelettes de Loop est affectée aux zones de contours d'objets naturels, une transformée en ondelettes connue sous le nom d'ondelletes de Catmull-Clark est affectée aux zones de contours d'objets non naturels et enfin une transformée en ondelettes connue sous le nom d'ondelettes affines est affectées aux singularités.
Cette opération effectuée, le processeur 100 vérifie à l'étape E505 s'il existe d'autres images dans la sous-séquence en cours de traitement. On vérifie plus précisément si la sous-séquence est constituée d'une seule image. Selon notre exemple, la sous-séquence est constituée d'une pluralité d'images. Le processeur 100 passe alors à l'étape E506.
A l'étape E506, le processeur 100 détermine la position de l'image suivante à traiter dans la sous-séquence. Cette image est par exemple l'image voisine précédent l'image de référence de la sous-séquence.
Cette opération réalisée, le processeur 100 lit à l'étape E507 l'image qui est à la position précédemment déterminée, en l'occurrence l'image 122.
Le processeur 100 effectue ensuite à l'étape E508 un maillage sur l'image de référence conformément à l'algorithme de la Fig. 3 précédemment décrit.
Cette opération réalisée, le processeur 100 détermine à l'étape E509 les coefficients de transformée en ondelettes de seconde génération à partir du maillage déterminé à l'étape précédente. Pour cela, on applique la transformée en ondelettes, pour un nombre prédéterminé de niveaux de résolution, en utilisant la technique de Lifting sur l'ensemble des positions des sommets définissant la géométrie du maillage de l'image en cours de traitement.
II est à remarquer que, comme précédemment, différents types de transformée en ondelettes sont appliqués sur différentes parties de l'image à traiter.
Il est à remarquer ici que les images d'une sous-séquence sont similaires. La détermination d'un type de transformée en ondelettes pour les images autres que l'image de référence d'une sous-séquence vidéo peut, selon une variante, ne pas être effectuée. Les zones déterminées pour l'image de référence sont alors considérées comme identiques pour les autres images.
Le processeur 100 effectue à l'étape E510 la différence entre les coefficients de la transformée en ondelettes de seconde génération déterminés pour l'image 122 à l'étape E509 et les coefficients de référence de l'image 123. Bien entendu, la différence est calculée pour chaque coefficient correspondant à un sommet identique ou similaire d'une même surface dans les deux images 123 et 122. La différence des coefficients pour l'image 122 est mémorisée dans la mémoire vive 103.
Cette opération effectuée, le processeur 100 vérifie à l'étape E511 si la position de l'image de la sous-séquence en cours de traitement correspond à la position de l'image du début de la sous-séquence. Selon notre exemple de la Fig. 5b, le test est négatif. Le processeur 100 décrémente la valeur de la variable Pos d'une unité à l'étape E512.
Le processeur 100 effectue alors les étapes E507 à E510 pour l'image 121 de la même manière que celle précédemment décrite pour l'image 122.
L'image 121 correspondant à la première image de la sous-séquence S21, le processeur 100 passe de l'étape E511 à l'étape E513.
A l'étape E513, le processeur 100 détermine la position de l'image suivante à traiter dans la sous-séquence. Cette image est par exemple l'image voisine suivante 124 de l'image de référence de la sous-séquence vidéo.
Cette opération réalisée, le processeur 100 lit, à l'étape E514, l'image qui est à la position précédemment déterminée, en l'occurrence l'image 124.
Le processeur 100 effectue ensuite à l'étape E515 un maillage sur l'image de référence conformément à l'algorithme de la Fig. 3 précédemment décrit. Cette opération réalisée, le processeur 100 détermine à l'étape E516 les coefficients de la transformée en ondelettes de seconde génération à partir du maillage déterminé à l'étape précédente.
Il est à remarquer que, comme précédemment, différents types de transformée en ondelettes sont appliqués sur différentes parties de l'image à traiter.
Le processeur 100 effectue à l'étape E517 la différence entre les coefficients de référence de l'image 123 et les coefficients de la transformée en ondelettes de seconde génération déterminés pour l'image 124 à l'étape E516. La différence des coefficients pour l'image 124 est mémorisée dans la mémoire vive 103. Cette opération effectuée, le processeur 100 vérifie à l'étape E518 si la position de l'image de la sous-séquence en cours de traitement correspond à la position de l'image de fin de la sous-séquence. Selon notre exemple de la Fig. 5b, le test est négatif. Le processeur 100 incrémente la valeur de la variable Pos d'une unité à l'étape E519. Le processeur 100 effectue alors les étapes E514 à E517 pour l'image 125 de la même manière que celle précédemment décrite pour l'image 124.
L'image 125 correspondant à la dernière image de la sous-séquence S21, le processeur 100 passe de l'étape E518 à l'étape E520.
Le processeur 100 vérifie à cette étape si d'autres sous-séquences vidéo dans la séquence vidéo sont à traiter.
Selon notre exemple de la Fig. 5b, deux sous-séquences S22 et S23 doivent être traitées. Le processeur 100 passe alors à l'étape E523 et incrémente alors la variable k d'une unité.
La sous-séquence S22 est alors traitée. Le processeur 100 retourne à l'étape E501 et effectue les étapes E501 à E520 de la même manière que celle précédemment décrite.
Lorsque le processeur 100 a traité l'ensemble des images de la sous-séquence S22, celui-ci traite selon notre exemple la sous-séquence S23.
Il est à remarquer que la sous-séquence S23 comporte plus d'une image de référence. Le test de l'étape E501 est donc positif. Le processeur 100 effectue alors les opérations suivantes non représentées.
Le processeur 100 prend l'image de référence 131 de la sous-partie S '23 de la sous-séquence S23, effectue un maillage de celle-ci et détermine les coefficients de la transformée en ondelettes de seconde génération de celle-ci. Le processeur 100 lit chacune des autres images 130, 132 et 133 de la sous-partie
S'23 de la sous-séquence S23, effectue un maillage de celles-ci, détermine les coefficients de la transformée en ondelettes de seconde génération de celles-ci et effectue la différence entre les coefficients de l'image de référence de la sous-partie S'23 de la sous-séquence S23 et leurs coefficients respectifs.
Le processeur 100 prend l'image de référence 136 de la sous-partie S"23 de la sous-séquence S23, effectue un maillage de celle-ci et détermine les coefficients de la transformée en ondelettes de seconde génération de celle-ci.
Le processeur 100 prend chacune des autres images 134, 135 et 137 de la sous- partie S "23 de la sous-séquence S23, effectue un maillage de celles-ci, détermine les coefficients de la transformée en ondelettes de seconde génération de celles-ci et effectue la différence entre les coefficients de l'image de référence de la sous-partie
S"23 de la sous-séquence S23 et leurs coefficients respectifs.
Ces opérations réalisées, toutes les sous-séquences ont été traitées. Le processeur 100 passe à l'étape E521.
A l'étape E521, le processeur 100 code les coefficients ainsi que les différences de coefficients obtenus précédemment. Ces coefficients ainsi que leurs différences sont par exemple codés selon une technique de type Zerotree précédemment décrite ou le codage peut aussi être effectué en utilisant la méthode de type EBCOT. Cette opération réalisée, le processeur 100 passe à l'étape E522 et met les coefficients codés sous forme d'un signal de données ou bitstream.
Les coefficients codés sont par exemple transmis par ordre de priorité. Les données sont transmises sous la forme : numéro de paquet/en-tête comprenant entre autres le nombre de coefficients dans le paquet, des informations représentatives de la zone de l'image concernée, le nombre de plans de bits utilisés pour coder l'image, le type de transformée en ondelettes utilisé pour coder certaines zones de l'image, des informations sur le maillage telles que la topologie de celui-ci ainsi que des drapeaux indiquant que les coefficients contenus dans le paquet comprenant un drapeau ou les coefficients placés entre deux drapeaux sont les coefficients d'une image de référence selon l'invention.
Préférentiellement, le signal est sous forme de paquets consécutifs, chaque entête de paquet comprenant un champ début de paquet, le numéro de paquet en question, le type de transformée en ondelettes utilisé, un champ image de référence permettant d'indiquer que les coefficients du paquet sont des coefficients d'images de références et ne sont donc pas des différences de coefficients entre deux images, un champ numéro de buffer indiquant le numéro de l'image de référence ayant été utilisée pour le codage des coefficients lorsqu'une sous-séquence comprend une pluralité d'images de référence. En variante, le signal de données comporte en outre
des marqueurs représentatifs du début et/ou de la fin de chaque sous-séquence vidéo déterminée.
Selon une autre variante de réalisation, le signal de données comporte en outre pour chaque autre image, le numéro de l'image de référence dont dépend chaque autre image.
Le signal de données ainsi formé est similaire à celui précédemment décrit en référence à la Fig. 2. Il ne sera pas plus explicité.
La Fig. 6 représente l'algorithme de décodage selon l'invention d'un signal de données représentatif d'une séquence d'images vidéo. Au lancement de l'application, le processeur 100 du dispositif 10 lit à partir de la mémoire morte 102, les instructions du programme correspondant aux étapes E600 à E610 de la Fig. 5 et les charge en mémoire vive 103 pour les exécuter.
A l'étape E600, le processeur 100 du dispositif 10 détermine dans le signal de données au moins un champ identifiant des coefficients associés à une image de référence dans le signal de données.
Il est à remarquer que le signal de données à traiter provient d'un dispositif périphérique 107, tel qu'un caméscope numérique ou de tout autre moyen d'acquisition ou de stockage de données.
Le signal de données à traiter peut aussi provenir d'un dispositif distant via le réseau de communication 113. Le réseau de communication 113 est par exemple un réseau de type Internet ou un réseau de télécommunication téléphonique par lequel une communication de type visioconférence est établie entre deux dispositifs 10.
Le réseau de communication 113 peut aussi être un réseau de diffusion Hertzien ou satellite d'informations vidéo codées selon la présente invention. L'identifiant déterminé, le processeur 100, à cette même étape, lit dans le signal de données, les coefficients identifiés par le marqueur.
Cette opération effectuée, le processeur 100 détermine à l'étape E601 à partir des informations contenues dans un champ prédéterminé du signal de données le type de transformée en ondelettes utilisé pour coder certaines zones de l'image. En effet, et selon un mode préférentiel, différents types de transformées en ondelettes sont appliqués sur différentes parties de l'image à traiter en fonction de celles-ci.
A titre d'exemple, une transformée en ondelettes connue sous le nom d'ondelettes de Butterfly est affectée aux zones de texture, une transformée en ondelettes connue sous le nom d'ondelettes de Loop est affectée aux zones de
contours d'objets naturels, une transformée en ondelettes connue sous le nom d'ondelettes de Catmull-Clark est affectée aux zones de contours d'objets non naturels et enfin une transformée en ondelettes connue sous le nom d'ondelettes affines est affectée aux singularités. Les types de transformées en ondelettes appliqués lors du codage déterminé, le processeur 100 effectue à l'étape E602 les transformées en ondelettes de seconde génération inverses correspondant aux types déterminés pour les coefficients correspondants. Cette étape réalisée, le processeur 100 lit à l'étape E603 dans le signal de données à traiter et plus particulièrement dans le champ forme du maillage, la topologie du maillage de l' image.
A partir des informations obtenues aux étapes E602 et E603, le processeur 100 reconstruit l'image à l'étape E604 et transfère celle-ci par exemple à un moyen de visualisation tel que l'écran 104.
Le processeur 100 à l'étape E605 détermine les coefficients dans le signal de données d'une autre image qu'une image de référence. Cette image est une image contenue dans la même sous-séquence vidéo que celle comprenant l'image de référence dont les coefficients ont été lus précédemment à l'étape E600. Par exemple, le processeur 100 lit dans le signal de données les coefficients suivant ceux lus à l'étape E600. Ces coefficients consécutifs aux coefficients lus à l'étape E600 sont alors les coefficients d'une autre image.
Cette opération effectuée, à l'étape E606, le processeur 100 effectue la différence entre les coefficients déterminés à l'étape E600 et les coefficients déterminés à l'étape E605.
Cette opération effectuée, le processeur 100 détermine à l'étape E607 à partir des informations contenues dans le signal de données le type de transformée en ondelettes utilisé pour coder certaines zones de l'image en cours de traitement. En effet, et selon un mode préférentiel, différents types de transformées en ondelettes sont appliqués sur différentes parties de l'image à traiter en fonction de celles-ci. Il est néanmoins à remarquer que cette étape est dans beaucoup de cas non nécessaire. En effet, lors du codage, la séquence d'images a été divisée en sous-séquences d'images, les images d'une sous-séquence d'images sont peu différentes et ainsi le ou les types de transformées en ondelettes utilisés pour coder certaines zones de l'image en cours de traitement sont identiques à celles déterminées à l'étape E601 pour l'image de référence de la même sous-séquence vidéo.
Le processeur 100 effectue ensuite à l'étape E608 les transformées en ondelettes de seconde génération inverses correspondant aux types déterminés pour les coefficients correspondants.
A partir des informations obtenues aux étapes E603 et E608, le processeur 100 reconstruit l'image à l'étape E609 et transfère celle-ci par exemple à un moyen de visualisation tel que l'écran 104.
Ainsi, il est à remarquer que selon l'invention, avec seulement le maillage d'une image, dite image de référence, il est possible de reconstruire un ensemble d'images à partir de celui-ci. Ceci réduit très fortement la quantité d'informations nécessaires pour coder une séquence vidéo et donc la taille du signal de données.
Cette opération réalisée, le processeur 100 vérifie à l'étape E610 si des coefficients représentatifs d'autres images sont présents dans le signal de données et associés à l'image de référence déterminée à l'étape E600. Dans l'affirmative, le processeur 100 retourne à l'étape E605 et réitère les étapes
E605 à E610 précédemment décrites tant que d'autres coefficients représentatifs d'autres images sont présents dans le signal de données.
Si par contre, le processeur 100 détermine dans le signal de données un nouveau marqueur identifiant des coefficients associés à une image de référence dans le signal de données, le processeur 100 retourne à l'étape E600 et effectue les mêmes opérations avec les coefficients de la nouvelle image de référence que celles décrites précédemment.
Il est à remarquer que l'algorithme tel que décrit correspond à un algorithme de décodage conforme à l'algorithme de codage tel que décrit en référence à la Fig. 2. Lorsque les données ont été codées conformément à l'algorithme de codage tel que décrit en référence aux Figs. 4a et 4b, les images de référence ne sont plus les images des débuts de sous-séquences et les autres images ne sont plus à la suite des images de référence.
Le processeur 100 en sus des étapes de l'algorithme de décodage précédemment décrit doit identifier les images de référence utilisées pour le codage des autres images. Par exemple, on recherche dans le signal de données des marqueurs représentatifs du début et/ou de la fin de sous-séquences vidéo et on considère les coefficients compris entre ces marqueurs comme les coefficients des autres images vidéo de la sous-séquence. Selon une autre variante de réalisation, le processeur 100
recherche dans le signal de données, pour chaque autre image, le numéro de l'image de référence dont dépend chaque autre image.
Bien entendu, la présente invention n'est nullement limitée aux modes de réalisation décrits ici, mais englobe, bien au contraire, toute variante à la portée de l'homme du métier.