Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
IMAGE CODING BY DIFFERENTIAL PULSE CODED MODULATION WITH THE AID OF A PREDICTION FUNCTION
Document Type and Number:
WIPO Patent Application WO/2020/094706
Kind Code:
A1
Abstract:
The invention relates to a method for decoding at least one encoded image within a stream of coded data, said image being cut up into blocks of elements, the decoding method comprising: - an obtaining on the basis of the stream, of an information item representative of a so-called prediction function, said prediction function belonging to a predetermined list of prediction functions, and - a decoding of at least one element of a said block of elements, by using a differential pulse coded modulation, on the basis of an already processed neighbouring element and with the aid of the prediction function.

Inventors:
HENRY FÉLIX (FR)
CLARE GORDON (FR)
PHILIPPE PIERRICK (FR)
Application Number:
PCT/EP2019/080374
Publication Date:
May 14, 2020
Filing Date:
November 06, 2019
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
FOND B COM (FR)
International Classes:
H04N19/11; H04N19/157; H04N19/176; H04N19/182; H04N19/593
Foreign References:
EP1589769A12005-10-26
US9253508B22016-02-02
Other References:
LEE S ET AL: "RCE2: Test 1 - Residual DPCM for HEVC lossless coding", 13. JCT-VC MEETING; 104. MPEG MEETING; 18-4-2013 - 26-4-2013; INCHEON; (JOINT COLLABORATIVE TEAM ON VIDEO CODING OF ISO/IEC JTC1/SC29/WG11 AND ITU-T SG.16 ); URL: HTTP://WFTP3.ITU.INT/AV-ARCH/JCTVC-SITE/,, no. JCTVC-M0079, 8 April 2013 (2013-04-08), XP030114036
MATTHIAS WIEN: "High Efficiency Video Coding, Coding Tools and Specification", SIGNAIS AND COMMUNICATION TECHNOLOGY, 2015
Attorney, Agent or Firm:
VIDON BREVETS & STRATÉGIE (FR)
Download PDF:
Claims:
REVENDICATIONS

1. Procédé de décodage d'au moins une image encodée au sein d'un flux de données codées, ladite image étant découpée en blocs d'éléments, le procédé de décodage comprenant : une obtention à partir du flux, d'une information représentative d'une fonction dite de prédiction, ladite fonction de prédiction appartenant à une liste de fonctions de prédiction prédéterminée, et

un décodage d'au moins un élément d'undit bloc d'éléments en utilisant une modulation différentielle par impulsions codées, à partir d'un élément voisin déjà traité et à l'aide de ladite fonction de prédiction.

2. Procédé selon la revendication 1, dans lequel lorsque la fonction de prédiction n'appartient pas à la liste de fonctions de prédiction prédéterminée, ladite information n'est pas obtenue.

3. Procédé selon l'une des revendications 1 ou 2, dans lequel la liste de fonctions de prédiction prédéterminée comprend au moins l'une des fonctions de prédiction suivantes :

Fonction de prédiction de direction horizontale,

Fonction de prédiction de direction verticale, ou

Fonction de prédiction JPEG-LS.

4. Procédé selon l'une des revendications 1 ou 2, dans lequel la liste de fonctions de prédiction prédéterminée comprend les fonctions de prédiction suivante :

Fonction de prédiction de direction horizontale,

Fonction de prédiction de direction verticale.

5. Procédé selon l'une des revendications 1 à 4, dans lequel, ledit élément voisin déjà traité est un élément dudit bloc de l'image, précédemment décodé.

6. Procédé de codage d'au moins une image, découpée en blocs d'éléments, ledit procédé de codage comprenant :

une obtention d'une fonction de prédiction, ladite fonction de prédiction appartenant à une liste de fonctions de prédiction prédéterminée ;

une insertion dans un flux de données codées, d'une information codée représentative de ladite fonction de prédiction, et

un codage d'au moins un élément d'undit bloc d'éléments, en utilisant une modulation différentielle par impulsions codées, à partir d'un élément voisin déjà traité et à l'aide de ladite fonction de prédiction.

7. Procédé selon la revendication 6, dans lequel si la fonction de prédiction n'appartient pas à une liste de fonctions de prédiction prédéterminée, ladite information codée n'est pas insérée.

8. Procédé selon l'une des revendications 6 ou 7, dans lequel la liste de fonctions de prédiction prédéterminée comprend au moins l'une des fonctions de prédiction suivantes :

Fonction de prédiction de direction horizontale,

Fonction de prédiction de direction verticale, ou

Fonction de prédiction JPEG-LS.

9. Procédé selon l'une des revendications 6 ou 7, dans lequel la liste de fonctions de prédiction prédéterminée comprend les fonctions de prédiction suivantes :

Fonction de prédiction de direction horizontale,

Fonction de prédiction de direction verticale.

10. Procédé selon l'une des revendications 6 à 9, dans lequel, ledit élément voisin déjà traité est un élément dudit bloc de l'image, précédemment codé.

11. Dispositif de décodage d'au moins une image encodée au sein d'un flux de données codées, ladite image étant découpée en blocs d'éléments, ledit dispositif comprenant une machine de calcul dédiée à ou configurée pour :

obtenir à partir du flux, une information représentative d'une fonction dite de prédiction, ladite fonction de prédiction appartenant à une liste de fonctions de prédiction prédéterminée, et décoder au moins un élément d'undit bloc d'éléments, en utilisant une modulation différentielle par impulsions codées, à partir d'un élément voisin déjà traité et à l'aide de la fonction de prédiction.

12. Dispositif de codage d'au moins une image, découpée en blocs d'éléments, ledit dispositif comprenant une machine de calcul dédiée à ou configurée pour :

obtenir une fonction de prédiction, ladite fonction de prédiction appartenant à une liste de fonctions de prédiction prédéterminée ;

insérer dans un flux de données codées, une information codée représentative de ladite fonction dite de prédiction, et

coder au moins un élément d'undit bloc d'éléments, en utilisant une modulation différentielle par impulsions codées, à partir d'un élément voisin déjà traité et à l'aide de la fonction de prédiction.

13. Signal portant des données codées représentatives d'au moins une image, une image étant découpées en blocs d'éléments, lesdites données codées ayant été obtenues par un procédé de codage selon la revendication 6, lesdites données codées comprenant au moins une information représentative d'une fonction de prédiction choisie par le procédé de codage et appartenant à une liste de fonctions de prédiction prédéterminée, et destinée à être obtenue par un procédé de décodage selon la revendication 1, au moins un élément courant d'undit bloc d'éléments étant décodé, en utilisant une modulation différentielle par impulsions codées, à partir d'un élément voisin déjà traité et à l'aide de ladite fonction de prédiction.

