Procédé et dispositif de codage d'une image utilisant un masque de prédiction, procédé et dispositif de décodage, signal et programmes d'ordinateur correspondants. 1. Domaine de l'invention Le domaine de l'invention est celui du codage et du décodage d'images, et notamment d'un flux vidéo constitué d'une série d'images successives. Plus précisément, l'invention s'applique à la compression d'images ou de séquences d'images utilisant des transformées par bloc.
L'invention peut notamment s'appliquer au codage vidéo mis en œuvre dans les codeurs vidéo actuels (MPEG, H.264, etc) ou à venir (ITU-T/VCEG (H.265) ou ISO/MPEG (HVC)). 2. Art antérieur
On connaît déjà de nombreuses techniques de compression de données vidéo. Parmi celles-ci, de nombreuses techniques de codages vidéo utilisent une représentation par bloc de la séquence vidéo, comme par exemple celles mettant en œuvre les standards de compression vidéo issus de l'organisation MPEG (MPEG-I, MPEG-2, MPEG-4 partie 2, ...) ou de ITTU-T (H.261, ..., H.264/AVC). Ainsi, selon la technique H.264, chaque image peut être découpée en tranches (en anglais « slice »), elles-mêmes découpées en macroblocs, qui sont ensuite subdivisés en blocs. Un bloc est constitué d'un ensemble de pixels. Selon le standard H.264, un macrobloc est un bloc carré de taille égale à 16x16 pixels, qui peut être redécoupé en blocs de taille 8x8, 16x8 ou 8x16, les blocs 8x8 pouvant ensuite être redécoupés en sous-blocs de taille 4x4, 8x4 ou 4x8.
Selon les techniques connues, les macroblocs ou les blocs peuvent être codés par prédiction intra-images ou inter-images. En d'autres termes, un macrobloc ou bloc peut être codé par : une prédiction temporelle, c'est-à-dire en référence à un bloc ou macrobloc de référence appartenant à une ou plusieurs autres images ; et/ou - une prédiction spatiale, en fonction des blocs ou macroblocs de
l'image courante.
Dans le cas d'une prédiction spatiale, la prédiction d'un bloc courant ne peut être effectuée qu'à partir des blocs qui ont été précédemment codés, à l'aide d'une technique d'extrapolation directionnelle des valeurs de texture codées- décodées sur les blocs voisins. On dit que ces blocs appartiennent au « voisinage causal » du bloc courant, comprenant les blocs situés avant le bloc courant selon un sens de parcours prédéterminé des blocs dans l'image.
Ainsi, pour prédire un macrobloc ou un bloc à partir de son voisinage causal, neuf modes de prédiction intra sont utilisés selon le standard ITU-T H.264. Ces modes de prédiction comprennent huit modes correspondant à une orientation donnée pour la recopie des pixels à partir des blocs voisins précédemment codés- décodés (orientation verticale, horizontale, diagonale vers le bas gauche, diagonale vers le bas droite, verticale droit, verticale gauche, horizontal montant, horizontal descendant), et un mode correspondant à la moyenne des pixels adjacents au bloc à partir des blocs voisins.
Malheureusement, la prédiction spatiale est insuffisante à elle seule, d'où la nécessité de coder une erreur de prédiction. Ainsi, pour chaque bloc est codé un bloc résiduel, encore appelé résidu de prédiction, correspondant au bloc original diminué d'une prédiction. Pour cela, les coefficients de ce bloc sont quantifiés, après une éventuelle transformation (par exemple la transformée DCT - en anglais « Discrète cosine transform », en français « transformée en cosinus discrète »), puis codés par un codeur entropique. Au codeur, le mode de prédiction choisi est celui permettant d'obtenir le meilleur compromis débit-distorsion.
Ainsi, en mode de codage intra, une prédiction des valeurs de texture du bloc courant est établie à partir des valeurs de texture codées-décodées des blocs voisins, puis un résidu de prédiction vient s'ajouter à cette prédiction.
Dans le cas d'une prédiction temporelle, le standard ITU-T H.264 utilise un déplacement au sens du mouvement pour prédire un bloc ou un macrobloc à partir de son voisinage temporel. Le vecteur de mouvement est alors codé et transmis.
Des méthodes alternatives de prédiction intra ont été proposées récemment, basées notamment sur les corrélations entre pixels voisins.
Par exemple, l'article « Intra prédiction by template matching » de Tan et al. présente une telle technique de synthèse de texture basée sur une prédiction intra, encore appelée « template matching ». Un schéma simplifié de cette technique est illustré en figure 1.
Cette technique permet de synthétiser un pixel p (ou un groupe de pixels) dans une zone cible C de l'image, en tenant compte d'une zone source S de la même image. Elle est basée sur les corrélations entre pixels voisins. Ainsi, la valeur de chaque pixel p de la zone cible C est déterminée en comparant (11) les pixels N(p) appartenant au voisinage causal du pixel p, définissant un « template » ou « masque » du pixel p, avec tous les voisins de la zone source S. Le masque N(p) est donc constitué de pixels préalablement codés/décodés, ce qui évite la propagation d'erreurs. Si l'on trouve une région de la zone source S similaire au masque défini par N(p), alors on affecte (12) au pixel p de la zone cible C, le pixel (ou groupe de pixels) de la zone source S présentant le voisinage le plus similaire.
Classiquement, la région la plus proche du masque dans l'image source, correspondant à une région similaire au masque, est choisie sur des critères de minimisation de l'erreur quadratique ou absolue selon la formule suivante : N(q') = aτg min d(N(p),N(q))
N(q)≡S avec :
- q un pixel de la zone source S ;
- d une fonction mesurant la distance entre deux masques selon le critère de minimisation retenu.
Selon cette technique, les pixels sont synthétisés dans un ordre fixe et prédéterminé, généralement de haut en bas et de gauche à droite (en anglais « raster scan order »).
La technique classique de « template matching » permet de synthétiser des textures constituées de structures aléatoires.
En revanche, elle n'est pas très efficace lorsqu'elle est appliquée sur des images naturelles, composées de textures mixtes et de contours.
La technique de « template matching » a également été étendue au codage des blocs d'un codeur H.264 par Wang et al., comme décrit dans le document « Priority-based template matching intra prédiction. On peut ainsi coder/décoder un macrobloc à l'aide de blocs (composés de 4x4 pixels selon le standard H.264) reconstruits par la technique de « template matching ».
Comme illustré en figure 2, dans l'application de Wang et al., les blocs sont classiquement traités selon un ordre de parcours de gauche à droite et de haut en bas (« raster scan ») des blocs dans le macrobloc. Par conséquent, le macrobloc est codé/décodé (ou reconstruit) bloc par bloc. Le traitement des blocs l'un à la suite de l'autre permet d'utiliser les pixels d'un bloc précédemment codé/décodé comme « zone source » pour un bloc courant, suivant l'ordre de parcours.
Malheureusement, cette technique n'est pas optimale car elle contraint la reconstruction du macrobloc à suivre les blocs de 4x4 pixels.
Il existe donc un besoin pour de nouvelles techniques de codage/décodage d'images mettant en œuvre une technique de synthèse de type « template matching », permettant d'améliorer ces techniques de l'art antérieur.
3. Exposé de l'invention L'invention propose une solution nouvelle qui ne présente pas l'ensemble de ces inconvénients de l'art antérieur, sous la forme d'un procédé de codage d'au moins une image, découpée en zones de taille standard, dites macroblocs, un macrobloc comprenant un ensemble de blocs de pixels.
Selon l'invention, un tel procédé met en œuvre, pour au moins un macrobloc courant d'une image courante : au moins deux itérations des étapes suivantes :
- affectation d'un niveau de priorité de codage à au moins un pixel du macrobloc courant, adjacent à au moins un pixel précédemment prédit, selon un critère de détermination de priorité prédéterminé ; - sélection d'un pixel présentant le niveau de priorité le plus élevé, dit
pixel prioritaire ;
— prédiction d'un ensemble de pixels comprenant le pixel prioritaire, dit ensemble cible, mettant en œuvre les sous-étapes suivantes :
" identification d'un masque correspondant à une région modèle prédéterminée, le masque et l'ensemble cible formant un bloc ;
• recherche dans les blocs précédemment codés de l'image courante ou d'une image de référence d'un bloc source comprenant une zone similaire au masque ; " construction de l'ensemble cible à partir du bloc source, délivrant des pixels prédits ; et une étape de codage d'un résidu de prédiction pour une région formée de pixels prédits du macrobloc, dite région prédite, par détermination d'une différence entre les pixels prédits de la région prédite et des pixels d'origine appartenant à l'image courante (non codée).
Selon l'invention, l'étape de codage est mise en œuvre dès que la région prédite respecte un critère de codage prédéterminé.
L'invention propose ainsi d'améliorer les techniques de type « template matching » existantes, en travaillant directement sur un macrobloc, et en adaptant l'ordre de parcours des pixels du macrobloc pour la prédiction du macrobloc.
On optimise de cette façon la qualité de la prédiction et donc la qualité du codage et du décodage d'images, tout en réduisant le débit nécessaire au codage.
On rappelle que selon l'Homme du Métier, l'efficacité d'une technique de type « template matching » appliquée à un macrobloc entier est limitée, car plus on avance vers la fin du macrobloc, plus les pixels prédits utilisés pour la prédiction sont éloignés des pixels à prédire. En effet, les pixels prédits au début du macrobloc n'ayant pas encore été codés/décodés (l'erreur de prédiction n'a pas encore été codée), les pixels prédits ne fournissent pas une prédiction suffisamment bonne, et risquent de propager des erreurs vers la fin du macrobloc et d'augmenter d'autant le coût de codage du résidu.
II est ainsi possible de signaler une seule fois, pour l'ensemble du macrobloc, qu'une technique de type « template matching » est utilisée, sans avoir à le signaler pour chaque bloc.
De plus, alors que selon la technique de « template matching » classique les pixels sont synthétisés dans un ordre fixe et prédéterminé, on propose selon l'invention d'adapter cet ordre de parcours en fonction d'un niveau de priorité affecté aux pixels, et de recalculer cet ordre de parcours lorsqu'un ensemble cible de pixels est prédit.
Le sens de parcours des pixels à l'intérieur d'un macrobloc est donc adaptatif, alors que selon les techniques de l'art antérieur, cet ordre de parcours était prédéfini et figé.
Finalement, on note que le résidu de prédiction, correspondant à la différence entre les pixels prédits de la région prédite et les pixels d'origine appartenant à l'image courante, peut être quasiment nul. Cela signifie que la prédiction est suffisante (par exemple pour une application visée : bas débit, basse qualité, etc). Dans ce cas, le résidu de prédiction obtenu est faible et peut être annulé lors de la quantification du résidu.
Par exemple, le critère de codage appartient au groupe comprenant : - un nombre de pixels prédits supérieur à un seuil prédéterminé ; - une configuration prédéterminée des pixels prédits.
Par exemple, une telle configuration est en accord avec les transformées utilisées par le codeur, et correspond à un bloc 4x4 dans le cas d'un codeur H.264- AVC. Une telle configuration peut également être traitée par une transformée implémentée dans le codeur/décodeur, et correspond à un bloc 2x8, ou 8x2, ou 16x1, ou 1x16, ou n'importe quelle région de 16 pixels dans le cas d'une transformée de type SA-DCT (en anglais « Shape Adaptive DCT », en français « Transformée en cosinus discret à forme adaptative »).
Ainsi, dès que suffisamment de pixels sont prédits (ou restaurés), on peut coder puis décoder la région prédite correspondante. Les pixels ainsi codés/décodés (ou reconstruits) peuvent alors être utilisés pour la prédiction des
régions suivantes du macrobloc On considère que ces pixels codés/décodés appartiennent désormais à une zone « source » telle que définie en relation avec l'art antérieur
Par exemple, la région prédite comprend seize pixels prédits En d'autres termes, dès que seize pixels sont prédits (formant une région de 4x4 pixels, 2x8 pixels, 8x2 pixels, 16x1 pixels ou encore 1x16 pixels), on détermine le résidu associé à cette région, et on code/décode cette région
Selon un mode de réalisation particulier de l'invention, le critère de détermination de priorité tient compte d'au moins un paramètre appartenant au groupe comprenant .
— un nombre de pixels précédemment prédits ou codés, dits pixels disponibles, adjacents audit au moins un pixel ,
- une présence d'un contour qui poursuit un contour provenant d'un ensemble de pixels précédemment prédits ou codés, dont un pixel au moins dudit ensemble est adjacent audit au moins un pixel ,
- un nombre de pixels précédemment prédits ou codés appartenant audit masque ,
— un paramètre statistique représentatif d'une activité du voisinage dudit pixel , — un nombre de candidats similaires audit masque, définis par exemple par la somme des différences absolues, comme décrit en relation avec l'art antérieur
Ainsi, le sens de parcours des pixels à l'intérieur d'un macrobloc tient compte de paramètres permettant d'optimiser le codage en améliorant l'efficacité de la prédiction et donc la qualité de la reconstruction des pixels
Par exemple, l'un des paramètres pris en compte pour affecter une priorité à un pixel correspond au nombre de pixels disponibles déjà codés-décodés (ou reconstruit) pouvant être utilisés pour le codage de ce pixel
Ce paramètre peut avoir par exemple une valeur correspondant directement au nombre de pixels disponibles
Un autre paramètre tient compte de la présence d'un contour incident dans un pixel, c'est-à-dire d'un contour qui est également présent dans un pixel adjacent déjà codé-décodé.
Ainsi, si un contour diagonal traverse un macrobloc, en provenance d'un macrobloc déjà codé-décodé, la technique selon un mode de réalisation de l'invention adapte l'ordre de parcours suivant le sens du contour, et l'ordre de parcours diagonal obtenu permet d'améliorer la qualité de la prédiction et ainsi la vitesse et la qualité du décodage. Ce paramètre indiquant la présence d'un contour incident dans un pixel (le pixel appartenant au contour), noté également paramètre de contour, peut avoir par exemple la valeur 1.
Encore un autre paramètre tient compte du nombre de pixels précédemment prédits ou codés présents dans le masque défini à proximité du pixel. On privilégie ainsi la prédiction d'un ensemble cible pour lequel le masque correspondant comprend le plus grand nombre de pixels déjà prédits. Ensuite, les valeurs des paramètres décrits ci-dessus peuvent être additionnées, ou multipliées, pour obtenir un niveau de priorité affecté à chaque pixel adjacent à un pixel précédemment prédit.
Selon un autre aspect de l'invention, au moins une des itérations est une itération de raffinement, au cours de laquelle l'étape d'affectation affecte un niveau de priorité de codage à au moins un pixel du macrobloc courant adjacent à au moins un pixel précédemment codé.
On tient compte ici des pixels codés/décodés, et non uniquement prédits. En effet, on peut accorder une plus grande confiance aux pixels codés/décodés qu'aux pixels uniquement prédits. On rappelle à cet effet que si les pixels prédits ne fournissent pas une prédiction suffisamment bonne, ils risquent de propager des erreurs vers la fin du macrobloc et d'augmenter le coût de codage du résidu. On utilise donc des pixels déjà codés/décodés pour raffiner la prédiction.
L'invention concerne aussi un programme d'ordinateur comportant des instructions pour la mise en œuvre du procédé de codage décrit précédemment lorsque le programme est exécuté par un processeur.
Ainsi, le procédé de codage selon l'invention peut être mis en œuvre de diverses manières, notamment sous forme câblée ou sous forme logicielle.
Dans un autre mode de réalisation, l'invention concerne un dispositif de codage d'au moins une image, découpée en zones de taille standard, dites macroblocs, un macrobloc comprenant un ensemble de blocs de pixels.
Selon l'invention, un tel dispositif comprend les moyens suivants, activés pour au moins un macrobloc courant d'une image courante et pour au moins deux itérations :
- des moyens d'affectation d'un niveau de priorité de codage à au moins un pixel du macrobloc courant, adjacent à au moins un pixel précédemment prédit, selon un critère de détermination de priorité prédéterminé ;
- des moyens de sélection d'un pixel présentant le niveau de priorité le plus élevé, dit pixel prioritaire ; - des moyens de prédiction d'un ensemble de pixels comprenant le pixel prioritaire, dit ensemble cible, comprenant :
" des moyens d'identification d'un masque correspondant à une région modèle prédéterminée, le masque et l'ensemble cible formant un bloc ; " des moyens de recherche dans les blocs précédemment codés de l'image courante ou d'une image de référence d'un bloc source comprenant une zone similaire au masque ;
" des moyens de construction de l'ensemble cible à partir du bloc source, délivrant des pixels prédits ; et des moyens de codage d'un résidu de prédiction pour une région formée de pixels prédits du macrobloc, dite région prédite, par détermination d'une différence entre les pixels prédits de la région prédite et des pixels d'origine appartenant à l'image courante (non codée), les moyens de codage étant activés dès que la région prédite respecte un critère de codage prédéterminé.
Un tel dispositif de codage est notamment adapté à mettre en œuvre le procédé de codage décrit précédemment. Il s'agit par exemple d'un codeur vidéo de type MPEG ou H.264, ou selon une future norme de compression vidéo, par exemple H.265. L'invention concerne également un signal représentatif d'au moins une image codée selon le procédé de codage décrit précédemment.
Un tel signal comprend au moins une information représentative du critère de codage, comme un seuil correspondant au nombre minimum de pixels que l'on doit prédire pour reconstruire une région prédite. Ce signal pourra bien sûr comporter les différentes caractéristiques relatives au procédé de codage selon l'invention.
L'invention concerne également un procédé de décodage d'un signal représentatif d'au moins une image, découpée en zones de taille standard, dites macroblocs, un macrobloc comprenant un ensemble de blocs de pixels. Selon l'invention, un tel procédé met en œuvre au moins deux itérations des étapes suivantes, pour au moins un macrobloc courant d'une image courante :
- affectation d'un niveau de priorité de codage à au moins un pixel du macrobloc courant, adjacent à au moins un pixel précédemment prédit, selon un critère de détermination de priorité prédéterminé ; - sélection d'un pixel présentant le niveau de priorité le plus élevé, dit pixel prioritaire ;
- prédiction d'un ensemble de pixels comprenant le pixel prioritaire, dit ensemble cible, mettant en œuvre les sous-étapes suivantes :
" identification d'un masque correspondant à une région modèle prédéterminée, le masque et l'ensemble cible formant un bloc ;
" recherche dans les blocs précédemment codés de l'image courante ou d'une image de référence d'un bloc source comprenant une zone similaire au masque ; " construction de l'ensemble cible à partir du bloc source,
délivrant des pixels prédits ; et en ce que ledit procédé comprend également :
- une étape de réception d'au moins un résidu de prédiction ;
- une étape de reconstruction d'une région formée de pixels prédits du macrobloc, dite région prédite, par ajout d'un résidu de prédiction correspondant à la région prédite, l'étape de reconstruction étant mise en œuvre dès que la région prédite respecte un critère de codage prédéterminé.
Les caractéristiques et avantages relatifs à ce procédé de décodage sont les mêmes que ceux du procédé de codage. Par conséquent, ils ne sont pas détaillés plus amplement.
Un tel procédé de décodage est apte à décoder un signal tel que décrit précédemment.
Ainsi, selon une caractéristique particulière, un tel procédé comprend une étape de réception d'au moins une information représentative du critère de codage.
L'invention concerne aussi un programme d'ordinateur comportant des instructions pour la mise en œuvre du procédé de décodage décrit ci-dessus, lorsque le programme est exécuté par un processeur. Ainsi, le procédé de décodage selon l'invention peut être mis en œuvre de diverses manières, notamment sous forme câblée ou sous forme logicielle.
Dans un autre mode de réalisation, l'invention concerne un dispositif de décodage d'un signal représentatif d'au moins une image, découpée en zones de taille standard, dites macroblocs, un macrobloc comprenant un ensemble de blocs de pixels.
Selon l'invention, un tel dispositif comprend les moyens suivants, activés pour au moins un macrobloc courant d'une image courante et pour au moins deux itérations :
- des moyens d'affectation d'un niveau de priorité de codage à au moins un pixel du macrobloc courant, adjacent à au moins un pixel
précédemment prédit, selon un critère de détermination de priorité prédéterminé ;
- des moyens de sélection d'un pixel présentant le niveau de priorité le plus élevé, dit pixel prioritaire ; - des moyens de prédiction d'un ensemble de pixels comprenant le pixel prioritaire, dit ensemble cible, comprenant :
" des moyens d'identification d'un masque correspondant à une région modèle prédéterminée, le masque et l'ensemble cible formant un bloc ; • des moyens de recherche dans les blocs précédemment codés de l'image courante ou d'une image de référence d'un bloc source comprenant une zone similaire au masque ;
" des moyens de construction de l'ensemble cible à partir du bloc source, délivrant des pixels prédits ; ainsi que :
- des moyens de réception d'au moins un résidu de prédiction ;
- des moyens de reconstruction d'une région formée de pixels prédits du macrobloc, dite région prédite, par ajout d'un résidu de prédiction correspondant à la région prédite, activés dès que la région prédite respecte un critère de codage prédéterminé.
Un tel dispositif de décodage est notamment adapté à mettre en œuvre le procédé de décodage décrit précédemment. Il s'agit par exemple d'un décodeur vidéo de type MPEG ou H.264, ou selon une future norme de compression vidéo, par exemple H.265.
4. Liste des figures
D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante d'un mode de réalisation particulier, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels :
la figure 1, commentée en relation avec l'art antérieur, présente un schéma simplifié de la technique dite de « template matching » ; la figure 2 illustre un exemple de sens de parcours pour le codage des blocs d'un macrobloc ; - la figure 3 présente les principales étapes mises en œuvre au codage selon un mode de réalisation particulier de l'invention ; les figures 4 A à 4G illustrent l'application du procédé de codage de la figure 3 à un macrobloc ; la figure 5 montre les principales étapes mises en œuvre au décodage selon un mode de réalisation particulier de l'invention ; les figures 6 et 7 présentent respectivement la structure d'un dispositif de codage et d'un dispositif de décodage selon un mode de réalisation particulier de l'invention.
5. Description d'un mode de réalisation de l'invention 5.7 Principe général
Le principe général de l'invention repose sur le codage/décodage adaptatif d'un macrobloc, permettant de prédire des pixels, puis de coder/décoder des régions de pixels prédits, dès qu'on dispose d'un nombre suffisant de pixels prédits pour la transformation et le codage du résidu. Ainsi, le codage/décodage du macrobloc ne nécessite pas le codage/décodage des différents blocs du macrobloc, les uns à la suite des autres, selon un ordre de parcours prédéfini.
La figure 3 illustre les principales étapes mises en œuvre côté codage, pour au moins un macrobloc courant d'une image courante. On nomme « frontière de prédiction » la ligne séparant les pixels déjà prédits des pixels non encore prédits, et « frontière de codage » une ligne séparant les pixels déjà codés/décodés des pixels non encore codés/décodés.
Ainsi, le procédé de codage met en œuvre au moins deux itérations des étapes suivantes : - affectation 31 d'un niveau de priorité de codage à au moins un pixel du
macrobloc courant, adjacent à au moins un pixel précédemment prédit, selon un critère de détermination de priorité prédéterminé. En d'autres termes, on affecte un niveau de priorité aux pixels non encore prédits localisés au niveau de la frontière de prédiction. Lors de la première itération de codage d'un macrobloc, les frontières de prédiction et de codage sont superposées ;
- sélection 32 d'un pixel présentant le niveau de priorité le plus élevé, dit pixel prioritaire p, parmi les pixels localisés au niveau de la frontière de prédiction ; - prédiction 33 d'un ensemble de pixels comprenant le pixel prioritaire, dit ensemble cible P, mettant en œuvre les sous-étapes suivantes :
" identification 331 d'un masque Tp correspondant à une région modèle prédéterminée, le masque Tp et l'ensemble cible P formant un bloc ; " recherche 332 dans les blocs précédemment codés de l'image courante ou d'une image de référence d'un bloc source comprenant une zone similaire au masque Tp ; • construction 333 de l'ensemble cible P à partir du bloc source, délivrant des pixels prédits. La frontière de prédiction se trouve donc déplacée pour englober les nouveaux pixels prédits.
On teste alors (34) si une région formée de pixels prédits du macrobloc, dite région prédite, respecte un critère de codage prédéterminé.
Si ce n'est pas le cas (341), alors on réitère les étapes précédentes en revenant à l'étape 31 d'affectation d'un niveau de priorité de codage.
Si la région prédite respecte (342) le critère de codage prédéterminé, alors le procédé de codage met en œuvre une étape de codage 35 d'un résidu de prédiction pour la région prédite du macrobloc, par détermination d'une différence entre les pixels prédits de la région prédite et des pixels d'origine appartenant à l'image courante. On rappelle que le résidu de prédiction peut être quasiment nul.
Dans ce cas, le résidu de prédiction obtenu est annulé lors de l'étape de quantification.
A l'issue de l'étape de codage, on considère que la région prédite est codée/décodée. Par conséquent, la frontière de codage se trouve déplacée pour englober les nouveaux pixels codés/décodés. Ces nouveaux pixels codés/décodés sont désormais considérés comme des pixels appartenant à la zone source de l'image, pouvant être utilisés pour la prédiction de pixels non prédits, ou le raffinement de pixels déjà prédits.
5.2 Description d'un mode de réalisation particulier pour la mise en œuvre du codage
On illustre désormais, en relation avec les figures 4 A à 4G, l'application d'un mode de réalisation particulier du procédé de codage au cas de la prédiction intra dans un codeur H.264 par exemple, utilisant des macroblocs de taille 16x16, découpés en blocs de taille 4x4. Bien entendu, il ne s'agit que d'un exemple. En effet, l'invention s'applique également à un codeur d'images utilisant des régions de taille et de forme arbitraire, dans le contexte d'une prédiction intra ou interimages.
Selon cet exemple d'application, le macrobloc courant MB est composé de seize blocs comprenant chacun 4x4 pixels. Ce macrobloc MB est adjacent, dans l'image, à trois macroblocs déjà codés-décodés (localisés au-dessus du macrobloc courant - MBj, à gauche du macrobloc courant - MBL, et au-dessus à gauche et du macrobloc courant - MBJL). On entend ici par « adjacent » un macrobloc qui touche la frontière du macrobloc courant.
On cherche selon ce mode de réalisation, à restaurer le macrobloc courant MB de manière optimale, en respectant un ordre de priorité pour le codage/décodage (ou la reconstruction) des informations.
On considère que les macroblocs MBj, MBL et MBJL- précédemment codés/décodés (représentés par des hachures diagonales dans les deux sens), appartiennent à une zone source de l'image, que l'on peut utiliser pour la prédiction de régions non encore prédites.
Les figures 4B à 4G illustrent chacune le résultat obtenu après une itération de prédiction telle que décrite en relation avec la figure 3, pour le codage du macrobloc courant MB.
Comme illustré en figure 4B, les macroblocs MBj, MBL et MBJL précédemment codés/décodés, définissent avec le macrobloc courant MB une frontière de codage FR. Cette frontière de codage FR (illustrée sur les autres figures 4C à 4G en traits pointillés courts) se superpose avec une frontière de prédiction Fp (illustrée en traits pointillés longs) au cours de la première itération.
Au cours d'une première itération selon l'algorithme décrit en figure 3, on affecte un niveau de priorité de codage aux pixels non prédits du macrobloc MB localisés au niveau de la frontière de prédiction Fp. Par exemple, on affecte un niveau de priorité à tous les pixels du macrobloc MB adjacents à un pixel précédemment prédit des macroblocs MBj, MBL et MBJL précédemment codés/décodés. On considère par exemple que le pixel p, situé dans le coin en haut à gauche du macrobloc MB, présente le niveau de priorité le plus élevé. En effet, ce pixel est adjacent à cinq pixels précédemment codés/décodés (et donc prédits). On nomme ce pixel « pixel prioritaire ». On cherche alors à prédire un ensemble cible P, représenté par des hachures horizontales sur la figure 4B, comprenant le pixel prioritaire p. Cet ensemble cible correspond par exemple aux trois premières lignes et trois premières colonnes du premier bloc du macrobloc MB.
Pour ce faire, on identifie un masque Tp, tel que le masque Tp et l'ensemble cible P forment un bloc (voir la figure 4A pour plus de clarté).
On cherche alors dans les blocs précédemment codés de l'image courante (dans le cas d'une prédiction intra) ou d'une image de référence (dans le cas d'une prédiction inter) un bloc source comprenant une zone similaire Tn au masque Tp. Cette région de recherche comprenant un ensemble de blocs précédemment codés/décodés (ou reconstruits), encore appelée zone source, est délimitée par la frontière de codage. En d'autres termes, on cherche dans la zone source un « template » Tn (ou masque) le plus proche du masque Tp, puis on construit
l'ensemble cible P à partir du bloc source ainsi identifié. Pour ce faire, on peut recopier dans l'ensemble cible P les pixels du bloc source identifiés n'appartenant pas à la zone similaire Tn. Cette technique de « template matching » est plus précisément décrite en relation avec l'art antérieur. On obtient de cette façon une prédiction de l'ensemble cible P, délivrant des pixels prédits.
Comme le nombre de pixels prédits n'est pas suffisant pour coder/décoder une région du macrobloc MB, on recommence les étapes précédentes au cours d'une deuxième itération. Comme illustré en figure 4C, on voit que la frontière de prédiction Fp s'est déplacée, pour englober les nouveaux pixels prédits. En revanche, la frontière de codage FR n'a pas évolué.
Plus précisément, au cours d'une deuxième itération, on affecte un nouveau niveau de priorité de codage aux pixels non prédits du macrobloc MB adjacents à un pixel précédemment prédit. Ces pixels non prédits correspondent aux pixels localisés au niveau de la frontière de prédiction Fp.
On considère par exemple que le pixel p, correspondant au pixel localisé sur la quatrième ligne, quatrième colonne du macrobloc MB, présente le niveau de priorité le plus élevé. Par exemple, ce pixel prioritaire p est localisé sur un contour traversant l'ensemble cible défini à la première itération.
On cherche à prédire un nouvel ensemble cible P, représenté par des hachures horizontales sur la figure 4C, comprenant le pixel prioritaire p. Pour ce faire, on identifie un nouveau masque Tp, tel que le masque Tp et l'ensemble cible
P forment un bloc. On note que la forme de l'ensemble cible P et du masque Tp (c'est-à-dire le nombre de pixels et la configuration des pixels) n'évolue pas au cours des différentes itérations. En revanche, les pixels présents dans l'ensemble cible P et dans le masque Tp diffèrent d'une itération à l'autre.
On cherche alors dans la zone source un bloc source comprenant une zone similaire Tn au masque Tp. Cette région de recherche est la même que pour la
première itération, puisque la frontière de codage FR n'a pas évolué.
On obtient de cette façon une prédiction de l'ensemble cible P, délivrant des pixels prédits.
Comme le nombre de pixels prédits n'est pas suffisant pour coder/décoder une région du macrobloc MB, on recommence les étapes précédentes au cours d'une troisième itération (dont le résultat est illustré en figure 4D), puis d'une quatrième itération (dont le résultat est illustré en figure 4E), puis d'une k-ième itération (dont le résultat est illustré en figure 4F).
A l'issue des troisième et quatrième itérations, le nombre de pixels prédits n'est pas suffisant pour coder/décoder une région du macrobloc MB. Par conséquent, la frontière de codage FR n'a pas évolué. En revanche, la frontière de prédiction Fp s'est déplacée, pour englober les nouveaux pixels prédits.
A l'issue de la k-ième itération, on considère que le nombre de pixels prédits est suffisant pour coder/décoder (ou reconstruire) une région prédite du macrobloc MB, en codant un résidu de prédiction associé à cette région. Par exemple, un nombre suffisant de pixels a été prédit pour que ces pixels prédits puissent être utilisés pour une transformation et un codage du résidu. Par exemple le premier bloc B l (localisé en haut à gauche du macrobloc MB) est totalement prédit. Bien entendu, cette étape de codage du résidu peut être mise en œuvre pour coder/décoder (ou reconstruire) une région prédite de taille différente, comme une région formée de 2x2 pixels prédits, 4x4 pixels prédits, 8x8 pixels prédits, 2x8 pixels prédits, 8x2 pixels prédits, 16x1 pixels prédits, 1x16 pixels prédits, etc. On pourrait donc reconstruire un bloc de données dès que 16 pixels ont été prédits (par exemple 16 pixels de la même ligne, ou de la même colonne, ...).
En d'autres termes, cette étape de codage du résidu est mise en œuvre dès que la région prédite respecte un critère de codage prédéterminé, comme un nombre de pixels prédits supérieur à un seuil prédéterminé, ou une configuration spécifique des pixels prédits.
A l'issue de cette étape de codage, le premier bloc Bl du macrobloc MB est reconstruit (c'est-à-dire codé et décodé avec son résidu). Par conséquent, la frontière de codage FR se trouve déplacée pour englober ce nouveau bloc Bl codé/décodé, qui fait désormais partie de la zone source de l'image, et peut servir de source fiable pour la prédiction des régions restantes à restaurer du macrobloc MB. On rappelle qu'il n'est en revanche pas possible d'utiliser, pour la prédiction, des pixels prédits mais non reconstruits.
Au cours d'une itération k+1, dont le résultat est illustré en figure 4G, on peut donc prédire l'ensemble cible P en se servant du bloc Bl. De plus, il est également possible de raffiner la prédiction de certains pixels lorsqu'une région a été codée/décodée.
Par exemple, comme illustré en figure 4G, il est possible de raffiner la prédiction de la région prédite localisée entre les frontières de prédiction Fp et de codage FR en tenant compte de la nouvelle zone source. Ainsi, l'invention selon ce mode de réalisation propose de coder/décoder
(ou reconstruire) une région du macrobloc dès que suffisamment de pixels ont été prédits et peuvent être utilisés pour une transformation et codage du résidu. Ces pixels sont alors codés (pixels prédits auxquels on ajoute un résidu de prédiction) et peuvent servir à leur tour de prédiction. Ainsi l'invention propose plusieurs avantages découlant de la mise en œuvre d'au moins un mode de réalisation :
- l'algorithme peut progresser librement dans le macrobloc en restaurant/prédisant des régions d'image « à cheval » sur plusieurs blocs ; - la reconstruction des blocs (de taille 4x4 selon le standard H.264) n'est pas imposée selon un ordre prédéterminé.
On note également que la solution proposée peut s'intégrer sans difficulté dans un codeur vidéo basé macrobloc de type H.264, sans modifier en profondeur son fonctionnement. Pour cela, il suffit par exemple d'ajouter un nouveau mode de prédiction spatiale des macroblocs, ou de remplacer plusieurs modes existants
peu utilisés dans le contexte de la présente invention. En particulier, le processus d'optimisation débit-distorsion reste inchangé.
5.3 Signal
Une fois l'image ou les images codées, le signal représentatif de la ou des images codées selon le procédé de codage décrit ci-dessus peut être transmis à un décodeur et/ou stocké sur un support d'enregistrement.
Ce signal peut transporter des informations particulières. Par exemple, ce signal peut transporter au moins une information représentative du critère de codage, comme un seuil correspondant au nombre minimum de pixels que l'on doit prédire pour reconstruire une région prédite.
Ce signal peut également transmettre une information représentative du critère de détermination de priorité. En effet, la priorité des pixels à prédire, localisés au niveau de la frontière de prédiction, peut être calculée au codeur et transmise au décodeur, ou alternativement recalculée au décodeur. Ce signal peut également transporter le ou les résidus de prédiction obtenus par comparaison de l'image courante et de l'image prédite.
5.4 Décodage
On présente désormais en relation avec la figure 5 les principales étapes de décodage d'un signal représentatif d'au moins une image codée tel que décrit précédemment, mises en œuvre dans un décodeur vidéo de type H.264 par exemple.
Un tel décodeur met en œuvre les étapes suivantes, pour au moins une image courante :
- au moins deux itérations It 51 des étapes suivantes, pour au moins un macrobloc courant d'une image courante : o affectation d'un niveau de priorité de codage à au moins un pixel du macrobloc courant, adjacent à au moins un pixel précédemment prédit, selon un critère de détermination de priorité prédéterminé ; o sélection d'un pixel présentant le niveau de priorité le plus élevé, dit pixel prioritaire ;
o prédiction d'un ensemble de pixels comprenant ledit pixel prioritaire, dit ensemble cible ;
- une étape de réception 52 d'au moins un résidu de prédiction ;
- une étape de reconstruction 53 d'une région formée de pixels prédits du macrobloc, dite région prédite, par ajout d'un résidu de prédiction correspondant à la région prédite, l'étape de reconstruction étant mise en œuvre dès que ladite région prédite respecte un critère de codage prédéterminé.
Au moins une information représentative de ce critère de codage peut être véhiculée par le signal. Dans ce cas, le procédé de décodage comprend une étape supplémentaire de réception de l'information représentative de ce critère de codage. De même, le procédé de décodage peut mettre en œuvre une étape supplémentaire de réception d'une information représentative du critère de détermination de priorité. Les itérations 51 sont similaires à celles décrites au niveau du codage, et ne sont pas décrite plus en détail ici.
De manière simplifiée, l'algorithme de décodage répète les étapes suivantes jusqu'à ce que le macrobloc soit entièrement reconstruit :
- détermination d'un niveau de priorité pour les pixels adjacents à des pixels déjà prédits (localisés au niveau de la frontière d prédiction) ;
- prédiction d'un ensemble cible associé au pixel de plus haute priorité, en utilisant une technique de « template matching » ;
- dès qu'un nombre suffisant de nouveaux pixels sont restaurés, ajout d'un résidu de prédiction associé à la région ainsi prédite, permettant de reconstruire cette région. Les pixels de la région reconstruite deviennent alors des pixels source (appartenant à une zone source) qui peuvent être utilisés pour la prédiction des régions suivantes du macrobloc. 5.5 Structures du codeur et du décodeur
On présente finalement, en relation avec les figures 6 et 7, les structures simplifiées d'un dispositif de codage et d'un dispositif de décodage mettant
respectivement en œuvre une technique de codage et une technique de décodage telles que décrites ci-dessus.
Un dispositif de codage tel qu'illustré en figure 6 comprend une mémoire 61 comprenant une mémoire tampon, une unité de traitement 62, équipée par exemple d'un microprocesseur μP, et pilotée par le programme d'ordinateur 63, mettant en œuvre le procédé de codage selon l'invention.
A l'initialisation, les instructions de code du programme d'ordinateur 63 sont par exemple chargées dans une mémoire RAM avant d'être exécutées par le processeur de l'unité de traitement 62. L'unité de traitement 62 reçoit une image courante à coder. Le microprocesseur de l'unité de traitement 62 met en œuvre les étapes du procédé de codage décrit précédemment, selon les instructions du programme d'ordinateur 63, pour coder l'image courante. Pour cela, le dispositif de codage comprend, outre la mémoire tampon 61, des moyens d'affectation d'un niveau de priorité de codage à au moins un pixel d'un macrobloc courant, des moyens de sélection d'un pixel présentant le niveau de priorité le plus élevé, des moyens de prédiction d'un ensemble de pixels comprenant le pixel prioritaire et des moyens de codage d'un résidu de prédiction pour une région formée de pixels prédits du macrobloc.
Ces moyens sont pilotés par le microprocesseur de l'unité de traitement 62. Un dispositif de décodage tel qu'illustré en figure 7 comprend une mémoire 71 comprenant une mémoire tampon, une unité de traitement 72, équipée par exemple d'un microprocesseur μP, et pilotée par le programme d'ordinateur 73, mettant en œuvre le procédé de décodage selon l'invention.
A l'initialisation, les instructions de code du programme d'ordinateur 73 sont par exemple chargées dans une mémoire RAM avant d'être exécutées par le processeur de l'unité de traitement 72. L'unité de traitement 72 reçoit en entrée un signal représentatif d'au moins une image codée. Le microprocesseur de l'unité de traitement 72 met en œuvre les étapes du procédé de décodage décrit précédemment, selon les instructions du programme d'ordinateur 73, pour déterminer reconstruire l'image courante. Pour cela, le dispositif de décodage
comprend, outre la mémoire tampon 71, des moyens d'affectation d'un niveau de priorité de codage à au moins un pixel d'un macrobloc courant, des moyens de sélection d'un pixel présentant le niveau de priorité le plus élevé, des moyens de prédiction d'un ensemble de pixels comprenant le pixel prioritaire, des moyens de réception d'au moins un résidu de prédiction et des moyens de reconstruction d'une région formée de pixels prédits du macrobloc.
Ces moyens sont pilotés par le microprocesseur de l'unité de traitement 72.