Brevet FR3088511A1 — publié le 20200515

Procédé de décodage d'au moins une image, procédé de codage, dispositifs, 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 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 Specification", 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. 2 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 5 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 Pulse 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 Photographic Expert Group », en 10 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 15 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 20 fonction de voisinage. On indique ci-dessous un exemple de fonction f : f(A,B,C)= min(A,B) si Cmax(A,B) max(A,B) si Cmin(A,B) A+B-C sinon 25 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 30 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 d, fixé par l'utilisateur : 3 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 5 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) + RQ (X). d Le décodeur applique la même formule pour reconstruire les échantillons du signal portant les 10 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. 15 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 20 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. 25 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 1B. 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 30 comme les contenus synthétiques. Toutefois, la technique DPCM présente l'inconvénient d'imposer un traitement sériel des pixels. Une conséquence est la consommation d'un nombre accru de cycles machines pour le traitement 4 d'un bloc DPCM. Or, un codeur et un décodeur vidéo sont soumis à des contraintes de vitesse beaucoup plus fortes qu'un codeur-décodeur d'image fixe comme JPEG-LS. Il existe donc un besoin d'une technique de prédiction de pixels ne présentant pas les inconvénients de l'art antérieur et permettant notamment de réduire le nombre de cycles 5 machine nécessaire au traitement d'un bloc. 3. Exposé de l'invention Selon au moins un mode de réalisation, l'invention concerne un procédé de codage ou de décodage d'au moins une image, une image étant découpée en blocs d'éléments, ledit procédé 10 comprenant, pour au moins un bloc : le découpage du bloc en au moins deux zones ; le 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 au moins un élément parcouru, dit élément courant : 15 o sélection d'au moins un élément prédicteur précédemment codé ou décodé selon une fonction de prédiction ; o prédiction de l'élément courant : - à partir du au moins un élément prédicteur, si l'au moins un élément prédicteur appartient à ladite zone; 20 - à partir d'au moins une valeur de remplacement, sinon. L'invention s'appuie sur une approche tout-à-fait nouvelle, qui consiste à découper un bloc courant en au moins deux zones prédites indépendamment l'une de l'autre. Lorsqu'au cours du traitement d'une zone, un prédicteur tombe dans l'autre zone, il est remplacé par une valeur de remplacement. De la sorte, les deux zones sont indépendamment codables ou décodables. 25 Contrairement à l'art antérieur, elles peuvent donc être traitées en parallèle, ce qui permet de réduire le nombre de cycles machine nécessaire au codage du bloc courant. Selon un premier exemple de réalisation de l'invention, l'élément courant X étant situé sur une ligne lin et une colonne col, la fonction de prédiction sélectionne l'élément précédemment codé ou décodé XB situé sur la même colonne et sur la ligne précédente et la 30 frontière entre lesdites au moins deux zones est horizontale. Un avantage d'une telle prédiction verticale est qu'elle permet un découpage horizontal simple à mettre en oeuvre, tout en permettant le traitement simultané de tous les éléments d'une ligne de chaque zone. 5 Selon un aspect de ce premier exemple de réalisation de l'invention, pour un bloc comprenant H lignes, le bloc courant est découpé en une première zone et une deuxième zone, telles que les éléments de la première zone satisfont la condition lin REVENDICATIONS1. Procédé de codage ou de décodage d'au moins une image, une image étant découpée en blocs d'éléments, ledit procédé comprenant, pour au moins un bloc : le découpage (El) du bloc en au moins deux zones ; le traitement (E2) 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 au moins un élément parcouru, dit élément courant : o sélection (E21) d'au moins un élément prédicteur précédemment codé ou décodé selon une fonction de prédiction ; o prédiction (E25) de l'élément courant : - à partir du au moins un élément prédicteur, si l'au moins un élément prédicteur appartient à ladite zone; - à partir d'au moins une valeur de remplacement, sinon. Procédé selon la revendication 1, caractérisé en ce que, l'élément courant (X) étant situé sur une ligne (lin) et une colonne (col), la fonction de prédiction sélectionne l'élément précédemment codé ou décodé (XB) situé sur la même colonne (col) et sur la ligne précédente (lin-1) et en ce que la frontière entre lesdites au moins deux zones est horizontale. Procédé selon la revendication 2, caractérisé en ce que, pour un bloc comprenant H lignes, le bloc courant est découpé en une première zone (Z1) et une deuxième zone (Z2), telles que les éléments de la première zone satisfont la condition lin