14. Produit programme d’ordinateur (Pg, Pg') comprenant des instructions de code de programme pour la mise en oeuvre d'un procédé selon l’une quelconque des revendications 1 à 10, lorsqu'il est exécuté par un processeur.

15. Support d'enregistrement de données lisibles par ordinateur comprenant un produit programme d'ordinateur (Pg, Pg') selon la revendication 14.

Description:
CODAGE D'IMAGE PAR MODULATION DIFFERENTIELLE PAR IMPULSIONS CODEES A L'AIDE D'UNE FONCTION DE PREDICTION

1. Domaine de l'invention

Le domaine de l'invention est celui du codage et du décodage d'images ou de séquences d'images, et notamment de flux vidéo.

Plus précisément, l'invention concerne la compression d'images ou de séquences d'images utilisant une représentation par blocs des images.

L'invention peut notamment s'appliquer au codage d'images ou de vidéo mis en oeuvre dans les codeurs actuels ou à venir (JPEG, MPEG, H.264, HEVC, etc et VVC et leurs amendements), et dans les décodeurs correspondants.

2. Art antérieur et ses inconvénients

Les images et séquences d'images numériques occupent beaucoup d'espace en termes de mémoire, ce qui nécessite, lorsque l'on transmet ces images, de les compresser afin d'éviter les problèmes d'encombrement sur le réseau utilisé pour cette transmission. En effet, le débit utilisable sur ce réseau est généralement limité.

On connaît déjà de nombreuses techniques de compression de données vidéo. Parmi celles- ci, le standard de compression HEVC ("High Efficiency Video Coding, Coding Tools and Spécification", Matthias Wien, Signais and Communication Technology, 2015) propose de mettre en oeuvre une prédiction de pixels d'une image courante par rapport à d'autres pixels appartenant à la même image (prédiction intra) ou à une image précédente ou suivante (prédiction inter).

Plus précisément, la prédiction intra exploite les redondances spatiales au sein d'une image. Pour ce faire, les images sont découpées en blocs d'éléments ou pixels. Les blocs de pixels sont alors prédits à l'aide d'informations déjà reconstruites, correspondant aux blocs précédemment codés/décodés dans l'image courante selon l'ordre de parcours des blocs dans l'image.

Par ailleurs, de manière classique, le codage d'un bloc courant est réalisé à l'aide d'une prédiction du bloc courant, dit bloc prédit, et d'un résidu de prédiction ou « bloc résiduel », correspondant à une différence entre le bloc courant et le bloc prédit. Le bloc résiduel obtenu est alors transformé, par exemple en utilisant une transformée de type DCT (transformée en cosinus discrète). Les coefficients du bloc résiduel transformé sont ensuite quantifiés, puis codés par un codage entropique et transmis au décodeur, qui peut reconstruire le bloc courant en ajoutant ce bloc résiduel au bloc prédit.

Le décodage est fait image par image, et pour chaque image, bloc par bloc. Pour chaque bloc, les éléments correspondants du flux sont lus. La quantification inverse et la transformation inverse des coefficients du bloc résiduel sont effectuées. Puis, la prédiction du bloc est calculée pour obtenir le bloc prédit et le bloc courant est reconstruit en ajoutant la prédiction (le bloc prédit) au bloc résiduel décodé.

On connaît aussi une technique de prédiction des éléments d'un bloc, appelée DPCM (pour « Differential Puise Code Modulation », en anglais), qui consiste à prédire la valeur d'un pixel d'une image à partir de celle(s) d'un ou plusieurs de ses voisins. Cette technique est par exemple appliquée au standard JPEG-LS (pour «Lossless Joint Photographie Expert Group », en anglais) et décrite dans le document ISO/OEC 14495-1 :1999 ITU-T Rec. T.87, en 1998.

En relation avec la Figure 1, on considère un élément ou pixel X d'une image I. Cet élément est placé sur la ligne lin et la colonne col de l'image I. Les éléments de ce bloc sont traités selon un ordre de parcours dit « lexicographique » de l'image, c'est-à-dire de gauche à droite sur une ligne, puis ligne par ligne de haut en bas. Le pixel X est entouré de trois pixels voisins déjà décodés, qui sont le pixel XA situé sur la même ligne à sa gauche, le pixel XB situé sur la même colonne au-dessus de lui et le pixel XC situé en diagonale, au-dessus de lui et à sa gauche.

On désigne par P(X) une prédiction de la valeur de X. Selon le standard JPEG-LS, P(X) est calculée de la façon suivante :

P(X) = f(XA,XB,XC), où f est une fonction prédéterminée, que nous désignerons dans la suite par fonction de voisinage.

On indique ci-dessous un exemple de fonction f :

f(A,B,C)= min(A,B) si C³max(A,B)

max(A,B) si C£min(A,B)

A+B-C sinon

Cette fonction f est celle utilisée dans le standard JPEG-LS.

Une fois cette prédiction P(X) calculée, on détermine un résidu de prédiction originale R(X) par soustraction de la prédiction du pixel X à la valeur originale de X :

R(X) = X-P(X).

Dans le cas d'un codage sans perte de l'image tel que celui spécifié par JPEG-LS, ce résidu R(X) est codé par un codeur entropique qui exploite ses propriétés statistiques, puis transmis au décodeur. Dans le cas d'un codage avec perte de l'image, le résidu R(X) est typiquement quantifié, par exemple à l'aide d'un quantificateur scalaire uniforme de pas de quantification , fixé par l'utilisateur :

RQ(X) = NI ( R (X) / d )

Où NI (pour « Nearest Integer », en anglais) est la fonction qui détermine l'entier le plus proche. Elle choisit le plus petit lorsqu'il y a égalité). Le résidu quantifié RQ(X) est préalablement compressé par une technique de codage entropique telle que le codage de Huffman ou le codage arithmétique, connus de l'homme de métier, puis transmis au décodeur. Côté codeur, la valeur décodée D(X) du pixel X courant est reconstruite, de façon à ce que le pixel courant puisse servir de prédicteur à des pixels traités ultérieurement. La version décodée du pixel courant D(X) peut s'exprimer comme suit :

D{X) = P X) + RQiX). d

Le décodeur applique la même formule pour reconstruire les échantillons du signal portant les données codées transmises par le codeur.

On notera que d'autres pixels que les pixels XA, XB et XC voisins du pixel X, déterminés par d'autres fonctions de prédiction que la fonction JPEG-LS, peuvent être utilisés pour prédire le pixel X, tant que ces pixels sont disponibles sous leur forme décodée. De même, on peut utiliser n'importe quel quantificateur connu de l'homme du métier.

On notera que, lorsqu'une prédiction de type DPCM est appliquée à une image, certains pixels X n'ont pas de prédicteur tel que défini par la fonction f. C'est le cas, dans l'exemple donné précédemment, des pixels de la première ligne de pixels de l'image et de la première colonne. Une solution connue est d'affecter une valeur par défaut à XA, XB ou XC telle que par exemple la valeur médiane de la dynamique du signal, comme 128 pour un signal pouvant varier entre 0 et 255.

On connaît aussi du document publié sous le numéro US9253508 en Février 2016, une adaptation de cette technique de prédiction DPCM à un schéma de codage par blocs. Ainsi, à l'intérieur d'un bloc B de l'image par exemple de taille 8x8 pixels, les pixels sont parcourus dans l'ordre lexicographique et la prédiction DPCM tel que décrite précédemment est appliquée. Typiquement, lorsque les pixels XA, XB ou XC qui servent à calculer la prédiction d'un pixel X sont en dehors du bloc courant, on utilise les valeurs des pixels décodés issus des blocs voisins, par exemple XC', XB' ou XC", XB" comme illustré par la Figure IB.

Une expérimentation de la technique DPCM au niveau bloc mise en oeuvre par les inventeurs a mis en évidence un gain en compression de la vidéo, en particulier sur certains types de contenus comme les contenus synthétiques.

Il existe néanmoins un besoin d’une technique de prédiction de pixels au niveau d'un bloc, qui soit plus efficace.

3. Exposé de l’invention

Selon au moins un mode de réalisation, l'invention concerne un procédé de décodage d'au moins une image encodée au sein d'un flux de données codées, ladite image étant découpée en blocs d'éléments, le procédé de décodage comprenant : une obtention à partir du flux, d'une information représentative d'une fonction dite de prédiction, ladite fonction de prédiction appartenant à une liste de fonctions de prédiction prédéterminée,

un décodage d'au moins un élément d'undit bloc d'éléments, en utilisant une modulation différentielle par impulsions codées, à partir d'un élément voisin déjà traité et à l'aide de la fonction de prédiction.

L'invention s'appuie sur une approche tout-à-fait nouvelle, qui consiste à obtenir côté décodeur la fonction de prédiction choisie par le codeur comme la mieux adaptée, par exemple pour l'image ou pour le bloc courant, dans une liste prédéterminée. Le décodeur exploite l'information codée pour obtenir la fonction de prédiction à utiliser pour le bloc courant.

De la sorte, la qualité de la prédiction est améliorée et le résidu codé dans le flux de taille réduite. Avantageusement, l'information décodée peut par exemple prendre la forme d'un rang de la fonction de prédiction dans une liste prédéterminée connue du décodeur.

Selon un aspect de de l'invention, lorsque la fonction de prédiction n'appartient pas à la liste de fonctions de prédiction prédéterminée, ladite information n'est pas obtenue.

Selon un autre aspect, la liste de fonctions de prédiction prédéterminée comprend au moins l'une des fonctions de prédiction suivantes :

Fonction de prédiction de direction horizontale,

Fonction de prédiction de direction verticale, ou

Fonction de prédiction JPEG-LS.

Selon encore un autre aspect de l'invention, la liste de fonctions de prédiction prédéterminée comprend les fonctions de prédiction suivante :

Fonction de prédiction de direction horizontale,

Fonction de prédiction de direction verticale.

Selon encore un autre aspect de l'invention, ledit élément voisin déjà traité est un élément dudit bloc de l'image, précédemment décodé.

Corrélativement, l'invention concerne aussi un procédé de codage d'au moins une image, découpée en blocs d'éléments, ledit procédé de codage comprenant :

une obtention d'une fonction de prédiction, ladite fonction de prédiction appartenant à une liste de fonctions de prédiction prédéterminée ;

une insertion dans un flux de données codées, d'une information codée représentative de la fonction de prédiction, et un codage d'au moins un élément d'undit bloc d'éléments, en utilisant une modulation différentielle par impulsions codées, à partir d'un élément voisin déjà traité et à l'aide de la fonction de prédiction.

Avantageusement, côté codeur cette information représentative de la fonction de prédiction choisie est codée pour être transmise au décodeur, afin qu'il puisse en tenir compte pour traiter le bloc courant.

L'information codée peut par exemple prendre la forme d'un rang de la fonction de prédiction dans une liste prédéterminée connue du décodeur.

