Nothing Special   »   [go: up one dir, main page]

FR2957744A1 - Procede de traitement d'une sequence video et dispositif associe - Google Patents

Procede de traitement d'une sequence video et dispositif associe Download PDF

Info

Publication number
FR2957744A1
FR2957744A1 FR1052011A FR1052011A FR2957744A1 FR 2957744 A1 FR2957744 A1 FR 2957744A1 FR 1052011 A FR1052011 A FR 1052011A FR 1052011 A FR1052011 A FR 1052011A FR 2957744 A1 FR2957744 A1 FR 2957744A1
Authority
FR
France
Prior art keywords
image
block
reconstructions
pixel
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1052011A
Other languages
English (en)
Other versions
FR2957744B1 (fr
Inventor
Xavier Henocq
Guillaume Laroche
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to FR1052011A priority Critical patent/FR2957744B1/fr
Priority to US13/049,781 priority patent/US20110228850A1/en
Publication of FR2957744A1 publication Critical patent/FR2957744A1/fr
Application granted granted Critical
Publication of FR2957744B1 publication Critical patent/FR2957744B1/fr
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

La présente invention concerne un procédé de traitement d'une séquence vidéo (101, 110, 501, 601), ainsi qu'un dispositif associé. En lien avec la séquence, au moins une image numérique (lt, lt+1) est compressée par prédiction temporelle (504, 505) à partir d'une pluralité d'images de référence (402, 408, 411, 516, 517, 518, 608, 610, 611) résultant d'une pluralité de reconstructions différentes (517, 518, 610, 611) d'une même image (lt). Le décodage prévoit alors les étapes consistant à: - obtenir des reconstructions d'une première image (lt) qui ont servi d'images de référence (516, 608) pour la prédiction temporelle (504, 505) d'au moins une autre image (lt+1) de la séquence; et - combiner (614, E717) lesdites reconstructions obtenues de sorte à obtenir, pour au moins une partie de ladite première image (lt), au moins une valeur d'affichage (pixel(j), 609).

Description

La présente invention concerne un procédé de traitement, de type codage ou décodage, d'une séquence vidéo, ainsi qu'un dispositif associé. Les algorithmes de compression vidéo, comme ceux normalisés par les organismes de standardisation ITU, ISO, SMPTE, exploitent les redondances spatiales et temporelles des images afin de générer des flux binaires de données de taille réduite par rapport à ces séquences vidéo. De telles compressions rendent la transmission et/ou le stockage des séquences vidéo plus efficaces. Les figures 1 et 2 représentent respectivement le schéma d'un encodeur vidéo classique 10 et le schéma d'un décodeur vidéo classique 20 conformes à la norme de compression vidéo H.264/MPEG-4 AVC ("Advanced Video Coding"). Cette dernière est le résultat de la collaboration du "Video Coding Expert Group" (VCEG) de l'ITU et du "Moving Picture Experts Group" (MPEG) de l'ISO, sous la forme notamment d'une publication "Advanced Video Coding for Generic Audiovisual Services" (Mars 2005). La figure 1 représente un schéma d'un encodeur vidéo 10 de type H.264/AVC ou de l'un de ses prédécesseurs. La séquence vidéo originale 101 est une succession d'images numériques "images f'. De façon connue en soi, une image numérique est représentée par une ou plusieurs matrices dont les coefficients représentent des pixels. Selon la norme H.264/AVC, les images sont découpées en tranches ou "slices". Un "slice" est une partie de l'image ou l'image entière. Ces slices sont divisés en macroblocs, généralement des blocs de taille 16 pixels x 16 pixels, et chaque macrobloc peut être divisé, à son tour, en différentes tailles de blocs de données 102, par exemple 4x4, 4x8, 8x4, 8x8, 8x16, 16x8. Le macrobloc est l'unité de codage dans la norme H.264.
Lors d'une compression vidéo, chaque bloc d'une image en cours de traitement est prédit spatialement par un prédicteur "Intra" 103, ou temporellement par un prédicteur "Inter" 105. Chaque prédicteur est un ensemble de pixels de même taille que le bloc à prédire, non nécessairement aligné sur la grille de décomposition de l'image en blocs, et issu de la même image ou d'une autre image. A partir de cet ensemble de pixels (également nommé par la suite "prédicteur" ou "bloc prédicteur") et du bloc à prédire, on déduit un bloc de différences (ou "résiduel"). L'identification du bloc prédicteur et le codage du résiduel permettent de réduire la quantité d'information à encoder effectivement. A noter que dans certains cas, le bloc prédicteur peut être choisi dans une version interpolée de l'image de référence, afin de réduire les différences de prédiction et donc d'améliorer la compression dans certains cas. Dans le module de prédiction "Intra" 103, le bloc courant est prédit à l'aide d'un prédicteur "Intra", bloc de pixels construit à partir des informations de l'image courante déjà encodées. En ce qui concerne le codage "Inter" par prédiction temporelle, une estimation de mouvement 104 entre le bloc courant et des images de référence 116 (passées ou futures) est effectuée afin d'identifier, dans l'une de ces images de référence, l'ensemble de pixels le plus proche du bloc courant pour l'utiliser comme prédicteur de ce bloc courant. Les images de référence utilisées sont constituées d'images de la séquence vidéo qui ont déjà été codées puis reconstruites (par décodage). Généralement, l'estimation de mouvement 104 est un algorithme de mise en correspondance de blocs dit "Block Matching Algorithm" (BMA). Le bloc prédicteur identifié par cet algorithme est ensuite généré puis soustrait du bloc courant de données à traiter de sorte à obtenir un bloc de différences (résiduel de bloc). Cette étape est appelée "compensation de mouvement" 105 dans les algorithmes de compression classiques.
Ces deux types de codage fournissent ainsi plusieurs résiduels (différence entre le bloc courant et le bloc prédicteur) de texture qui sont comparés dans un module de sélection du meilleur mode de codage 106 aux fins de déterminer celui qui optimise un critère débit/distorsion. Si le codage "Intra" est sélectionné, une information permettant de décrire le prédicteur "Intra" utilisé est codée (109) avant d'être insérée dans le flux binaire 110. Si le module de sélection du meilleur mode de codage 106 choisit le codage "Inter', une information de mouvement est codée (109) et insérée dans le flux binaire 110. Cette information de mouvement est notamment composée d'un vecteur mouvement (indiquant la position du bloc prédicteur dans l'image de référence relativement à la position du bloc à prédire) et d'un indice d'image parmi les images de référence. Le résiduel sélectionné par le module de choix 106 est ensuite transformé (107) dans le domaine fréquentiel, à l'aide d'une transformée en cosinus discret DCT ("Discrete Cosinus Transform"), puis quantifié (108). Les coefficients du résiduel transformé quantifié sont ensuite codés à l'aide d'un codage entropique ou arithmétique (109) puis insérés dans le flux binaire compressé 110 au niveau de données utiles codant les blocs de l'image. On fera, dans la suite du document, essentiellement référence au codage entropique. Toutefois, l'homme du métier est à même de le remplacer par un codage arithmétique ou tout autre codage adapté. Afin de calculer les prédicteurs "Intra" ou d'effectuer l'estimation de mouvement pour les prédicteurs "Inter", l'encodeur réalise un décodage des blocs déjà encodés à l'aide d'une boucle dite "de décodage" (111, 112, 113, 114, 115, 116) pour obtenir des images de référence pour les estimations de mouvement futures. Cette boucle de décodage permet de reconstruire les blocs et les images à partir des résiduels transformés quantifiés. Elle garantit que le codeur et le décodeur utilisent les mêmes images de référence. Ainsi, le résiduel transformé quantifié est déquantifié (111) par application d'une opération de quantification, inverse de celle prévue à l'étape 108, puis reconstruit (112) par application de la transformée inverse de celle de l'étape 107.
Si le résiduel provient d'un codage "Intra" 103, le prédicteur "Intra" utilisé est ajouté à ce résiduel (113) pour récupérer un bloc reconstruit correspondant au bloc d'origine modifié par les pertes résultant de l'opération de quantification.
Si le résiduel provient, en revanche, d'un codage "Inter" 105, le bloc pointé par le vecteur mouvement courant (ce bloc appartient à l'image de référence 116 visée dans les informations de mouvement codées) est ajouté à ce résiduel décodé (114). On obtient ainsi le bloc d'origine modifié par les pertes résultant des opérations de quantification.
Afin d'atténuer, au sein d'une même image, les effets de blocs créés par une forte quantification des résiduels obtenus, l'encodeur intègrent un filtre de "deblocking" 115, qui a pour objectif de supprimer ces effets de blocs, notamment les hautes fréquences artificielles introduites aux frontières entre blocs. Le filtre de deblocking 115 permet de lisser les bordures entre les blocs afin d'atténuer visuellement ces hautes fréquences créées par le codage. Un tel filtre étant connu de l'art, il ne sera pas décrit plus en détail ici. Le filtre 115 est ainsi appliqué à une image lorsque tous les blocs de pixels de cette image ont été décodés. Les images filtrées, également nommées images reconstruites, sont alors stockées comme images de référence 116 pour permettre les prédictions "Inter" ultérieures ayant lieu lors de la compression des images suivantes de la séquence vidéo courante. Pour la suite des explications, on dénommera "classique" les informations résultantes de cette boucle de décodage mise en oeuvre dans l'état de l'art, c'est-à-dire en inversant notamment la quantification et la transformée avec des paramètres classiques. Ainsi, on parlera désormais d"'image reconstruite classique" ou de "reconstruction classique". Dans le cadre de la norme H.264, il existe une option de référence multiple permettant d'utiliser plusieurs images de référence 116 pour l'estimation et la compensation de mouvement de l'image courante, avec un maximum de 32 images de référence.
En d'autres termes, l'estimation de mouvement est effectuée sur N images. Ainsi, le meilleur prédicteur "Inter" du bloc courant, pour la compensation de mouvement, est sélectionné dans une des multiples images de référence. Par conséquent, deux blocs voisins peuvent avoir deux blocs prédicteurs qui proviennent de deux images de référence distinctes. C'est notamment la raison pour laquelle on indique, dans les données utiles du flux binaire compressé et au niveau de chaque bloc de l'image codée (en fait le résiduel correspondant), l'indice de l'image de référence (en plus du vecteur mouvement) utilisée pour le bloc prédicteur.
La figure 3 illustre cette compensation de mouvement à l'aide d'une pluralité d'images de référence. Sur cette figure, l'image 301 représente l'image courante en cours de codage correspondant à l'image i de la séquence vidéo. Les images 302 à 307 correspondent aux images i-1 à i-n qui ont été précédemment encodées puis décodées (c'est-à-dire reconstruites) depuis la séquence vidéo compressée 110. Dans l'exemple illustré, trois images de référence 302, 303 et 304 sont utilisées dans la prédiction Inter de blocs de l'image 301. Pour rendre la représentation graphique lisible, seuls quelques blocs de l'image courante 301 ont été représentés, et aucune prédiction Intra n'est ici illustrée.
Notamment, pour le bloc 308, un prédicteur Inter 311 appartenant à l'image de référence 303 est sélectionné. Les blocs 309 et 310 sont respectivement prédits par les blocs 312 de l'image de référence 302 et 313 de l'image de référence 304. Pour chacun de ces blocs, un vecteur mouvement (314, 315, 316) est codé et transmis avec l'indice (302, 303, 304) d'image de référence. L'utilisation des multiples images de référence _ on notera, toutefois, la préconisation du groupe VCEG susvisé recommandant de limiter le nombre d'images de référence à quatre _ est à la fois un outil de résistance aux erreurs et un outil d'amélioration de l'efficacité de compression.
En effet, avec une sélection adaptée des images de référence pour chacun des blocs d'une image courante, il est possible de limiter l'effet de la perte d'une image de référence ou d'une partie d'une image de référence.
De même, si la sélection de la meilleure image de référence est estimée bloc par bloc avec un critère de débit-distorsion minimal, cette utilisation de plusieurs images de référence permet d'obtenir des gains significatifs par rapport à l'utilisation d'une seule image de référence.
La figure 2 représente un schéma global d'un décodeur 20 vidéo de type H.264/AVC. Le décodeur 20 reçoit en entrée un flux binaire 201 correspondant à une séquence vidéo compressée 110 par un encodeur de type H.264/AVC, tel que celui de la figure 1. Lors du processus de décodage, le flux binaire 201 est tout d'abord décodé entropiquement (202), ce qui permet de traiter chaque résiduel codé. Le résiduel du bloc courant est déquantifié (203) à l'aide de la quantification inverse de celle prévue en 108, puis reconstruit (204) à l'aide de la transformée inverse de celle prévue en 107. Le décodage des données de la séquence vidéo est alors opéré image par image, et au sein d'une image, bloc par bloc. Le mode "Inter" ou "Intra" de codage du bloc courant est extrait du flux binaire 201 et décodé entropiquement. Si le codage du bloc courant est de type "Intra", l'indice de la direction de prédiction est extrait du flux binaire et décodé entropiquement. Les pixels des blocs voisins décodés les plus proches du bloc courant selon cette direction de prédiction sont utilisés pour re-générer le bloc prédicteur "Intra". Le résiduel associé au bloc courant est récupéré du flux binaire 201 puis décodé entropiquement. Enfin, le bloc prédicteur Intra récupéré est ajouté au résiduel ainsi déquantifié et reconstruit dans le module prédiction Intra (205) pour obtenir le bloc décodé. Si le mode de codage du bloc courant indique que ce bloc est de type "Inter", alors le vecteur mouvement, et éventuellement l'identifiant de l'image de référence utilisée, sont extraits du flux binaire 201 et décodés (202). Ces informations de mouvement sont utilisées dans le module de compensation de mouvement 206 pour déterminer le bloc prédicteur "Inter" contenu dans les images de référence 208 du décodeur 20. De façon similaire à l'encodeur, ces images de référence 208 peuvent être des images passées ou futures par rapport à l'image en cours de décodage et sont reconstruites à partir du flux binaire (donc décodées précédemment). Le résiduel associé au bloc courant est, ici aussi, récupéré du flux binaire 201 puis décodé entropiquement. Le bloc prédicteur Inter déterminé est alors ajouté au résiduel ainsi déquantifié et reconstruit, au niveau du module de compensation de mouvement 206, pour obtenir le bloc décodé. Bien entendu, les images de référence peuvent résulter de l'interpolation d'images lorsque le codage a mis en oeuvre cette même interpolation pour améliorer la précision de la prédiction.
A la fin du décodage de tous les blocs de l'image courante, le même filtre de deblocking 207 que celui (115) prévu au niveau de l'encodeur est utilisé pour éliminer les effets de bloc de manière à obtenir les images de référence 208. Les images ainsi décodées constituent le signal vidéo 209 de sortie du décodeur, qui peut être alors affiché et exploité. Ces opérations de décodage sont similaires à la boucle de décodage du codeur. Les inventeurs ont cependant constaté que les gains en compression obtenus grâce à l'option de référence multiple restent limités. Cette limitation trouve racine dans le fait qu'une grande majorité (environ 85%) des données prédites le sont à partir de l'image la plus proche temporellement de l'image courante à coder, généralement l'image qui la précède. Dans ce cadre, les inventeurs ont envisagé d'avoir recours à plusieurs reconstructions différentes d'une même image de la séquence vidéo, par exemple l'image la plus proche temporellement, de sorte à obtenir plusieurs images de référence. Ces reconstructions différentes peuvent notamment différer sur des valeurs de décalage de quantification différentes utilisées lors de la quantification inverse dans la boucle de décodage. Plusieurs parties d'une même image peuvent ainsi être prédites à partir de plusieurs reconstructions d'une même image, comme illustré sur la figure 4.
Cette approche permet d'obtenir des blocs prédicteurs plus proches des blocs à coder, et donc d'améliorer sensiblement la prédiction temporelle et le ratio débit/distorsion de compression. L'image affichée au niveau du décodeur reste cependant celle relative à la reconstruction classique. Comparée à l'image d'origine, cette image a notamment été détériorée en raison des opérations de transformée et de quantification lors du codage. Dans ce contexte, la présente invention vise à améliorer la qualité visuelle de la séquence vidéo restituée à l'affichage lors du décodage.
A cet effet, l'invention concerne notamment un procédé de traitement d'une séquence vidéo, au moins une image numérique composant la séquence vidéo étant compressée par prédiction temporelle (ou compensation de mouvement) à partir d'une pluralité d'images de référence, caractérisé en ce que, la prédiction temporelle mettant en oeuvre une pluralité de reconstructions différentes d'une même image comme images de référence, le procédé comprend les étapes consistant à: obtenir des reconstructions d'une première image, qui ont servi d'images de référence pour la prédiction temporelle d'au moins une autre image de la séquence; et combiner lesdites reconstructions obtenues de sorte à obtenir, pour au moins une partie (par exemple un pixel ou un bloc) de ladite première image, au moins une valeur d'affichage. La présente invention prévoit ainsi d'utiliser différentes reconstructions, normalement prévues uniquement pour produire de multiples images de référence, afin de modifier la reconstruction classique normalement dédiée à l'affichage. Dans un contexte de décodage, ladite première image est celle qui doit être décodée, les valeurs d'affichage obtenues permettant un affichage de cette image décodée.
Dans un contexte de codage, la valeur d'affichage évaluée par le codeur n'est pas nécessairement affichée au niveau du décodeur, mais permet d'orienter, comme on le verra par la suite, l'affichage au niveau du décodeur.
L'invention repose sur une constatation selon laquelle, comme il existe de fortes corrélations temporelles entre les images successives de la séquence, les blocs prédicteurs, qui sont au demeurant les plus proches des blocs à coder, sont généralement également les plus proches de l'image d'origine de laquelle ils dérivent (par reconstructions multiples). Les différentes reconstructions permettent ainsi d'affiner, d'autant plus qu'elles servent à la prédiction d'images très proches temporellement (et donc fortement corrélées), les valeurs des pixels éventuellement modifiées par la quantification du codage.
La combinaison de ces reconstructions permet in fine de moyenner, dans le bloc, l'erreur sur chaque pixel, occasionnée par les opérations avec pertes (quantification notamment). Dans un mode de réalisation de l'invention, les images numériques sont composées de blocs de pixels, et le procédé comprend, pour un bloc de la première image, les étapes consistant à: déterminer le ou les blocs de l'au moins une autre image qui sont prédits temporellement à partir d'une reconstruction d'au moins une partie dudit bloc de la première image; et obtenir un bloc d'affichage en combinant les reconstructions d'au moins une partie dudit bloc de la première image, identifiées lors de l'étape de détermination. Dans cette configuration, la correction de l'image à afficher par combinaison de reconstructions est réalisée au niveau de chaque bloc, unité de base de l'estimation de mouvement. Cette approche permet d'affiner plus précisément et localement chaque partie de l'image à afficher, en tenant compte de sa contribution propre à l'estimation de mouvement d'autres images. En particulier, le procédé comprend, si aucun bloc n'est prédit temporellement à partir d'une reconstruction d'au moins une partie dudit bloc de la première image, une étape consistant à récupérer, dans une reconstruction prédéfinie de l'image à décoder, en particulier la reconstruction dite classique, le bloc ayant la même position que ledit bloc à décoder, de sorte à obtenir un bloc d'affichage. Cette disposition assure un traitement minimaliste, conforme aux approches classiques de restitution visuelle et donc avec une qualité au moins égale à celle des approches classiques. Selon une autre caractéristique particulière, l'étape d'obtention d'un bloc d'affichage comprend, pour chaque pixel du bloc, des étapes consistant à: déterminer, parmi lesdites reconstructions identifiées lors de l'étape de détermination, celles dont ledit pixel correspondant sert de référence pour une prédiction temporelle; combiner les reconstructions ainsi déterminées pour obtenir une valeur de pixel d'affichage.
Dans cette configuration, on ne combine pas toutes les reconstructions identifiées lors de la détermination des blocs prédits temporellement, mais seulement celles dont le pixel est utilisé pour au moins une prédiction temporelle. En effet, les blocs prédicteurs ne correspondent pas nécessairement à un bloc défini par décomposition de l'image de référence en blocs. Un décalage de position entre la grille de décomposition de l'image et les blocs prédicteurs peut donc exister. Il résulte de ce décalage que certains pixels du bloc à décoder peuvent servir plus ou moins dans un processus de compensation de mouvement, comparé aux pixels voisins. L'approche adoptée ici permet de tenir compte de cette particularité pour obtenir une précision accrue dans l'amélioration de l'image à afficher. En particulier, la combinaison des reconstructions déterminées pour obtenir une valeur de pixel d'affichage comprend, pour un pixel dudit bloc, le calcul de la moyenne des valeurs des pixels correspondants (c'est-à-dire co- localisés dans l'image de référence) dans lesdites reconstructions déterminées. L'utilisation de la moyenne des pixels permet de lisser de façon homogène l'erreur de quantification introduite dans l'image compressée. Bien entendu, d'autres approches peuvent être utilisées, par exemple la modification du pixel de la reconstruction classique à l'aide de l'erreur quadratique moyenne sur l'ensemble des reconstructions déterminées, ou bien la sélection d'une valeur de pixel parmi l'ensemble des valeurs de pixels prises dans les différentes reconstructions plutôt que de calculer la moyenne. Selon une caractéristique particulière, si aucune reconstruction dont ledit pixel correspondant sert de référence pour une prédiction temporelle n'est déterminée, le pixel dudit bloc d'affichage prend la valeur du pixel de même position dans une reconstruction prédéfinie de ladite première image, notamment dans la reconstruction classique. Encore une fois, cette disposition permet a minima et par défaut de récupérer la qualité d'image des techniques traditionnelles.
Dans un mode de réalisation de l'invention, lors de la génération et de la combinaison de plusieurs reconstructions, ladite au moins une autre image est comprise dans un nombre prédéfini d'images qui sont postérieures (soit dans l'ordre d'affichage, soit dans l'ordre de décodage) dans ladite séquence vidéo, à ladite première image.
En effet, comme l'invention requiert l'analyse d'images futures pour déterminer si des reconstructions de l'image en cours de traitement ont servi de base à une prédiction temporelle, un délai de traitement est introduit. La présente disposition permet de limiter ce délai introduit par l'invention, pour par exemple satisfaire des contraintes mémoires du décodeur ou des contraintes de vitesse de traitement. En particulier, ladite au moins une autre image est l'image postérieure la plus proche temporellement de ladite première image. Dans ce cas, le délai introduit par l'invention est réduit au minimum. Cette configuration peut être avantageusement utilisée pour des décodeurs à faibles ressources ou pour des applications quasi temps réel. Dans un mode de réalisation, ledit traitement consiste à décoder ladite première image à partir d'une séquence vidéo compressée pour l'afficher, et le procédé comprend l'affichage de valeurs d'affichage obtenues pour des parties composant ladite première image à décoder.
Dans un autre mode de réalisation, ledit traitement consiste à coder ladite séquence vidéo en un flux binaire, et le procédé comprend en outre les étapes consistant à: déterminer laquelle, entre ladite valeur d'affichage obtenue et une valeur colocalisée à ladite partie dans une image de référence prédéfinie (par exemple la reconstruction dite "classique" de l'image), est la plus proche d'une valeur, dite d'origine, co-localisée dans la version originale de ladite première image; et associer, dans le flux binaire, à ladite au moins une partie de la première image, une information fonction de ladite détermination, pour indiquer à un décodeur dudit flux binaire de décoder ladite partie soit par combinaison desdites reconstructions soit par utilisation de l'image de référence prédéfinie. Le procédé de codage ainsi défini permet, grâce à la détermination menée, d'éviter qu'une combinaison non pertinente puisse être appliquée au niveau du décodeur. Cela garantit que toutes les parties de l'image affichée sont au moins de même qualité que lorsqu'elles sont obtenues par les techniques classiques. Ce procédé permet également de réduire les traitements au niveau du décodeur, car certaines combinaisons ne seront pas réalisées. Dans un mode de réalisation, ladite détermination de la valeur la plus proche comprend l'étape consistant à comparer une erreur estimée entre ladite valeur d'affichage obtenue et la valeur d'origine correspondante, avec une erreur estimée entre la valeur co-localisée dans l'image de référence prédéfinie (517) et ladite valeur d'origine. Cela permet de sélectionner aisément la méthode de reconstruction (soit par combinaison, soit à l'aide de l'image de référence classique) la plus efficace, soit en terme de distorsion de l'image, soit en terme de ratio débit/distorsion de la compression. Selon une caractéristique particulière, le procédé comprend une étape d'indication, dans ledit flux binaire, des reconstructions à combiner pour décoder ladite partie de la première image. En particulier, le procédé peut comprendre une étape consistant à sélectionner et à indiquer, dans ledit flux binaire, une sous-partie desdites reconstructions obtenues, ladite sélection étant réalisée par estimation, notamment minimisation, de la distorsion entre ladite partie de la première image résultant de la combinaison desdites reconstructions et ladite partie de la première image avant codage, c'est-à-dire les valeurs dite d'origine correspondant à cette partie. Ces dispositions permettent de réduire encore les traitements au niveau du décodeur en garantissant une nette amélioration de la qualité d'affichage de la séquence vidéo. Corrélativement, l'invention concerne un dispositif de traitement (codage ou décodage) d'une séquence vidéo, au moins une image numérique composant la séquence vidéo étant compressée par prédiction temporelle à partir d'une pluralité d'images de référence, caractérisé en ce que, la prédiction temporelle mettant en oeuvre une pluralité de reconstructions différentes d'une même image comme images de référence, le dispositif comprend: un moyen d'obtention de reconstructions d'une première image, qui ont servi d'images de référence pour la prédiction temporelle d'au moins une autre image de la séquence; et un module de combinaison apte à combiner lesdites reconstructions ainsi obtenues de sorte à obtenir, pour au moins une partie de ladite première image, au moins une valeur d'affichage. Le dispositif de traitement présente des avantages similaires à ceux du procédé exposé ci-dessus, notamment d'obtenir une séquence vidéo restituée à l'affichage qui est en moyenne de qualité visuelle améliorée. De façon optionnelle, le dispositif peut comprendre des moyens se rapportant aux caractéristiques du procédé exposé précédemment. Notamment, le dispositif de traitement peut être de type décodeur, et comprendre un moyen de traitement et d'affichage configuré pour afficher lesdites valeurs d'affichage obtenues pour des parties composant ladite première image à décoder. Dans un autre mode de réalisation, le dispositif de traitement peut être de type codeur, et comprendre û un moyen de détermination de la valeur, parmi ladite valeur d'affichage obtenue et une valeur co-localisée à ladite partie dans une image de référence prédéfinie, qui est la plus proche d'une valeur, dite d'origine, colocalisée dans la version originale de ladite première image; et un moyen d'association pour associer, dans un flux binaire, à ladite au moins une partie de la première image, une information fonction de ladite détermination, de sorte à pour indiquer à un décodeur dudit flux binaire de décoder ladite partie soit par combinaison desdites reconstructions soit par utilisation de l'image de référence prédéfinie. L'invention concerne également un moyen de stockage d'informations, éventuellement totalement ou partiellement amovible, lisible par un système informatique, comprenant des instructions pour un programme informatique adapté à mettre en oeuvre un procédé conforme à l'invention lorsque ce programme est chargé et exécuté par le système informatique. L'invention concerne également un programme d'ordinateur lisible par un microprocesseur, comprenant des portions de code logiciel adaptées à mettre en oeuvre un procédé conforme à l'invention, lorsqu'il est chargé et exécuté par le microprocesseur. Les moyens de stockage d'information et programme d'ordinateur présentent des caractéristiques et avantages analogues aux procédés qu'ils mettent en oeuvre.
D'autres particularités et avantages de l'invention apparaîtront encore dans la description ci-après, illustrée par les dessins ci-joints, dans lesquels : - la figure 1 représente le schéma global d'un encodeur vidéo de l'état de l'art; - la figure 2 représente le schéma global d'un décodeur vidéo de l'état de l'art; - la figure 3 illustre le principe de la compensation de mouvement d'un codeur vidéo selon l'état de l'art; - la figure 4 illustre le principe de la compensation de mouvement d'un codeur incluant, comme images de référence, de multiples reconstructions d'au moins une même image; - la figure 5 représente le schéma global d'un encodeur vidéo mettant en oeuvre une prédiction temporelle sur la base de plusieurs images de référence résultant de plusieurs reconstructions d'une même image; - la figure 6 représente le schéma global d'un décodeur vidéo selon l'invention permettant la combinaison de plusieurs reconstructions pour produire une image à afficher; - la figure 7 illustre, sous forme de logigramme, des étapes de post-traitement réalisées au niveau du module de combinaison de la figure 6; - les figures 8a et 8b illustrent un exemple de combinaison des valeurs de pixel des différentes reconstructions, selon l'invention; et - la figure 9 montre une configuration matérielle particulière d'un dispositif apte à une mise en oeuvre du ou des procédés selon l'invention. Dans le cadre de l'invention, le codage d'une séquence vidéo d'images comprend la génération de deux ou plus reconstructions différentes d'au moins une même image précédant, dans la séquence vidéo, l'image à traiter (coder ou décoder), de sorte à obtenir au moins deux images de référence pour effectuer une compensation de mouvement ou "prédiction temporelle". Les traitements sur la séquence vidéo peuvent être de différente nature, incluant notamment des algorithmes de compression vidéo. En particulier, la séquence vidéo peut être soumise à un codage en vue d'une transmission ou d'un stockage. Pour la suite de la description, on s'intéressera plus particulièrement à un traitement de type compensation de mouvement appliqué à une image de la séquence, dans le cadre d'une compression vidéo. Toutefois, l'invention pourrait être appliquée à d'autres traitements, par exemple à l'estimation de mouvements lors de l'analyse de séquence. La figure 4 illustre une compensation de mouvement mettant en oeuvre plusieurs reconstructions d'une même image de référence, dans une représentation similaire à celle de la figure 3. Les images de référence "classiques" 402 à 405, c'est-à-dire obtenues selon les techniques de l'art antérieur, et les nouvelles images de référence 408 à 413 générées au travers d'autres reconstructions sont représentées sur un axe perpendiculaire à celui du temps (définissant la séquence vidéo 101) afin de montrer quelles reconstructions correspondent à une même image de référence classique.
Plus précisément, les images de référence classiques 402 à 405 sont les images de la séquence vidéo qui ont précédemment été encodées puis décodées par la boucle de décodage: ces images correspondent donc à celles généralement affichées par un décodeur de l'état de l'art (signal vidéo 209). Les images 408 et 411 résultent d'autres décodages de l'image 452, également appelées "secondes" reconstructions de l'image 452. Les "seconds" décodages ou reconstructions signifient des décodages/reconstructions avec des paramètres différents de ceux utilisés pour le décodage/reconstruction classique (selon un format de codage standard par exemple) prévu pour générer le signal vidéo décodé 209.
Comme vu par la suite, ces paramètres différents peuvent comprendre un coefficient de bloc DCT et un décalage OZ de quantification appliqué lors de la reconstruction. De même, les images 409 et 412 sont des seconds décodages de l'image 453. Enfin, les images 410 et 413 sont des seconds décodages de l'image 454. Dans le cadre de l'invention, les blocs de l'image courante (i, 401) qui doit être traitée (compressée) sont prédits chacun par un bloc des images précédemment décodées 402 à 407 ou par un bloc d'une "seconde" reconstruction 408 à 413 d'une de ces images 452 à 454.
Dans cette figure, le bloc 414 de l'image courante 401 a, pour bloc prédicteur Inter, le bloc 418 de l'image de référence 408 qui est une "seconde" reconstruction de l'image 452. Le bloc 415 de l'image courante 401 a, pour bloc prédicteur, le bloc 417 de l'image de référence classique 402. Enfin, le bloc 416 a, pour prédicteur, le bloc 419 de l'image de référence 413 qui est une "seconde" reconstruction de l'image 453. De manière générale, les "secondes" reconstructions 408 à 413 d'une image ou de plusieurs images de référence classiques 402 à 407 peuvent être ajoutées dans la liste des images de référence 116, 208, voire même remplacer une ou plusieurs de ces images de référence classiques. On notera que, généralement, il est plus efficace de remplacer les images de référence classiques par des "secondes" reconstructions, et de garder un nombre limité de nouvelles images de référence (multiples reconstructions), plutôt que d'ajouter systématiquement ces nouvelles images dans la liste. En effet, un nombre élevé d'images de référence dans la liste augmente le débit nécessaire au codage d'un indice de ces images de référence (pour indiquer au décodeur laquelle utiliser).
De même, il a pu être observé que l'utilisation de multiples "secondes" reconstructions de la première image de référence (celle qui est la plus proche temporellement de l'image courante à traiter; généralement l'image qui la précède) est plus efficace que l'utilisation de multiples reconstructions d'une image de référence temporellement plus éloignée.
Afin d'identifier les images de référence utilisées durant l'encodage, le codeur transmet, en plus du nombre et du numéro (ou indice) d'images de référence, un premier indicateur ou drapeau ("flag" en terminologie anglo-saxonne) pour indiquer si l'image de référence associée au numéro est une reconstruction classique ou une "seconde" reconstruction. Si l'image de référence provient d'une "seconde" reconstruction selon l'invention, des paramètres relatifs à cette seconde reconstruction, tels que le "numéro du coefficient" et la "valeur d'offset de reconstruction" (décrits par la suite) sont transmis au décodeur, pour chacune des images de référence utilisées. En référence aux figures 5 et 6, on décrit maintenant une méthode de codage/décodage d'une séquence vidéo, utilisant de multiples reconstructions d'une image de référence classique. Un encodeur vidéo 10 selon ce mode de réalisation comprend des modules 501 à 515 de traitement d'une séquence vidéo avec boucle de décodage, similaires aux modules 101 à 115 de la figure 1.
En particulier, selon la norme H.264, le module de quantification 108/508 réalise une quantification du résiduel obtenu après transformation 107/507, par exemple de type DOT, sur le résiduel du bloc de pixels courant. La quantification est appliquée sur chacune des N valeurs de coefficients de ce bloc résiduel (autant de coefficients qu'il y a dans le bloc de pixels initial). Le calcul d'une matrice de coefficients DCT et le parcours des coefficients à l'intérieur de la matrice de coefficients DCT sont des notions largement connues de l'homme du métier et ne seront pas plus détaillées ici. Notamment, la façon dont les coefficients sont parcourus à l'intérieur des blocs, par exemple un parcours en zig-zag ("zig-zag scan" en terminologie anglo-saxonne), définit un numéro de coefficient pour chaque coefficient de bloc, par exemple un coefficient continu DC et différents coefficients de fréquence non nulle AC;.
Pour la suite de la description, on parlera indifféremment de "coefficient de bloc", d"'index de coefficient" et de "numéro de coefficient" pour indiquer la position d'un coefficient à l'intérieur d'un bloc en fonction du parcours retenu. On parlera par ailleurs de "valeur de coefficient" pour indiquer la valeur prise par un coefficient donné dans un bloc.
Ainsi, si l'on nomme W la valeur du ième coefficient du résiduel du bloc courant (avec i variant de 0 à M-1 pour un bloc contenant M coefficients, par exemple Wo=DC et W;=AC;), la valeur de coefficient quantifiée ZZ est obtenue par la formule suivante : Zi =int' W +f '•sgn(W ), où qi est le quantificateur associé au ième ql / coefficient dont la valeur dépend à la fois d'un pas de quantification noté QP et de la position (c'est-à-dire le numéro ou l'indice) de la valeur W de coefficient dans le bloc transformé. En effet, le quantificateur ql provient d'une matrice dite de quantification dont chaque élément (les valeurs ql) est pré-déterminé. Les éléments sont généralement fixés pour quantifier plus fortement les hautes fréquences. Par ailleurs, la fonction int(x) fournit la partie entière de la valeur x et la fonction sgn(x) donne le signe de la valeur x .
Enfin, f est l'offset de quantification (également appelé décalage de quantification) qui permet de centrer l'intervalle de quantification. Si cet offset est fixe, il est généralement égal à ql 2 . A l'issue de cette étape, on obtient pour chaque image, les blocs résiduels quantifiés prêts à être codés pour générer le flux binaire 510. Sur la figure 4, ces images portent les références 451 à 457. Le processus de quantification inverse (ou déquantification), représenté par le module 111/511 dans la boucle de décodage de l'encodeur 10 prévoit que la valeur déquantifiée W' du ième coefficient est obtenue par la formule suivante : W'= (ql ' ZZ -0Z )• sgn(Zl) . Dans cette formule, ZZ est la valeur quantifiée du ième coefficient, calculée avec l'équation de quantification ci-dessus. OZ est l'offset de reconstruction qui permet de centrer l'intervalle de reconstruction. Par propriété, OZ doit appartenir à l'intervalle[ûf ; f ]. En effet, il existe une valeur de OZ appartenant à cet intervalle telle que W'= W . Cet offset est généralement fixé à zéro. On notera que cette formule est également appliquée par le décodeur 20, au niveau de la déquantification 203 (603 comme décrit par la suite en référence à la figure 6). Toujours en référence à la figure 5, la boîte 516 contient les images de référence au même titre que la boîte 116 de la figure 1, c'est-à-dire que les images contenues dans ce module sont utilisées pour l'estimation de mouvement 504, la compensation de mouvement 505 lors du codage d'un bloc de pixels de la séquence vidéo, et la compensation de mouvement 514 dans la boucle de décodage pour générer les images de référence. On a schématisé, au sein de la boîte 516, les images de référence dites "classiques" 517 séparément des images de référence 518 obtenues par des "seconds" décodages/reconstructions selon l'invention.
Notamment, les "secondes" reconstructions d'une image sont construites à l'intérieur de la boucle de décodage, comme représenté par les modules 519 et 520 permettant au moins un "second" décodage par déquantification (519) à l'aide de paramètres de "seconde" reconstruction (520).
En variante toutefois, on pourrait récupérer directement les coefficients de bloc déquantifiés par la voie classique (sortie du module 511). Dans ce cas, on détermine au moins un résiduel correctif en appliquant une quantification inverse d'un bloc de coefficients égaux à zéro, à l'aide des paramètres de reconstruction souhaités (et éventuellement une transformée inverse), puis on ajoute ce résiduel correctif à l'image de référence classique (soit dans sa version avant transformation inverse, soit après le filtrage 515). On obtient ainsi la "seconde" image de référence correspondant aux paramètres utilisés. Cette variante offre une complexité moindre tout en conservant des performances identiques en terme de débit-distorsion de la séquence vidéo encodée/décodée. De retour au mode de réalisation décrit en référence à la figure 5, pour chacun des blocs de l'image courante, deux processus de déquantification (quantification inverse), 511 et 519 sont utilisés: la quantification inverse 511 classique pour générer une première reconstruction et la quantification inverse différente 519 pour générer une "seconde" reconstruction du bloc (et donc de l'image courante). On notera que pour obtenir de multiples "secondes" reconstructions de l'image de référence courante, un plus grand nombre de modules 519 et 520 peut être prévu dans l'encodeur 10, chacun générant une reconstruction différente avec des paramètres différents comme expliqués ci-après. Notamment, toutes les multiples reconstructions peuvent être exécutées en parallèle de la reconstruction classique par le module 511. Des informations sur le nombre de multiples reconstructions et les paramètres associés sont insérées dans le flux codé 510 aux fins d'informer le décodeur 20 des valeurs à utiliser.
Le module 519 reçoit les paramètres d'une seconde reconstruction 520 différente de la reconstruction classique. Le fonctionnement de ce module 520 sera décrit par la suite. Les paramètres reçus sont par exemple un numéro i de coefficient du résiduel transformé qui va être reconstruit différemment et l'offset (décalage) de reconstruction OZ correspondant, comme décrits par ailleurs. Ces paramètres peuvent notamment être déterminés au préalable et être les mêmes pour toute la reconstruction (c'est-à-dire pour tous les blocs de pixels) de l'image de référence correspondante. Dans ce cas, ces paramètres sont transmis une seule fois au décodeur pour l'image. Toutefois, comme décrit par la suite, il est possible d'avoir des paramètres qui varient d'un bloc à l'autre et de transmettre ces paramètres (numéro de coefficient et offset OZ) bloc par bloc. D'autres mécanismes sont encore évoqués par la suite. Ces deux paramètres générés par le module 520 sont codés par codage entropique au niveau du module 509 puis insérés dans le flux binaire (510). Dans le module 519, la quantification inverse pour calculer W' est appliquée en utilisant l'offset de reconstruction OZ , pour le coefficient i, tels que définis dans les paramètres 520. Dans un mode de réalisation, pour les autres coefficients du bloc, la quantification inverse est appliquée avec l'offset de reconstruction classique (utilisé dans le module 511). Ainsi, dans cet exemple, les "secondes" reconstructions peuvent différer de la reconstruction classique par l'utilisation d'un seul couple (coefficient, offset). En particulier, si l'encodeur utilise plusieurs types de transformée ou plusieurs tailles de transformée, on transmet, au décodeur, un numéro de coefficient et un offset de reconstruction pour chaque type ou chaque taille de transformée. Comme on le verra par la suite, on peut toutefois appliquer plusieurs offsets de reconstruction OZ à plusieurs coefficients au sein d'un même bloc.
A la fin de la seconde quantification inverse 519, les mêmes traitements que ceux appliqués au signal "classique" sont réalisés. En détail, une transformation inverse 512 est appliquée à ce nouveau résiduel (qui a donc été transformé 507, quantifié 508 puis déquantifié 519). Puis, en fonction du codage du bloc courant (Intra ou Inter), une compensation de mouvement 514 ou une prédiction Intra 513 est effectuée.
Enfin, lorsque tous les blocs (414, 415, 416) de l'image courante sont décodés. Cette nouvelle reconstruction de l'image courante est filtrée par le filtre de deblocking 515 avant d'être insérée parmi les multiples "secondes" reconstructions 518. On obtient ainsi, en parallèle, l'image décodée via le module 511 constituant l'image de référence classique, et une ou plusieurs "secondes" reconstructions de l'image (via le module 519 et d'autres modules similaires le cas échéant) constituant d'autres images de référence correspondant à la même image de la séquence vidéo. Sur la figure 5, le traitement selon l'invention des résiduels transformés, quantifiés et déquantifiés par la seconde quantification inverse 519 est représenté par les flèches en pointillés entre les modules 519, 512, 513, 514 et 515. On comprend donc ici que, à l'instar de l'illustration de la figure 4, le codage d'une image suivante peut être réalisé par bloc de pixels, avec compensation de mouvement en référence à n'importe quel bloc de l'une des images de référence ainsi reconstruites, "classique" ou "seconde" reconstruction. En référence maintenant à la figure 6, un décodeur 20 selon l'invention comprend des modules de traitement de décodage 601 à 609 équivalents aux modules 201 à 209 décrits ci-dessus en lien avec la figure 2, pour produire un signal vidéo 609 en vue d'une restitution de la séquence vidéo par voie d'affichage. En particulier, le module 603 de déquantification met en oeuvre par exemple la formule W'= (qz Zz -0Z ). sgn(ZZ) exposée précédemment.
A titre illustratif et pour des raisons de simplification de représentation, les images 451 à 457 (figure 4) peuvent être considérées comme les images codées constituant le flux binaire 510 (les codage/décodage entropique ne modifiant pas les informations de l'image). Le décodage de ces images génère notamment les images composant le signal vidéo de sortie 609. Le module d'images de référence 608 est similaire au module 208 de la figure 2, et par analogie à la figure 5, il est composé d'un module des multiples "secondes" reconstructions 611 et d'un module contenant les images de référence classiques 610. En variante également, des blocs de reconstructions contenant des résiduels correctifs peuvent être mis en oeuvre. Au début du décodage d'une image courante correspondant à un instant 't', et notée It, le nombre de multiples reconstructions est extrait du flux binaire 601 et décodé entropiquement. De même, les paramètres (numéro de coefficient et offset correspondant) des "secondes" reconstructions sont aussi extraits du flux binaire, décodés entropiquement et transmis au(x) module(s) paramètres de seconde reconstruction 613. Dans cet exemple, nous décrivons le processus d'une seule seconde reconstruction, bien qu'à l'instar du codeur 10, d'autres reconstructions peuvent être réalisées, éventuellement en parallèle, avec des modules appropriés. Ainsi, un second module de déquantification 612 calcule, pour chaque bloc de données de l'image It à l'instant 't', une quantification inverse différente du module "classique" 603.
Dans cette nouvelle quantification inverse, pour le numéro du coefficient donné en paramètre 613, l'équation de déquantification est appliquée avec l'offset de reconstruction OZ fourni également par le module paramètres de seconde reconstruction 613. Les valeurs des autres coefficients de chaque résiduel sont, dans ce mode de réalisation, déquantifiées avec un offset de reconstruction similaire au module 603, généralement égal à zéro. Comme pour l'encodeur, le résiduel (transformé, quantifié, déquantifé) en sortie du module 612 est détransformé (604) par application de la transformée inverse de celle 507 utilisée au codage. On obtient ainsi une valeur de résiduel pour chacun des pixels du bloc. Puis, en fonction du codage du bloc courant (Intra ou Inter), une compensation de mouvement 606 ou une prédiction Intra 605 est effectuée sur la base des images de référence résultant des autres images déjà décodées, en ajoutant le bloc prédicteur identifié dans le flux binaire (au travers des informations de mouvement: indice d'image de référence et vecteur mouvement) au résiduel ainsi obtenu.
Enfin, lorsque tous les blocs de l'image courante sont décodés, la nouvelle reconstruction de l'image courante est filtrée par le filtre de deblocking 607 avant d'être insérée parmi les multiples "secondes" reconstructions 611. Ce parcours des résiduels transformés, quantifiés et déquantifiés par la seconde quantification inverse 612 est symbolisé par les flèches en pointillés.
Par ailleurs, selon les enseignements de la présente invention, le décodeur comprend également un module 614 de post-traitement des différentes reconstructions 610, 611 ainsi obtenues afin de générer le signal vidéo à afficher 609. Comme on le verra par la suite en référence à la figure 7 explicitant le fonctionnement du module 614 de post-traitement, une image décodée à afficher est générée à partir de la combinaison des diverses reconstructions de cette image qui ont pu servir d'images de référence pour la prédiction temporelle d'autres images de la séquence. Comme la prédiction temporelle tend à choisir les blocs prédicteurs les plus proches d'un bloc à coder, cette combinaison de reconstructions permet d'atténuer des incertitudes introduites par les opérations avec pertes (telles que la quantification 508 du codage). Dans une variante de réalisation visant à diminuer les calculs et le temps de traitement, on envisage de reconstruire, en guise de "seconde" reconstruction lors du décodage, uniquement les blocs de la "seconde" reconstruction effectivement utilisés pour la compensation de mouvement, et donc utiles pour générer les images à afficher. On entend par "effectivement utilisé" un bloc de la "seconde" reconstruction qui constitue une référence (c'est-à-dire un prédicteur de bloc) pour la compensation de mouvement d'un bloc d'une image ultérieurement encodée de la séquence vidéo. On décrit maintenant, en référence à la figure 7, le post-traitement permettant de générer les images décodées à afficher. A ce stade, on rappelle que les reconstructions "classique" et "secondes" ont été générées et mémorisées dans la mémoire 608, éventuellement de type mémoire tampon/temporaire. En variante, ces "secondes" reconstructions peuvent être générées à la volée et par bloc utile uniquement, lorsqu'elles sont nécessaires.
Pour des raisons de simplification des explications, on considère désormais qu'une image It+i codée et correspondant à un instant 't+1' utilise des blocs de référence (pour la prédiction temporelle) n'appartenant qu'à des reconstructions de l'image It à l'instant 't'. En d'autres termes, la compensation de mouvement n'est réalisée qu'à partir de l'image précédente la plus proche temporellement. Bien entendu, l'invention telle que décrite ici peut s'appliquer lorsque des reconstructions de plusieurs images antérieures (voire postérieures) ou d'une seule image It_n sont utilisées comme base de références pour la prédiction temporelle de l'image It+l.
Grâce à la considération effectuée ici, l'identification des reconstructions de l'image It qui ont pu servir d'images de référence pour des prédictions temporelles ultérieures peut être entièrement menée lors de l'analyse de l'image It+l. Ainsi, dans ce mode, l'invention n'introduit qu'un délai de traitement avant affichage égal à une image, permettant de conserver un comportement "temps réel" du décodage. Si les compensations de mouvement sont réalisées à partir de reconstructions de plusieurs images antérieures, on peut limiter l'analyse d'identification telle que décrite ci-après à un nombre Nmax prédéfini d'images, de sorte à limiter le délai de traitement introduit avant l'affichage.
La figure 7 représente donc le post-traitement réalisé à l'instant 't+1' pour générer l'image It à afficher. A l'étape E701, on initialise à 0 une variable b identifiant successivement les Nb,oc blocs B` dans l'image It à générer pour l'affichage (parcours des blocs en zig-zag par exemple). Pour la suite on note Rb' le bloc d'indice b dans l'image I. A noter que, pour les explications qui vont suivre, 26 l'indice b peut être omis lorsque B` désigne de façon générale un bloc de l'image It. A l'étape E703, on détermine les blocs Bz+1 dans l'image It+i qui utilisent tout ou partie du bloc Rb' de l'image It à générer, c'est-à-dire dont le 5 codage par prédiction s'appuie sur une partie au moins du bloc Rb' comme bloc prédicteur. En effet, pour rappel, les blocs prédicteurs sont des ensembles de pixels non nécessairement alignés sur la grille de décomposition des images en blocs B` . En particulier, cette étape peut consister à parcourir chaque bloc B`+1 10 prédit temporellement dans l'image It+i, et à utiliser, dans ce cas, les informations de mouvement (ici le vecteur mouvement) pour identifier quels blocs B` dans l'image It sont utilisés pour la prédiction temporelle (les blocs à cheval sur le bloc prédicteur utilisé). On détermine alors si le bloc Rb' est parmi ces blocs B` identifiés. 15 On notera que par la suite nous considérons que tous les vecteurs de mouvement de l'image It+i pointent sur des pixels réels de l'image de référence et non sur des pixels virtuels obtenus par interpolation sub-pixelique, lorsque la prédiction temporelle fait intervenir une interpolation des images de référence. 20 Dans une mise en oeuvre préférée, si des vecteurs pointent sur des pixels sub-pixeliques, on se ramènera aux pixels réels voisins en arrondissant le vecteur de mouvement pour qu'il pointe sur les pixels réels les plus proches des pixels virtuels. Cela permet de procéder à la construction de l'image à afficher sans nécessairement procéder à l'interpolation des images de 25 référence. A l'étape E705, une variable N est initialisée à la valeur correspondant au nombre de blocs Bz+1 déterminés à l'étape E703. N représente donc le nombre de prédictions temporelles effectuées à partir d'au moins une partie du bloc Rb' . 27 Ainsi, si N=O, le bloc Bb à générer n'est pas utilisé pour la prédiction temporelle de l'image It+i (ou d'une autre image, dans le cas général de l'invention). Dans ce cas (sortie "oui" du test E707), ce bloc à générer est construit (E709) à partir de la reconstruction "classique" de l'image It. Cette reconstruction "classique" permet d'obtenir, pour ce bloc, une qualité au moins équivalente aux techniques classiques. Si N>_1, au moins un bloc Bz+1 de l'image It+i utilise au moins partiellement le bloc Bb comme prédicteur pour la compensation de mouvement. Dans ce cas (sortie "non" du test E707), à l'étape E711, on détermine et extrait de la mémoire 608, à l'aide encore des informations de mouvement obtenues du flux binaire 601 (ici les indices des images de référence), les images de référence (et donc les reconstructions de l'image It) qui ont été utilisées pour ces N prédictions temporelles. Le post-traitement se poursuit alors par la construction du bloc Bb à générer pour l'affichage. Cette construction débute, à l'étape E713, par l'initialisation de trois variables à 0: une variable 'j' identifiant chaque pixel (identifiés de 0 à Np;X 1) dans le bloc B. j e [0; Np;x] où Np;X est le nombre de pixels composant un bloc B` ; une variable 'k' E [0; N] permettant de parcourir chacune des N prédictions temporelles identifiées à l'étape E705 et indexées de 0 à N-1, et donc incidemment de parcourir N reconstructions associées à ces N prédictions temporelles (des reconstructions parmi les N pouvant utiliser de mêmes paramètres de reconstructions {i, 6;}); et û une variable Ni identifiant, pour un pixel donné du bloc B` , le nombre de reconstructions, parmi les N reconstructions identifiées à l'étape E705, dont le pixel co-localisé avec le pixel donné sert de référence pour une prédiction temporelle.
A cette étape on initialise également, en mémoire tampon, un tableau ](j)=pixel(j)jE[o; Npix] à 0, ce tableau étant destiné à contenir in fine les valeurs pixel(i) des pixels du bloc 4 à afficher. A l'étape E715, on vérifie si le pixel 'j' est concerné par la reconstruction 'k'. En d'autres termes, on détermine si oui ou non le pixel 'j' est inclus dans le bloc prédicteur utilisé lors de la prédiction temporelle 'k'. Encore une fois, cette détermination peut être réalisée à l'aide du vecteur mouvement définissant la prédiction temporelle 'k' et de la taille des blocs.
Dans l'affirmative du test E715, on ajoute (E717) la valeur pixel(j,k) du pixel 'j' dans la reconstruction 'k' à la valeur courante pixel(j) du pixel 'j' du bloc Rb' à générer. Le résultat est mémorisé dans l'entrée «j) du tableau. La valeur d'un pixel peut notamment correspondre à une information de luminance. Dans le cas où plusieurs composantes sont associées à chaque pixel (par exemple des composantes Rouge-Vert-Bleu ou des composantes Luminance-Chrominances), on peut traiter séparément chacune de ces composantes. La variable Nj est alors incrémentée de 1 pour indiquer qu'une reconstruction supplémentaire est prise en compte.
Dans la négative du test E715 ou suite à l'étape E717, on incrémente la variable 'k' pour analyser la prédiction temporelle / la reconstruction suivante. On test alors la valeur de 'k' (test E721). Si ce dernier est inférieur à N, on retourne à l'étape E715 pour traiter la prédiction temporelle / la reconstruction suivante.
Si 'k'=N, cela signifie que toutes les prédictions temporelles / reconstructions ont été analysées. Dans ce cas, on calcule (E723) la moyenne du pixel 'j' pour les différentes reconstructions 'k' dont ledit pixel 'j' sert de référence pour une prédiction temporelle dans l'image It+i. On divise donc la valeur pixel(j) du pixel 'j' calculée itérativement à l'étape E717, par le nombre Ni de reconstructions ayant contribué à cette valeur: pixel(j) = pixel(j) / Ni. Le résultat est mémorisé dans l'entrée «j) du tableau.
A noter que si un pixel n'a pas servi de base pour une prédiction temporelle, les valeurs Ni et ](j)=pixel(j) à ce moment sont nulles. Dans ce cas, l'étape E723 fait prendre, à la valeur ](j)=pixel(j), la valeur du pixel co- localisé avec 'j' dans la reconstruction classique de l'image It. On assure ainsi d'obtenir au minimum une même qualité de rendu visuel que les solutions déjà existantes. Le cas échéant, une opération d'arrondi est réalisée (par exemple si l'affichage souhaité ne requiert que des valeurs entières). Afin de procéder à la construction du pixel suivant, la variable 'j' est alors incrémentée et la variable 'k' est réinitialisée à 0 (étape E725). On teste (E727) alors la valeur de 'j' avec la valeur Np;X pour vérifier si tous les pixels du bloc Rb' ont été traités. Dans la négative, on retourne à l'étape E715 pour traiter le pixel suivant. Autrement, on passe à l'étape E729.
Egalement, suite à l'étape E709, on passe à l'étape E729 où on incrémente la valeur de b pour traiter le bloc 4 suivant. Cela correspond à se déplacer vers un autre bloc de l'image It à afficher. A l'étape E731, on détermine si tous les blocs B` de l'image It ont été traités. Selon le cas d'espèce, on retourne à l'étape E703 pour traiter le bloc suivant, ou bien le post-traitement se termine pour passer à l'affichage du signal décodé corrigé 609 de la figure 6. Ainsi, à l'instant 't+1', on affiche l'image It correspondant à l'instant 't', à partir des valeurs pixel(j) contenues dans les tableaux 1,'),,40,Nb, Dans un mode de réalisation alternatif, au lieu de prendre, comme valeur d'un pixel 'j', la moyenne des valeurs du pixel de même position dans les N différentes reconstructions impliquées, on peut prendre une des valeurs du pixel de même position dans une de ces reconstructions. Par exemple, il est possible de prendre la valeur médiane parmi les valeurs pixel(j,k) dans l'ensemble des reconstructions 'k' utilisées pour une prédiction à partir du pixel de même position T. Dans ce cas l'étape E717 consiste à mémoriser toutes les valeurs pixel(j, k), et l'étape E723 consiste à sélectionner la valeur médiane. A noter que si seulement deux valeurs pixel(j,k) sont mémorisées, l'une correspondant à la reconstruction dite "classique" et l'autre correspondant à une dite "seconde" reconstruction, une mise en oeuvre peut consister à prendre systématiquement, comme valeur du pixel `j', la valeur pixel(j,k) issue de cette "seconde" reconstruction. A noter également que l'image ainsi générée pour l'affichage n'est pas une "seconde" reconstruction de l'image It susceptible d'être utilisée comme image de référence pour une prédiction ultérieure. A ce titre, elle n'est donc pas mémorisée dans la mémoire 608. Après affichage, la mémoire tampon stockant les tableaux Tb,1[o,Nbi,j de pixels peut donc être vidée. Les figures 8a et 8b illustrent schématiquement différentes configurations pour un pixel 'j' du bloc Bb à générer pour l'image It. Dans cet exemple, l'analyse E703 permet d'identifier que trois blocs B t+1 , B 'r3+1 et B t+1 utilisent tout ou partie du bloc Bb comme partie du bloc prédicteur pour leur prédiction temporelle associée (figure 8a). On observe que ces blocs prédicteurs ne sont pas nécessairement alignés sur la grille de décomposition de l'image It en blocs Bt. Le bloc Ba+1 utilise le bloc prédicteur Ba chevauchant le bloc Bb dans la "seconde" reconstruction identifiée "id=2". Le bloc BR+1 utilise le bloc prédicteur Br 3t le bloc Bb dans la reconstruction "classique" identifiée "id=1 ". Et le bloc Br+1 utilise le bloc prédicteur Br chevauchant le bloc Bb dans la "seconde" reconstruction identifiée "id=3". Ces différents blocs ont été superposés sur l'image It à reconstruire sur la figure 8b. Pour un premier pixel 'j1' du bloc Bb, seule une prédiction temporelle identifiée utilise ce pixel comme pixel prédicteur. Il s'agit de la prédiction temporelle y à laquelle correspond la reconstruction "id=3". Dans l'image affichée, le pixel 'ji' prend alors la valeur du pixel de même position dans la reconstruction "id=3". Pour un deuxième pixel 'f2' du bloc Bb, deux prédictions temporelles ((3 et y) utilisent ce pixel comme pixel prédicteur. Dans l'image affichée, le pixel 'f2' prend alors la valeur moyenne entre les deux valeurs du pixel de même position dans les reconstructions "id=1" et "id=3". Pour un troisième pixel 'f3' du bloc Bb, les trois prédictions temporelles utilisent ce pixel comme pixel prédicteur. Dans l'image affichée, le pixel 'f3' prend donc la valeur moyenne entre les trois valeurs du pixel de même position dans les trois reconstructions. Enfin, pour un autre pixel 'f4' du bloc Bb, aucune prédiction temporelle n'utilise ce pixel comme pixel prédicteur. Dans l'image affichée, le pixel 'f4' prend alors la valeur du pixel de même position dans la reconstruction dite classique (ici celle identifiée "id=1 "). Grâce à cette combinaison des reconstructions pour modifier l'image à générer pour affichage, la présente invention permet une amélioration de la qualité des images affichées. Un avantage notable de cette mise en oeuvre de l'invention réside dans le fait qu'aucune information supplémentaire (et dédiée uniquement à cette amélioration) n'est nécessaire. Dans une autre mise en oeuvre de l'invention, l'encodeur peut insérer, dans le train binaire 510, l'une ou l'autre voire les deux informations suivantes: une première information indiquant s'il est nécessaire d'appliquer la méthode de combinaison des reconstructions pour générer une image à afficher; et une seconde information indiquant pour chaque pixel de l'image It (ou ensemble de pixels) quelle(s) reconstruction(s) utiliser pour générer le pixel à afficher.
En ce qui concerne la première information, elle est indiquée sous forme d'un drapeau (flag en terminologie anglo-saxonne) de longueur 1 bit, inséré dans le train binaire de chaque bloc utilisé au moins une fois comme référence dans la prédiction de mouvement. L'encodeur réalise alors la même méthode de combinaison des références que celle décrite précédemment pour le décodeur, et compare les blocs résultant avec les blocs obtenus par la méthode classique. Cette comparaison consiste à déterminer lequel du bloc résultant et des blocs obtenus par la méthode classique contient les valeurs les plus proches de l'image à afficher, par exemple en comparant une distance ou erreur estime entre chacun de ces blocs et le bloc correspondant (de même position) dans l'image d'origine. S'il est déterminé que la méthode classique offre de meilleurs résultats pour reconstruire l'image à afficher, la valeur du drapeau est fixée pour indiquer de ne pas appliquer la combinaison. Dans le cas contraire, la valeur du drapeau est fixée pour indiquer qu'il faut appliquer la combinaison pour le bloc considéré. Un avantage de cette mise en oeuvre est d'éviter d'effectuer une combinaison lorsque celle-ci n'apporte pas de gain en qualité et également de réduire les traitements au niveau du décodeur. Dans le cas de l'utilisation de la seconde information, il n'est plus nécessaire, au niveau du décodeur, d'utiliser les informations de mouvement de It+l, mais on peut se limiter à l'utilisation des seules informations nécessaires à la reconstruction des différentes reconstructions de It contenues dans It+i. Un avantage dans cette mise en oeuvre est d'assurer pour chaque pixel (ou ensemble de pixels) que la reconstruction est la meilleure, au détriment toutefois d'un surcoût de signalisation pour transmettre ces informations de reconstruction dans le train binaire. Dans ce cas, on peut notamment prévoir que le codeur détermine la meilleure combinaison des reconstructions à conserver pour obtenir le pixel le plus proche du pixel d'origine. Cette détermination peut simplement consister à évaluer la valeur du pixel pour chaque combinaison possible des reconstructions, et de conserver la combinaison fournissant la valeur la plus proche du pixel d'origine.
En variante, on pourrait combiner l'approche utilisant les informations de mouvement décrite plus avant avec cette dernière approche. Dans ce cas, on tire profit des informations de mouvement tant qu'elles permettent d'obtenir des performances débit-distorsion supérieures au codage pour un ensemble de pixels des informations de reconstruction. On décrit maintenant le fonctionnement du module 520 pour la sélection de coefficients et de décalages de reconstruction associés optimum. On notera toutefois que ces mécanismes de sélection ne sont pas le coeur de la présente invention et qu'ils ne sont décrits ici qu'à titre d'exemples.
Les algorithmes décrits ci-après peuvent en particulier être mis en oeuvre pour des sélections de paramètres d'autres types de décodages/reconstructions d'une image courante en plusieurs "secondes" reconstructions: par exemple des reconstructions appliquant un filtre de contraste et/ou un filtre de flou sur l'image de référence classique. Dans ce cas, la sélection peut consister à choisir une valeur pour un coefficient particulier d'un filtre de convolution mis en oeuvre dans ces filtres, ou choisir la taille de ce filtre. On notera que le module 613 prévu au décodage ne fait généralement que récupérer des informations dans le flux binaire 601.
Comme introduit précédemment, on utilise un ou plusieurs couples de deux paramètres pour réaliser une "seconde" reconstruction d'une image notée 'I': le numéro i du coefficient à déquantifier différemment et l'offset de reconstruction OZ que l'on choisit pour réaliser cette quantification inverse différente.
Le module 520 réalise une sélection automatique de ces paramètres pour une seconde reconstruction. En détail, en ce qui concerne l'offset (décalage) de quantification, on considère tout d'abord, pour simplifier les explications, que l'offset de quantification f de l'équation ZZ = int/ W + f \. sgn(W) ci-dessus est ql / systématiquement égal à qz 2 Par propriété des processus de quantification et de quantification inverse, l'offset de reconstruction OZ optimal appartient à l'intervalle [_q,';q,'] Comme précisé ci-dessus, la reconstruction "classique" pour générer le signal 609 met généralement en oeuvre un offset par défaut nul (OZ =0).
Toutefois, une autre valeur par défaut peut être utilisée. Plusieurs approches pour fixer l'offset associé à un coefficient donné (la sélection du coefficient est décrite ci-après), pour une "seconde" reconstruction, peuvent alors être prévues. Même si l'on peut calculer un offset optimal pour chacun des (seize) coefficients de bloc, il peut être prévu de façon avantageuse de réduire, à un sous-ensemble, l'ensemble des coefficients de bloc à prendre en compte. Notamment, cette réduction peut consister à sélectionner les coefficients dont les valeurs DCT sont les plus importantes en moyenne dans les différents blocs DCT de l'image. Ainsi généralement, on conservera le coefficient continu DC, et les premiers coefficients ACE. Une fois le sous-ensemble établi, on fixe l'offset associé à chacun des coefficients i de ce sous-ensemble ou des seize coefficients DCT si la reconstruction du sous-ensemble n'est pas mise en oeuvre, selon l'une des approches suivantes: - selon une première approche : le choix de OZ est fixé en fonction du nombre de multiples "secondes" reconstructions de l'image courante déjà insérées dans la liste 518 des images de référence. Cette configuration offre une complexité réduite pour ce processus de sélection. En effet, on a pu observer que, pour un coefficient donné, l'offset de reconstruction OZ le plus efficace est égal à ql4 ou ûql4 lorsqu'une seule reconstruction de la première image appartient à l'ensemble des images de référence utilisé. Lorsque deux "secondes" reconstructions sont déjà disponibles (utilisant ql 4 et ûql4 ), un offset égal à q, ou ûq donne les meilleurs résultats 8 8 moyens en termes de débit-distorsion du signal pour les deux "secondes" reconstructions suivantes, etc.; - selon une deuxième approche : l'offset 6Z peut être sélectionné en fonction d'un critère débit-distorsion. Si l'on souhaite ajouter une nouvelle "seconde" reconstruction de la première image de référence à l'ensemble des images de référence, on teste alors toutes les valeurs (par exemple entières) de 6Z appartenant à l'intervalle[ûV. ; 1, 21; c'est-à-dire que chaque reconstruction (avec 6Z différent pour le coefficient i donné) est testée à l'intérieur de la boucle de codage. L'offset de quantification qui est sélectionné pour le codage est celui qui minimise le critère débit-distorsion; - selon une troisième approche : l'offset 6Z qui fournit la reconstruction la plus "complémentaire" de la reconstruction "classique" (ou de l'ensemble des reconstructions déjà sélectionnées) est sélectionné. Pour cela, on compte le nombre de fois où un bloc de la reconstruction évaluée (associé à un offset 6Z , lequel varie sur la plage de valeurs possibles du fait du pas de quantification QP) fournit une qualité supérieure au bloc de la reconstruction "classique" (ou de l'ensemble des reconstructions déjà sélectionnées), la qualité pouvant être évaluée avec une mesure de distorsion telle qu'un SAD (erreur absolue û "Sum ofAbsolute Differences"), SSD (erreur quadratique û "Sum of Squared Differences" ) ou PSNR (rapport signal sur bruit û "Peak Signal to Noise Ratio"). L'offset 6Z qui maximise ce nombre est sélectionné. Selon la même approche, on peut construire l'image dont chaque bloc est égal au bloc qui maximise la qualité parmi le bloc de même position de la reconstruction à évaluer, celui de la reconstruction "classique" et des autres secondes reconstructions déjà sélectionnées. Chaque image complémentaire, correspondant à chaque offset 6Z (pour le coefficient donné), est évaluée par rapport à l'image originale selon un critère de qualité similaire à ceux ci-dessus. L'offset 6Z, dont l'image construite de cette manière maximise la qualité, est alors sélectionné.
On passe ensuite au choix du coefficient à modifier. Ce choix consiste à sélectionner le coefficient optimal parmi les coefficients du sous-ensemble lorsque celui-ci est construit, ou parmi les seize coefficients du bloc. Plusieurs approches sont alors envisagées, le meilleur offset 6Z étant déjà connu pour chacun des coefficients comme déterminé ci-dessus: - tout d'abord, le coefficient utilisé pour la seconde reconstruction est prédéterminé. Cette réalisation offre une complexité faible. En particulier, le premier coefficient (coefficient noté "DC" selon l'état de l'art) est choisi. Il a en effet pu être observé que le choix de ce coefficient DC permet d'obtenir des "secondes" reconstructions qui présentent les meilleurs résultats moyens (en termes de débit-distorsion); - dans une variante, l'offset 6Z de reconstruction étant fixé, on opère de façon similaire à la deuxième approche ci-dessus pour déterminer 6Z : on applique le meilleur offset pour chacun des coefficients du bloc ou du sous-ensemble 15 et on sélectionne le coefficient qui minimise le critère débit-distorsion; - dans une autre variante, le numéro de coefficient peut être sélectionné de façon similaire à la troisième approche ci-dessus pour déterminer 6Z : on applique le meilleur offset pour chacun des coefficients du sous-ensemble ou du bloc et on sélectionne le coefficient qui maximise la qualité (plus 20 grand nombre de blocs évalués ayant une meilleure qualité que le bloc "classique"); - dans encore une autre variante, on peut construire l'image dont chaque bloc est égal au bloc qui maximise la qualité, parmi le bloc de même position de la reconstruction à évaluer, ceux de la reconstruction "classique" et des 25 autres secondes reconstructions déjà sélectionnées. Le coefficient parmi le bloc ou le sous-ensemble qui maximise la qualité est alors sélectionné. Ces quelques exemples d'approches permettent au module 520 de disposer de couples (numéro de coefficient; offset de reconstruction) pour piloter le module 519 et réaliser autant de "secondes" reconstructions. 30 Bien que l'on mentionne ici la sélection d'un coefficient i et de son offset correspondant pour une "seconde" reconstruction, on rappelle que des mécanismes permettant d'obtenir plusieurs couples de paramètres qui peuvent varier de bloc en bloc peuvent être prévus, et notamment une sélection arbitraire par un utilisateur. En référence maintenant à la figure 9, il est décrit à titre d'exemple une configuration matérielle particulière d'un dispositif de codage ou décodage d'une séquence vidéo apte à une mise en oeuvre des procédés selon l'invention. Un dispositif mettant en oeuvre l'invention est par exemple un micro-ordinateur 50, une station de travail, un assistant personnel, ou un téléphone mobile connecté à différents périphériques. Selon encore un autre mode de réalisation de l'invention, le dispositif se présente sous la forme d'un appareil photographique muni d'une interface de communication pour autoriser une connexion à un réseau. Les périphériques reliés au dispositif comprennent par exemple une caméra numérique 64, ou un scanner ou tout autre moyen d'acquisition ou de stockage d'images, relié à une carte d'entrée/sortie (non représentée) et fournissant au dispositif selon l'invention des données multimédia, par exemple de type séquence vidéo. Le dispositif 50 comporte un bus de communication 51 auquel sont reliés : - une unité centrale de traitement CPU 52 se présentant par exemple sous la forme d'un microprocesseur ; - une mémoire morte 53 dans laquelle peuvent être contenus les programmes dont l'exécution permet la mise en oeuvre des procédés selon l'invention. Il peut s'agir d'une mémoire flash ou EEPROM; - une mémoire vive 54 qui, après la mise sous tension du dispositif 50, contient le code exécutable des programmes de l'invention nécessaires à la mise en oeuvre de l'invention. Cette mémoire vive 54 est de type RAM (à accès aléatoire), ce qui offre des accès rapide comparés à la mémoire morte 53. Cette mémoire RAM 54 mémorise en particulier les différentes images et les différents blocs de pixels au fur et à mesure des traitements (transformée, quantification, stockage des images de référence) sur les séquences vidéo ; - un écran 55 permettant de visualiser des données notamment vidéo et/ou de servir d'interface graphique avec l'utilisateur qui peut ainsi interagir avec les programmes de l'invention, à l'aide d'un clavier 56 ou de tout autre moyen tel qu'un dispositif de pointage, comme par exemple une souris 57 ou un crayon optique ; - un disque dur 58 ou une mémoire de stockage, telle qu'une mémoire de type compact flash, pouvant comporter les programmes de l'invention ainsi que des données utilisées ou produites lors de la mise en oeuvre de l'invention; - un lecteur de disquettes 59 optionnel, ou un autre lecteur de support de données amovible, adapté à recevoir une disquette 63 et à y lire / écrire des données traitées ou à traiter conformément à l'invention ; et - une interface de communication 60 reliée au réseau de télécommunications 61, l'interface 60 étant apte à transmettre et à recevoir des données. Dans le cas de données audio, le dispositif 50 est équipé de préférence d'une carte d'entrée/sortie (non représentée) qui est reliée à un microphone 62. Le bus de communication 51 autorise une communication et une interopérabilité entre les différents éléments inclus dans le dispositif 50 ou reliés à celui-ci. La représentation du bus 51 n'est pas limitative et, notamment, l'unité centrale 52 est susceptible de communiquer des instructions à tout élément du dispositif 50 directement ou par l'intermédiaire d'un autre élément du dispositif 50.
Les disquettes 63 peuvent être remplacées par tout support d'information tel que, par exemple, un disque compact (CD-ROM) réinscriptible ou non, un disque ZIP ou une carte mémoire. D'une manière générale, un moyen de stockage d'information, lisible par un micro-ordinateur ou par un microprocesseur, intégré ou non au dispositif de traitement (codage ou décodage) d'une séquence vidéo, éventuellement amovible, est adapté à mémoriser un ou plusieurs programmes dont l'exécution permet la mise en oeuvre des procédés selon l'invention.
Le code exécutable permettant, au dispositif de codage ou de décodage, la mise en oeuvre de l'invention peut être indifféremment stocké en mémoire morte 53, sur le disque dur 58 ou sur un support numérique amovible tel que par exemple une disquette 63 comme décrite précédemment. Selon une variante, le code exécutable des programmes est reçu par l'intermédiaire du réseau de télécommunications 61, via l'interface 60, pour être stocké dans un des moyens de stockage du dispositif 50 (tel que le disque dur 58 par exemple) avant d'être exécuté. L'unité centrale 52 commande et dirige l'exécution des instructions ou portions de code logiciel du ou des programmes de l'invention, les instructions ou portions de code logiciel étant stockées dans l'un des moyens de stockage précités. Lors de la mise sous tension du dispositif 50, le ou les programmes qui sont stockés dans une mémoire non volatile, par exemple le disque dur 58 ou la mémoire morte 53, sont transférés dans la mémoire vive 54 qui contient alors le code exécutable du ou des programmes de l'invention, ainsi que des registres pour mémoriser les variables et paramètres nécessaires à la mise en oeuvre de l'invention. On notera également que le dispositif mettant en oeuvre l'invention ou incorporant celle-ci est réalisable aussi sous la forme d'un appareil programmé. Par exemple, un tel dispositif peut alors contenir le code du ou des programmes informatiques sous une forme figée dans un circuit intégré à application spécifique (ASIC). Le dispositif décrit ici et, particulièrement, l'unité centrale 52, sont susceptibles de mettre en oeuvre tout ou partie des traitements décrits en lien avec les figures 1 à 8, pour mettre en oeuvre les procédés objets de la présente invention et constituer les dispositifs objets de la présente invention. Les exemples qui précèdent ne sont que des modes de réalisation de l'invention qui ne s'y limite pas. En particulier, des mécanismes d'interpolation des images de référence peuvent également être mis en oeuvre lors des opérations d'estimation et de compensation de mouvement, pour améliorer la qualité de la prédiction temporelle.
Une telle interpolation peut résulter des mécanismes supportés par la norme H.264, pour obtenir des vecteurs mouvement de précision inférieure au pixel, par exemple au 1/2 pixel, au 1/4 de pixel ou même au 1/8 de pixel selon l'interpolation mise en oeuvre.

Claims (18)

  1. REVENDICATIONS1. Procédé de traitement d'une séquence vidéo (101, 110, 501, 601), au moins une image numérique (It, It+i) composant la séquence vidéo étant compressée par prédiction temporelle (504, 505) à partir d'une pluralité d'images de référence (516, 517, 518, 608, 610, 611), caractérisé en ce que, la prédiction temporelle mettant en oeuvre une pluralité de reconstructions différentes (517, 518, 610, 611) d'une même image (It) comme images de référence (516, 608), le procédé comprend les étapes consistant à: obtenir des reconstructions (402, 408, 411, 517, 518, 610, 611) d'une première image (IO), qui ont servi d'images de référence (516, 608) pour la prédiction temporelle (504, 505) d'au moins une autre image (It+i) de la séquence; et combiner (614, E717) lesdites reconstructions obtenues de sorte à obtenir, pour au moins une partie de ladite première image (IO), au moins une valeur d'affichage (pixel(j), 609).
  2. 2. Procédé de traitement selon la revendication 1, dans lequel les images numériques sont composées de blocs de pixels (B`), et le procédé comprend, pour un bloc (Rb) de la première image (It), les étapes consistant à: déterminer (E703) le ou les blocs (Bz+1) de l'au moins une autre image (It+i) qui sont prédits temporellement à partir d'une reconstruction (402, 406, 411, 610, 611) d'au moins une partie dudit bloc de la première image; et obtenir un bloc d'affichage en combinant (E717) les reconstructions d'au moins une partie dudit bloc de la première image identifiées lors de l'étape de détermination.
  3. 3. Procédé de traitement selon la revendication 2, comprenant, si aucun bloc n'est prédit temporellement à partir d'une reconstruction d'au moins une partie dudit bloc de la première image, une étape consistant à récupérer (E709), dans une reconstruction prédéfinie (402, 610) de l'image à décoder (It), le bloc ayant la même position que ledit bloc à décoder (Rb », de sorte à obtenir un bloc d'affichage.
  4. 4. Procédé de traitement selon la revendication 2 ou 3, dans lequel l'étape d'obtention d'un bloc d'affichage comprend, pour chaque pixel (j) du bloc, des étapes consistant à: déterminer (E715), parmi lesdites reconstructions identifiées lors de l'étape de détermination, celles dont ledit pixel correspondant sert de référence pour une prédiction temporelle; combiner (E717) les reconstructions ainsi déterminées pour obtenir une valeur (pixel[j]) de pixel d'affichage.
  5. 5. Procédé de traitement selon la revendication 4, dans lequel la combinaison (E717) des reconstructions déterminées pour obtenir une valeur de pixel d'affichage comprend, pour un pixel (j) dudit bloc (Rb », le calcul (E723) de la moyenne des valeurs des pixels correspondants dans lesdites reconstructions déterminées.
  6. 6. Procédé de traitement selon la revendication 4 ou 5, dans lequel, si aucune reconstruction dont ledit pixel sert de référence pour une prédiction temporelle n'est déterminée, le pixel (j) dudit bloc d'affichage (Rb) prend la valeur du pixel de même position dans une reconstruction prédéfinie (402, 610) de ladite première image (It).
  7. 7. Procédé de traitement selon l'une des revendications 1 à 6, dans lequel, lors de la génération et de la combinaison de plusieurs reconstructions, ladite au moins une autre image (It+i) est comprise dans un nombre (Nmax) prédéfini d'images qui sont postérieures, dans ladite séquence vidéo, à ladite première image (It).
  8. 8. Procédé de traitement selon la revendication 7, dans lequel ladite au moins une autre image est l'image postérieure la plus proche temporellement de ladite première image.
  9. 9. Procédé de traitement selon l'une quelconque des revendications 1 à 8, dans lequel ledit traitement consiste à décoder ladite première image (It) à partir d'une séquence vidéo compressée (110, 601) pour l'afficher, et le procédé comprend l'affichage de valeurs (pixel(j)) d'affichage obtenues pour des parties (Rb) composant ladite première image à décoder.
  10. 10. Procédé de traitement selon l'une quelconque des revendications 1 à 8, dans lequel ledit traitement consiste à coder ladite séquence vidéo (101, 501) en un flux binaire (510), et le procédé comprend en outre les étapes consistant à: déterminer laquelle, entre ladite valeur d'affichage obtenue et une valeur colocalisée à ladite partie dans une image de référence prédéfinie (517), est la plus proche d'une valeur, dite d'origine, co-localisée dans la version originale (It) de ladite première image; et associer, dans le flux binaire, à ladite au moins une partie de la première image, une information fonction de ladite détermination, pour indiquer à un décodeur dudit flux binaire de décoder ladite partie soit par combinaison desdites reconstructions soit par utilisation de l'image de référence prédéfinie.
  11. 11. Procédé de traitement selon la revendication 10, dans lequel ladite détermination de la valeur la plus proche comprend l'étape consistant à comparer une erreur estimée entre ladite valeur d'affichage obtenue et la valeur d'origine correspondante, avec une erreur estimée entre la valeur co-localisée dans l'image de référence prédéfinie (517) et ladite valeur d'origine.
  12. 12. Procédé de traitement selon la revendication 10 ou 11, comprenant une étape d'indication, dans ledit flux binaire, des reconstructions à combiner pour décoder ladite partie de la première image.
  13. 13. Procédé de traitement selon la revendication 12, comprenant en outre une étape consistant à sélectionner et à indiquer, dans ledit flux binaire, une sous-partie desdites reconstructions obtenues, ladite sélection étant réalisée par estimation de la distorsion entre ladite partie de la première image résultant de la combinaison desdites reconstructions et ladite partie de la première image avant codage.
  14. 14. Dispositif de traitement (10, 20) d'une séquence vidéo (101, 110, 501, 601), au moins une image numérique (It, It+i) composant la séquence vidéo étant compressée par prédiction temporelle (504, 505) à partir d'une pluralité d'images de référence (516, 517, 518, 608, 610, 611), caractérisé en ce que, la prédiction temporelle mettant en oeuvre une pluralité dereconstructions différentes (517, 518, 610, 611) d'une même image (It) comme images de référence (516, 608), le dispositif comprend: un moyen d'obtention de reconstructions (402, 408, 411, 517, 518, 610, 611) d'une première image (It), qui ont servi d'images de référence (516, 608) pour la prédiction temporelle (504, 505) d'au moins une autre image (It+i) de la séquence; et un module de combinaison apte à combiner (614) lesdites reconstructions ainsi obtenues de sorte à obtenir, pour au moins une partie de ladite première image (IO), au moins une valeur d'affichage (pixel(j), 609).
  15. 15. Dispositif selon la revendication 14 de type décodeur, comprenant un moyen de traitement et d'affichage configuré pour afficher lesdites valeurs (pixel(j)) d'affichage obtenues pour des parties (Rb) composant ladite première image à décoder.
  16. 16. Dispositif selon la revendication 14 de type codeur, comprenant un moyen de détermination de la valeur, parmi ladite valeur d'affichage obtenue et une valeur co-localisée à ladite partie dans une image de référence prédéfinie (517), qui est la plus proche d'une valeur, dite d'origine, co-localisée dans la version originale (It) de ladite première image; et un moyen d'association pour associer, dans un flux binaire, à ladite au moins une partie de la première image, une information fonction de ladite détermination, de sorte à pour indiquer à un décodeur dudit flux binaire de décoder ladite partie soit par combinaison desdites reconstructions soit par utilisation de l'image de référence prédéfinie.
  17. 17. Moyen de stockage d'informations, éventuellement totalement ou partiellement amovible, lisible par un système informatique, comprenant des instructions pour un programme informatique adapté à mettre en oeuvre le procédé conforme à l'une quelconque des revendications 1 à 13, lorsque le programme est chargé et exécuté par le système informatique.
  18. 18. Produit programme d'ordinateur lisible par un microprocesseur, comprenant des portions de code logiciel adaptées à mettre en oeuvre le procédé selon l'une quelconque des revendications 1 à 13, lorsqu'il est chargé et exécuté par le microprocesseur.
FR1052011A 2010-03-19 2010-03-19 Procede de traitement d'une sequence video et dispositif associe Expired - Fee Related FR2957744B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR1052011A FR2957744B1 (fr) 2010-03-19 2010-03-19 Procede de traitement d'une sequence video et dispositif associe
US13/049,781 US20110228850A1 (en) 2010-03-19 2011-03-16 Method of processing a video sequence and associated device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1052011A FR2957744B1 (fr) 2010-03-19 2010-03-19 Procede de traitement d'une sequence video et dispositif associe

Publications (2)

Publication Number Publication Date
FR2957744A1 true FR2957744A1 (fr) 2011-09-23
FR2957744B1 FR2957744B1 (fr) 2012-05-25

Family

ID=42727321

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1052011A Expired - Fee Related FR2957744B1 (fr) 2010-03-19 2010-03-19 Procede de traitement d'une sequence video et dispositif associe

Country Status (2)

Country Link
US (1) US20110228850A1 (fr)
FR (1) FR2957744B1 (fr)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2805492B1 (fr) * 2012-01-19 2018-11-14 VID SCALE, Inc. Système et procédé de quantification de codage vidéo et commande de plage dynamique
FR3075540A1 (fr) * 2017-12-15 2019-06-21 Orange Procedes et dispositifs de codage et de decodage d'une sequence video multi-vues representative d'une video omnidirectionnelle.

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040258156A1 (en) * 2002-11-22 2004-12-23 Takeshi Chujoh Video encoding/decoding method and apparatus
EP1578131A1 (fr) * 2004-03-18 2005-09-21 STMicroelectronics S.r.l. Procédés et dispositifs de coder/décoder, produit de programme d'ordinateur associé
WO2006007279A2 (fr) * 2004-06-18 2006-01-19 Thomson Licensing Procede et appareil de quantification de codec video
WO2009126937A1 (fr) * 2008-04-10 2009-10-15 Qualcomm Incorporated Décalages en résolution sous-pixel

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7072394B2 (en) * 2002-08-27 2006-07-04 National Chiao Tung University Architecture and method for fine granularity scalable video coding
KR100596705B1 (ko) * 2004-03-04 2006-07-04 삼성전자주식회사 비디오 스트리밍 서비스를 위한 비디오 코딩 방법과 비디오 인코딩 시스템, 및 비디오 디코딩 방법과 비디오 디코딩 시스템
US8705624B2 (en) * 2009-11-24 2014-04-22 STMicroelectronics International N. V. Parallel decoding for scalable video coding

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040258156A1 (en) * 2002-11-22 2004-12-23 Takeshi Chujoh Video encoding/decoding method and apparatus
EP1578131A1 (fr) * 2004-03-18 2005-09-21 STMicroelectronics S.r.l. Procédés et dispositifs de coder/décoder, produit de programme d'ordinateur associé
WO2006007279A2 (fr) * 2004-06-18 2006-01-19 Thomson Licensing Procede et appareil de quantification de codec video
WO2009126937A1 (fr) * 2008-04-10 2009-10-15 Qualcomm Incorporated Décalages en résolution sous-pixel

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
FENG WU ET AL: "A Framework for Efficient Progressive Fine Granularity Scalable Video Coding", IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, IEEE SERVICE CENTER, PISCATAWAY, NJ, US, vol. 11, no. 3, 1 March 2001 (2001-03-01), XP011014181, ISSN: 1051-8215 *
WEDI T ET AL: "Quantization Offsets for Video Coding", CONFERENCE PROCEEDINGS / IEEE INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS (ISCAS) : MAY 23 - 26, 2005, INTERNATIONAL CONFERENCE CENTER, KOBE, JAPAN, IEEE SERVICE CENTER, PISCATAWAY, NJ LNKD- DOI:10.1109/ISCAS.2005.1464590, 23 May 2005 (2005-05-23), pages 324 - 327, XP010815543, ISBN: 978-0-7803-8834-5 *

Also Published As

Publication number Publication date
FR2957744B1 (fr) 2012-05-25
US20110228850A1 (en) 2011-09-22

Similar Documents

Publication Publication Date Title
EP3209021B1 (fr) Support d'enregistrement mémorisant un flux de données d'images codées
FR2951345A1 (fr) Procede et dispositif de traitement d'une sequence video
FR2906433A1 (fr) Procedes et dispositifs de codage et de decodage d'images, programme d'ordinateur les mettant en oeuvre et support d'informaton permettant de les mettre en oeuvre
EP3490258A1 (fr) Procédé et support d'enregistrement mémorisant un flux de données d'images codées
EP2443835A1 (fr) Codage de vecteurs mouvement par competition de predicteurs
EP3972247B1 (fr) Procédé de codage et de décodage d'images, dispositif de codage et de décodage d'images et programmes d'ordinateur correspondants
FR2955995A1 (fr) Procede et dispositif de traitement d'une sequence video
FR2956789A1 (fr) Procede et dispositif de traitement d'une sequence video
FR2957744A1 (fr) Procede de traitement d'une sequence video et dispositif associe
EP3854090A1 (fr) Procédés et dispositifs de codage et de décodage d'un flux de données représentatif d'au moins une image
FR2907989A1 (fr) Procede et dispositif d'optimisation de la compression d'un flux video
FR3057130B1 (fr) Procede de codage d'une image, procede de decodage, dispositifs, equipement terminal et programmes d'ordinateurs associes
EP3815369A1 (fr) Procédés et dispositifs de codage et de décodage d'un flux de données représentatif d'au moins une image
FR2956552A1 (fr) Procede de codage ou de decodage d'une sequence video, dispositifs associes
FR2959093A1 (fr) Procede et dispositif de prediction d'une information de complexite de texture contenue dans une image
EP3815366A1 (fr) Procédés et dispositifs de codage et de décodage d'un flux de données représentatif d'au moins une image
EP3854088A1 (fr) Procédés et dispositifs de codage et de décodage d'un flux de données représentatif d'au moins une image
WO2020161413A1 (fr) Procédés et dispositifs de codage et de décodage d'un flux de données représentatif d'au moins une image
EP3854085A1 (fr) Procédés et dispositifs de codage et de décodage d'un flux de données représentatif d'au moins une image
FR2851109A1 (fr) Procede et dispositif de determination de parametres d'un modele d'estimation de la distorsion d'une sequence d'images
WO2006056720A1 (fr) Compression video par modification de quantification par zones d'images
FR2927494A1 (fr) Procede de decodage et codage d'une sequence d'images avec compensation de mouvement

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20141128