FR2927494A1 - Procede de decodage et codage d'une sequence d'images avec compensation de mouvement - Google Patents

Procede de decodage et codage d'une sequence d'images avec compensation de mouvement Download PDF

Info

Publication number
FR2927494A1
FR2927494A1 FR0850841A FR0850841A FR2927494A1 FR 2927494 A1 FR2927494 A1 FR 2927494A1 FR 0850841 A FR0850841 A FR 0850841A FR 0850841 A FR0850841 A FR 0850841A FR 2927494 A1 FR2927494 A1 FR 2927494A1
Authority
FR
France
Prior art keywords
memory
image
data block
motion
decoding
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
FR0850841A
Other languages
English (en)
Other versions
FR2927494B1 (fr
Inventor
Eric Nassor
Patrice Onno
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 FR0850841A priority Critical patent/FR2927494B1/fr
Publication of FR2927494A1 publication Critical patent/FR2927494A1/fr
Application granted granted Critical
Publication of FR2927494B1 publication Critical patent/FR2927494B1/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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/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/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding

Landscapes

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

Abstract

Un procédé de décodage d'une séquence d'images comporte une étape de prédiction de mouvement (S411) adaptée à générer, pour chaque bloc de données d'image à décoder (MBn), un ensemble de blocs de données utiles (MBu) dans des images de référence, et une étape de compensation de mouvement (S440) dans laquelle un bloc de données de référence est obtenu à partir d'un vecteur de mouvement calculé.A l'étape de compensation de mouvement (S440), le bloc de données de référence est ajouté dans une mémoire, et au moins un bloc de données de référence est supprimé de cette mémoire, le bloc de données de référence à supprimer étant déterminé en fonction d'un critère de probabilité défini lors de l'étape de prédiction de mouvement (S411).Utilisation pour optimiser la gestion d'une mémoire cache d'un décodeur.

Description

La présente invention concerne un procédé de décodage d'une séquence d'images. Elle concerne également un procédé de codage associé d'une séquence d'images. Corrélativement, la présente invention concerne un dispositif de décodage et de codage d'une séquence d'images adapté à mettre en oeuvre respectivement les procédés de décodage et de codage selon l'invention. D'une manière générale, la présente invention s'applique au domaine du décodage de données vidéo, et plus particulièrement au décodage de données vidéo compressées avec compensation de mouvement.
L'invention s'applique en particulier à des données vidéo encodées avec compensation de mouvement, par exemple selon les normes de compression MPEG-2, MPEG-4 Partie 2 ou encore H.264, et en particulier à des données vidéo haute définition. Une difficulté des procédés de décodage avec compensation de mouvement provient de la très grande quantité de données à gérer, notamment dans le cas de vidéos haute définition : en effet, le décodage d'une image encodée avec compensation de mouvement nécessite d'avoir accès à de nombreuses parties d'images de référence décodées. Ainsi, la rapidité du décodage de données vidéo est limitée non par la vitesse du processeur mais par la vitesse d'accès à la mémoire centrale du processeur, dans laquelle sont stockées les parties des images de référence décodées auxquelles le processeur doit accéder lors du procédé de décodage. Il peut être envisagé de stocker les parties des images de référence décodées dans la mémoire cache équipant traditionnellement les processeurs de décodage.
Cependant, la quantité de données nécessaires est généralement très supérieure à la taille des mémoires cache. En effet, ces mémoires cache sont d'un accès très rapide mais en revanche sont limitées en taille. On connaît dans le document US 6 996 178 une méthode pour accélérer l'étape de compensation de mouvement sur un décodeur. Dans ce document, lorsqu'un vecteur de mouvement d'un macrobloc de l'image a été décodé, on transfère dans une mémoire cache les données des images de référence utiles pour le décodage. Les données utiles sont ainsi chargées en mémoire cache avant d'être utilisées lors d'une étape de compensation de mouvement. Afin d'augmenter la probabilité d'avoir les données utiles dans la mémoire cache lors du décodage des macroblocs suivants, une zone plus grande que la zone utile est transférée à l'avance dans la mémoire cache. Ainsi, dans le document US 6 996 178, de nombreuses données sont chargées en mémoire cache alors qu'elles ne sont pas utilisées lors de l'étape de compensation de mouvement. Par conséquent, de nombreuses données inutiles sont mémorisées en mémoire cache, alors que la taille même de cette mémoire cache est fortement limitée. La présente invention a pour but de résoudre les inconvénients précités et de proposer un procédé de décodage permettant de gérer au mieux le contenu d'une mémoire cache en vue d'accélérer le processus de décodage d'une séquence d'images. À cet effet, la présente invention vise selon un premier aspect un procédé de décodage d'une séquence d'images comprenant une série de blocs de données à décoder, comportant une étape de prédiction de mouvement adaptée à générer, pour chaque bloc de données à décoder, un ensemble de blocs de données utiles dans des images de référence, et une étape de compensation de mouvement dans laquelle un bloc de données de référence est obtenu à partir d'un vecteur de mouvement calculé.
Selon l'invention, à l'étape de compensation de mouvement, ledit bloc de données de référence est ajouté dans une mémoire et au moins un bloc de données de référence est supprimé de ladite mémoire, ledit bloc de données de référence à supprimer étant déterminé en fonction d'un critère de probabilité défini lors de l'étape de prédiction de mouvement. Ainsi, seuls les blocs de données de référence réellement utilisés lors de l'étape de compensation de mouvement sont ajoutés dans la mémoire.
Par ailleurs, le bloc de données de référence à supprimer, pour compenser cet ajout, est sélectionné en fonction d'un critère de probabilité, permettant ainsi de supprimer un bloc de données ayant peu de chance d'être utilisé dans la suite du processus de décodage. Grâce à l'invention, le procédé permet de gérer efficacement les données à effacer de la première mémoire et de ne mémoriser que les blocs de données effectivement utilisés lors de l'étape de compensation de mouvement. Cette gestion de la première mémoire s'applique ainsi parfaitement à la gestion d'une mémoire cache, d'accès rapide mais de petite taille. Selon une caractéristique avantageuse de l'invention, ledit critère de probabilité est défini par un poids associé à chaque bloc de données utile, ledit poids étant augmenté lorsque ledit bloc de données utile est sélectionné lors de l'étape de prédiction de mouvement. Les blocs de données utiles ainsi obtenus lors de l'étape de prédiction de mouvement sont pondérés par une valeur directement liée à leur probabilité d'utilisation lors de l'étape de compensation de mouvement. Selon une réalisation pratique de l'invention, le procédé de décodage comprend une étape de mémorisation d'un ensemble de taille prédéfinie de blocs de données à décoder associés respectivement aux ensembles de blocs de données utiles générés à l'étape de prédiction de mouvement.
En pratique, le poids associé à chaque bloc de données utile de l'ensemble des blocs de données utiles associé à un bloc de données à décoder est diminué après décodage dudit bloc de données à décoder. Le critère de probabilité défini par le poids associé à chaque bloc de données utile est ainsi encore amélioré.
Selon une caractéristique avantageuse, le bloc de données de référence à supprimer est déterminé en fonction en outre d'un critère d'utilisation lors de l'étape de compensation de mouvement.
Cette combinaison d'un critère d'utilisation et d'un critère de probabilité permet de supprimer un bloc de données ayant le moins de chance d'être utilisé dans la suite du processus de décodage. Le procédé de décodage permet ainsi de gérer au mieux une mémoire cache et d'accélérer le décodage de séquences d'images en favorisant un accès rapide aux blocs de données de référence les plus utilisées, stockés judicieusement dans la mémoire cache. Selon une autre caractéristique avantageuse de l'invention, à l'issue de l'étape de compensation de mouvement, ledit bloc de données de référence obtenu est référencé en tête d'une liste référençant les blocs de données présents dans ladite mémoire et ledit bloc de données de référence supprimé de ladite mémoire est choisi parmi un sous-ensemble de blocs de données référencés en fin de ladite liste référençant les blocs de données présents dans ladite mémoire.
Le critère d'utilisation mis en oeuvre lors de la suppression d'un bloc de données de référence tient ainsi compte de la fréquence d'utilisation d'un bloc de données. Le bloc de données à supprimer est ainsi choisi parmi un sous-ensemble de blocs de données utilisés les moins récemment lors de l'étape de compensation de mouvement.
En pratique, ledit bloc de données de référence à supprimer est le bloc de données dudit sous-ensemble présentant un critère de probabilité le plus faible. Le procédé de décodage d'une séquence d'images décrit précédemment est particulièrement bien adapté lorsqu'il est mis en oeuvre avec 25 une mémoire à accès rapide et de petite taille. Selon une caractéristique pratique et avantageuse de l'invention, ladite étape de prédiction de mouvement met en oeuvre une méthode à base d'extrapolation temporelle des vecteurs de mouvement associés à des macroblocs d'une image. 30 En pratique, lors de ladite étape de prédiction de mouvement, pour chaque macrobloc à décoder, des vecteurs de mouvement sont calculés par rapport à plusieurs images de référence, l'ensemble de macroblocs utiles correspondant auxdits macroblocs pointés par lesdits vecteurs de mouvement dans lesdites images de référence. La présente invention concerne également selon un second aspect un procédé de codage d'une séquence d'images comprenant une série de blocs de données à encoder, comportant une étape de compression d'une image en image encodée avec compensation de mouvement et une étape de décompression de ladite image encodée en image de référence. Selon l'invention, à ladite étape de décompression, un procédé de décodage conforme à l'invention est mis en oeuvre, le choix d'un bloc de données de référence dans le calcul des vecteurs de mouvement dans ladite étape de compression étant dépendant du contenu en blocs de données de référence d'une mémoire, simulé lors de ladite étape de décompression. Le procédé de codage permet ainsi de prendre en compte la gestion de la mémoire par le procédé de décodage, afin de favoriser l'utilisation de blocs de données de référence déjà mémorisés dans cette mémoire pour encoder un nouveau bloc de données. En pratique, le procédé de codage comprend une étape d'optimisation de l'encodage avec calcul d'un coût d'accès mémoire. En différenciant ainsi les coûts d'accès à une mémoire cache et à une mémoire vive d'un processeur, il est possible de favoriser l'utilisation de blocs de données de référence déjà présents dans une mémoire cache, d'accès rapide, lors de l'encodage d'une séquence d'images avec compensation de mouvement. Corrélativement, la présente invention concerne un dispositif de décodage d'une séquence d'images comprenant une série de blocs de données à décoder, comportant des moyens de prédiction de mouvement adaptés à générer, pour chaque bloc de données à décoder, un ensemble de blocs de données utiles dans des images de référence, et des moyens de compensation de mouvement adaptés à obtenir un bloc de données de référence à partir d'un vecteur de mouvement calculé. Selon l'invention, le dispositif de décodage comprend une mémoire adaptée à mémoriser un bloc de données de référence obtenu par les moyens de compensation de mouvement et des moyens de suppression d'au moins un bloc de données de référence de ladite mémoire, ledit bloc de données de référence à supprimer étant déterminé en fonction d'un critère de probabilité défini par les moyens de prédiction de mouvement.
Ce dispositif de décodage présente des caractéristiques et avantages analogues à ceux décrits précédemment en référence au procédé de décodage qu'il met en oeuvre. Corrélativement, la présente invention concerne également un dispositif de codage d'une séquence d'images comprenant une série de blocs de données à encoder, comportant des moyens de compression d'une image en image encodée avec compensation de mouvement et des moyens de décompression de ladite image encodée en image de référence. Selon l'invention, lesdits moyens de décompression sont adaptés à mettre en oeuvre le procédé de décodage conforme à l'invention, le choix d'un bloc de données de référence dans le calcul des vecteurs de mouvement mis en oeuvre par les moyens de compression étant dépendant du contenu d'une mémoire en blocs de données de référence, simulé par les moyens de décompression. Ce dispositif de codage d'une séquence d'images présente des 20 caractéristiques et avantages analogues à ceux décrits précédemment en référence au procédé de codage selon l'invention. Enfin, la présente invention concerne un programme d'ordinateur chargeable dans un système informatique, ledit programme contenant des instructions permettant la mise en oeuvre du procédé de décodage et/ou 25 codage conforme à l'invention, lorsque ce programme est chargé et exécuté par le système informatique. D'autres particularités et avantages de l'invention apparaîtront encore dans la description ci-après. Aux dessins annexés, donnés à titre d'exemples non limitatifs : 30 - la figure 1 est un schéma illustrant la structure d'une séquence d'images comprenant une série de macroblocs à encoder ; - la figure 2 est un schéma bloc illustrant un dispositif d'encodage d'une séquence d'images avec compensation de mouvement ; - la figure 3 est un algorithme illustrant un procédé de décodage d'une séquence d'images avec compensation de mouvement ; - la figure 4 est un algorithme illustrant le procédé de décodage selon un mode de réalisation de l'invention ; - la figure 5 est un schéma illustrant différentes méthodes de prédiction de mouvement dans une image ; - les figures 6a, 6b et 6c sont des algorithmes détaillant des étapes du procédé de décodage décrit à la figure 4 ; - la figure 7 est un schéma bloc illustrant un dispositif de décodage conforme à un mode de réalisation de l'invention ; et - la figure 8 est un schéma bloc illustrant un dispositif informatique adapté à mettre en oeuvre la présente invention.
On va décrire tout d'abord en référence à la figure 1 la structure d'une séquence vidéo 100 adaptée à être encodée suivant un format de compression avec compensation de mouvement. Les formats de compression décrits dans la suite sont des formats selon les normes H.264, ou encore MPEG-2 ou MPEG-4 Partie 2.
Chaque séquence vidéo 100 est composée d'une séquence d'images 101, 102, 103. Chaque image peut être encodée sans compensation de mouvement (appelé mode intra, correspondant par exemple à l'image 101) ou avec compensation de mouvement (appelé mode inter) par rapport à des images passées (tel est le cas par exemple pour l'image 102) ou par rapport à des images passées et futures (tel est le cas pour l'image 103). Dans toute la suite de la description, les blocs de données à traiter lors des procédés de codage et de décodage sont des macroblocs 130 constitués de blocs de 16x16 pixels.
Chaque image 103 est découpée en tranches 120 (en anglais slices), chaque tranche regroupant un certain nombre de macroblocs 130.
On notera que les images d'origine peuvent avoir des formats très variables, dépendant de la définition de l'image. Ainsi, en simple définition, une image aura un format de 720x480 pixels, alors qu'en haute définition, le format de l'image peut être de 1280x720 pixels ou encore 1920x1080 pixels.
Dans le cas d'un format YUV 4:2:0, chaque macrobloc 130 possède quatre blocs 131 correspondant aux blocs de luminance Y, un bloc 132 de chrominance bleu et un bloc 133 de chrominance rouge. Etant donné que chaque bloc 131, 132, 133 contient 8x8 octets de données, une image de taille 1920x1080 pixels décodée représente 3 Méga 10 octets de données. On rappelle pour mémoire en référence à la figure 2, le principe d'un encodeur avec compensation de mouvement appliqué à une image telle que décrite précédemment à la figure 1. Ainsi, pour chaque image à encoder avec compensation de 15 mouvement, les macroblocs de l'image sont traités par des moyens de compression 160 qui comportent tout d'abord des moyens de calcul de mouvement 161. Chaque macrobloc 130 est partitionné en plusieurs zones, pouvant aller jusqu'à des zones de taille 4x4 dans le format de compression H.264. 20 Chaque partition est alors comparée à des zones correspondantes dans des images de référence mémorisées dans une mémoire d'images de référence 175. La zone sélectionnée correspond à celle qui ressemble le plus aux pixels à encoder. Il existe de nombreux algorithmes permettant d'obtenir 25 rapidement un bon résultat sans faire une recherche exhaustive parmi l'ensemble des zones d'images de référence. Cette technique de codage avec compensation de mouvement est bien connue et ne nécessite pas d'être décrite plus en détails ici. Le vecteur de mouvement calculé correspond à la distance qui 30 sépare le macrobloc traité de la zone sélectionnée dans l'image de référence. Le vecteur de mouvement crée ainsi une image prédite du contenu du macrobloc.
Le vecteur de mouvement ainsi obtenu peut être codé par différence à partir d'une prédiction de mouvement réalisée sur les blocs au-dessus et à gauche du bloc à encoder. La différence entre la valeur exacte de l'image et l'image prédite est calculée par les moyens de calcul 161. Cette valeur est appelée résidu. Ce résidu est ensuite transformé pour chaque macrobloc par des moyens de transformation 162, puis quantifié par des moyens de quantification 163. Les coefficients résultants sont réordonnés et des en-têtes sont 10 ajoutés afin d'indiquer les modes de codage et les vecteurs de mouvement utilisés. Les moyens de codage entropiques (en anglais VLC ou Variable Length Coding) 164 sont adaptés à coder le résultat quantifié par tranches d'images. On obtient ainsi en sortie un ensemble de macroblocs encodés pour 15 toute l'image. Des moyens de décompression 170 sont ensuite appliqués sur l'image encodée résultante afin de stocker cette image dans la mémoire d'image de référence 175 pour son utilisation ultérieure lors du codage des images suivantes de la séquence vidéo. 20 La figure 3 illustre un algorithme du procédé de décodage correspondant au codage décrit précédemment en référence à la figure 2. La séquence vidéo est décodée image par image. Dans une étape S310, on considère la première image de la séquence vidéo. 25 On notera que du fait de l'utilisation d'une prédiction de mouvement par rapport à des images futures (telle que décrite précédemment pour l'image référencée 103 de la figure 1), l'ordre de décodage des images n'est pas nécessairement l'ordre séquentiel de la vidéo. Une étape de lecture S315 permet ensuite de considérer la première 30 tranche (en anglais slice) de l'image. Une étape de décodage entropique S320 est ensuite mise en oeuvre sur l'intégralité de la tranche.
Cette première étape de décodage entropique S320 permet d'obtenir une suite de macroblocs encodés. On considère dans une étape de lecture S325 le premier macrobloc à décoder.
Un macrobloc encodé avec prédiction de mouvement est composé comme indiqué précédemment d'une différence de vecteur de mouvement et d'un résidu. On pourra noter qu'un macrobloc encodé en mode intra peut être considéré comme un cas particulier d'un macrobloc encodé en mode inter, sans vecteur de mouvement.
Les coefficients du résidu du macrobloc sont réordonnés et sont ensuite traités par une étape de quantification inverse S330 puis une étape de transformation inverse S335 afin d'obtenir la valeur du résidu décodé. Un vecteur de mouvement prédit est ensuite calculé à partir des vecteurs de mouvement de macroblocs adjacents (c'est-à-dire positionnés au- dessus et à gauche du macrobloc traité). La différence de vecteur de mouvement lue dans l'en-tête (en anglais header) du macrobloc est ajoutée pour obtenir un vecteur de mouvement réel. Ce vecteur de mouvement est ensuite utilisé dans une étape de compensation de mouvement S340 afin d'obtenir une zone d'une des images de référence. On notera qu'en particulier dans le cas de vecteur de mouvement non entier, il peut être nécessaire d'interpoler des pixels. La zone ainsi obtenue est appelée image prédite. Le résidu calculé à l'étape de transformation inverse S335 est ensuite ajouté à l'image prédite afin d'obtenir l'image du macrobloc. On considère ensuite dans une étape de lecture S345, le macrobloc suivant afin de réitérer les étapes de décompression S330 à S340. Lorsque tous les macroblocs de la première tranche ont été traités, on considère dans une étape de lecture S350 la tranche suivante et les étapes 30 S320 à S345 sont réitérées. Lorsque toutes les tranches de l'image ont été traitées, une étape de filtrage S355 est mise en oeuvre afin de retirer les effets de blocs sur l'image ainsi obtenue. L'image peut être transmise pour affichage et/ou stockée si l'image est gardée comme image de référence. Une étape de lecture S360 permet ensuite de considérer l'image suivante à décoder dans la séquence vidéo, l'ensemble des étapes S315 à 5 S355 étant mises en oeuvre sur cette nouvelle image. Le procédé ainsi décrit pour mémoire est un procédé classique de décodage avec compensation de mouvement tel que mis en oeuvre notamment par un décodeur fonctionnant selon la norme H.264. On notera que l'étape de compensation de mouvement S340 est un 10 point critique pour la vitesse de décodage. En effet, cette étape de compensation représente environ 30% des calculs à réaliser, l'interpolation de mouvement étant couteuse en termes de calcul, mais également 75% des accès mémoires, dès lors que les vecteurs de mouvement doivent pouvoir accéder à n'importe quelle partie de plusieurs 15 images de référence. Ainsi, à titre d'exemple, dans le cas de quatre images de référence de taille 1920x1080 pixels, au format YUV 4:2:0, 12 Méga octets de données doivent être mémorisées. Si par ailleurs les vecteurs de mouvement sont calculés au 1/4 de 20 pixel, et que les données au 1/2 de pixel sont mémorisées, cela peut nécessiter de stocker 48 Méga octets de données. Par ailleurs, si les vecteurs de mouvement sont calculés sur de petits blocs de taille 4x4, les zones de mémoire auxquelles doit accéder le processeur peuvent être très dispersées. 25 Dans les procédés de décodage classique, compte tenu de la grande quantité de données à mémoriser, la majeure partie des accès mémoires lors de l'étape de compensation de mouvement sont réalisés avec une mémoire centrale du type mémoire vive du microprocesseur, qui offre malheureusement un accès très lent. 30 On va décrire à présent en référence à la figure 4 un procédé de décodage selon un mode de réalisation de l'invention permettant d'accélérer le décodage en améliorant les accès mémoires.
Outre les étapes déjà décrites précédemment en référence à la figure 4, le procédé de décodage comporte une étape de prédiction de mouvement S411 mise en oeuvre sur chaque image à décoder de la séquence vidéo.
On a illustré schématiquement à la figure 5 différentes méthodes pour la prédiction de zones utiles lors de l'étape de compensation de mouvement du décodage. On considère ainsi à deux instants successifs t-1 et t respectivement deux images 500 et 510.
L'image 500 à l'instant t-1 a été représentée avec ses différents vecteurs de mouvement décodés pour chaque macrobloc 521 et l'image 510 à l'instant t, partiellement décodée, à été représentée avec seulement certains vecteurs de mouvement décodés pour des macroblocs 520. Pour chaque macrobloc à décoder, tel que par exemple le macrobloc 530 de l'image 510, on peut prédire les vecteurs de mouvement 535 à partir des différents vecteurs connus au moyen de différents algorithmes. Une première méthode de prédiction consiste à utiliser une méthode d'interpolation spatiale. Dans ce cas, les vecteurs de mouvement des zones connues de l'image courante 510 à décoder sont utilisés pour calculer une valeur possible du vecteur de mouvement. A titre d'exemple, on prend la valeur médiane des vecteurs de mouvement adjacents. Cette prédiction de mouvement par interpolation spatiale peut être utilisée au niveau de l'encodeur et du décodeur dans le but d'améliorer la compression. Toutefois, cette première méthode a l'inconvénient de ne pouvoir prédire efficacement que des mouvements avec très peu de temps à l'avance, c'est-à-dire uniquement pour le prochain macrobloc.
Les prédictions plus lointaines, c'est-à-dire par exemple la prédiction illustrée par la flèche 540, sont souvent peu exactes.
Une deuxième méthode de prédiction consiste à utiliser une interpolation temporelle. Selon cette méthode, le vecteur de mouvement est calculé à partir d'un macrobloc de l'image précédente 500 de l'instant t-1, occupant la même position que le macrobloc à décoder dans l'image 510 à l'instant t. Comme illustré à la figure 5, la prédiction par interpolation temporelle consiste ainsi à prédire le vecteur de mouvement 535 du macrobloc 530 à partir du vecteur de mouvement calculé pour le macrobloc 555. De manière simple, on peut reporter le même vecteur de mouvement calculé à l'image 500 à l'instant t-1 dans l'image 510 à l'instant t (schématisé par la flèche 550). Cette méthode d'interpolation temporelle peut encore être améliorée par extrapolation temporelle. Ainsi, les vecteurs de mouvement calculés sur une image précédente à un instant antérieur sont prolongés pour déterminer l'endroit où ils aboutissent si les mouvements continuent à la même vitesse sur plusieurs images successives. On a illustré à la figure 5 le cas particulier où les vecteurs de mouvement calculés à l'image 500 de l'instant t-1 sont prolongés pour l'image suivante 510 de l'instant t. Sur la figure 5, le vecteur de mouvement du macrobloc 560 a ainsi été prolongé pour couvrir en partie le macrobloc adjacent 555. On considère ainsi que si les mouvements se prolongeaient à l'identique, le vecteur de mouvement du macrobloc 560 se projetterait sur le macrobloc 530 de l'image courante 510 à l'instant t. En pratique, il est plus efficace de procéder à une extrapolation de tous les vecteurs de mouvement calculés à l'instant t-1 puis de lisser le résultat pour calculer un champ de vecteurs de mouvement complet. Différentes variantes de cette technique existent et sont utilisées 30 classiquement dans les méthodes de masquage d'erreurs pour corriger une partie manquante dans le flux vidéo.
Ces méthodes à bases d'extrapolation temporelle sont très efficaces et présentent l'avantage de prédire longtemps à l'avance les vecteurs de mouvement. A l'extrême, les vecteurs de mouvement de la prochaine image peuvent être prédits avant même de commencer à décoder cette image. Quelle que soit la méthode utilisée pour réaliser la prédiction, le calcul permet de déterminer un ensemble de zone dans des images de référence (telle que l'image précédente 500 calculée à l'instant t-1), dont l'utilisation semble probable pour le calcul de la compensation de mouvement.
En pratique, il est préférable de corriger les zones probables calculées pour qu'elles soient alignées sur des lignes de mémoire cache. Ainsi, dans le cas d'une image YUV 4:2:0, et d'une mémoire cache avec des lignes de 64 octets, si les différentes composantes sont stockées indépendamment, on aura quatre lignes nécessaires pour la composante Y et une ligne respectivement pour chaque composante CB et CR de l'image. Dans ce cas, pour être efficace, un encodeur sera paramétré de manière à aligner en mémoire cache les macroblocs sur les lignes de cette mémoire. On a donc intérêt à aligner les zones probables sur les frontières de 20 macrobloc, ce qui les alignera sur les lignes de mémoire cache et permettra donc une utilisation optimale de la mémoire cache. Par ailleurs, si le vecteur de mouvement prédit ne pointe pas sur un macrobloc exactement, on peut utiliser comme macrobloc utile, les quatre macroblocs entourant la zone initialement calculée. 25 Ainsi, l'étape de prédiction de mouvement permet de générer pour chaque macrobloc à décoder, une liste de macroblocs utiles dans des images de référence. On notera qu'à l'étape S411, selon ce mode de réalisation, on utilise de préférence une méthode d'extrapolation temporelle des vecteurs de 30 mouvement. En revenant à la figure 4, à l'issue de l'étape de prédiction de mouvement S411, une étape de mémorisation S412 des macroblocs à décoder MBn associés à des ensembles de macroblocs utiles MBn,u générés à l'étape de prédiction de mouvement S411 est mise en oeuvre. Lors de cette étape de mémorisation S412, un ensemble de taille prédéfinie N de macroblocs à décoder MBn, n = 1 à N, est mémorisé.
On notera que la taille prédéfinie N correspond à une distance de prédiction utile pour l'étape de prédiction de mouvement S411. Ainsi, les macroblocs qui sont mémorisés en mémoire cache dépendront de la prédiction de vecteur de mouvement calculée pour N macroblocs à décoder dans le futur.
Comme cela ressortira de la description ci-après, cette taille dépend notamment de la taille de la mémoire cache du processeur que l'on peut utiliser pour la prédiction de mouvement, de la taille des macroblocs à décoder et de la taille des macroblocs utiles. Par ailleurs, seule une sous-partie des macroblocs utiles sera effectivement utilisée, et une probabilité de recouvrement entre les différents macroblocs utiles existe. Comme les macroblocs utiles ne sont pas chargés en mémoire cache mais servent uniquement à choisir quelles parties seront ensuite mémorisées préférentiellement dans la mémoire cache, il est possible de prendre une taille prédéfinie N plus élevée que la taille de la mémoire cache. Toutefois, cette valeur ne doit pas être trop grande afin de ne pas mémoriser des macroblocs utiles trop à l'avance. A titre d'exemple non limitatif, pour une mémoire cache de taille de 1 Méga octet, et une vidéo encodée en format YUV 4:2:0, la taille d'un macrobloc est alors de 16* 16 + 2* 8* 8 = 384 octets. Pour chaque macrobloc, la taille des zones utiles correspond à quatre macroblocs par image de référence. En considérant quatre images de référence, on peut choisir par exemple N = 250, c'est-à-dire correspondant à 1/32 d'une image de 1080 pixels, soit environ deux lignes de macrobloc.
On obtient ainsi jusqu'à 4000 macroblocs utiles (250* 4* 4), soit 1,5 Mega octets.
Compte tenu toutefois de redondance entre les macroblocs utiles, ce nombre est inférieur à 4000. Cette étape de mémorisation S412 est décrite en détail à la figure 6a.
Pour chaque macrobloc MBn à décoder, on ajoute ce macrobloc MBn lors d'une étape d'ajout S600 dans une table de macroblocs à décoder MBD. La table MBD permet de stocker les numéros des macroblocs à décoder associés à une liste des index des macroblocs utiles pour chaque 10 macrobloc à décoder. A l'étape d'ajout S600, la liste associée au macrobloc MBn est vide. Une étape de lecture S605 permet de lire les vecteurs de mouvement prédits pour ce macrobloc MBn. Une étape de sélection S610 permet de déterminer les macroblocs 15 utiles MBn,u générés par l'étape de prédiction de mouvement S411 décrite précédemment. On obtient ainsi un ensemble de macroblocs utiles MBn,u associé au macrobloc à décoder MBn. L'ensemble des macroblocs utiles MBn,u contient les index des macroblocs utiles pour le macrobloc MBn. 20 Une étape de mise à jour S615 est ensuite mise en oeuvre pour mémoriser dans la table de macroblocs à décoder MBD les index des macroblocs utiles associés au macrobloc à décoder MBn, puis une étape d'incrémentation S620 est mise en oeuvre pour augmenter un poids associé à chaque macrobloc utile MBn,u mémorisé dans une table de macroblocs utiles 25 MBU. La table de macroblocs utiles MBU contient des index de tous les macroblocs utiles avec le poids estimé. Lors de l'étape d'incrémentation S620, lorsque le macrobloc utile est mémorisé pour la première fois, il est ajouté avec un poids égal à 1. En revanche, s'il est déjà présent, son poids est incrémenté d'une 30 unité. Ce facteur de poids est ainsi augmenté à chaque citation du macrobloc utile dans un ensemble associé à un macrobloc MBn à décoder, c'est-à-dire lorsque le macrobloc utile est sélectionné lors de l'étape de prédiction de mouvement S411. L'utilisation de ce poids comme critère de probabilité pour la gestion de la mémoire cache sera décrite ultérieurement.
Après l'étape de mémorisation S412, en revenant à la figure 4, le procédé de décodage se poursuit par des étapes classiques de décodage S315 à S335 décrites précédemment en référence à la figure 3. En revanche, l'étape de compensation du mouvement S440 est modifiée pour optimiser la gestion d'une mémoire cache lorsqu'un macrobloc de référence est obtenu à partir d'un vecteur de mouvement calculé lors de l'étape de compensation de mouvement. Cette étape de compensation de mouvement S440 est décrite en détail à la figure 6b. Ainsi, lors de l'étape de compensation de mouvement, un macrobloc de référence est déterminé. Une étape de demande S630 est mise en oeuvre afin de rechercher la présence du macrobloc de référence MBc dans la mémoire cache du processeur. En pratique, on vérifie dans une étape de test S635 si le macrobloc MBc est référencé dans une liste L référençant les macroblocs présents dans la mémoire cache. Si tel est le cas, une étape d'écriture S670 est mise en oeuvre afin de référencer le macrobloc de référence MBc en tête de la liste L référençant les macroblocs présents dans la mémoire cache.
Sinon, si à l'issue de l'étape de test S635, le macrobloc de référence MBC n'est pas présent dans la liste L, on met en oeuvre une étape de suppression d'un macrobloc de référence dans la mémoire cache afin de libérer de la place avant le chargement du macrobloc de référence MBc à ajouter. Dans ce mode de réalisation, afin de supprimer un macrobloc de référence de la mémoire cache, une étape de sélection S640 est mise en oeuvre pour sélectionner un sous-ensemble de taille K de macroblocs de référence référencés en fin de la liste L référençant les macroblocs présents dans la mémoire cache. Comme la liste L est triée par ordre d'utilisation la plus récente, on obtient ainsi les K macroblocs les plus anciennement utilisés.
La taille K est choisie en fonction de la taille de la liste L, et par exemple, représente les 20% de macroblocs les moins récemment utilisés. Une étape de vérification S645 est alors mise en oeuvre afin de vérifier le poids associé à chacun des macroblocs du sous-ensemble de taille K. Ce poids correspond au poids mémorisé pour chaque macrobloc utile dans la table des macroblocs utiles MBU comme décrit précédemment en référence à l'étape d'incrémentation S620. Une étape de sélection S650 est adaptée ensuite à sélectionner le macrobloc présentant le poids le plus faible. Ce macrobloc de référence est alors supprimé effectivement de la 15 mémoire cache lors d'une étape d'effacement S660, pouvant être mise en oeuvre par une instruction CLFLUSH. Le référencement de ce macrobloc est également supprimé dans la liste L lors de l'étape de suppression S655. Ces étapes permettent ainsi de supprimer le macrobloc de référence 20 présentant un critère de probabilité le plus faible, tel que mis à jour lors de l'étape de prédiction de mouvement S411. Ici, ce critère de probabilité est en outre combiné au critère d'utilisation déterminé lors de l'étape de compensation de mouvement S440, dès lors que le macrobloc à supprimer est choisi parmi un sous-ensemble de 25 macroblocs les plus anciennement utilisés. Une étape de chargement S665 est mise en oeuvre ensuite pour charger effectivement le macrobloc de référence MBc dans la mémoire cache. Ce chargement peut être réalisé à l'aide d'une instruction PREFETCHNTA. 30 Enfin, l'étape de mise à jour S670 permet de mettre en tête de liste L le référencement de ce macrobloc MBc qui vient d'être ajouté à la mémoire cache et qui est utilisé par l'étape de compensation de mouvement en cours.
On notera que ce processus permet ainsi de classer dans la liste L les macroblocs effectivement présents en mémoire cache par ordre d'utilisation la moins récente. On notera par ailleurs qu'on n'a pas représenté le cas où il reste de la place disponible dans la mémoire cache, c'est-à-dire en début du processus de décompression d'images. Dans ce cas, à l'issue de l'étape de test S635, l'étape de chargement S665 serait mise en oeuvre directement afin d'ajouter le macrobloc de référence MBc à la mémoire cache.
En revenant à la figure 4, l'étape de compensation de mouvement mise en oeuvre ainsi sur un macrobloc MBn est suivi d'une étape de suppression S441 du macrobloc ainsi décodé MBn de la table de macroblocs à décoder MBD. Le poids associé à chaque macrobloc utile MBn,u de l'ensemble des macroblocs utiles associés à ce macrobloc à supprimer MBn doit alors être diminué dans la table des macroblocs utiles MBU. Cette étape de suppression S441 est décrite en détail en référence à la figure 6c. Ainsi, pour retirer un macrobloc MBn décodé de la table des macroblocs à décoder MBD, une étape de lecture S675 permet de lire dans la table des macroblocs à décoder MBD les index des macroblocs utiles MBn,u associés à ce macrobloc à supprimer MBn. Pour chacun de ces macroblocs utiles MBn,u, une étape de diminution S680 du poids associé est mise en oeuvre.
En pratique, le poids est diminué d'une unité dans la table des macroblocs utiles MBU. Si le poids devient nul, le macrobloc utile MBn,u peut être supprimé de la table des macroblocs utiles MBU. Finalement, une étape de suppression S685 du macrobloc MBn 30 décodé est mise en oeuvre pour supprimer ce macrobloc et la liste associée des index des macroblocs utiles MBn,u de la table des macroblocs à décoder MBD.
Une étape d'ajout S442 permet d'ajouter un macrobloc suivant MBn+ N dans la table des macroblocs à décoder MBD. Cette étape S442 est identique à l'étape S412 décrite précédemment pour les premiers N macroblocs à décoder et est décrite en détail en référence à la figure 6a. En pratique, pour ce nouveau macrobloc à décoder MBn+ N, on met à jour la table des macroblocs utiles MBU et la valeur des poids associés à chaque macrobloc utile. Lors de l'étape d'ajout S442, si l'indice n+ N est supérieur au nombre de macroblocs dans l'image, cette étape n'est pas réalisée dès lors qu'il n'y a pas de nouveau macrobloc à ajouter dans la table de macroblocs à décoder MBD. Puis le procédé de décodage se poursuit par des étapes identiques décrites en référence à la figure 3, en considérant le macrobloc MBn suivant à décoder, puis la tranche d'image suivante et enfin une étape de filtrage S355 avant de décoder l'image suivante. On a décrit ainsi un procédé de décodage permettant de gérer au mieux la mémoire cache d'un processeur. Grâce à une prédiction des zones de référence utiles pour décoder les prochains macroblocs, on utilise le résultat de cette prédiction de mouvement pour gérer le contenu de la mémoire cache, en supprimant les macroblocs ayant le moins de chance d'être utilisés dans la suite du processus de décodage, afin de favoriser la mémorisation en mémoire cache des macroblocs réellement utilisés.
Cette solution permet de réduire le nombre d'accès à la mémoire principale, traditionnellement lent, en gardant les données les plus utiles dans la mémoire cache, d'accès rapide. Le décodage d'une séquence vidéo peut ainsi être plus rapide, permettant de décoder des images de plus haute résolution ou encore d'utiliser le processeur pour d'autres calculs. On notera en particulier que l'étape de calcul de prédiction des mouvements est un calcul traditionnellement mis en oeuvre dans les processeurs lors du décodage pour d'autres opérations, et notamment pour le masquage d'erreurs. Le processus de décodage selon l'invention ne rajoute donc pas de calcul complexe et n'augmente pas significativement le coût du processeur.
Par ailleurs, la mémoire principale du processeur est moins sollicitée ce qui permet à d'autres processeurs d'avoir un accès plus rapide à cette mémoire. On va décrire à présent en référence à la figure 7, un dispositif de décodage adapté à mettre en oeuvre le procédé décrit précédemment.
Ce dispositif de décodage comprend principalement des moyens de prédiction de mouvement 710 et des moyens de décompression 720. Les moyens de prédiction de mouvement 710 sont adaptés, comme décrits précédemment, à identifier les macroblocs MBn,u associés à chaque macrobloc à décoder MBn.
Les moyens de décompression 720 comportent de manière classique des moyens de décodage entropique 721, de quantification inverse 722 et de transformation inverse 723. Par ailleurs, les moyens de compensation de mouvement 724 sont adaptés à accéder à la mémoire cache 730 pour obtenir et mémoriser les macroblocs de référence effectivement utilisés. La gestion du contenu de cette mémoire cache est mise en oeuvre grâce aux tables MBD et MBU , ainsi qu'au travers de la liste L telle que décrite précédemment. Par ailleurs, des moyens de suppression 740 permettent de supprimer de la table des macroblocs à décoder MBD les macroblocs après décodage, les macroblocs utiles de valeur de poids nul de table des macroblocs utiles MBU ainsi que les macroblocs les moins récemment utilisés de la mémoire cache 730 et de la liste L comme décrit précédemment en référence à la figure 4.
Ce dispositif de décodage peut être incorporé dans un dispositif informatique tel qu'un processeur P illustré à la figure 8.
Ce processeur P comprend au moins une unité centrale de traitement (CPU) 801. Il pourrait également comporter plusieurs unités centrales fonctionnant en parallèle.
Chaque unité centrale de traitement possède un accès direct à une mémoire très rapide mais de taille limitée, la mémoire cache 802. Dans les processeurs récents de type Intel Pentium 4 , la mémoire cache ne permet pas de stocker n'importe quelle donnée. La mémoire cache contient une copie de certaines données stockées dans la mémoire principale.
Toute donnée utilisée par le processeur doit provenir de la mémoire cache. Si la donnée nécessaire n'est pas présente dans la mémoire cache, elle est d'abord copiée dans la mémoire cache avant d'être lue par le processeur. Toute donnée écrite par le processeur est elle aussi systématiquement stockée dans la mémoire cache, puis au moment où elle doit être effacée de la mémoire cache, elle est copiée dans la mémoire principale. Ce traitement est en général effectué automatiquement par le microprocesseur. Cependant, certaines opérations de gestion de la mémoire cache 802 peuvent être réalisées explicitement par un logiciel mis en oeuvre dans l'unité centrale 801 avec des instructions de chargement à l'avance (du type PREFETCHNTA) sur les architectures Intel Pentium 4 (des données de la mémoire principale sont copiées dans la mémoire cache). Le déchargement de la mémoire cache peut également être réalisé à partir d'instructions de déchargement du type CLFLUSH sur les architectures Intel Pentium 4 (si les données sont modifiées dans la mémoire cache, elles sont mises à jour dans la mémoire principale, puis dans tous les cas, la copie en mémoire cache est effacée) Typiquement, la mémoire cache 802 est organisée en lignes de mémoire de taille fixe. Chaque instruction de chargement ou de déchargement s'applique à un nombre entier de ligne. Chaque ligne correspond dans la mémoire principale à une zone mémoire alignée sur un multiple de la taille de la ligne de cache.
A titre d'exemple, dans un processeur Intel Pentium 4 , une ligne de mémoire représente 64 octets. Dans d'autres types de processeurs (Nvidia 8800 par exemple), la mémoire cache est une mémoire distincte de la mémoire principale et tous les mouvements de mémoire doivent être gérés par le logiciel. Cette mémoire cache 802 peut stocker temporairement les données de travail, et comme indiqué précédemment, les macroblocs de référence effectivement utilisés lors de l'étape de compensation de mouvement mis en oeuvre par le procédé de décodage.
La différence de vitesse est variable en fonction des architectures et des technologies mais typiquement, on peut constater une latence de 4 nanosecondes sur une mémoire cache 802 et de 40 nanosecondes sur une mémoire vive 804 (Random Access Memory ou RAM), soit un rapport de vitesse de 1 à 10.
De manière générale, les tailles des mémoires caches ne permettent pas de stocker une image décodée entière comme décrit précédemment. Par ailleurs, bien que l'on ait décrit précédemment dans l'exemple de réalisation une structure de gestion de stockage des données entre une mémoire vive 804 et une mémoire cache 802 d'un processeur, la méthode peut s'appliquer de manière générale pour optimiser les accès entre un niveau de mémoire rapide et un autre niveau de mémoire plus lent. L'unité de traitement 801 est connecté à un bus de données 810 permettant de communiquer avec les autres parties de processeur P. En particulier, l'unité centrale 801 peut exécuter les instructions provenant d'une mémoire morte 803 (Read Only Memory ou ROM) lors de la mise sous tension du processeur, et des instructions concernant une application logicielle provenant de la mémoire principale 804 après la mise sous tension. On notera que la mémoire principale 804 fonctionne comme une zone de travail pour l'unité centrale 801, sa capacité pouvant être augmentée par une mémoire vive additionnelle connectée à un port d'extension (non illustré).
Les instructions concernant l'application logicielle peuvent être chargées dans la mémoire principale 804 à partir du disque dur 806 ou encore de la mémoire ROM 803. De manière générale, un moyen de stockage d'informations, lisible par un ordinateur ou par un microprocesseur, intégré ou non à l'appareil, éventuellement amovible, est adapté à mémoriser un ou plusieurs programmes dont l'exécution permet la mise en oeuvre du procédé de décodage selon l'invention. Une telle application logicielle, lorsqu'elle est exécutée par l'unité centrale 801 entraine l'exécution des étapes de l'invention présentées précédemment. Dans l'exemple illustré à la figure 8, le processeur P est un dispositif émetteur relié à un réseau de communication 80 par l'intermédiaire d'une interface de communication classique 805.
En particulier, l'application logicielle lorsqu'elle est exécutée par l'unité centrale 801 peut être adaptée à réagir à des requêtes de clients reçues par le biais de l'interface de communication 805. Des données peuvent également être fournies par l'intermédiaire du réseau de communication 80.
Le processeur peut être également relié à une caméra numérique 81 pour l'acquisition de vidéo à décoder. Traditionnellement, le processeur P comporte un lecteur de disquette 807 adapté à coopérer avec des disquettes 82. Des interfaces classiques, et notamment un micro 84, un écran 85 ou un clavier 86 peuvent également être reliées au processeur P, permettant d'afficher des informations ou de recevoir des entrées de la part d'un utilisateur. A titre d'exemple non limitatif, l'appareil décrit ci-dessus peut être un micro-ordinateur ou une station de travail ou un assistant numérique ou un téléphone portable ou un caméscope numérique ou un appareil photo numérique ou une caméra de vidéo surveillance, ou encore un lecteur DVD ou un serveur multimédia ou un élément routeur dans un réseau.
Cet appareil peut intégrer directement un capteur numérique d'images ou bien être connecté à une caméra numérique comme décrit précédemment, ou encore un scanner ou tout autre moyen d'acquisition ou de stockage d'images relié à une carte graphique et fournissant à l'appareil des données multimédia. L'appareil peut également avoir accès à des données multimédias sur un support de stockage, par exemple le disque dur 806, ou encore recevoir un flux multimédia à décoder à partir du réseau de communication 80. On notera par ailleurs que le dispositif de codage décrit précédemment en référence à la figure 2 peut être modifié pour s'adapter au processus de décodage conforme à l'invention décrit précédemment. Ainsi, l'encodeur, afin d'optimiser l'encodage d'une séquence vidéo, peut connaître à l'avance les caractéristiques de la gestion de la mémoire cache au niveau du décodeur.
Ces caractéristiques peuvent être connues à l'avance sous forme d'un fichier de configuration stocké sur l'encodeur ou encore être reçues dynamiquement lorsque l'encodeur est un serveur relié par un réseau de communication à un dispositif client fournissant ses caractéristiques de décodage.
Ainsi, dans le cas d'un échange de séquence vidéo par un réseau de communication, un dispositif client peut dialoguer avec le serveur au travers du réseau de communication au moment de l'établissement de la communication, par exemple pendant l'échange des requêtes entre les dispositifs. En particulier, les caractéristiques que le dispositif client peut adresser au serveur comprennent la taille de la mémoire cache du dispositif client, les algorithmes de prédiction utilisés (par exemple extrapolation temporelle ou interpolation spatiale), la longueur de la prédiction, ... Dans le cas où le dispositif client ne fournit pas tous ou certains paramètres, des valeurs par défaut peuvent être utilisées au niveau de l'encodeur. Ces paramètres sont alors utilisés par l'encodeur pour simuler le fonctionnement de la mémoire cache du décodeur.
Pour cela, en se reportant à la figure 2, lors de l'étape de décompression mise en oeuvre par les moyens de décompression 170, les algorithmes décrits précédemment en référence aux figures 4, 5, 6a, 6b, 6c sont mis en oeuvre.
Cette simulation permet de simuler le contenu de la mémoire cache en macroblocs de référence. En pratique, lors de l'étape de compression, on utilise une optimisation de l'encodage avec calcul d'un coût d'accès mémoire de telle sorte que le choix d'un bloc de données de référence dans le calcul des vecteurs de mouvement est dépendant du contenu de la mémoire cache afin de réduire le coût mémoire. L'optimisation est réalisée en évaluant le coût en nombre de transfert de mémoire lors du choix d'une zone de référence dans le calcul des vecteurs de mouvement mis en oeuvre par les moyens de calcul de mouvement 161.
Classiquement, les encodeurs utilisent une méthode d'optimisation débit/distorsion pour choisir les meilleurs modes d'encodage en optimisant simultanément le débit et la qualité visuelle. On pourra se reporter notamment à l'article "Complexity adaptive H.264 encoding for light weight streams", Acoustics, Speech and Signal Processing, 2006, ICASSP 2006 proceedings, 2006 IEE international conference on publication date : 14- 19 May 2006, volume 2. Une méthode mettant en oeuvre une optimisation lagrangienne est décrite pour optimiser le coût en processeur. Cette méthode peut être étendue pour ajouter d'autres coûts, comme 25 par exemple un coût d'accès mémoire. Ici, le coût d'accès à la mémoire est calculé en fonction de l'état de la mémoire cache tel que simulé par l'encodeur par les moyens de décompression 170. L'état de la mémoire cache peut ainsi être évalué grâce à la liste L 30 listant les macroblocs présents effectivement dans la mémoire cache. Si lors du calcul du vecteur de mouvement, la zone de référence est déjà mémorisée en mémoire cache, le coût d'accès sera par exemple fixé à 1.
A contrario, le coût d'accès à une mémoire vive sera de 10, caractérisant ainsi le rapport de 10 entre les vitesses d'accès à la mémoire cache et à la mémoire principale du processeur. L'optimisation ainsi décrite permet de sélectionner, par les moyens de calcul de mouvement 161, les meilleurs macroblocs de référence pour l'encodage d'un macrobloc, afin d'utiliser préférentiellement les macroblocs déjà présents en mémoire cache tout en obtenant une qualité suffisante et un débit limité. Concrètement, l'encodeur aura ainsi tendance à sélectionner les 10 macroblocs de référence déjà mémorisés dans la mémoire cache pour encoder un nouveau macrobloc. Ainsi, l'encodeur permet à partir d'une description de l'architecture du décodeur, de simuler la gestion de la mémoire cache au niveau du décodeur et de tenir compte de cette mémoire cache pour sélectionner les blocs de 15 référence à prendre en compte pour la compensation de mouvement. Bien entendu, la présente invention n'est pas limitée aux exemples de description décrits ci-dessus. Ainsi, bien que les procédés de codage et de décodage ont été décrits en référence à des macroblocs à décoder ou encoder, ils s'appliquent 20 de la même manière sur tous types de blocs de données numériques à encoder ou décoder. Par ailleurs, les critères mis en oeuvre pour déterminer les blocs de données à supprimer de la mémoire cache peuvent être différents, et en particulier, ne tenir compte que d'un critère de probabilité défini lors de l'étape 25 de prédiction de mouvement, ou encore combinés d'autres critères que les critères de probabilité et d'utilisation définis précédemment.

Claims (18)

REVENDICATIONS
1. Procédé de décodage d'une séquence d'images comprenant une série de blocs de données à décoder, comportant une étape de prédiction de mouvement (S411) adaptée à générer, pour chaque bloc de données à décoder (MBn), un ensemble de blocs de données utiles (MBn,u) dans des images de référence, et une étape de compensation de mouvement (S440) dans laquelle un bloc de données de référence (MBc) est obtenu à partir d'un vecteur de mouvement calculé, caractérisé en ce qu'à l'étape de compensation de mouvement (S440), ledit bloc de données de référence (MBc) est ajouté dans une mémoire (730), et en ce qu'au moins un bloc de données de référence (MBc) est supprimé de ladite mémoire (730), ledit bloc de données de référence (MBc) à supprimer étant déterminé en fonction d'un critère de probabilité défini lors de l'étape de prédiction de mouvement (S411).
2. Procédé de décodage conforme à la revendication 1, caractérisé en ce que ledit critère de probabilité est défini par un poids associé à chaque bloc de données utile (MBn,u), ledit poids étant augmenté lorsque ledit bloc de données utile (MBn,u) est sélectionné lors de l'étape de prédiction de mouvement (S411).
3. Procédé de décodage conforme à la revendication 2, caractérisé en ce que le poids associé à chaque bloc de données utiles (MBn,u) de l'ensemble des blocs de données utiles associé à un bloc de données à décoder (MBn) est diminué après décodage dudit bloc de données à décoder (MBn).
4. Procédé de décodage conforme à l'une des revendications 1 à 3, caractérisé en ce qu'il comprend une étape de mémorisation (S412) d'un ensemble de taille prédéfinie (N) de blocs de données à décoder (MBn) associés respectivement aux ensembles de blocs de données utiles (MBn,u) générés à l'étape de prédiction de mouvement (S411).
5. Procédé de décodage conforme à l'une des revendications 1 à 4, caractérisé en ce que ledit bloc de données de référence (MBc) à supprimer estdéterminé en fonction en outre d'un critère d'utilisation lors de l'étape de compensation de mouvement (S440).
6. Procédé de décodage conforme à la revendication 5, caractérisé en ce qu'à l'issue de l'étape de compensation de mouvement (S440), ledit bloc de données de référence obtenu (MBc) est référencé en tête d'une liste (L) référençant des blocs de données présents dans ladite mémoire (730), et en ce que ledit bloc de données de référence supprimé de ladite mémoire (730) est choisi parmi un sous-ensemble de blocs de données référencés en fin de ladite liste (L) référençant les blocs de données présents dans ladite mémoire (730).
7. Procédé de décodage conforme à la revendication 6, caractérisé en ce ledit bloc de données de référence à supprimer est le bloc de données dudit sous-ensemble présentant un critère de probabilité le plus faible.
8. Procédé de décodage conforme à l'une des revendications 1 à 7, caractérisé en ce ladite mémoire (730) est une mémoire d'accès rapide de petite taille.
9. Procédé de décodage conforme à l'une des revendications 1 à 8, caractérisé en ce que ladite étape de prédiction de mouvement (S411) met en oeuvre une méthode à base d'extrapolation temporelle des vecteurs de mouvement associés à des macroblocs d'une image.
10. Procédé de décodage conforme à la revendication 9, caractérisé en ce que lors de ladite étape de prédiction de mouvement (S411), pour chaque macrobloc à décoder, des vecteurs de mouvement sont calculés par rapport à plusieurs images de référence, l'ensemble de macroblocs utiles correspondant auxdits macroblocs pointés par lesdits vecteurs de mouvement dans lesdites images de référence.
11. Procédé de codage d'une séquence d'images comprenant une série de blocs de données à encoder, comportant une étape de compression d'une image en image encodée avec compensation de mouvement et une étape de décompression de ladite image encodée en image de référence, caractérisé en qu'à ladite étape de décompression, le procédé de décodage conforme à l'une des revendications 1 à 10 est mis en oeuvre, le choix d'un bloc de données de référence dans le calcul des vecteurs mouvement dans laditeétape de compression étant dépendant du contenu en blocs de données de référence d'une mémoire, simulé lors de ladite étape de décompression.
12. Procédé de codage conforme à la revendication 11, caractérisé en ce qu'il comprend une étape d'optimisation d'un encodage avec calcul d'un coût d'accès mémoire.
13. Dispositif de décodage d'une séquence d'images comprenant une série de blocs de données à décoder, comportant des moyens de prédiction de mouvement (710) adaptés à générer, pour chaque bloc de données à décoder (MBn), un ensemble de blocs de données utiles (MBn,u) dans des images de référence, et des moyens de compensation de mouvement (724) adaptés à obtenir un bloc de données de référence (MBc) à partir d'un vecteur de mouvement calculé, caractérisé en ce qu'il comprend une mémoire (730) adaptée à mémoriser un bloc de données de référence obtenu (MBc) par lesdits moyens de compensation de mouvement (724), et des moyens de suppression (740) d'au moins un bloc de données de référence de ladite mémoire (730), ledit bloc de données de référence à supprimer étant déterminé en fonction d'un critère de probabilité défini par lesdits moyens de prédiction de mouvement (710).
14. Dispositif de décodage conforme à la revendication 13, caractérisé en ce que ledit bloc de données de référence (MBc) à supprimer est déterminé en fonction en outre d'un critère d'utilisation par lesdits moyens de compensation de mouvement (724).
15. Dispositif de décodage conforme à l'une des revendications 13 ou 14, caractérisé en ce que ladite mémoire (730) est une mémoire à accès 25 rapide de petite taille.
16. Dispositif de codage d'une séquence d'images comprenant une série de blocs de données à encoder, comportant des moyens de compression (160) d'une image en image encodée avec compensation de mouvement et des moyens de décompression (170) de ladite image encodée en image de 30 référence, caractérisé en ce que lesdits moyens de décompression (170) sont adaptés à mettre en oeuvre le procédé de décodage conforme à l'une des revendications 1 à 10, le choix d'un bloc de données de référence dans lecalcul des vecteurs de mouvement mis en oeuvre par lesdits moyens de compression (160) étant dépendant du contenu d'une mémoire en blocs de données de référence, simulé par les moyens de décompression (170).
17. Programme d'ordinateur chargeable dans un système informatique, ledit programme contenant des instructions permettant la mise en oeuvre du procédé de décodage selon l'une des revendications 1 à 10, lorsque ce programme est chargé et exécuté par un système informatique.
18. Programme d'ordinateur chargeable dans un système informatique, ledit programme contenant des instructions permettant la mise en oeuvre du procédé de codage selon l'une des revendications 11 ou 12, lorsque ce programme est chargé et exécuté par un système informatique.
FR0850841A 2008-02-11 2008-02-11 Procede de decodage et codage d'une sequence d'images avec compensation de mouvement Expired - Fee Related FR2927494B1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR0850841A FR2927494B1 (fr) 2008-02-11 2008-02-11 Procede de decodage et codage d'une sequence d'images avec compensation de mouvement

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0850841A FR2927494B1 (fr) 2008-02-11 2008-02-11 Procede de decodage et codage d'une sequence d'images avec compensation de mouvement

Publications (2)

Publication Number Publication Date
FR2927494A1 true FR2927494A1 (fr) 2009-08-14
FR2927494B1 FR2927494B1 (fr) 2010-04-23

Family

ID=40029140

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0850841A Expired - Fee Related FR2927494B1 (fr) 2008-02-11 2008-02-11 Procede de decodage et codage d'une sequence d'images avec compensation de mouvement

Country Status (1)

Country Link
FR (1) FR2927494B1 (fr)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6996178B1 (en) * 2001-08-27 2006-02-07 Cisco Technology, Inc. Look ahead motion compensation
WO2008014472A2 (fr) * 2006-07-27 2008-01-31 Qualcomm Incorporated Récupération efficace du processus de décodage vidéo de compensation de mouvement

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6996178B1 (en) * 2001-08-27 2006-02-07 Cisco Technology, Inc. Look ahead motion compensation
WO2008014472A2 (fr) * 2006-07-27 2008-01-31 Qualcomm Incorporated Récupération efficace du processus de décodage vidéo de compensation de mouvement

Also Published As

Publication number Publication date
FR2927494B1 (fr) 2010-04-23

Similar Documents

Publication Publication Date Title
EP2991351B1 (fr) Procédé de décodage d'images
EP2777269B1 (fr) Procédé de codage et décodage d'images, dispositif de codage et décodage et programmes d'ordinateur correspondants
FR2894421A1 (fr) Procede et dispositif de decodage d'un flux video code suivant un codage hierarchique
FR2951345A1 (fr) Procede et dispositif de traitement d'une sequence video
FR3012004A1 (fr) Procede de codage et de decodage d'images, dispositif de codage et de decodage d'images et programmes d'ordinateur correspondants
FR3014278A1 (fr) Procede de codage et de decodage d'images, dispositif de codage et de decodage d'images et programmes d'ordinateur correspondants
EP2761871B1 (fr) Estimation de mouvement au niveau du décodeur par mise en correspondance de modèles
EP2716045B1 (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
WO2018220311A1 (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
FR2927494A1 (fr) Procede de decodage et codage d'une sequence d'images avec compensation de mouvement
FR2957744A1 (fr) Procede de traitement d'une sequence video et dispositif associe
FR3057130A1 (fr) Procede de codage d'une image, procede de decodage, dispositifs, equipement terminal et programmes d'ordinateurs associes
WO2020260843A1 (fr) Procédé d'encodage et de décodage vidéo par signalisation d'un sous-ensemble de candidat
WO2020002795A1 (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
WO2013007920A1 (fr) Procédé de codage et décodage d'images, dispositif de codage et décodage et programmes d'ordinateur correspondants
FR2851109A1 (fr) Procede et dispositif de determination de parametres d'un modele d'estimation de la distorsion d'une sequence d'images
FR2930107A1 (fr) Procede et dispositif de traitement de donnees d'une sequence video.

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20141031