Selon un aspect de l'invention, si la fonction de prédiction n'appartient pas à une liste de fonctions de prédiction prédéterminée, ladite information codée n'est pas insérée.

Selon un autre aspect de l'invention, la liste de fonctions de prédiction prédéterminée comprend au moins l'une des fonctions de prédiction suivantes :

Fonction de prédiction de direction horizontale,

Fonction de prédiction de direction verticale, ou

Fonction de prédiction JPEG-LS.

Selon encore un autre aspect de l'invention, la liste de fonctions de prédiction prédéterminée comprend les fonctions de prédiction suivantes :

Fonction de prédiction de direction horizontale,

Fonction de prédiction de direction verticale.

Selon un autre aspect de l'invention, ledit élément voisin déjà traité est un élément dudit bloc de l'image, précédemment codé.

L’invention concerne également un dispositif de codage ou de décodage d'au moins une image, adapté pour mettre en oeuvre un procédé de codage ou de décodage selon l’un quelconque des modes particuliers de réalisation définis ci-dessus. Ce dispositif pourra bien sûr comporter les différentes caractéristiques relatives au procédé de codage respectivement de décodage selon l'invention. Ainsi, les caractéristiques et avantages de ce dispositif sont les mêmes que ceux du procédé de codage respectivement de décodage, et ne sont pas détaillés plus amplement.

Selon un mode de réalisation, l'invention concerne aussi un signal portant des données codées représentatives d'au moins une image, une image étant découpées en blocs, lesdites données codées ayant été obtenues par un procédé de codage selon l'invention, lesdites données codées comprenant au moins une information représentative d'une fonction de prédiction choisie par le procédé de codage et appartenant à une liste de fonctions de prédiction prédéterminée, et destinée à être obtenue par un procédé de décodage selon l'invention, au moins un élément courant d'undit bloc d'éléments étant décodé, en utilisant une modulation différentielle par impulsions codées, à partir d'un élément voisin déjà traité et à l'aide de ladite fonction de prédiction.

Selon un mode particulier de réalisation l’invention concerne également un ou plusieurs programme(s) d’ordinateurs comportant des instructions pour la mise en oeuvre d'un procédé de codage ou de décodage d'au moins une image selon l’un quelconque des modes particuliers de réalisation décrits précédemment, lorsque ledit programme est exécuté par un processeur. Un tel programme peut utiliser n'importe quel langage de programmation et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n’importe quelle autre forme souhaitable. Il peut être téléchargé depuis un réseau de communication et/ou enregistré sur un support lisible par ordinateur.

L’invention vise aussi un support d’enregistrement ou support d’informations lisible par un ordinateur, et comportant des instructions d’un programme d’ordinateur tel que mentionné ci- dessus. Les supports d’enregistrement mentionnés ci-avant peuvent être n’importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu’une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d’enregistrement magnétique, par exemple une clé USB ou un disque dur.

D’autre part, les supports d’enregistrement peuvent correspondre à un support transmissible tel qu’un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d’autres moyens. Le programme selon l’invention peut être en particulier téléchargé sur un réseau de type Internet.

Alternativement, les supports d’enregistrement peuvent correspondre à un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l’exécution du procédé en question.

4. Liste des figures

D’autres buts, caractéristiques et avantages de l’invention apparaîtront plus clairement à la lecture de la description suivante, donnée à titre de simple exemple illustratif, et non limitatif, en relation avec les figures, parmi lesquelles :

les figures IA et IB illustrent la technique de prédiction DPCM appliquée à une image et à un bloc d'une image selon l'art antérieur;

la figure 2 décrit de façon schématique les principales étapes pour traiter un bloc d'une image selon un mode de réalisation de l'invention ; les figures 3A à 3C illustrent des exemples de découpage et de prédiction d'un élément d'un bloc à l'aide d'une fonction de prédiction verticale selon un mode de réalisation de l'invention ;

les figures 3D à 3F illustrent exemples de découpage et de prédiction d'un élément d'un bloc à l'aide d'une fonction de prédiction horizontale selon un mode de réalisation de l'invention;

les figures 4A à 4D illustrent un ordre de traitement des éléments d'un bloc pour différentes découpes et fonctions de prédiction mises en oeuvre selon l'invention ;

les figures 5A à 5C illustrent une variante de réalisation de l'invention, mettant en oeuvre la fonction de prédiction JPEG-LS et une découpe diagonale ;

les figures 6A à 6E illustrent différents exemples de valeurs de remplacement utilisées pour prédire les zones diagonales des figures 5A à 5C avec la fonction de prédiction JPEG-LS ; les figures 7A et 7B illustrent des exemples de découpes de blocs en plus de deux zones ; les figures 8A à 8G présentent un nombre de cycle machines nécessaire au traitement d'un élément d'un bloc ou d'une zone d'un bloc ;

la figure 9 décrit les étapes d'un procédé de codage ou de décodage selon un mode de réalisation de l'invention en mode sériel ;

la figure 10 décrit les étapes d'un procédé de codage ou de décodage selon un mode de réalisation de l'invention en mode parallèle;

la figure 11 détaille les étapes de codage d'une zone découpée dans un bloc selon un mode de réalisation de l'invention ;

la figure 12 détaille les étapes de décodage d'une zone découpée dans un bloc selon un mode de réalisation de l'invention ;

la figure 13 décrit les étapes d'un procédé de codage ou de décodage en mode sériel selon une variante de réalisation de l'invention;

la figure 14 décrit les étapes d'un procédé de codage ou de décodage en mode parallèle selon une variante de réalisation de l'invention;

les figures 15 et 16 décrivent les étapes d'un procédé de codage respectivement de décodage d'au moins une image selon un autre mode de réalisation de l'invention ;

les figures 17A, 17B et 18 illustrent de façon schématique des exemples de structure matérielle d'un dispositif de codage ou de décodage adapté pour mettre en oeuvre le procédé de codage ou de décodage selon l’une quelconque des variantes de réalisation de l’invention.

5. Description détaillée de modes de réalisation de l'invention 5.1 Principe général

L'invention concerne la prédiction d'un bloc d'une image à coder ou à décoder, en particulier la prédiction selon la technique DPCM précédemment décrite. Selon cette technique, les éléments d'un bloc courant sont prédits à partir d'autres éléments de ce bloc.

L'invention vise à améliorer cette technique en permettant au codeur de choisir la meilleure fonction de prédiction à appliquer au bloc courant dans une liste de fonctions prédéterminée et de la transmettre au décodeur.

5.2 Description détaillée du mode de réalisation des figures 15 et 16

Selon un mode de réalisation de l'invention, il est proposé un procédé de codage d'au moins une image, découpée en blocs d'éléments, utilisant une modulation différentielle par impulsions codées (« Differential pulse-code modulation », dite DPCM en langue anglaise).

Selon une caractéristique générale de cet autre aspect de l'invention, le procédé de codage comprend l'insertion dans un flux de données codées (pour « bitstream », en anglais), d'une information codée représentative d'une fonction dite de prédiction qui permet d'obtenir au moins un élément du bloc d'éléments à partir d'un autre élément, ladite information codée étant insérée si la fonction de prédiction appartient à une liste de fonctions de prédiction prédéterminée.

Si la fonction de prédiction n'appartient pas à une liste de fonctions de prédiction prédéterminée, ladite information codée n'est pas insérée.

De préférence, la liste de fonctions de prédiction prédéterminée comprend au moins l'une des fonctions de prédiction suivante :

Fonction de prédiction de direction horizontale,

Fonction de prédiction de direction verticale, ou

Fonction de prédiction JPEG-LS.

De préférence, ledit autre élément est un élément dudit bloc de l'image, précédemment codé.

Un exemple de réalisation de ce procédé est illustré par la Figure 15. On considère une image I à coder. Elle est découpée en blocs. En C150, on sélectionne un bloc B à coder. En C151, on obtient une fonction de prédiction à appliquer au bloc B pour prédire ses éléments, dans une liste de fonctions disponibles. Par exemple, la liste comprend la fonction de prédiction horizontale, la fonction de prédiction verticale et la fonction de prédiction JPEG-LS ou seulement deux de ces fonctions. Bien sûr, l'invention ne se limite pas à cet exemple et la liste peut contenir d'autres fonctions de prédiction que celles précédemment décrites. Les fonctions de prédiction listées sont par exemple testées en calculant pour chacune d'elle le coût débit-distorsion induit. La fonction de prédiction f choisie est celle associée au coût débit-distorsion le plus faible. En C152, une information ICf représentative de la fonction de prédiction f obtenue est codée et insérée dans le flux ou fichier BS.

En C153, on sélectionne au moins un élément ou pixel X dans le bloc B. Un ordre de parcours est défini pour les pixels de la zone courante. Cet ordre de parcours est connu en soi et est prédéterminé. Il est en particulier déterminé par les pixels utilisés pour la prédiction du pixel courant et qui doivent être disponibles sous leur forme décodée (et donc doivent avoir été traités précédemment). Ainsi, un ordre de parcours classique est l'ordre lexicographique, qui fonctionne pour les fonctions de prédiction locale décrites précédemment.

Pour cet élément X sélectionné, dit élément courant, on prédit en C154 une valeur P(X) à partir d'au moins un élément prédicteur voisin déjà traité en appliquant une fonction de prédiction f.

En C155, on obtient la valeur du résidu de prédiction en calculant R(X)=X-P(X). La valeur R(X) est ensuite quantifiée en C156 à l'aide par exemple d'une quantification scalaire connue en soi. Une valeur quantifiée Q(R(X)) est obtenue.

Le résidu quantifié Q(R(X)) est codé en C157 à l'aide de moyens connus tels qu'un codeur de Huffman ou un codeur arithmétique et les données codées obtenues sont insérées dans un flux ou un fichier BS.

En C158, on calcule la valeur décodée D(X) de l'élément courant X en réalisant les opérations inverses. Cette valeur est stockée en mémoire M' de sorte à être disponible pour la prédiction d'éléments suivants du bloc B, ou de l'image.

Si on désigne par Ql le déquantificateur associé au quantificateur utilisé à l'étape précédente, la valeur décodée D(X) de X est : D(X) = P(X) + QI(Q(R(X)))

Au cours d'une étape C159 on vérifie si l'élément courant X est le dernier à traiter dans la zone Zi. Si oui, on vérifie en C160 s'il reste des blocs à traiter. Si c'est le cas, le traitement est terminé. Sinon on répète les étapes précédentes.

Selon un autre aspect de l'invention, il est proposé un procédé de décodage d'au moins une image encodée au sein d'un flux de données codées en utilisant une modulation différentielle par impulsions codées (« Differential pulse-code modulation », dite DPCM en langue anglaise). Ladite image est découpée en blocs d'éléments. Selon une caractéristique générale de cet autre aspect de l'invention, le procédé de décodage comprend l'obtention à partir du flux, d'une information représentative d'une fonction dite de prédiction qui permet d'obtenir au moins un élément du bloc d'éléments à partir d'un autre élément, ladite fonction de prédiction appartenant à une liste de fonctions de prédiction prédéterminée.

Si la fonction de prédiction n'appartient pas à une liste de fonctions de prédiction prédéterminée, ladite information n'est pas obtenue. De préférence, la liste de fonctions de prédiction prédéterminée comprend au moins l'une des fonctions de prédiction suivantes :

Fonction de prédiction de direction horizontale,

Fonction de prédiction de direction verticale, ou

Fonction de prédiction JPEG-LS.

De préférence, ledit autre élément est un élément dudit bloc de l'image, précédemment décodé.

Un exemple de réalisation de ce procédé est illustré par la Figure 16. On considère un flux de données codées ou un fichier compressé BS. Les données codées sont représentatives d'une image I à décoder. En D160, on sélectionne un bloc B à traiter dans l'image I et on lit dans le flux une information ICf représentative d'une fonction de prédiction à appliquer au bloc B. En D161, on décode l'information ICf et on obtient la fonction de prédiction f en D162. En D163, on sélectionne un élément ou pixel X dans le bloc B.

Pour cet élément X sélectionné, dit élément courant, on prédit en D164 une valeur P(X) selon la technique DPCM à partir d'au moins un élément prédicteur voisin déjà traité en appliquant la fonction de prédiction f.

En D165, on lit dans les données codées le résidu quantifié Q(R(X)) et on le décode en D166 à l'aide de moyens connus, inverses de ceux mis en oeuvre coté codeur.

En D167, on calcule la valeur déquantifiée R(X) du résidu de prédiction. Si on appelle Ql le déquantificateur associé au quantificateur utilisé au codeur, la valeur déquantifiée de R(X) est QI(Q(R(X))).

En D168, on calcule la valeur décodée D(X) de l'élément courant X en ajoutant la valeur prédite au résidu déquantifié : D(X) = P(X) + QI(Q(R(X))).

Au cours d'une étape D169 on vérifie si l'élément courant est le dernier à traiter dans le bloc B. Si oui, on vérifie en D170 s'il reste des blocs à traiter dans l'image I. Si c'est le cas, le traitement est terminé. Sinon, on répète les étapes précédentes.

Un avantage de cet aspect de l'invention est de choisir la fonction de prédiction la mieux adaptée au bloc courant, ce qui permet d'améliorer la qualité de la prédiction et donc de réduire le résidu à coder.

5.3 Découpage du bloc courant en zones et prédiction des zones obtenues

Selon un autre mode de réalisation de l'invention, un bloc courant d'une image à coder ou à décoder est découpé en plusieurs zones indépendamment décodables. Lorsqu'un élément courant d'une zone a besoin d'un élément situé dans une autre zone pour prédire l'élément courant, il utilise une valeur de remplacement. Par exemple, cette valeur est prédéterminée et lue dans une mémoire, ou bien elle est déterminée par le codeur pour le bloc courant et lue par le décodeur dans les données codées représentatives du bloc courant, ou encore la valeur d'un élément d'un bloc précédemment codé ou décodé, de préférence parmi les blocs les plus proches du bloc courant.

On présente tout d’abord des modes de mises en oeuvre du découpage d'un bloc en plusieurs zones et de la prédiction des zones obtenues selon l'invention, puis un procédé de codage et un procédé de décodage selon l’invention utilisant une telle prédiction par zones.

On présente ci-après en relation avec les figures 2 à 8 des variantes de mises en oeuvre pour découper un bloc courant en zones et prédire les zones obtenues indépendamment les unes des autres.

En relation avec la Figure 2, on décrit les étapes mises en oeuvre par un procédé de codage ou de décodage d'un bloc B d'une image à coder ou à décoder selon l'invention.

En El, on découpe le bloc B en plusieurs zones Zl, Z2...ZN avec N entier supérieur ou égal à 2. On notera que, selon l'invention, le découpage ou mode de découpe appliqué en El au bloc B est choisi en fonction d'un contexte de codage/décodage, c'est-à-dire de contraintes de fonctionnement du codeur/décodeur, telles que par exemple un ordre de parcours des blocs et des éléments dans un bloc, ou encore le mode de prédiction des éléments du bloc, de sorte à garantir que le ou les éléments prédicteurs d'un élément du bloc soi(en)t disponibles lorsque cet élément est parcouru. Le mode de découpe peut être prédéterminé et connu du codeur et du décodeur ou, selon un mode de réalisation de l'invention, être déterminé en fonction d'informations codées transmises dans le flux ou fichier compressé. Des variantes de réalisation vont être décrites ci-après.

Des exemples de découpage seront présentés ci-après en relation avec les figures 3A à 3F et 5A à 5C.

En E2, on prédit une zone Zi, avec i entier compris entre 1 et N, de la façon suivante :

En E21, on sélectionne au moins un élément ou pixel X dans la zone Zi et on considère la valeur d'au moins une composante de cet élément. Il s'agit par exemple de sa valeur de luminance Y dans un modèle YCbCr de représentation de l'espace colorimétrique, usuel en vidéo. Bien sûr, l'invention ne se limite pas à cet exemple et s'applique à toute composante d'un autre modèle de représentation de l'espace colorimétrique.

Dans la suite de la description, on considère que les éléments du bloc B sont parcourus dans l'ordre lexicographique. Bien sûr, l'invention ne se limite pas à cet ordre de parcours et s'applique à tout autre ordre de parcours, tel que par exemple le parcours en zigzag connu de l'homme de métier.

Au cours d'une étape optionnelle E22, on obtient une fonction de prédiction f à appliquer au bloc courant B. Pour cet élément X, on sélectionne ensuite en E23 un élément prédicteur en appliquant la fonction de prédiction f obtenue ou une fonction de prédiction prédéterminée. Cette fonction de prédiction f prédit la valeur de l'élément X à partir d'au moins un des éléments voisins déjà traités, c'est-à-dire codé ou décodé.

Dans la suite de la description, on désigne par élément voisin, au sens large, un élément du bloc B qui est proche de l'élément courant, sans lui être nécessairement adjacent.

On a déjà décrit en relation avec la Figure 1, l'exemple de la fonction de prédiction, dite JPEG-LS ou f(A,B,C), qui prédit la valeur de l'élément courant X à partir de celle de ses voisins gauche A, droit B et diagonal haut gauche C.

On indique d'autres exemples de fonctions de prédiction :

f(A,B,C) = XA

f(A,B,C) = XB

f(A,B,C) = XA+XB-XC

f(A,B,C) = 0.33XA+0.33XB+0.34XC

Certains de ces exemples seront décrits ci-après en relation avec les Figures 3A à 3F. Une telle fonction de prédiction peut donc utiliser un ou plusieurs éléments prédicteurs.

En E24, on teste, pour chacun des éléments prédicteurs désignés par la fonction de prédiction f utilisée, s'il appartient à la zone courante Zi.

Si c'est le cas, on applique en E25 la fonction de prédiction pour obtenir la valeur prédite P(X) de l'élément courant X à partir des valeurs du ou des éléments prédicteurs.

Sinon, on obtient en E26, pour l'élément prédicteur qui tombe en dehors de la zone courante Zi une valeur de remplacement VR. Plusieurs variantes de mise en oeuvre sont envisagées, parmi lesquelles on cite de façon exhaustive :

lire dans une mémoire une valeur prédéterminée, par exemple égale à la moyenne de la dynamique de valeurs possibles pour l'élément X. Si l'élément X peut prendre sa valeur de luminance dans la fourchette [0,255], alors la valeur de remplacement VR est fixée à 128 ;

obtenir une valeur de remplacement propre au bloc B courant, telle que par exemple la valeur moyenne des intensités des éléments du bloc. Dans ce cas, cette valeur est calculée côté codeur, codée et transmise dans les données codées au décodeur, qui l'obtient par lecture des données codées ;

Remplacer l'élément prédicteur par un autre élément prédicteur situé dans un bloc voisin précédemment codé ou décodé. Des exemples de mise en oeuvre de cette option seront décrits ci-après en relation avec les figures 3B, 3E et 6A à 6D. Une fois la valeur de remplacement obtenue pour chacun des éléments prédicteurs situés hors de la zone courante Zi, on prédit la valeur P(X) de l'élément courant X en E25.

En E27, on teste s'il reste des éléments du bloc à prédire. Si oui, on retourne à l'étape E21 de sélection d'au moins un élément X. Sinon, le traitement se termine en E28.

5.3.1 Premier exemple de mise en oeuvre : prédiction verticale

En relation avec les Figures 3A à 3C, on considère maintenant un premier exemple de mise en oeuvre de l'invention qui utilise une fonction de prédiction, dite de prédiction verticale. Cette fonction n'a recours qu'à un seul élément prédicteur, à savoir l'élément B situé directement au- dessus de l'élément courant X. Si on considère que l'élément X ou X(lin,col) se trouve sur la ligne lin et la colonne col, l'élément prédicteur B se trouve sur la ligne lin-1 et sur la même colonne col.

Sur les Figures 3A à 3C on a représenté à titre d'exemple un bloc B de hauteur Fl = 8 éléments et de largeur W = 4 et on a découpé le bloc B en deux zones de mêmes dimensions ZI et Z2, c'est-à-dire de hauteur W/2 =4 et de largeur W = 4. La zone ZI est située au-dessus de la zone Z2 et elles sont séparées par une frontière Fr qui a la forme d'un segment de droite horizontale. Mathématiquement, la zone 1 comprend tous les éléments du bloc B situés au-dessus de la frontière Fr ont un numéro de ligne lin qui satisfait la relation lin<5. La zone Z2 comprend quant à elle tous les éléments situés au-dessous de cette ligne horizontale, c'est-à-dire dont le numéro de ligne satisfait la relation lin>5.

On considère d'abord la zone Zl. Pour les éléments de la première ligne lin = 1 à partir du coin en haut et à gauche du bloc B, comme illustré par la Figure 3B, la fonction de prédiction verticale désigne un élément prédicteur B' qui n'appartient pas à Zl, mais à la dernière ligne du bloc situé au-dessus du bloc B.

Dans ce cas, l'étape E25 prend une des options précédemment listées pour obtenir une valeur de remplacement. En particulier, elle peut de façon connue, utiliser la valeur de l'élément XB' du bloc précédent pointé par la fonction de prédiction verticale. En effet, ce bloc ayant déjà été traité, la valeur décodée de l'élément XB' est disponible.

Pour les autres lignes, la prédiction verticale désigne des éléments prédicteurs appartenant à Zl. La prédiction des éléments de la zone Zl se fait donc selon la technique DPCM classique.

On considère maintenant la deuxième zone Z2. Comme illustré par la Figure 3C, les éléments de sa première ligne font appel à des prédicteurs verticaux situés dans la première zone Zl. Or l'invention interdit l'utilisation de ces éléments prédicteurs de façon à garantir une indépendance de traitement entre les deux zones.

Dans ce cas, l'étape E25 prend une des options précédemment listées pour obtenir une valeur de remplacement. En particulier, l'invention propose d'aller chercher un élément prédicteur dans le bloc voisin Bs situé au-dessus du bloc courant. Avantageusement, l'élément prédicteur choisi pour remplacer l'élément XB est l'élément XB"(lin = 4, col) situé sur la même colonne que l'élément X courant et au plus près du bloc courant, sur la ligne lin = 4 qui jouxte la frontière Fr entre les deux zones ZI et Z2. Bien sûr, l'invention ne se limite pas à cet exemple. N'importe quel autre élément d'un bloc voisin déjà traité pourrait être utilisé pour remplacer l'élément prédicteur interdit, même si le choix d'un élément prédicteur le plus proche possible et selon la même orientation a plus de chances de fournir une prédiction de bonne qualité.

Pour les éléments des lignes suivantes de la zone 2, l'étape E22 désigne des éléments prédicteurs qui appartiennent à Z2. La prédiction se fait donc en E24 de façon classique.

En interdisant toute dépendance de prédiction entre les deux zones ZI et Z2, l'invention rend possible une parallélisation de leur traitement. En relation avec la Figure 4A, on a affecté un ordre de traitement des éléments du bloc courant B pour un ordre de parcours lexicographique, lorsque la prédiction met en oeuvre la fonction de prédiction verticale. On voit en outre que, pour chacune des deux zones ZI et Z2, les éléments de la première ligne peuvent être prédits au cours d'un premier instant de traitement ou première itération, les éléments de la deuxième ligne au cours d'une deuxième itération etc. De la sorte, pour un bloc de dimensions H = 8 et W = 4, 4 itérations ou autrement dit 4 cycles machines, sont donc suffisants pour prédire l'intégralité du bloc, au lieu de 8 pour le bloc entier, sans la mise en oeuvre de l'invention.

En relation avec la Figure 4B, on présente un autre exemple de mise en oeuvre de l'invention, avec un bloc 4x4 découpé en deux zones ZI et Z2 de dimensions égales, séparées par une frontière horizontale Fr. 4 cycles machine sont nécessaires pour traiter le bloc entier, alors que chaque zone nécessite 2 cycles machine.

5.3.2 Deuxième exemple de mise en oeuvre : prédiction horizontale

En relation avec les Figures 3D à 3F, on considère maintenant un deuxième exemple de mise en oeuvre de l'invention qui utilise une fonction de prédiction, dite de prédiction horizontale. Cette fonction n'a recours qu'à un seul élément prédicteur, à savoir l'élément XA situé directement à gauche de l'élément courant X, sur la même ligne.

Si on considère que l'élément X ou X(lin,col) se trouve sur la ligne lin et la colonne col, l'élément prédicteur XA se trouve sur la ligne lin et sur la colonne col-1.

Sur les Figures 3D à 3F on a représenté à titre d'exemple un bloc B de hauteur H = 4 éléments et de largeur W = 8 et on a découpé le bloc B en deux zones de mêmes dimensions ZI et Z2, présentant chacune une hauteur H=4 et une largeur W/2 = 4. La zone ZI est située à côté de la zone Z2 et elles sont séparées par une frontière Fr qui a la forme d'un segment de droite verticale. Mathématiquement, la zone 1 comprend tous les éléments du bloc B situés à gauche de la frontière Fr ont un numéro de ligne col qui satisfait la relation col<5. La zone Z2 comprend quant à elle tous les éléments situés à droite de cette diagonale, c'est-à-dire dont le numéro de ligne satisfait la relation col>5.

On considère d'abord la zone Zl. Pour les éléments de la première ligne col = 1 à partir du coin en haut et à gauche du bloc B, comme illustré par la Figure 3D, la fonction de prédiction horizontale désigne un élément prédicteur X A qui n'appartient pas à Zl, mais à la dernière colonne du bloc situé à gauche du bloc B.

Dans ce cas, l'étape E25 prend une des options précédemment listées pour obtenir une valeur de remplacement. En particulier, elle peut de façon connue, utiliser cette valeur de l'élément X A du bloc précédent pointé par la fonction de prédiction horizontale. En effet, ce bloc ayant déjà été traité, la valeur décodée de l'élément X A est disponible.

Pour les colonnes suivantes du bloc B, à partir de col = 2, la prédiction horizontale désigne des éléments prédicteurs appartenant à Zl. La prédiction des éléments de la zone Zl se fait donc selon la technique DPCM classique.

On considère maintenant la deuxième zone Z2. Comme illustré par la Figure 3E, les éléments de sa première colonne font appel à des prédicteurs horizontaux situés dans la première zone Zl. Or l'invention interdit l'utilisation de ces éléments prédicteurs de façon à garantir une indépendance de traitement entre les deux zones.

Dans ce cas, l'étape E25 prend une des options précédemment listées pour obtenir une valeur de remplacement. En particulier, l'invention propose d'aller chercher un élément prédicteur dans le bloc voisin B G situé à gauche du bloc courant. Avantageusement, l'élément prédicteur choisi pour remplacer l'élément XA est l'élément XA'(lin, col=4) situé sur la même ligne que l'élément X courant et dans la colonne la plus à droite, col = 4 du bloc B G , qui jouxte la frontière Fr entre les deux zones Zl et Z2.

Bien sûr, l'invention ne se limite pas à cet exemple. N'importe quel autre élément d'un bloc voisin déjà traité pourrait être utilisé pour remplacer l'élément prédicteur interdit, même si le choix d'un élément prédicteur le plus proche possible et selon la même direction a plus de chances de fournir une prédiction de bonne qualité.

Pour les éléments des lignes suivantes de la zone 2, l'étape E22 désigne des éléments prédicteurs qui appartiennent à Z2. La prédiction se fait donc en E24 de façon classique.

En interdisant toute dépendance de prédiction entre les deux zones Zl et Z2, l'invention rend possible une parallélisation de leur traitement. En relation avec la Figure 4C, on a affecté un ordre de traitement des éléments du bloc courant B pour un ordre de parcours lexicographique, lorsque la prédiction met en oeuvre la fonction de prédiction horizontale. On voit que, pour chacune des deux zones Zl et Z2, les éléments de la première ligne peuvent être prédits au cours d'un premier instant de traitement ou première itération, les éléments de la deuxième ligne au cours d'une deuxième itération etc. De la sorte, pour un bloc de dimensions H = 4 et W = 8, 4 itérations ou autrement dit 4 cycles machines, sont donc suffisants pour prédire l'intégralité du bloc, au lieu de 8 pour le bloc entier, sans la mise en oeuvre de l'invention.

En relation avec la Figure 4D, on présente un autre exemple de mise en oeuvre de l'invention, avec un bloc 4x4 découpé en deux zones ZI et Z2 de dimensions égales, séparées par une frontière verticale Fr. 4 cycles machine sont nécessaires pour traiter le bloc entier, alors que chaque zone nécessite seulement 2 cycles machine.

5.3.3 Troisième exemple de mise en oeuvre : prédiction JPEG-LS

On considère maintenant la fonction de prédiction dite JPEG-LS déjà décrite en relation avec les Figures IA et IB et un bloc B de hauteur H = 8 et de largeur W = 8. Selon l'exemple de mise en oeuvre de l'invention illustré par la Figure 5A, le bloc B est découpé en deux zones ZI et Z2 séparées par une frontière diagonale Fr. Appelons X(lin,col) le pixel situé à la ligne lin et la colonne col numérotées à partir de zéro. Mathématiquement, la zone ZI comprend tous les éléments du bloc B situés au dessus de la diagonale Fr ce qui correspond aux éléments dont les coordonnées vérifient l'inégalité lin+col<5. La zone Z2 comprend tous les éléments situés sous cette frontière diagonale, ce qui correspond aux éléments pour lesquels lin+col>5.

Les éléments de la zone ZI sont prédits de façon conventionnelle. Si un élément prédicteur X A , XB OU XC désigné par la fonction de prédiction JPEG-LS pour l'élément courant X tombe dans un bloc voisin précédemment traité, sa valeur est utilisée pour la prédiction de l'élément X.

On considère maintenant la zone Z2. Comme illustré par les Figures 6A à 6E, les éléments qui jouxtent la frontière Fr font appel à des prédicteurs situés dans la première zone Zl. Or l'invention interdit l'utilisation de ces éléments prédicteurs de façon à garantir une indépendance de traitement entre les deux zones. Dans ce cas, l'étape E25 prend une des options précédemment listées pour obtenir une valeur de remplacement. En particulier, l'invention propose d'aller chercher un élément prédicteur X A · dans le bloc voisin B G situé à gauche du bloc courant sur la même ligne. Avantageusement, l'élément prédicteur choisi pour remplacer l'élément X A est l'élément X A · situé sur la même ligne que l'élément X courant et dans la colonne la plus à droite, col = 4 du bloc B G et un élément prédicteur X B' dans le bloc voisin supérieur Bs dans la même colonne que X et sur la ligne lin = 8 la plus proche de B. Lorsque l'élément prédicteur Xc tombe dans la zone Zl, comme illustré par les Figures 6C et 6D, un élément prédicteur de remplacement peut être par exemple être Xc sur la même ligne que l'élément prédicteur désigné par la fonction de prédiction dans le bloc voisin de gauche BG, OU XC'· dans le bloc voisin haut Bs selon la même colonne. Bien sûr, l'invention ne se limite pas à cet exemple. N'importe quel autre élément d'un bloc voisin déjà traité pourrait être utilisé pour remplacer l'élément prédicteur interdit, même si le choix d'un élément prédicteur le plus proche possible et selon la même direction a plus de chances de fournir une prédiction de bonne qualité.

En revanche, les pixels de la zone Z2 qui n'ont pas d'éléments prédicteurs extérieurs à la zone sont prédits de façon classique.

En relation avec la Figure 5B, on voit que dans ce cas il devient possible de traiter en parallèle les zones ZI et Z2, et, à l'intérieur de chaque zone, il est toujours possible de traiter tous les éléments d'une même diagonale au cours de la même itération. Pour un bloc 4x8 qui devrait nécessiter 11 cycles machine, l'invention permet de se limiter à 6. De même, comme illustré par la Figure 5C, pour un bloc 4x4 qui devrait utiliser 7 cycles machine, l'invention permet de se limiter à 4.

5.3.4 Découpage du bloc courant en N zones, avec N entier supérieur à 2

Il est également possible de découper un bloc en plus de deux zones indépendamment décodables, par exemple en 4 zones ZI à Z4 comme illustré par la Figure 7A pour la prédiction verticale et la Figure 7B pour la prédiction JPEG-LS. Pourvu que le codeur ou le décodeur dispose d'un nombre suffisant de processeurs, le nombre de cycles nécessaire au traitement d'un bloc B est encore réduit. Dans les exemples présentés, les zones ont soit les mêmes dimensions, soit des dimensions du même ordre de grandeur, ce qui permet de réduire encore plus le nombre de cycles nécessaires.

5.3.5 Dimensions des blocs à prédire

Typiquement, une technique de codage d'image ou de séquence d'images par bloc partitionne une image en blocs de tailles variables. Par exemple, les dimensions de blocs disponibles sont 4x4, 4x8, 8x4, 8x8 et 16x16.

Le partitionnement en blocs qui induit le nombre le plus élevé de cycles machine nécessaires au traitement d'une image, est celui d'un partitionnement en blocs de petites tailles. En effet, comme illustré par la Figures 8A à 8C, un bloc 16x16 nécessite 0.12 cycle machine par élément ou 31 cycles pour le bloc, un bloc 8x8 0.23 cycle par élément et un bloc 4x4 0.44 cycle par élément.

On considère de nouveau l'exemple de la fonction de prédiction JPEG LS et une image de taille 16x16 pixels. Si l'image est « partitionnée » en un seul bloc de taille 16x16 pixels, et que l'on n'applique pas la technique proposée dans l'invention, nous avons vu que le nombre de cycles nécessaire était 31. Par contre, si le bloc est subdivisé en 16 blocs de taille 4x4, nécessitant chacun 7 cycles, alors le traitement de l'image totale nécessite 16 x 7 = 112 cycles.

Il est donc primordial de réduire le nombre de cycles pour traiter les petits blocs. En effet, un décodeur matériel (pour « hardware », en anglais) doit être conçu pour traiter en temps réel le « pire cas » qui se présente dans un flux de données codées, c'est-à-dire celui d'une image partitionnée en blocs de taille minimale.

En relation avec les figures 8D à 8G, on voit que la mise en oeuvre de l'invention avec un découpage du bloc courant en 2 zones permet d'abaisser le coût de traitement en deçà de 0.25 cycle par élément.

5.4 Procédé de codage ou de décodage d'une image

Les figures 9 à 14 présente un procédé de codage ou de décodage d'au moins une image selon différentes variantes de l'invention. Ces variantes mettent en oeuvre les étapes principales de traitement d'un bloc selon l'invention qui viennent d'être décrites en relation avec les figures 2 à 8.

5.4.1 Procédé de codage ou de décodage sériel

La figure 9 présente des étapes d'un procédé de codage ou de décodage d'une image selon un mode sériel ou séquentiel. Par exemple, un tel procédé de codage/décodage est mis en oeuvre par un dispositif de codage/décodage tel que décrit en relation avec la figure 13. Dans la suite de la description, on considère une séquence d’images h, b, ..., I N à coder fournie en entrée du procédé de codage ou un flux/fichier de données codées fourni en entrée du procédé de décodage. Bien sûr l'invention s'applique aussi au codage/décodage d'une image fixe.

De manière connue, le codage de la séquence d’images h, b, ..., I N est fait image par image selon un ordre de codage préalablement établi et connu du décodeur. Par exemple, les images peuvent être codées dans l’ordre temporel h, b, ..., I N OU selon un autre ordre, par exemple b,b, b , ..., I N .

Lors d’une étape non représentée, une image l k à coder de la séquence d’images b, b, ..., I N est partitionnée en blocs de taille maximale. Chaque bloc de taille maximale peut être redécoupé en blocs plus petits. Par exemple, un bloc de taille maximale est de taille 32x32 pixels. Un tel bloc de taille maximale peut être subdivisé en sous-blocs carrés ou rectangulaires, par exemple de taille 16x16, 8x8, 4x4, 16x8, 8x16, ....

Côté décodeur, une étape de lecture des données codées permet d'obtenir d'une information relative au partitionnement réalisé.

Lors d'une étape C0, un bloc B, dit bloc courant, à coder/décoder d’une image l est sélectionné selon un ordre de parcours de l’image l k prédéterminé, connu du codeur et du décodeur, par exemple l'ordre lexicographique. Au cours d'une étape Cl, on teste si le bloc courant B est à traiter selon la technique DPCM de l'invention ou selon un autre mode de prédiction tel qu'un mode classique de prédiction intra ou inter tel que décrit par exemple dans la norme HEVC. De façon connue, le test peut consister à comparer un coût débit-distorsion du bloc courant selon chacun des modes et à choisir celui qui obtient le coût le plus faible. Une information telle qu'un indicateur (pour « flag », en anglais) du mode de prédiction choisi est codée.

Côté décodeur, on lit l'information dans le fichier compressé ou le flux de données codées afin de savoir si le bloc courant est à décoder selon un mode classique (décodage intra ou inter tel que décrit dans la norme HEVC), ou selon le mode DPCM de l'invention.

Si le mode identifié est un mode de prédiction classique, l'étape suivante est l'étape C2 de codage (respectivement décodage) en mode classique, connue de l'homme de métier. Elle ne sera pas décrite plus avant.

Sinon, si le mode de prédiction obtenu est le mode DPCM selon l'invention, l'étape suivante est l'étape C3 d'obtention d'un découpage du bloc courant. Au cours de cette étape, le bloc courant est divisé en plusieurs zones selon une des variantes de réalisation de l'invention décrites en section 5.3. Selon un premier exemple décrit en section 5. .3.3, le bloc courant B est découpé en deux zones ZI et Z2, définies de la façon suivante :

Un élément X(lin,col) du bloc B appartient à la première zone ZI si lin+col<H+l avec H le nombre de lignes. Sinon le pixel appartient à la deuxième zone Z2. Les zones ZI et Z2 sont séparées par une frontière Fr diagonale.

Selon un deuxième exemple décrit en section 5.3.1, le bloc B est divisé en deux zones ZI et Z2, telles qu'un élément X(lin,col) appartient à la première zone si lin<H+l où H est le nombre de lignes. Sinon l'élément appartient à la deuxième zone.

En C4, on sélectionne la première zone ZI comme zone courante. On note que l'ordre de traitement des zones du bloc B est arbitraire, étant donné qu'elles sont codables/décodables indépendamment l'une de l'autre.

L'étape C5 de codage de la zone ZI sera décrite ci-après en relation avec la Figure 11. L'étape D5 de décodage de la zone ZI sera décrite ci-après en relation avec la Figure 12.

En C6, on teste s'il reste des zones Zi à coder. Dans l'exemple considéré, il reste Z2. On retourne donc à l'étape C4 pour sélectionner la zone Z2. Elle est ensuite codée ou décodée le cas échéant en C5/D5. En C6, le test de dernière zone est satisfait.

L'étape suivante C7 teste s'il reste des blocs à traiter. Si c'est le cas, on retourne à l'étape C0 de sélection d'un nouveau bloc courant. Sinon, le traitement se termine en C8.

5.4.2 Procédé de codage ou de décodage parallèle La figure 10 présente des étapes d'un procédé de codage ou de décodage d'une image selon un mode parallèle.

Les étapes de sélection d'un bloc C0, de test du mode de prédiction Cl, de codage/décodage classique C2 et de découpage en zones C3 sont inchangées.

L'étape C4 de sélection d'une zone à traiter est remplacée par une étape C4' de répartition des zones entre les machines de calcul ou unités de traitement disponibles dans le codeur/décodeur. Dans l'exemple de la Figure 10, on dispose de N unités de traitement pour traiter les N zones du bloc courant, si bien qu'une zone Zi est affectée à chaque unité de traitement UTi. Cette parallélisation est rendue possible par l'invention, qui réalise la prédiction d'une zone indépendamment des autres zones du bloc courant.

Bien sûr l'invention ne se limite pas à cet exemple et s'applique à un codeur ou décodeur comprenant un nombre d'unités de traitement inférieur au nombre de zones à traiter. Dans ce cas, on teste en C6 s'il reste des zones du bloc à traiter. Si oui, le procédé retourne à l'étape C4' de répartition des zones entre les unités de traitement. Sinon, l'étape suivante est l'étape C7 de test de dernier bloc. S'il reste des blocs à traiter, on retourne à l'étape C0, sinon le procédé se termine en C8.

5.4.3 Codage d'une zone du bloc courant

On détaille maintenant en relation avec la Figure 11 l'étape C5 de codage d'une zone Zi du bloc courant selon un mode de réalisation de l'invention.

En C51, on sélectionne au moins un élément ou pixel X dans la zone Zi. Un ordre de parcours est défini pour les pixels de la zone courante. Cet ordre de parcours est connu en soi et est prédéterminé. Il est en particulier déterminé par les pixels utilisés pour la prédiction du pixel courant et qui doivent être disponibles sous leur forme décodée (et donc doivent avoir été traités précédemment). Ainsi, un ordre de parcours classique est l'ordre lexicographique, qui fonctionne pour les fonctions de prédiction locale décrites précédemment.

Pour cet élément X sélectionné, dit élément courant, on prédit en C52 une valeur P(X) à partir d'au moins un élément prédicteur voisin déjà traité en appliquant une fonction de prédiction f, comme précédemment décrit en section 5.3.

En C53, on calcule la valeur du résidu de prédiction R(X)=X-P(X). La valeur R(X) est ensuite quantifiée en C54 à l'aide par exemple d'une quantification scalaire connue en soi. Une valeur quantifiée Q(R(X)) est obtenue.

Le résidu quantifié Q(R(X)) est codé en C55 à l'aide de moyens connus tels qu'un codeur de Huffman ou un codeur arithmétique et les données codées obtenues sont insérées dans un flux ou un fichier. En C56, on calcule la valeur décodée D(X) de l'élément courant X en réalisant les opérations inverses. Cette valeur est stockée en mémoire de sorte à être disponible pour la prédiction d'éléments suivants de la zone courante, ou de l'image.

Si on désigne par Ql le déquantificateur associé au quantificateur utilisé à l'étape précédente, la valeur décodée D(X) de X est : D(X) = P(X) + QI(Q(R(X)))

Au cours d'une étape C57 on vérifie si l'élément courant est le dernier à traiter dans la zone Zi. Si oui, le traitement est terminé. Sinon, l'étape suivante est l'étape C51 de sélection d'un élément à coder.

5.4.4 Décodage d'une zone du bloc courant

On détaille maintenant en relation avec la Figure 12 l'étape D5 de décodage d'une zone Zi du bloc courant selon un mode de réalisation de l'invention.

En D51, on sélectionne au moins un élément ou pixel X dans la zone Zi comme précédemment décrit en section 5.4.3 pour le codage.

Pour cet élément X sélectionné, dit élément courant, on prédit en D52 une valeur P(X) à partir d'au moins un élément prédicteur voisin déjà traité en appliquant une fonction de prédiction f, comme précédemment décrit en section 5.3 pour le codage.

En D53, on lit dans les données codées le résidu quantifié Q(R(X)) et on le décode en D54 à l'aide de moyens connus, inverses de ceux mis en oeuvre coté codeur.

En D55, on calcule la valeur déquantifiée R(X) du résidu de prédiction. Si on appelle Ql le déquantificateur associé au quantificateur utilisé au codeur, la valeur déquantifiée de R(X) est QI(Q(R(X))).

En D56, on calcule la valeur décodée D(X) de l'élément courant X en ajoutant la valeur prédite au résidu déquantifié : D(X) = P(X) + QI(Q(R(X))).

Au cours d'une étape D57 on vérifie si l'élément courant est le dernier à traiter dans la zone Zi. Si oui, le traitement est terminé en D58. Sinon, l'étape suivante est l'étape D51 de sélection d'un élément suivant à décoder.

5.4.5 Variantes de codage ou de décodage d'un bloc courant

En relation avec les Figures 13 et 14, on décrit maintenant une variante de réalisation du codage ou du décodage d'un bloc courant. La figure 13 présente les étapes d'un procédé de codage ou de décodage d'une image mettant en oeuvre cette variante selon un mode sériel. La figure 14 présente les étapes d'un procédé de codage ou de décodage d'une image mettant en oeuvre cette variante selon un mode parallèle. Lorsque le mode de prédiction est le mode DPCM, on obtient au cours d'une étape supplémentaire Cil la fonction de prédiction f à appliquer aux éléments du bloc courant pour prédire ses éléments, dans une liste de fonctions disponibles. Par exemple, la liste comprend la fonction de prédiction horizontale, la fonction de prédiction verticale et la fonction de prédiction JPEG-LS ou seulement deux de ces fonctions. Bien sûr, l'invention ne se limite pas à cet exemple et la liste peut contenir d'autres fonctions de prédiction que celles précédemment décrites précédemment.

Côté codeur, les fonctions prédiction listées sont par exemple testées en calculant pour chacune d'elle le coût débit-distorsion induit. La fonction de prédiction f choisie est celle associée au coût débit-distorsion le plus faible. Les étapes suivantes C3 et C5 ou C51 à C5N exploitent la connaissance de cette information. Notamment, l'étape C3 de découpage du bloc courant en zones prend en compte cette indication de fonction de prédiction pour adapter le découpage réalisé. En effet comme précédemment décrit, chaque fonction de prédiction choisie conditionne une découpe particulière du bloc qui va permettre de minimiser le nombre de cycles machine nécessaires au traitement du bloc courant. En revanche, l'étape C4 de sélection d'une zone à traiter ou respectivement C4' de répartition des zones à traiter sur les unités de traitement disponibles, est indépendant du choix de la fonction de prédiction f, du fait que selon l'invention les zones découpées dans le bloc courant sont codables ou décodables indépendamment les unes des autres. L'étape C5 de codage est elle aussi adaptée, puisque la prédiction de chacune des zones est réalisée avec la fonction de prédiction choisie.

Avantageusement, la fonction de prédiction f choisie est transmise au décodeur sous la forme d'un indicateur spécifique qui est codé et inséré dans le flux/fichier de données codées. Par exemple, cet indicateur prend la forme d'un rang de la fonction de prédiction dans la liste. Bien entendu, cet indicateur n'est inséré que lorsque le bloc courant est codé en mode DPCM.

Côté décodeur, l'étape DU comprend la lecture dans le flux ou le fichier de données codées de l'indicateur de fonction de prédiction et son décodage. Bien entendu un tel indicateur n'est lu que si le bloc est à décoder en mode DPCM. La fonction de prédiction f est obtenue à partir de l'indicateur spécifique décodé.

De façon similaire au codeur, les étapes suivantes D3, et D5 ou D51 à D5N prennent en compte la fonction de prédiction f obtenue pour adapter leur traitement du bloc courant, tandis que les étapes D4 ou D4' ne sont pas impactées.

5.5 Dispositifs de codage et de décodage Selon un mode particulier de réalisation de l'invention illustré par la Figure 17A, les étapes du procédé de codage sont mises en oeuvre par des instructions de programme d'ordinateur. Pour cela, le dispositif de codage 100 ou le dispositif de décodage 200 a l'architecture classique d'un ordinateur et comprend notamment une mémoire MEM 101, 201, une unité de traitement UT 102, 202, équipée par exemple d'au moins un microprocesseur PI, et pilotée par le programme d'ordinateur Pg stocké en mémoire MEM. Le programme d'ordinateur Pg comprend des instructions pour mettre en oeuvre les étapes du procédé de codage ou de décodage tel que décrit ci-dessus, lorsque le programme est exécuté par le processeur.

A l'initialisation, les instructions de code du programme d'ordinateur Pg sont par exemple chargées dans une mémoire RAM avant d'être exécutées par le processeur. Le processeur de l'unité de traitement UT met notamment en oeuvre les étapes du procédé de codage ou de décodage décrit ci-dessus dans ces différentes variantes de réalisation, selon les instructions du programme d'ordinateur Pg.

Selon un autre mode de réalisation de l'invention, illustré par la Figure 17B, l'unité de traitement comprend plusieurs processeurs PI à PN, avec N entier supérieur ou égal à 2. Le programme Pg' comprend des instructions pour mettre en oeuvre les étapes du procédé de codage ou de décodage tel que décrit ci-dessus, lorsque l'exécution du procédé est réalisée par les processeurs PI à PN, comme décrit dans le mode de réalisation dit « parallèle » de la section 5.4.2 en relation avec la Figure 10. Selon ce mode de réalisation, un processeur « maître » par exemple PI exécute le procédé de codage et répartit en C'4 le traitement des zones sur les processeurs disponibles, de sorte que les étapes de codage/décodage C51/D51...C5N/D5N soient exécutées en parallèle. Avantageusement, le dispositif 100, 200 comprend plusieurs mémoires MEM2 à MEMN, en plus de la mémoire M, aptes à stocker de façon temporaire les prédictions des éléments de la zone courante, leurs résidus (dé)quantifiés, leurs valeurs (dé)codées etc.

Selon un autre mode particulier de réalisation de l’invention illustré par la Figure 18, le procédé de codage ou de décodage selon l'invention est mis en oeuvre par des modules fonctionnels. Pour cela, le dispositif 100, 200 comprend en outre:

un module CUT de découpage du bloc en au moins deux zones ;

un module PROC de traitement d'au moins une dite zone, comprenant le parcours des éléments de la zone selon un ordre de parcours prédéterminé, et pour un élément courant parcouru :

o La sélection SEL d'au moins un élément prédicteur voisin précédemment codé ou décodé selon une fonction de voisinage prédéterminée : o La prédiction PRED de l'élément courant en un élément courant prédit :

à partir du au moins un élément prédicteur voisin, si l'au moins un élément prédicteur voisin appartient à ladite zone;

à partir d'au moins une valeur de remplacement, sinon.

L’unité de traitement UT coopère avec les différents modules fonctionnels décrits ci-dessus et la mémoire MEM afin de mettre en oeuvre les étapes du procédé de codage ou de décodage.

Les différents modules fonctionnels décrits ci-dessus peuvent être sous forme matérielle et/ou logicielle. Sous une forme logicielle, un tel module fonctionnel peut comprendre un ou plusieurs processeurs, une mémoire et des instructions de code de programme pour mettre en oeuvre la fonction correspondante au module lorsque les instructions de code sont exécutées par un le processeur. Sous une forme matérielle, un tel module fonctionnel peut mis en oeuvre par tout type de circuits d’encodage adaptés, tels que par exemple et de manière non limitative des microprocesseurs, des processeurs de traitement du signal (DSP pour Digital Signal Processor en anglais), des circuits intégrés spécifiques à des applications (ASICs pour Application Spécifie Integrated Circuit en anglais), des circuits FPGA pour Field Programmable Gâte Arrays en anglais, un câblage d’unités logiques.

Ces modules sont pilotés par le processeur de l'unité de traitement UT.

Avantageusement, le module fonctionnel PROC peut comprendre plusieurs processeurs agencés de sorte à traiter en parallèle les zones découpées dans le bloc courant selon l'invention.

De façon avantageuse, le dispositif 100 et/ou le dispositif 200 peuvent être intégrés à un équipement terminal ET 10, tel que par exemple un téléphone intelligent (pour « smartphone », en anglais), une tablette, un téléviseur, un ordinateur ou PC (pour « personal computer », en anglais). Le dispositif 100, 200 est alors agencé pour coopérer au moins avec le module suivant du terminal ET : un module E/Rl d'émission/réception de données, par l'intermédiaire duquel le train binaire TB ou le fichier compressé FC est transmis dans un réseau de télécommunications, par exemple un réseau filaire ou un réseau hertzien ; et un module M de stockage M de l'image ou de la séquence d'images à coder, du flux/fichier de données codées obtenu ou de l'image ou de la séquence d'images décodée(s).

Il va de soi que les modes de réalisation qui ont été décrits ci-dessus ont été donnés à titre purement indicatif et nullement limitatif, et que de nombreuses modifications peuvent être facilement apportées par l'homme de l'art sans pour autant sortir du cadre de l'invention.