FR3050858A1 - IMAGE ENCODING AND DECODING METHOD, IMAGE ENCODING AND DECODING DEVICE AND CORRESPONDING COMPUTER PROGRAMS - Google Patents

IMAGE ENCODING AND DECODING METHOD, IMAGE ENCODING AND DECODING DEVICE AND CORRESPONDING COMPUTER PROGRAMS Download PDF

Info

Publication number
FR3050858A1
FR3050858A1 FR1653884A FR1653884A FR3050858A1 FR 3050858 A1 FR3050858 A1 FR 3050858A1 FR 1653884 A FR1653884 A FR 1653884A FR 1653884 A FR1653884 A FR 1653884A FR 3050858 A1 FR3050858 A1 FR 3050858A1
Authority
FR
France
Prior art keywords
data
current block
transform
block
vectors
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
FR1653884A
Other languages
French (fr)
Inventor
Pierrick Philippe
Adria Arrufat
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Orange SA
Original Assignee
Orange SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Orange SA filed Critical Orange SA
Priority to FR1653884A priority Critical patent/FR3050858A1/en
Publication of FR3050858A1 publication Critical patent/FR3050858A1/en
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264

Abstract

L'invention concerne le codage d'au moins une image (ICj) découpée en blocs de données, mettant en œuvre, pour un bloc courant (Bi) à coder de ladite image, ledit bloc courant contenant M vecteurs lignes et N vecteurs colonnes de données, tel que M≥2 et N≥2, un traitement des données du bloc courant par application (C4) d'une transformée sélectionnée selon un critère de performance de codage prédéterminé, dans un ensemble (E) comprenant au moins deux transformées, une transformée dudit ensemble mettant en œuvre les opérations suivantes : - premier traitement de données appliqué sur les M ou N vecteurs du bloc courant, à l'issue duquel est obtenu un bloc de données traité, - deuxième traitement de données appliqué sur les N ou M vecteurs du bloc de données traité, à l'issue duquel est obtenu un bloc de données transformé, le procédé de codage étant caractérisé en ce que au moins une autre transformée dudit ensemble met en œuvre : - soit uniquement un traitement des M lignes de données du bloc courant, - soit uniquement un traitement des N colonnes de données du bloc courant.The invention relates to the coding of at least one image (ICj) cut into data blocks, implementing, for a current block (Bi) to be encoded of said image, said current block containing M row vectors and N column vectors of data, such as M≥2 and N≥2, processing the data of the current block by applying (C4) a selected transform according to a predetermined coding performance criterion, in a set (E) comprising at least two transforms, a transform of said set implementing the following operations: first data processing applied to the M or N vectors of the current block, at the end of which a processed data block is obtained; second data processing applied to the N or M vectors of the processed data block, at the end of which is obtained a transformed data block, the coding method being characterized in that at least one other transform of said set implements: - either only a processing of the M data lines of the current block, or only a processing of N data columns of the current block.

Description

PROCÉDÉ DE CODAGE ET DE DÉCODAGE D’IMAGES. DISPOSITIF DE CODAGE ET DE DECODAGE D’IMAGES ET PROGRAMMES D’ORDINATEUR CORRESPONDANTS

Domaine de l'invention

La présente invention se rapporte de manière générale au domaine du traitement d'images, et plus précisément au codage et au décodage d'images numériques et de séquences d'images numériques.

Le codage/décodage d’images numériques s’applique notamment à des images issues d’au moins une séquence vidéo comprenant : - des images issues d’une même caméra et se succédant temporellement (codage/décodage de type 2D), - des images issues de différentes caméras orientées selon des vues différentes (codage/décodage de type 3D), - des composantes de texture et de profondeur correspondantes (codage/décodage de type 3D), - etc...

La présente invention s’applique de manière similaire au codage/décodage d’images de type 2D ou 3D. L’invention peut notamment, mais non exclusivement, s’appliquer au codage vidéo mis en œuvre dans les codeurs vidéo actuels AVC et HEVC et leurs extensions (MVC, 3D-AVC, MV-HEVC, 3D-HEVC, etc), et au décodage correspondant.

Art antérieur

Les codeurs vidéo actuels (MPEG, H.264, HEVC, ...) utilisent une représentation par blocs de la séquence vidéo. Les images sont découpées en blocs, lesquels sont susceptibles d’être redécoupés de façon récursive. Puis chaque bloc est codé par prédiction intra-images ou inter-images. Ainsi, certaines images sont codées par prédiction spatiale (prédiction Intra), d’autres images sont également codées par prédiction temporelle (prédiction Inter) par rapport à une ou plusieurs images de référence codées-décodées, à l'aide d'une compensation en mouvement connue par l’homme de l’art.

Pour chaque bloc est codé un bloc résidu, encore appelé résidu de prédiction, correspondant au bloc original diminué d’une prédiction. Les blocs résidus sont transformés à l’aide d’une opération mathématique de transformée. A l’issue d’une telle transformation, sont obtenus des blocs de coefficients, les coefficients de chaque bloc étant parcourus dans un ordre de parcours déterminé, puis quantifiés à l’aide d’une opération mathématique de quantification par exemple de type scalaire. Des listes monodimensionnelles de coefficients sont obtenues à l’issue de la quantification.

Dans un souci de simplification, l’opération mathématique de transformée sera appelée par la suite ‘transformée’ et l’opération mathématique de quantification sera appelée par la suite ‘quantification’.

Les coefficients de cette liste sont alors codés sous forme de bits par un codage entropique dont le but est de coder les coefficients sans perte.

Les bits obtenus après codage entropique sont inscrits dans un signal flux de données qui est destiné à être transmis au décodeur.

De façon connue en soi, un tel signal comprend : - les coefficients quantifiés contenus dans la liste précitée, - des informations représentatives du mode de codage utilisé, en particulier: • le mode de prédiction (prédiction Intra, prédiction Inter, prédiction par défaut réalisant une prédiction pour laquelle aucune information n’est transmise au décodeur (« en anglais « skip >>)) ; • des informations précisant le type de prédiction (orientation, image de référence, ...) ; • le type de découpage du bloc ; • les informations de mouvement si nécessaire ; • etc.

Une fois que le flux a été reçu par le décodeur, 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, l’opération de parcours inverse, et la transformée inverse des coefficients des blocs sont effectuées pour produire le résidu de prédiction décodé. Puis, la prédiction du bloc est calculée et le bloc est reconstruit en ajoutant la prédiction au résidu de prédiction décodé.

La technique de codage/décodage classique qui vient d’être décrite permet certes des améliorations des performances de codage. Selon le contexte vidéo, elle permet notamment : - une amélioration de la qualité des images pour un débit donné du réseau utilisé pour transmettre les images, - un réduction du débit de transmission des images pour un critère de qualité d’images préalablement fixé.

Dans le domaine du codage vidéo, les transformées en cosinus discrète, DCT (abréviation anglaise de « Discrète Cosine Transform »), ou les transformées en sinus discrète, DST (abréviation anglaise de « Discrète Sine Transform »), sont généralement privilégiées, notamment pour les raisons suivantes : - ce sont des transformées bloc et il est ainsi facile de manipuler les blocs indépendamment les uns des autres, - elles sont efficaces pour compacter l’information dans le domaine fréquentiel, là où l’opération de réduction de débit opère. - elles disposent de méthodes d’implémentation rapides qui requièrent de l’ordre M*log2(M) opérations, M étant le nombre de coefficients transformés.

Les transformées DCT ou DST précitées sont implémentées de façon séparable.

Une transformée séparable peut s’appliquer selon deux cas différents.

Selon un premier cas, il est procédé à l’application d’une première transformée Ac à un bloc résidu x composé de K pixels qui sont organisés sous forme d’une matrice MxN, où Ac est une matrice de données de taille MxM et Μ, N sont des entiers naturels supérieurs ou égaux à 1. A l’issue de l’application de cette première transformée est obtenu un premier bloc transformé Ac.x.

Une opération de transposition t est ensuite appliquée sur le bloc transformé Ac.x. A l’issue de cette transposition est obtenu un bloc transposé (Ac.xÿ.

Enfin, une deuxième transformée Al est appliquée sur le bloc transposé (Ac.x)1, où Al est une matrice de données de taille NxN. A l’issue de l’application de cette deuxième transformée est obtenu un deuxième bloc transformé X de K=NxM pixels, tel que :

Selon un deuxième cas, l’ordre d’application des transformées Al et Ac est inversé. Le deuxième bloc transformé X de K=NxM pixels s’écrit alors de la façon suivante :

Le bloc transformé X obtenu selon ce deuxième cas est similaire au bloc transformé X obtenu selon le premier cas, à une transposition près.

Dans le cas particulier où le bloc résidu x est carré, c'est-à-dire M=N, les matrices Al et Ac ont la même taille.

Au décodage, de façon connue en soi, sont appliquées des transformées inverses de celles mentionnées ci-dessus.

Ainsi, si la transformée a été appliquée selon le premier cas, la transformée inverse correspondante permet d’obtenir le bloc résidu x à l’aide du calcul suivant :

Ainsi, si la transformée a été appliquée selon le deuxième cas, la transformée inverse correspondante permet d’obtenir le bloc résidu x à l’aide du calcul suivant :

AI'1 et Ac'1 représentent les transformées inverses respectives des transformées Al et Ac. Elles permettent d’obtenir les valeurs du bloc résidu x à partir des valeurs du bloc transformé X. Les matrices Al'1 et Ac'1 sont appelées communément matrices inverses de Al et Ac respectivement, dans le cas où les matrices sont choisies orthogonales elles correspondent aux matrices transposées de Al et Ac respectivement.

Outre les transformées de type séparable, il existe également des transformées de type non séparable, telles que par exemple la transformée de Karhunen-Loeve (KLT) qui est considérée comme fournissant une décorrélation optimale des données d’un bloc considéré. Les transformées non séparables ont pour avantage de pouvoir exploiter des corrélations entre n’importe quelle paire (ou plus) de données à l’intérieur d’un bloc considéré, à la différence des transformées de type séparable qui peuvent seulement exploiter les corrélations entre données partageant soit la même ligne, soit la même colonne d’un bloc considéré au travers des transformées qui Al et Ac qui agissent de façon indépendante. Une telle différence rend les transformées de type non séparable plus performantes que les transformées séparables, en particulier du point de vue de la concentration de l’énergie sur peu de coefficients et des performances de codage. En revanche, les transformées non séparables sont très complexes en, ce qui les rend difficiles à implémenter dans les codeurs vidéo actuels. C’est la raison pour laquelle les transformées de type DCT ou DST restent actuellement privilégiées, d’autant plus qu’elles peuvent dans certains cas particuliers constituer une bonne approximation de la transformée KLT.

Une transformée de type non séparable s’écrit mathématiquement au codage comme la multiplication du bloc résidu x, mis sous la forme d’un vecteur de dimension 1xK, par une matrice A de taille KxK. Le bloc transformé X obtenu à l’issue de l’application de cette transformée s’écrit alors de la façon suivante :

Au décodage, la transformée inverse consiste à multiplier le bloc transformé X par la matrice inverse A'1 de A qui peut être la transposée de A, lorsque A est orthogonale. Une telle transformée inverse permet d’obtenir le bloc résidu x suivant :

Dans le domaine du codage vidéo, il a été proposé, notamment dans la publication « Rate-distortion optimised transform compétition for intra coding in HEVC, Adrià Arrufat et al. VCIP 2014 » d’augmenter le nombre de transformées à sélectionner au codage. A cet effet : - pour les blocs de taille 4x4, seize transformées, optimisées préalablement selon un critère débit-distorsion bien connu de l’homme du métier, sont provisionnées, - pour les blocs de taille 8x8, trente-deux transformées, optimisées préalablement selon le critère débit-distorsion sont provisionnées.

Pour un bloc courant ayant une taille donnée, le codeur vidéo sélectionne la transformée qui minimise le critère débit-distorsion, en mettant en compétition les transformées typiques, qu’elles soient de type DCT ou DST, et les transformées optimisées. Le codeur signale alors au décodeur la transformée qui a été sélectionnée. Le décodeur utilise la transformée inverse de celle appliquée au codeur.

Dans ce document, il est proposé de sélectionner une transformée optimale parmi deux types de transformées : les transformées de type séparable et les transformées de type non-séparable, telles que décrites plus haut.

Une telle solution permet certes d’améliorer les performances de codage. Toutefois, la quantité de transformées à ajouter a un impact sur les ressources mémoire à utiliser à la fois au codeur, mais également au décodeur qui doit connaître les transformées pour appliquer la transformée inverse de celle appliquée au codage.

En outre, la mise en compétition des transformées proposées oblige à mettre en œuvre un grand nombre d’opérations, telles que multiplications et additions inhérentes aux produits matriciels. La complexité des calculs est par ailleurs augmentée en raison de la présence de transformées non séparables qui ne disposent pas, à priori, de méthodes d’implémentation rapides.

Objet et résumé de l'invention

Un des buts de l'invention est de remédier à des inconvénients de l'état de la technique précité. A cet effet, un objet de la présente invention concerne un procédé de codage d'au moins une image découpée en blocs de données, mettant en œuvre, pour un bloc courant à coder de l’image, le bloc courant contenant M vecteurs lignes et N vecteurs colonnes de données, tel que M>2 et N>2, un traitement des données du bloc courant par application d’une transformée qui est sélectionnée selon un critère de performance de codage prédéterminé, dans un ensemble comprenant au moins deux transformées, une transformée de l’ensemble mettant en œuvre les opérations suivantes : - premier traitement de données appliqué sur les M ou N vecteurs du bloc courant, à l’issue duquel est obtenu un bloc de données traité, - deuxième traitement de données appliqué sur les N ou M vecteurs du bloc de données traité, à l’issue duquel est obtenu un bloc de données transformé.

Un tel procédé de codage est remarquable en ce qu’au moins une autre transformée de l’ensemble met en œuvre : - soit uniquement un traitement des M vecteurs lignes de données du bloc courant, - soit uniquement un traitement des N vecteurs colonnes de données du bloc courant.

Grâce à la prise en compte, en vue de la sélection d’une transformée, d’au moins une transformée qui s’applique soit uniquement sur les M vecteurs lignes de données du bloc courant, soit uniquement sur les N vecteurs colonnes du bloc courant, les ressources mémoire au codeur sont avantageusement réduites.

Une telle disposition permet également de réduire de façon non négligeable les calculs liés à la mise en compétition entre les différentes transformées candidates de l’ensemble, selon le critère de performance de codage prédéterminé, de chacune des transformées proposées.

La sélection de la transformée à appliquer est ainsi plus rapide.

En outre, dans le cas où est sélectionnée une transformée s’appliquant soit uniquement sur les M vecteurs lignes de données du bloc courant, soit uniquement sur les N vecteurs colonnes de données du bloc courant, plutôt qu’une transformée qui met en œuvre deux traitements de données pour un bloc courant considéré, le traitement des données du bloc courant à l’aide de la transformée ainsi sélectionnée s’en trouve nettement accéléré.

Selon un autre mode de réalisation particulier, une transformée de l’ensemble, mettant en oeuvre soit uniquement un traitement des M vecteurs lignes du bloc courant, soit uniquement un traitement des N vecteurs colonnes du bloc courant, est une transformée trigonométrique.

Par rapport aux transformées mettant en oeuvre un premier et un deuxième traitement de données, telles qu’utilisées classiquement dans les normes de codage/décodage actuelles, une telle disposition permet d’obtenir le meilleur compromis entre, d’une part, une amélioration significative du gain en codage et, d’autre part, une faible complexité de calculs sur les données du bloc qui lui-même résulte de la mise en oeuvre de la sélection de la transformée selon la mise en compétition de transformées particulières selon l’invention.

Selon un autre mode de réalisation, si est sélectionnée une transformée mettant en oeuvre soit uniquement un traitement des M vecteurs lignes de données du bloc courant, soit uniquement un traitement des N vecteurs colonnes de données du bloc courant, le choix du traitement est fonction de la direction de prédiction des données du bloc courant.

Une telle disposition permet avantageusement de conditionner le choix de l’unique traitement de type ligne ou de type colonne à appliquer aux données du bloc courant, à la direction de prédiction choisie pour prédire les données du bloc courant.

Ainsi, ladite transformée sélectionnée est adaptée de façon optimale au mode de prédiction choisi pour le bloc courant, tel que notamment le mode Intra. C'est-à-dire que pour un débit donné, une telle adaptation présente l’avantage de ne pas entraîner de dégradations des données codées du bloc courant selon le mode de prédiction choisi.

Les différents modes ou caractéristiques de réalisation précités peuvent être ajoutés indépendamment ou en combinaison les uns avec les autres, aux étapes du procédé de codage tel que défini ci-dessus. L'invention concerne également un dispositif de codage d'au moins une image découpée en blocs, comprenant un circuit de traitement qui, pour un bloc courant à coder de l’image, le bloc courant contenant M vecteurs lignes et N vecteurs colonnes de données, tel que M>2 et N>2, est agencé pour traiter des données du bloc courant par application d’une transformée qui est sélectionnée selon un critère de performance de codage prédéterminé, dans un ensemble comprenant au moins deux transformées, une transformée de l’ensemble mettant en oeuvre les opérations suivantes : - premier traitement de données appliqué sur les M ou N vecteurs du bloc courant, à l’issue duquel est obtenu un bloc de données traité, - deuxième traitement de données appliqué sur les N ou M vecteurs du bloc de données traité, à l’issue duquel est obtenu un bloc de données transformé.

Le dispositif de codage selon l’invention est remarquable en ce qu’au moins une autre transformée de l’ensemble met en oeuvre : - soit uniquement un traitement des M vecteurs lignes de données du bloc courant, - soit uniquement un traitement des N vecteurs colonnes de données du bloc courant.

Un tel dispositif de codage est notamment apte à mettre en oeuvre le procédé de codage précité. L'invention concerne aussi un procédé de décodage d'un signal de données représentatif d'au moins une image découpée en blocs, mettant en oeuvre, pour un bloc courant à décoder de l’image, le bloc courant contenant M vecteurs lignes et N vecteurs colonnes de données, tel que M>2 et N>2, ce qui suit : - détermination, dans le signal de données : • d’un bloc courant de données codées associé au bloc courant à décoder, • d’un indicateur d’une transformée à appliquer aux données du bloc courant de données codées, - traitement des données codées du bloc courant par application aux données codées de la transformée associée à l’indicateur déterminé, une telle transformée étant sélectionnée dans un ensemble de transformées comprenant au moins deux transformées, une transformée de l’ensemble mettant en oeuvre les opérations suivantes : • premier traitement de données appliqué sur les M ou N vecteurs du bloc courant, à l’issue duquel est obtenu un bloc de données traité, • deuxième traitement de données appliqué sur les N ou M vecteurs du bloc de données traité, à l’issue duquel est obtenu un bloc de données transformé.

Un tel procédé de décodage est remarquable en ce qu’au moins une autre transformée de l’ensemble met en oeuvre : - soit uniquement un traitement des M vecteurs lignes de données codées du bloc courant, - soit uniquement un traitement des N vecteurs colonnes de données codées du bloc courant.

Selon un mode de réalisation particulier, une transformée de l’ensemble, mettant en oeuvre soit uniquement un traitement des M vecteurs lignes du bloc courant de données codées, soit uniquement un traitement des N vecteurs colonnes du bloc courant de données codées, est une transformée trigonométrique.

Selon un autre mode de réalisation particulier, si à la suite de la détermination de l’indicateur de la transformée à appliquer aux données codées du bloc courant, est sélectionnée une transformée mettant en oeuvre soit uniquement un traitement des M vecteurs lignes de données codées du bloc courant, soit uniquement un traitement des N vecteurs colonnes de données codées du bloc courant, le choix du traitement est fonction de la direction de prédiction des données codées du bloc courant.

Les différents modes ou caractéristiques de réalisation précités peuvent être ajoutés indépendamment ou en combinaison les uns avec les autres, aux étapes du procédé de décodage tel que défini ci-dessus. L'invention concerne également un dispositif de décodage d'un signal de données représentatif d'au moins une image découpée en blocs, comprenant un circuit de traitement qui, pour un bloc courant à décoder de l’image, le bloc courant contenant M vecteurs lignes et N vecteurs colonnes de données, tel que M>2 et N>2, est agencé pour : - déterminer, dans le signal de données : • un bloc courant de données codées associé au bloc courant à décoder, • un indicateur d’une transformée à appliquer aux données du bloc courant de données codées, - traiter des données codées du bloc courant par application aux données codées de la transformée associée à l’indicateur déterminé, la transformée étant sélectionnée dans un ensemble de transformées comprenant au moins deux transformées, une transformée de l’ensemble mettant en oeuvre les opérations suivantes : • premier traitement de données appliqué sur les M ou N vecteurs du bloc courant, à l’issue duquel est obtenu un bloc de données traité, • deuxième traitement de données appliqué sur les N ou M vecteurs du bloc de données traité, à l’issue duquel est obtenu un bloc de données transformé.

Le dispositif de décodage selon l’invention est remarquable en ce qu’au moins une autre transformée de l’ensemble met en oeuvre : - soit uniquement un traitement des M vecteurs lignes de données codées du bloc courant, - soit uniquement un traitement des N vecteurs colonnes de données codées du bloc courant.

Un tel dispositif de décodage est notamment apte à mettre en oeuvre le procédé de décodage précité. L'invention concerne encore un programme d'ordinateur comportant des instructions pour mettre en oeuvre l'un des procédés de codage et de décodage selon l'invention, lorsqu'il est exécuté sur un ordinateur.

Ce 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. L’invention vise également un support d’enregistrement lisible par un ordinateur sur lequel est enregistré un programme d’ordinateur, ce programme comportant des instructions adaptées à la mise en oeuvre de l'un des procédés de codage ou de décodage selon l'invention, tels que décrits ci-dessus. L’invention vise également un support d’enregistrement lisible par un ordinateur sur lequel est enregistré un programme d’ordinateur, ce programme comportant des instructions adaptées à la mise en oeuvre du procédé de codage ou de décodage selon l'invention, tels que décrits ci-dessus.

Le support d'enregistrement peut ê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, une clé USB, ou un moyen d'enregistrement magnétique, par exemple un disque dur. D'autre part, le support d'enregistrement peut être 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, le support d'enregistrement peut être 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é de codage ou de décodage précité.

Brève description des dessins D'autres caractéristiques et avantages apparaîtront à la lecture d’un mode de réalisation préféré décrit en référence aux figures dans lesquelles: - la figure 1 représente les étapes du procédé de codage selon l’invention, - la figure 2 représente un mode de réalisation d'un dispositif de codage selon l'invention, - la figure 3 représente un exemple de bloc courant à coder/décoder, - la figure 4 représente un mode de réalisation d'un dispositif de décodage selon l'invention, - la figure 5 représente les étapes du procédé de décodage selon l’invention.

Description détaillée de la partie codage

Un mode de réalisation de l'invention va maintenant être décrit, dans lequel le procédé de codage selon l'invention est utilisé pour coder une image ou une séquence d'images selon un flux binaire proche de celui qu'on obtient par un codage conforme par exemple à la norme HEVC.

Dans ce mode de réalisation, le procédé de codage selon l'invention est par exemple implémenté de manière logicielle ou matérielle par modifications d'un codeur initialement conforme à la norme HEVC. Le procédé de codage selon l'invention est représenté sous la forme d'un algorithme comportant des étapes C1 à C7 telles que représentées à la figure 1.

Selon le mode de réalisation de l'invention, le procédé de codage selon l'invention est implémenté dans un dispositif de codage CO représenté à la figure 2.

Comme illustré en figure 2, un tel dispositif codeur comprend : - une entrée ENT_C pour recevoir une image courante à coder, - un circuit de traitement CT_C pour mettre en oeuvre le procédé de codage selon l'invention, le circuit de traitement CT_C contenant : • une mémoire MEM_C comprenant une mémoire tampon MT_C, • un processeur PROC_C piloté par un programme d'ordinateur PG_C, - une sortie SOR_C pour délivrer un signal ou flux codé contenant les données obtenues à l’issue du codage de l’image courante. A l'initialisation, les instructions de code du programme d'ordinateur PG_C sont par exemple chargées dans une mémoire RAM, MR_C, avant d'être exécutées par le circuit de traitement CT_C.

Le procédé de codage représenté sur la figure 1 s’applique à toute image courante ICj fixe ou bien faisant partie d’une séquence de L images ICi, ..., ICj,..., ICl (1 <j<L) à coder.

Au cours d’une étape C1 représentée à la figure 1, il est procédé, de façon connue en soi, au partitionnement d’une image courante ICj en une pluralité de blocs B-ι, B2, ..., B,,..., Bf (1 <i<F), un bloc courant choisi dans cette pluralité contenant M vecteurs lignes et N vecteurs colonnes de données, tel que M>2 et N>2. Une telle étape de partitionnement est mise en œuvre par un dispositif de partitionnement MP_C représenté sur la figure 2, lequel dispositif est piloté par le processeur PROC_C.

Il convient de noter qu’au sens de l’invention, le terme « bloc » signifie unité de codage (de l’anglais « coding unit »). Cette dernière terminologie est notamment utilisée dans la norme HEVC « ISO/IEC/23008-2 Recommandation ITU-T H.265 High Efficiency Video Coding (HEVC) ».

En particulier, une telle unité de codage regroupe des ensembles de pixels de forme rectangulaire ou carrée, encore appelés blocs ou macroblocs.

Une telle unité de codage pourrait, dans une norme future, regrouper également des ensembles de pixels présentant d'autres formes géométriques.

Lesdits blocs Bi, B2, ..., B,,..., Bf sont destinés à être codés selon un ordre de parcours prédéterminé, qui est par exemple du type lexicographique. Cela signifie que les blocs sont codés les uns après les autres, de la gauche vers la droite, puis du haut vers le bas. D’autres types de parcours sont bien sûr possibles. Ainsi, il est possible de découper l’image ICj en plusieurs sous-images appelées slices et d’appliquer indépendamment un découpage de ce type sur chaque sous-image. Il est également possible de coder non pas une succession de lignes, comme expliqué ci-dessus, mais une succession de colonnes. Il est également possible de parcourir les lignes ou colonnes dans un sens ou dans l’autre.

Chaque bloc peut par ailleurs être lui-même divisé en sous blocs qui sont eux-mêmes subdivisibles.

Au cours d’une étape C2 représentée à la figure 1, le codeur CO sélectionne comme bloc courant un premier bloc à coder B, de l’image ICj, tel que par exemple le premier bloc B-i.

Un exemple d’un tel bloc est représenté sur la figure 3. Il contient par exemple : - M=8 vecteurs lignes de données, tels que un premier vecteur ligne Mi de quatre données di, d2, d3, d4, un deuxième vecteur ligne M2 de quatre données d5, d6, d7, d8, un troisième vecteur ligne M3 de quatre données dg, di0, du, di2, un quatrième vecteur ligne M4 de quatre données di3, du, di5, di6, un cinquième vecteur ligne M5 de quatre données d-i7, dis, dig, d2o, un sixième vecteur ligne M6 de quatre données d2i, d22, d23, d24, un septième vecteur ligne M7 de quatre données d2s, d26, d27, d28, un huitième vecteur ligne M8 de quatre données d2g, d30, d3i, d32, - et N=4 vecteurs colonnes, tels que un premier vecteur colonne

Ni de huit données di, ds, dg, di3, di7, d2i, d25, d29, un deuxième vecteur colonne N2 de huit données d2, d6, di0, du, d-i8, d22, d26, d30, un troisième vecteur colonne N3 de huit données d3, d7, du, di5, dig, d23, d27, d3i, un quatrième vecteur colonne N4 de huit données d4, d8, di2, di6, d2o, d24, d28, d32.

Au cours d’une étape C3 représentée à la figure 1, le codeur CO procède à la sélection d’une transformée parmi un ensemble E de transformées stocké au préalable dans la mémoire tampon MT_C du codeur CO de la figure 2.

Selon l’invention, l’ensemble E comprend au moins deux transformées T0 et Tutelles que: - l’une des au moins deux transformées, par exemple To, met en oeuvre les opérations suivantes : • premier traitement de données appliqué sur les M ou N vecteurs du bloc courant B,, à l’issue duquel est obtenu un bloc de données traité Β°, • deuxième traitement de données appliqué sur les N ou M vecteurs du bloc de données traité Β°, à l’issue duquel est obtenu un bloc de données transformé Btj, - au moins une autre parmi les au moins deux transformées de l’ensemble E, ici T-ι, met en oeuvre : • soit uniquement un traitement des M vecteurs lignes de données du bloc courant, • soit uniquement un traitement des N vecteurs colonnes de données du bloc courant.

La sélection de la transformée To ou Ti est mise en oeuvre selon un critère de performance de codage prédéterminé, par exemple : • par minimisation du critère débit/distorsion bien connu de l'homme du métier, • ou par minimisation uniquement du débit, • ou par minimisation uniquement de la distorsion, • ou par prise en compte de la complexité engendrée par la complexité de calcul de la transformée lorsqu’elle est sélectionnée, ladite complexité étant pondérée avec le critère débit/distorsion précité.

On rappelle que dans un contexte de codage vidéo, la complexité est définie par exemple par le comptage du nombre d’opérations mathématiques (notamment addition, multiplication, décalage binaire) impliquées pour le calcul de la transformée des données du bloc courant B,.

Dans l’exemple décrit ici, on entend par données, les pixels du bloc courant B,.

Il convient toutefois de noter qu’on entend également par données, les pixels d’un bloc prédit obtenu à l’aide d’une prédiction du bloc courant B, par rapport à un bloc prédicteur qui est sélectionné suite à une mise en compétition de différents modes de prédiction inter, intra ou autres prédéterminés, par exemple par minimisation d’un critère débit distorsion.

La transformée T0 est composée d’un couple de transformées constitué d’une transformée primaire D0 et d’une transformée secondaire C0.

Selon un premier mode de réalisation : - la transformée primaire D0 est une matrice 4x4 qui s’applique sur les M=8 vecteurs lignes du bloc courant B,, de façon à obtenir un bloc courant traité B^Do-B*, où t représente la transposée du bloc B,, - la transformée secondaire Co est une matrice 8x8 qui s’applique sur les N=4 vecteurs colonnes du bloc courant traité Β°, de façon à obtenir un bloc courant transformé ΒΤΐ=Ο0.(Β°ί)1.

Selon une variante de ce premier mode de réalisation : - la transformée primaire Do est une matrice 8x8 qui s’applique sur les N=4 vecteurs colonnes du bloc courant B,, de façon à obtenir un bloc courant traité B°j=Do.Bi , - la transformée secondaire C0 est une matrice 4x4 qui s’applique sur les M=8 vecteurs lignes du bloc courant traité Β°, de façon à obtenir un bloc courant transformé ΒΤΐ=Οο·(Β°ί)1.

Selon un deuxième mode de réalisation, les transformées Co et D0 sont appliquées au travers d’une implémentation rapide par un algorithme rapide qui peut prendre la forme de papillons (butterfly diagram en anglais). Cela vaut notamment pour les transformées trigonométriques, comme décrit dans la publication Algebraic Signal Processing Theory: Cooley-Tukey Type Algorithms for DCTs and DSTs, IEEE transactions on Signal Processing, Avril 2008.

Conformément à ce deuxième mode de réalisation, le bloc transformé courant BT, est obtenu en moins d’opérations arithmétiques qu’en appliquant successivement les transformées primaire et secondaire D0 et C0 sous forme de produit matriciel.

En outre, selon l’invention, la transformée primaire Do est par exemple de type optimisée en débit distorsion conformément au critère RDOT (abréviation anglaise de « Rate-Distorsion Optimized Transform »), conformément à la publication O. G. Sezer et al., “Sparse Orthonormal Transforms for Image Compression", IEEE ICIP, pp. 149-152, 2008.

Selon un mode de réalisation de l’invention, la transformée Ti de l’ensemble E est une transformée trigonométrique.

Selon un autre mode de réalisation de l’invention, dans le cas où le bloc courant B, est prédit conformément à un mode de prédiction donné, Intra par exemple, qui correspond donc à une direction de prédiction donnée : - si la transformée To est sélectionnée en tant que transformée optimale T* à l’issue de l’étape C3, l’ordre dans lequel sont traités soit d’abord les M vecteurs lignes puis les N vecteurs colonnes du bloc courant B,, soit d’abord les N vecteurs colonnes puis les M vecteurs lignes du bloc courant B, est fonction de la direction de prédiction des données du bloc courant qui est associée au mode de prédiction donné, - si la transformée Ti est sélectionnée en tant que transformée optimale T* à l’issue de l’étape C3, le choix de traiter soit les M vecteurs lignes, soit les N vecteurs colonnes du bloc courant B, est fonction de la direction de prédiction des données du bloc courant qui est associée au mode de prédiction donné.

Au cours d’une étape C4 représentée sur la figure 1, il est procédé à l’application de la transformée sélectionnée T* au bloc courant B,. A l’issue de l’étape C4 est obtenu un bloc de données transformé BT,.

Une telle opération est effectuée par un dispositif MTR_C de calcul de transformée, tel que représenté sur la figure 2, lequel dispositif est piloté par le processeur PROC_C.

Au cours d’une étape C5 représentée à la figure 1, il est procédé à la quantification des données du bloc transformé BT, selon une opération classique de quantification, telle que par exemple une quantification scalaire ou vectorielle. Un bloc Bq, de coefficients quantifiés est alors obtenu. L’étape C5 est mise en œuvre par un dispositif de quantification MQ_C tel que représenté à la figure 2, lequel dispositif est piloté par le processeur PROC_C.

De façon connue en soi, au cours d’une étape C6 représentée sur la figure 1, il est procédé au codage des données du bloc Bq,. Un tel codage est par exemple un codage entropique de type CABAC ("Context Adaptive Binary Arithmetic Coder" en anglais) ou bien encore un codage entropique de type arithmétique ou de Huffman. A l’issue de l’étape C6 sont obtenues des données codées associées au bloc courant B,. L’étape C6 est mise en œuvre par un dispositif de codage MC_C représenté sur la figure 2, lequel dispositif est piloté par le processeur PROC_C.

Au cours d’une étape C7 représentée à la figure 1, il est procédé à la construction d’un signal ou flux de données φ qui contient les données codées du bloc courant B, obtenues à l’issue de l’étape C6 précitée. L’étape C7 est mise en œuvre par un dispositif MCF de construction de signal de données, tel que représenté sur la figure 2, lequel dispositif est piloté par le processeur PROC_C.

Le signal de données φ est ensuite délivré via la sortie SOR_C du codeur CO de la figure 2. Un tel signal est soit stocké dans la mémoire tampon MT_C du codeur CO de la figure 2, soit transmis par un réseau de communication (non représenté) à un terminal distant. Celui-ci comporte le décodeur DO représenté à la figure 4.

De façon connue en soi, le signal de données φ comprend en outre certaines informations encodées par le codeur CO, telles que le type de prédiction (Inter ou Intra) qui a été éventuellement appliqué, et le cas échéant, le mode de prédiction sélectionné, l’index du bloc prédicteur sélectionné, l’indice d’image de référence et le vecteur de mouvement utilisés dans le mode de prédiction Inter, un index IT* associé à la transformée T* appliquée au cours de l’étape C4 précitée.

Il est ensuite procédé classiquement au décodage du bloc B,. Un bloc décodé BD, est alors obtenu. Il est à noter que le bloc décodé BD, est le même que le bloc décodé obtenu à l’issue du procédé de décodage de l’image ICj qui sera décrit plus loin dans la description. Le bloc décodé BD, est ainsi rendu disponible pour être utilisé par le codeur CO de la figure 2.

Les étapes de codage C1 à C7 qui viennent d’être décrites ci-dessus sont ensuite mises en œuvre pour chacun des blocs Bi, B2, ..., B,,..., Bf à coder de l’image courante ICj considérée, dans un ordre prédéterminé qui est par exemple l’ordre lexicographique.

On va maintenant décrire différentes configurations possibles d’ensembles de transformées.

Il est par exemple considéré que le codeur CO de la figure 2 dispose d’un ensemble de deux transformées pour chaque mode de prédiction proposé et pour chaque taille de bloc. Dans ce contexte, et conformément à la publication « Mode-dependent transform compétition in HEVC », Adrià Arrufat et al., Image Processing (ICIP), IEEE ICIP 2015, pp. 1598-1602, le codeur CO peut ainsi, au cours de l’étape C3 précitée, mettre en compétition une pluralité de transformées par mode de prédiction.

Ainsi par exemple, pour un bloc courant B, de taille 4x4 et pour une prédiction donnée, par exemple le mode de prédiction Intra n°6 du standard HEVC, l’ensemble E comprend deux transformées T0 et Ti qui sont mises en compétition au cours de l’étape C3 de la figure 1.

Selon un premier mode de réalisation de cette configuration, et comme déjà décrit plus haut, la transformée To est composé d’une paire de transformées primaire D0 et secondaire Co, qui sont par exemple de même type, à savoir chacune une DST de type VII. Les coefficients de chacune des transformées C0 et D0 s’expriment ainsi sous la forme de l’équation ci-dessous, à un facteur multiplicatif près :

où n est un indice spatial (abscisse), tel que 0^n<3, et k est un indice de fréquence (ordonnée), tel que 0<k<3. Les coefficients de chacune des transformées C0 et D0 obtenues peuvent approximés et exprimés sous la forme, par exemple, des nombre entiers ci-dessous, après avoir été chacun multipliés par un facteur multiplicatif égal à 27 : 29 55 74 84 74 74 0 -74 84 -29 -74 55 55 -84 74 -29

Une matrice de ce type est considérée quasi orthogonale, ce qui implique avantageusement que son inverse est sa transposée. A ce titre, le produit d’une telle matrice par sa transposée donne une matrice ne comportant sur chacune de ses lignes que des termes négligeables sauf un, significativement plus important que les autres (par exemple un facteur 100).

Selon ce premier mode de réalisation, la transformée Ti est quant à elle une transformée de type optimisée en débit distorsion conformément au critère RDOT précité.

La transformée Ti est représentée par exemple sous la forme de nombres entiers suivants, représentés sur 8 bits : 33 55 74 81 61 73 9 -84 99 -31 -63 38 39 -83 82 -34

La transformée Τι est composée : - d’une transformée D-ι de type optimisée en débit distorsion conformément au critère RDOT, laquelle s’applique de préférence sur les M=4 vecteurs lignes du bloc résidu courant Br, issu de la prédiction du bloc courant B, selon le mode de prédiction Intra n°6 du standard HEVC, de façon à obtenir un bloc courant traité Β1ί=Τ-|.Βηι, où t représente la transposée du bloc résidu courant Bn, - d’une matrice identité ID de taille 4x4 qui s’applique de préférence sur les N=4 vecteurs colonnes du bloc courant traité B1,, de façon à obtenir un bloc courant transformé ΒΤί=Ιϋ.(Β1ί)1.

La composition de la transformée Ti tient aussi compte du fait que la direction de prédiction du mode de prédiction n°6 est essentiellement horizontale.

De façon connue en soi, la matrice identité ID se présente sous la forme suivante, à un facteur de normalisation près :

De ce fait, le bloc courant transformé BT, peut s’écrire sous la forme :

Ce qui revient à :

De façon particulièrement avantageuse, le nombre d’opérations arithmétiques n’est donc ici lié qu’à l’application d’une transformée de taille conforme au nombre de colonnes du bloc courant B,.

Comme indiqué dans le tableau comparatif ci-dessous, il ressort donc que la complexité calculatoire engendrée suite à l’application de la transformée Τι se limite à sept opérations arithmétiques par pixels, une telle complexité étant : - beaucoup moins élevée que celle engendrée suite à l’application d’une transformée de type produit de deux matrices, notée Tpm, qui nécessite quatorze opérations arithmétiques, - un peu moins élevée que celle engendrée suite à l’application de la transformée T0 composée de deux mêmes transformées trigonométriques DST-VII, qui nécessite huit opérations arithmétiques.

Les performances de codage qui utilisent l’ensemble de transformées E composé, selon l’invention, des transformées To et Ti, sont comparées avec celles utilisant un ensemble de transformées composé conformément à l’état de l’art, noté EEa, qui est par exemple composé de la transformée To et d’une transformée T10 qui est elle-même composée d’une paire de transformées primaire D10 et secondaire C10, par exemple conjointement optimisées selon un critère RDOT.

Les transformées C10 et D10 se présentent respectivement sous la forme des matrices suivantes : 38 57 72 79 90 56 -20 -67 66 -50 -69 67 47 -85 76 -30 0-17 127 127 6 2 0 -6 89 91 -4 -3 91 -89 6

La comparaison des performances de codage est mise en oeuvre en relation avec le bloc courant B, de taille 4x4 et pour le mode de prédiction Intra n°6 du standard HEVC.

La comparaison est évaluée par exemple à l’aide d’une mesure la compacité dans le plan distorsion/parcimonie, conformément à la publication de Sezer citée plus haut. A cet effet, sur un ensemble TestSet de signaux résiduels d’images, est mesurée la quantité J suivante qui doit être la plus faible possible :

telle que : - Brv est un bloc résiduel courant qui est collecté sur un grand ensemble d’images variées, - Bqv est le bloc résiduel courant quantifié par seuillage obtenu après application de la transformée considérée Tu sur le bloc résiduel courant Brv, tel que u={0,1,10}, - ||.||o représente la norme zéro, c'est-à-dire le nombre de coefficients non-nuls du bloc Bqv résiduel courant quantifié par seuillage, - λ est un opérateur lagrangien de pondération qui règle la contrainte de débit de transmission, - R est le débit de transmission du bloc Bqv résiduel courant quantifié par seuillage, - D est la distorsion du bloc Bqv résiduel courant quantifié par seuillage, - G est le nombre de blocs résiduels considérés, - K est le nombre de pixels de chaque bloc résiduel.

Le tableau ci-dessous résume les valeurs de R, D et J qui sont obtenues pour chacun des ensembles E et EEa proposés dans l’exemple ci-dessus.

Il est constaté qu’il existe un faible écart de performance entre l’ensemble E et l’ensemble Eea au bénéfice, pour l’ensemble E, d’une complexité calculatoire moindre, puisque la transformée Ti nécessite sept opérations par pixel, alors que la transformée T10 nécessite quatorze opérations par pixel.

Selon un deuxième mode de réalisation de la configuration précitée, l’ensemble E comprend la transformée T0 précitée et un autre type de transformée T^ que celle mentionnée plus haut, la transformée Ti étant encore une transformée optimisée en débit distorsion conformément au critère RDOT.

Dans ce deuxième mode de réalisation, la transformée Ti est une transformée trigonométrique discrète DTT (abréviation anglaise de « Discrète Trigonométrie Transforms »).

La transformée Ti est composée : - d’une transformée Di de type optimisée en débit distorsion conformément au critère RDOT, laquelle s’applique sur par exemple les M=4 vecteurs lignes du bloc résidu courant Βη, de façon à obtenir un bloc courant traité Β1,=Τι.Βηι, où t représente la transposée du bloc résiduel courant Br,, - d’une matrice identité ID de taille 4x4 qui s’applique sur les N=4 vecteurs colonnes du bloc courant traité B1,, de façon à obtenir un bloc courant transformé B^ID^B1,)1.

Selon ce deuxième mode de réalisation, la transformée Doptimisée selon le critère RDOT est une transformée DCT-V qui s’exprime sous la forme suivante : 48 68 68 68 68 60 -22 -87 68 -22 -87 60 68 -87 60 -22

De façon particulièrement avantageuse, le nombre d’opérations arithmétiques associé à la transformée Ti n’est donc ici lié qu’à l’application d’une transformée de taille conforme au nombre de colonnes du bloc courant Bi.

Les performances de codage qui utilisent l’ensemble de transformées E composé, selon le deuxième mode de réalisation de l’invention, des transformées T0 et Τι, sont comparées avec celles utilisant un ensemble Eea de transformées composé conformément à l’état de l’art, qui est par exemple composé de la transformée T0 et d’une transformée T20 qui est elle-même composée d’une paire de transformées primaire D20 et secondaire C2o, qui sont par exemple chacune trigonométrique et conjointement optimisées selon un critère RDOT.

La transformée primaire D20 optimisée est une transformée DST-VII déjà représentée plus haut dans la description.

La transformée secondaire C2o optimisée est par exemple une transformée DCT-IV qui peut s’exprimer à l’aide d’une formule ou bien être exprimée en valeurs entières sur huit bits comme ci-dessous :

DCT-IV 89 75 50 18 75 -18 -89 -50 50 -89 18 75 18 -50 75 -89

La comparaison des performances de codage est mise en œuvre de la même manière que dans le premier mode de réalisation.

Le tableau ci-dessous résume les valeurs de R, D et J qui sont obtenues pour chacun des ensembles E et EEa proposés selon ce deuxième mode de réalisation.

Il est constaté que les performances de codage sont bien meilleures en utilisant l’ensemble E au bénéfice d’une complexité calculatoire moindre puisque le nombre d’opérations arithmétiques nécessité par la transformée Ti représente environ la moitié du nombre d’opérations arithmétiques nécessité par la transformée T2o-

La configuration de l’ensemble E de transformées qui a été décrite ci-dessus est bien entendu modulable, en particulier en fonction du mode de prédiction choisi pour prédire le bloc courant. Ainsi, pour des modes de prédiction verticaux, la transformée Ti est plutôt composée de la façon suivante : - une matrice identité ID de taille 4x4 qui s’applique de préférence sur les M=4 vecteurs lignes du bloc résidu courant Βη, de façon à obtenir un bloc courant traité Β1ί=Ιϋ.(Βη)1, - une transformée Di de type optimisée en débit distorsion conformément au critère RDOT, laquelle s’applique de préférence sur les M=4 vecteurs colonnes du bloc courant traité B1,, de façon à obtenir un bloc courant transformé ΒΤί=Τ-ι.(ΒηΥ.

De façon particulièrement avantageuse, le nombre d’opérations arithmétiques n’est donc ici lié qu’à l’application d’une transformée de taille conforme au nombre de lignes du bloc courant B,.

Il va également de soi que l’ensemble E de transformées peut comprendre plus de deux transformées. Différents exemples d’ensembles E de transformées qui permettent d’obtenir de bons compromis en termes de complexité calculatoire/ performances de codage, sont listés ci-dessous : - E= (T0, Ti, T2), tel que T0= (DST-VII, DST-VII), T1= (ID, DCT-V) et T2= (ID, DST-VI) ; - E= (T0, Ti, T2, T3, T5), tel que T0= (DST-VII, DST-VII), T1= (DCT-IV, DST-VII), T2= (ID, DCT-II), T3= (DCT-VI, DCT-VI), T4= (ID, DST-IV) ; - E= (T0, T1; T2), tel que T0= (DST-VII, DST-VII), T1= (DCT-V, ID) et T2= (DCT-V, DCT-VII) ; - E= (T0, T1; T2, T3, T5), tel que T0= (DST-VII, DST-VII), T1= (DST-IV, DCT-III), T2= (DCT-V, ID), T3= (DCT-V, DCT-IV), T4=(DCT-VI, DCT-V).

Description détaillée de la partie décodage

Un mode de réalisation de l'invention va maintenant être décrit, dans lequel le procédé de décodage selon l'invention est utilisé pour décoder un signal ou flux de données représentatif d’une image ou d’une séquence d'images qui est apte à être décodé par un décodeur conforme à l’une quelconque des normes de décodage vidéo actuelles ou à venir.

Dans ce mode de réalisation, le procédé de décodage selon l'invention est par exemple implémenté de manière logicielle ou matérielle par modifications d'un tel décodeur.

Le procédé de décodage selon l'invention est représenté sous la forme d'un algorithme comportant des étapes D1 à D7 telles que représentées à la figure 5.

Selon ce mode de réalisation, le procédé de décodage selon l'invention est implémenté dans un dispositif de décodage ou décodeur DO représenté à la figure 4.

Comme illustré en figure 4, un tel dispositif décodeur comprend : - une entrée ENT_D pour recevoir le signal de données ou flux courant φ à décoder, - un circuit de traitement CT_D pour mettre en œuvre le procédé de décodage selon l'invention, le circuit de traitement CT_D contenant : • une mémoire MEM_D comprenant une mémoire tampon MT_D, • un processeur PROC_D piloté par un programme d'ordinateur PG_D, - une sortie SOR_D pour délivrer une image courante reconstruite contenant les données obtenues à l’issue du décodage selon le procédé de l’invention. A l'initialisation, les instructions de code du programme d'ordinateur PG_D sont par exemple chargées dans une mémoire RAM, MR_D, avant d'être exécutées par le circuit de traitement CT_D.

Le procédé de décodage représenté sur la figure 5 s’applique à un signal ou flux de données φ représentatif d’une image courante ICj à décoder qui est fixe ou qui appartient à une séquence d'images à décoder. A cet effet, des informations représentatives de l’image courante ICj à décoder sont identifiées dans le signal de données φ reçu à l’entrée ENT_D du décodeur DO et tel que délivré à l’issue du procédé de codage de la figure 1.

En référence à la figure 5, au cours d’une étape D1, il est procédé, de façon connue en soi, à la détermination dans le signal φ des blocs codés associés à chacun des blocs Bi, B2, B,,..., Bf codés précédemment conformément à l’ordre lexicographique précité.

Une telle étape de détermination D1 est mise en œuvre par un dispositif d’identification MI_D d’analyse de flux, tel que représenté à la figure 4, lequel est piloté par le processeur PROC_D. D’autres types de parcours que celui mentionné ci-dessus sont bien sûr possibles et dépendent de l’ordre de parcours choisi au codage.

Au cours d’une étape D2 représentée à la figure 5, le décodeur DO de la figure 4 sélectionne, comme bloc courant B, à décoder, le premier bloc qui a été codé à l’issue du procédé de codage de la figure 1.

Un exemple d’un tel bloc est représenté sur la figure 3. Il contient par exemple : - M=8 vecteurs lignes de données, tels que un premier vecteur ligne Mi de quatre données di, d2, d3, d4, un deuxième vecteur ligne M2 de quatre données ds, d6, d7, d3, un troisième vecteur ligne M3 de quatre données dg, d-io, d-n, di2, un quatrième vecteur ligne M4 de quatre données di3, du, di5, di6, un cinquième vecteur ligne M5 de quatre données du, dis, di9, d20, un sixième vecteur ligne M6 de quatre données d2i, d22, d23, d24, un septième vecteur ligne M7 de quatre données d2s, d26, d27, d23, un huitième vecteur ligne M8 de quatre données d2g, d30, d3i, d32, - et N=4 vecteurs colonnes, tels que un premier vecteur colonne

Ni de huit données di, ds, dg, di3, di7, d2i, d2s, d2g, un deuxième vecteur colonne N2 de huit données d2, d6, d-ιο, du, dis, d22, d26, d3o, un troisième vecteur colonne N3 de huit données d3, d7, du, di5, d-ig, d23, d27, d3i, un quatrième vecteur colonne N4 de huit données d4, d3, di2, d-i6, d20, d24, d23, d32.

Au cours d’une étape D3 représentée à la figure 5, il est procédé, de façon connue en soi, à une détermination, par exemple par décodage, des données associées au bloc courant B, à décoder qui ont été codées au cours de l’étape C6 de la figure 1. A l’issue d’une telle détermination, est obtenu un ensemble d’informations numériques associées au bloc de coefficients quantifiés Bq, qui a été obtenu à l’issue de l’étape de quantification C5 de la figure 1.

Egalement au cours de l’étape D3, peuvent être déterminées des informations qui sont relatives au type de prédiction du bloc courant B,, si ce dernier a été prédit au codage, et qui ont été inscrites dans le signal de données φ. De telles informations de prédiction sont notamment le mode de prédiction sélectionné au codage et l’index du bloc prédicteur sélectionné.

Au cours de l’étape D3, est également déterminé, de façon connue en soi, l’index IT* de la transformée sélectionnée au codage à l’étape C3 de la figure 1, puis appliquée à l’étape C4 de la figure 1.

Une telle étape D3 de décodage est mise en œuvre par un dispositif de décodage MD_D représenté sur la figure 4, lequel dispositif est piloté par le processeur PROC_D.

Au cours d’une étape D4 représentée à la figure 5, il est procédé à une déquantification du bloc de coefficients quantifiés Bq,, selon une opération classique de déquantification qui est l’opération inverse de la quantification mise en œuvre lors de l’étape de quantification C5 de la figure 1. Un ensemble de coefficients déquantifiés courant BDq, est alors obtenu à l’issue de l’étape D4. Une telle étape de déquantification est par exemple de type scalaire ou vectoriel. L’étape D4 est mise en œuvre au moyen d’un dispositif MQ'1_D de quantification inverse, tel que représenté à la figure 4, lequel dispositif est piloté par le processeur PROC_D.

Au cours d’une étape D5 représentée à la figure 5, le décodeur DO procède à la sélection d’une transformée T'1* associée à l’index IT* déterminé à l’étape D3 précitée, parmi un ensemble E'1 de transformées stocké au préalable dans la mémoire tampon MT_D du décodeur DO de la figure 4.

Selon l’invention, l’ensemble E'1 comprend au moins deux transformées T'1o et T'11, respectivement inverses des transformées T0 et Ti utilisées au codeur, telles que: - l’une des au moins deux transformées, par exemple T'10, met en œuvre les opérations suivantes : • premier traitement de données appliqué sur les M ou N vecteurs du bloc de coefficients déquantifiés courant BDq,, à l’issue duquel est obtenu un bloc de données traité Β°, • deuxième traitement de données appliqué sur les N ou M vecteurs du bloc de données traité Β°, à l’issue duquel est obtenu un bloc de données décodé transformé BDtj, - au moins une autre des au moins deux transformées de l’ensemble E'1, ici T'1i, met en oeuvre : • soit uniquement un traitement des M vecteurs lignes de données du bloc de coefficients déquantifiés courant BDq,, • soit uniquement un traitement des N vecteurs colonnes de données du bloc de coefficients déquantifiés courant BDqi.

Dans l’exemple décrit ici, on entend par données, les pixels du bloc de données décodé transformé BDtj.

Il convient toutefois de noter qu’on entend également par données, les pixels d’un bloc modifié résidu décodé transformé, dans le cas où une prédiction du bloc courant B, a été mise en oeuvre au codage.

La transformée T10 est composée d’un couple de transformées constitué d’une transformée primaire D'10 et d’une transformée secondaire C'1o respectivement inverses des transformées primaire D0 et secondaire Co mentionnées plus haut.

Selon un premier mode de réalisation : - la transformée primaire D'10 est une matrice 4x4 qui s’applique sur les M=8 vecteurs lignes du bloc de coefficients déquantifiés courant BDq,, de façon à obtenir un bloc courant traité BVD'ViBDqi)1, où t représente la transposée du bloc BDq,, - la transformée secondaire C'1o est une matrice 8x8 qui s’applique sur les N=4 vecteurs colonnes du bloc courant traité Β°, de façon à obtenir un bloc courant décodé transformé ΒΟΤΐ=Ο'10.(Β°ί)1.

Selon une variante de ce premier mode de réalisation : - la transformée primaire D'10 est une matrice 8x8 qui s’applique sur les N=4 vecteurs colonnes du bloc de coefficients déquantifiés courant BDq,, de façon à obtenir un bloc courant traité B°i=D'1o.(BDqi), - la transformée secondaire C'10 est une matrice 4x4 qui s’applique sur les M=8 vecteurs lignes du bloc courant traité Β°, de façon à obtenir un bloc courant décodé transformé BDTi^'ViB0,)1.

Selon un deuxième mode de réalisation, de façon correspondante au codage précité, les transformées C'10 et D'10 sont appliquées au travers d’une implémentation rapide par un algorithme en forme de papillons.

Conformément à ce deuxième mode de réalisation, le bloc courant décodé transformé BDI, est obtenu en moins d’opérations arithmétiques qu’en appliquant successivement les matrices de transformées primaire et secondaire D 1o et C V

Selon un mode de réalisation de l’invention, la transformée T'1i de l’ensemble E'1 est une transformée trigonométrique.

Selon un autre mode de réalisation de l’invention, dans le cas où une prédiction du bloc courant B, a été mise en oeuvre au codage conformément à un mode de prédiction donné, Intra par exemple, qui correspond donc à une direction de prédiction donnée : - si la transformée T10 est sélectionnée à l’issue de l’étape D5, l’ordre dans lequel sont traités soit d’abord les M vecteurs lignes puis les N vecteurs colonnes du bloc de coefficients déquantifiés courant BDq,, soit d’abord les N vecteurs colonnes puis les M vecteurs lignes du bloc de coefficients déquantifiés courant BDq,, est fonction de la direction de prédiction des données du bloc courant qui est associée au mode de prédiction donné, - si la transformée T'1i est sélectionnée à l’issue de l’étape D5, le choix de traiter soit les M vecteurs lignes, soit les N vecteurs colonnes du bloc de coefficients déquantifiés courant BDq, est fonction de la direction de prédiction des données du bloc courant qui est associée au mode de prédiction donné.

Au cours d’une étape D6 représentée sur la figure 5, il est procédé à l’application de la transformée sélectionnée T1* au bloc de coefficients déquantifiés courant BOq,. A l’issue de l’étape D6 est obtenu un bloc de données décodé transformé BDTi qui constitue le boc courant reconstruit BD,.

Une telle opération est effectuée par un dispositif MTR'1_D de calcul de transformée, tel que représenté sur la figure 4, lequel dispositif est piloté par le processeur PROC_D.

Au cours d’une étape D7 représentée à la figure 5, ledit bloc reconstruit courant BD, est écrit dans une image décodée IDj.

Une telle étape est mise en oeuvre par un dispositif URI de reconstruction d’image tel que représenté sur la figure 4, ledit dispositif étant piloté par le processeur PROC_D.

Les étapes de décodage D1 à D7 qui viennent d’être décrites ci-dessus sont mises en oeuvre pour tous les blocs B-ι, B2, ..., B,,..., BF à décoder de l’image courante ICj considérée, dans un ordre prédéterminé qui est par exemple l’ordre lexicographique.

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.

METHOD FOR ENCODING AND DECODING IMAGES APPARATUS FOR ENCODING AND DECODING IMAGES AND CORRESPONDING COMPUTER PROGRAMS

Field of the invention

The present invention relates generally to the field of image processing, and more specifically to the encoding and decoding of digital images and digital image sequences.

The encoding / decoding of digital images applies in particular to images originating from at least one video sequence comprising: images coming from the same camera and succeeding one another temporally (coding / decoding of 2D type), images from different cameras oriented according to different views (coding / decoding of 3D type), - corresponding texture and depth components (coding / decoding of 3D type), - etc ...

The present invention applies similarly to the coding / decoding of 2D or 3D type images. The invention may especially, but not exclusively, apply to video coding implemented in current AVC and HEVC video encoders and their extensions (MVC, 3D-AVC, MV-HEVC, 3D-HEVC, etc.), and to corresponding decoding.

Prior art

Current video encoders (MPEG, H.264, HEVC, ...) use a block representation of the video sequence. The images are cut into blocks, which can be recursively redrawn. Then each block is coded by intra-image prediction or inter-image. Thus, some images are coded by spatial prediction (Intra prediction), other images are also coded by temporal prediction (Inter prediction) with respect to one or more coded-decoded reference images, by means of a compensation in movement known by those skilled in the art.

For each block is coded a residue block, also called prediction residue, corresponding to the original block minus a prediction. The residue blocks are transformed using a transform mathematical operation. At the end of such a transformation, blocks of coefficients are obtained, the coefficients of each block being traversed in a determined travel order, and then quantized by means of a mathematical quantization operation, for example of the scalar type. Monodimensional lists of coefficients are obtained after the quantization.

For the sake of simplification, the mathematical operation of transform will be called later 'transformed' and the mathematical operation of quantification will be called later 'quantification'.

The coefficients of this list are then encoded in bits by an entropy coding whose purpose is to code the coefficients without loss.

The bits obtained after entropy coding are written in a data stream signal which is intended to be transmitted to the decoder.

In a manner known per se, such a signal comprises: the quantized coefficients contained in the aforementioned list, information representative of the coding mode used, in particular: the prediction mode (Intra prediction, Inter prediction, default prediction realizing a prediction for which no information is transmitted to the decoder ("in English" skip ")); • information specifying the type of prediction (orientation, reference image, ...); • the type of division of the block; • movement information if necessary; • etc.

Once the stream has been received by the decoder, the decoding is done image by image, and for each image, block by block. For each block, the corresponding elements of the stream are read. The inverse quantization, the reverse course operation, and the inverse transform of the block coefficients are performed to produce the decoded prediction residue. Then, the prediction of the block is calculated and the block is reconstructed by adding the prediction to the decoded prediction residue.

The conventional coding / decoding technique that has just been described certainly allows improvements in coding performance. Depending on the video context, it allows in particular: - an improvement in the quality of the images for a given bit rate of the network used to transmit the images, - a reduction of the transmission rate of the images for a previously fixed image quality criterion.

In the field of video coding, the discrete cosine transforms, DCT (abbreviation of "Discrete Cosine Transform"), or the discrete sinus transforms, DST (abbreviation of "Discrete Sine Transform"), are generally preferred, especially for the following reasons: - they are block transforms and it is thus easy to manipulate the blocks independently of each other, - they are effective for compacting the information in the frequency domain, where the flow reduction operation operates. they have fast implementation methods that require the order M * log2 (M) operations, M being the number of transformed coefficients.

The aforementioned DCT or DST transforms are implemented separably.

A separable transform can be applied in two different cases.

According to a first case, a first transform Ac is applied to a residue block x composed of K pixels which are organized in the form of a matrix MxN, where Ac is a matrix of data of size MxM and Μ , N are natural numbers greater than or equal to 1. After the application of this first transform is obtained a first transformed block Ac.x.

A transposition operation t is then applied to the transformed block Ac.x. At the end of this transposition, a transposed block (Ac.xÿ.

Finally, a second Al transform is applied to the transposed block (Ac.x) 1, where Al is a data matrix of size NxN. At the end of the application of this second transform is obtained a second transformed block X of K = NxM pixels, such that:

In a second case, the order of application of the Al and Ac transforms is reversed. The second transformed block X of K = NxM pixels is then written as follows:

The transformed block X obtained according to this second case is similar to the transformed block X obtained according to the first case, to a close transposition.

In the particular case where the residue block x is square, that is to say M = N, the matrices Al and Ac have the same size.

On decoding, in a manner known per se, reverse transforms of those mentioned above are applied.

Thus, if the transform has been applied according to the first case, the corresponding inverse transform makes it possible to obtain the residue block x using the following calculation:

Thus, if the transform has been applied according to the second case, the corresponding inverse transform makes it possible to obtain the residue block x by means of the following calculation:

AI'1 and Ac'1 represent the respective inverse transforms of the Al and Ac transforms. They make it possible to obtain the values of the residue block x from the values of the transformed block X. The matrices Al'1 and Ac'1 are commonly called inverse matrices of Al and Ac respectively, in the case where the matrices are chosen orthogonal to each other. correspond to the matrices transposed of Al and Ac respectively.

In addition to the separable type transforms, there are also non-separable type transforms, such as, for example, the Karhunen-Loeve transform (KLT) which is considered to provide an optimal decorrelation of the data of a block considered. Non-separable transforms have the advantage of being able to exploit correlations between any (or more) pair of data within a given block, unlike separable-type transforms that can only exploit the correlations between data. sharing either the same line or the same column of a block considered through transforms that Al and Ac that act independently. Such a difference makes the non-separable type transforms more efficient than the separable transforms, in particular from the point of view of the concentration of the energy on few coefficients and the coding performances. On the other hand, non-separable transforms are very complex in, which makes them difficult to implement in current video encoders. This is the reason why the DCT or DST transforms are currently preferred, especially since they may in certain cases be a good approximation of the KLT transform.

A non-separable type transform is mathematically written as the multiplication of the residual block x, set in the form of a vector of dimension 1xK, by a matrix A of size KxK. The transformed block X obtained after the application of this transform is then written as follows:

At decoding, the inverse transform consists of multiplying the transformed block X by the inverse matrix A'1 of A which can be the transpose of A, when A is orthogonal. Such an inverse transform makes it possible to obtain the following residue block x:

In the field of video coding, it has been proposed, in particular in the publication "Rate-distortion optimized transform competition for intra coding in HEVC, Adrià Arrufat et al. VCIP 2014 "to increase the number of transforms to select at the encoding. For this purpose: - for 4x4 sized blocks, sixteen transformed, previously optimized according to a rate-distortion criterion well known to those skilled in the art, are provisioned, - for blocks of size 8x8, thirty-two transformed, previously optimized according to the debit-distortion criterion are provisioned.

For a current block having a given size, the video encoder selects the transform that minimizes the rate-distortion criterion, by putting into competition the typical transforms, whether of the DCT or DST type, and the optimized transforms. The encoder then signals the decoder which transform has been selected. The decoder uses the inverse transform of that applied to the encoder.

In this document, it is proposed to select an optimal transform from two types of transforms: separable type transforms and non-separable type transforms, as described above.

Such a solution certainly makes it possible to improve coding performance. However, the amount of transforms to be added has an impact on the memory resources to be used by both the encoder and also the decoder which must know the transforms to apply the inverse transform to that applied to the encoding.

In addition, the competition of the proposed transforms requires the implementation of a large number of operations, such as multiplications and additions inherent to the matrix products. The complexity of the calculations is also increased because of the presence of non-separable transforms which do not have, at first sight, fast implementation methods.

Object and summary of the invention

One of the aims of the invention is to overcome disadvantages of the state of the art mentioned above. For this purpose, an object of the present invention relates to a method for encoding at least one image cut into data blocks, implementing, for a current block to be encoded in the image, the current block containing M line vectors and N column vectors of data, such as M> 2 and N> 2, processing the data of the current block by applying a transform which is selected according to a predetermined coding performance criterion, in a set comprising at least two transforms, a transform of the set implementing the following operations: - first data processing applied on the M or N vectors of the current block, at the end of which a data block is obtained, - second data processing applied on the N or M vectors of the processed data block, at the end of which is obtained a transformed data block.

Such a coding method is remarkable in that at least one other transform of the set implements: either only a processing of the M data line vectors of the current block, or only a processing of the N column data vectors. of the current block.

By taking into account, for the purpose of selecting a transform, at least one transform that applies to only the M vector data lines of the current block, or only to the N column vectors of the current block , the memory resources at the encoder are advantageously reduced.

Such an arrangement also makes it possible to reduce, in a non-negligible manner, the calculations related to the placing in competition between the different candidate transforms of the set, according to the predetermined coding performance criterion, of each of the proposed transforms.

The selection of the transform to be applied is thus faster.

In addition, in the case where a transform is selected that applies either only to the M vector data lines of the current block, or only to the N column vectors of data of the current block, rather than a transform that implements two data processing for a current block considered, the processing of the data of the current block using the thus selected transform is significantly accelerated.

According to another particular embodiment, a transform of the set, implementing either only a treatment of the M line vectors of the current block, or only a processing of the N column vectors of the current block, is a trigonometric transform.

With respect to the transforms implementing a first and a second data processing, as conventionally used in the current coding / decoding standards, such an arrangement makes it possible to obtain the best compromise between, on the one hand, a significant improvement the gain in coding and, secondly, a low computational complexity on the data of the block which itself results from the implementation of the selection of the transform according to the competition of particular transforms according to the invention.

According to another embodiment, if a transform is selected using either only a processing of the M data line vectors of the current block, or only a processing of the N column vectors of data of the current block, the choice of the processing is a function of the prediction direction of the data of the current block.

Such a disposition advantageously makes it possible to condition the choice of the single line or column type processing to be applied to the data of the current block, to the prediction direction chosen to predict the data of the current block.

Thus, said selected transform is optimally adapted to the prediction mode chosen for the current block, such as in particular the Intra mode. That is to say, for a given bit rate, such an adaptation has the advantage of not causing degradation of the coded data of the current block according to the chosen prediction mode.

The various embodiments or aforementioned embodiments can be added independently or in combination with each other, to the steps of the coding method as defined above. The invention also relates to a device for encoding at least one image divided into blocks, comprising a processing circuit which, for a current block to be encoded in the image, the current block containing M row vectors and N column vectors of data. , such that M> 2 and N> 2, is arranged to process data of the current block by applying a transform that is selected according to a predetermined coding performance criterion, in a set comprising at least two transforms, a transform of the set implementing the following operations: - first data processing applied on the M or N vectors of the current block, at the end of which is obtained a processed data block, - second data processing applied on the N or M vectors of the processed data block, at the end of which is obtained a transformed data block.

The coding device according to the invention is remarkable in that at least one other transform of the set implements: either only a treatment of the M vector data lines of the current block, or only a processing of the N vectors data columns of the current block.

Such a coding device is particularly suitable for implementing the aforementioned coding method. The invention also relates to a method for decoding a data signal representative of at least one image divided into blocks, implementing, for a current block to be decoded from the image, the current block containing M line vectors and N data column vectors, such as M> 2 and N> 2, as follows: - determining, in the data signal: • a current block of coded data associated with the current block to be decoded, • an indicator of a transform to be applied to the data of the current block of coded data, - processing of the coded data of the current block by applying to the coded data of the transform associated with the determined indicator, such a transform being selected from a set of transforms comprising at least two transforms, a transform of the set implementing the following operations: • first data processing applied on the M or N vectors of the current block, at the end of which is obtained a data block processed, • second data processing applied to the N or M vectors of the processed data block, after which a transformed data block is obtained.

Such a decoding method is remarkable in that at least one other transform of the set implements: either only a treatment of the M coded data line vectors of the current block, or only a processing of the N column vectors of encoded data of the current block.

According to a particular embodiment, a transformation of the set, implementing either only a processing of the M line vectors of the current block of coded data, or only a processing of the N column vectors of the current block of coded data, is a transform. trigonometric.

According to another particular embodiment, if, following the determination of the indicator of the transform to be applied to the coded data of the current block, a transform is selected using only the M coded data line vectors. current block, that is only a processing of N coded data column vectors of the current block, the choice of the processing is a function of the prediction direction of the coded data of the current block.

The various embodiments or aforementioned embodiments can be added independently or in combination with each other, to the steps of the decoding method as defined above. The invention also relates to a device for decoding a data signal representative of at least one image divided into blocks, comprising a processing circuit which, for a current block to be decoded from the image, the current block containing M vectors. rows and N column vectors of data, such as M> 2 and N> 2, are arranged to: - determine, in the data signal: • a current block of coded data associated with the current block to be decoded, • an indicator of a transform to be applied to the data of the current block of coded data, - processing coded data of the current block by applying to the coded data of the transform associated with the determined indicator, the transform being selected from a set of transforms comprising at least two transforms , a transform of the set implementing the following operations: • first data processing applied on the M or N vectors of the current block, at the end of which l is obtained a processed data block, • second data processing applied to the N or M vectors of the processed data block, at the end of which is obtained a transformed data block.

The decoding device according to the invention is remarkable in that at least one other transform of the set implements: either only a processing of the M coded data line vectors of the current block, or only a processing of the N encoded data column vectors of the current block.

Such a decoding device is particularly suitable for implementing the aforementioned decoding method. The invention also relates to a computer program comprising instructions for implementing one of the coding and decoding methods according to the invention, when it is executed on a computer.

This program can use any programming language, and be in the form of source code, object code, or intermediate code between source code and object code, such as in a partially compiled form, or in any other form desirable shape. The invention also relates to a computer-readable recording medium on which a computer program is recorded, this program comprising instructions adapted to the implementation of one of the coding or decoding methods according to the invention. as described above. The invention also relates to a recording medium readable by a computer on which a computer program is recorded, this program including instructions adapted to the implementation of the coding or decoding method according to the invention, as described. above.

The recording medium may be any entity or device capable of storing the program. For example, the medium may comprise storage means, such as a ROM, for example a CD ROM or a microelectronic circuit ROM, a USB key, or a magnetic recording means, for example a hard disk. On the other hand, the recording medium may be a transmissible medium such as an electrical or optical signal, which may be conveyed via an electrical or optical cable, by radio or by other means. The program according to the invention can be downloaded in particular on an Internet type network.

Alternatively, the recording medium may be an integrated circuit in which the program is incorporated, the circuit being adapted to execute or to be used in the execution of the aforementioned coding or decoding method.

BRIEF DESCRIPTION OF THE DRAWINGS Other characteristics and advantages will appear on reading a preferred embodiment described with reference to the figures in which: FIG. 1 represents the steps of the coding method according to the invention, FIG. an embodiment of a coding device according to the invention; FIG. 3 represents an example of a current block to be coded / decoded; FIG. 4 represents an embodiment of a decoding device according to the invention; FIG. 5 represents the steps of the decoding method according to the invention.

Detailed description of the coding part

An embodiment of the invention will now be described, in which the coding method according to the invention is used to code an image or a sequence of images according to a bit stream close to that obtained by a conforming coding. for example to the HEVC standard.

In this embodiment, the coding method according to the invention is for example implemented in a software or hardware way by modifications of an encoder initially conforming to the HEVC standard. The coding method according to the invention is represented in the form of an algorithm comprising steps C1 to C7 as represented in FIG.

According to the embodiment of the invention, the coding method according to the invention is implemented in a coding device CO represented in FIG.

As illustrated in FIG. 2, such an encoder device comprises: an input ENT_C for receiving a current image to be encoded; a processing circuit CT_C for implementing the coding method according to the invention, the processing circuit CT_C containing: A memory MEM_C comprising a buffer memory MT_C, a processor PROC_C controlled by a computer program PG_C, an output SOR_C to deliver a signal or coded stream containing the data obtained at the end of the coding of the current image. At initialization, the code instructions of the computer program PG_C are for example loaded into a RAM memory, MR_C, before being executed by the processing circuit CT_C.

The coding method represented in FIG. 1 applies to any current image ICj that is fixed or part of a sequence of L images ICi, ..., ICj, ..., ICl (1 <j <L) to code.

During a step C1 represented in FIG. 1, in a manner known per se, a current image ICj is partitioned into a plurality of blocks B-1, B 2,. .., Bf (1 <i <F), a current block selected from this plurality containing M row vectors and N column data vectors, such that M> 2 and N> 2. Such a partitioning step is implemented by a partitioning device MP_C shown in FIG. 2, which device is controlled by the processor PROC_C.

It should be noted that for the purposes of the invention, the term "block" means coding unit (coding unit). This last terminology is notably used in the standard HEVC "ISO / IEC / 23008-2 Recommendation ITU-T H.265 High Efficiency Video Coding (HEVC)".

In particular, such a coding unit groups together sets of pixels of rectangular or square shape, also called blocks or macroblocks.

Such a coding unit could, in a future standard, also group together sets of pixels having other geometric shapes.

Said blocks Bi, B2,..., B ,,..., Bf are intended to be coded according to a predetermined order of travel, which is for example of the lexicographic type. This means that the blocks are coded one after the other, from left to right, then from top to bottom. Other types of course are of course possible. Thus, it is possible to cut the image ICj into several subimages called slices and to independently apply a division of this type on each sub-image. It is also possible to code not a succession of lines, as explained above, but a succession of columns. It is also possible to browse the rows or columns in one direction or the other.

Each block can also be divided into sub-blocks which are themselves subdividable.

During a step C2 shown in FIG. 1, the coder CO selects as current block a first block to be coded B, of the image ICj, such as for example the first block Bi.

An example of such a block is shown in FIG. 3. It contains, for example: M = 8 data line vectors, such as a first line vector Mi of four data di, d2, d3, d4, a second line vector M2 of four data d5, d6, d7, d8, a third line vector M3 of four data dg, di0, du, di2, a fourth line vector M4 of four data di3, of, di5, di6, a fifth line vector M5 of four data d-i7, dis, dig, d2o, a sixth line vector M6 of four data d2i, d22, d23, d24, a seventh line vector M7 of four data d2s, d26, d27, d28, an eighth line vector M8 of four data d2g, d30, d3i, d32, - and N = 4 column vectors, such as a first column vector

Neither of eight data di, ds, dg, di3, di7, d2i, d25, d29, a second column vector N2 of eight data d2, d6, di0, d1, d8, d22, d26, d30, a third column vector N3 of eight data d3, d7, di5, dig, d23, d27, d3i, a fourth column vector N4 of eight data d4, d8, di2, d6, d2o, d24, d28, d32.

During a step C3 represented in FIG. 1, the coder CO selects a transform from a set E of transforms previously stored in the buffer memory MT_C of the coder CO of FIG. 2.

According to the invention, the set E comprises at least two transforms T0 and Tutelles that: - one of the at least two transforms, for example To, implements the following operations: • first data processing applied on the M or N vectors of the current block B ,, at the end of which is obtained a processed data block Β °, • second data processing applied to the N or M vectors of the processed data block Β °, at the end of which is obtained a transformed data block Btj, - at least one other of the at least two transforms of the set E, here T-ι, implements: • either only a processing of the M vector data lines of the current block, • or only a processing of N column vectors of data of the current block.

The selection of the To or Ti transform is carried out according to a predetermined coding performance criterion, for example: by minimizing the rate / distortion criterion well known to those skilled in the art, or by minimizing only the flow rate; or by minimizing only the distortion, or by taking into account the complexity generated by the computation complexity of the transform when it is selected, said complexity being weighted with the aforementioned rate / distortion criterion.

Recall that in a video coding context, the complexity is defined for example by counting the number of mathematical operations (including addition, multiplication, binary shift) involved for calculating the data transform of the current block B,.

In the example described here, the term "data" means the pixels of the current block B 1.

It should be noted, however, that data are also understood to mean the pixels of a predicted block obtained by means of a prediction of the current block B, with respect to a predictor block which is selected following a call for competition. different prediction modes inter, intra or other predetermined, for example by minimizing a distortion rate criterion.

Transform T0 is composed of a pair of transforms consisting of a primary transform D0 and a secondary transform C0.

According to a first embodiment: the primary transform D0 is a 4x4 matrix which is applied on the M = 8 line vectors of the current block B ,, so as to obtain a treated current block B ^ Do-B *, where t represents the transpose of the block B ,, - the secondary transform Co is an 8x8 matrix which applies to the N = 4 column vectors of the treated current block Β °, so as to obtain a transformed current block ΒΤΐ = Ο0. (Β ° ί) 1.

According to a variant of this first embodiment: the primary transform Cd is an 8x8 matrix which applies to the N = 4 column vectors of the current block B ,, so as to obtain a treated current block B ° j = Cd. Bi, - the secondary transform C0 is a 4x4 matrix which applies to the M = 8 line vectors of the current processed block Β °, so as to obtain a transformed current block ΒΤΐ = Οο · (Β ° ί) 1.

According to a second embodiment, the transforms Co and D0 are applied through a fast implementation by a fast algorithm that can take the form of butterflies (butterfly diagram in English). This applies in particular to trigonometric transforms, as described in the publication Algebraic Signal Processing Theory: Cooley-Tukey Type Algorithms for DCTs and DSTs, IEEE Transactions on Signal Processing, April 2008.

According to this second embodiment, the transformed current block BT is obtained in less arithmetic operations than by successively applying the primary and secondary transforms D0 and C0 in the form of a matrix product.

In addition, according to the invention, the primary transform D is, for example, of the distortion rate optimized type according to the RDOT (Spleen-Distortion Optimized Transform) criterion, in accordance with the publication OG Sezer et al., "Sparse Orthonormal Transforms for Image Compression ", IEEE ICIP, pp. 149-152, 2008.

According to one embodiment of the invention, the transform Ti of the set E is a trigonometric transform.

According to another embodiment of the invention, in the case where the current block B is predicted according to a given prediction mode, Intra for example, which corresponds to a given prediction direction: - if the To transform is selected as optimal transform T * at the end of step C3, the order in which are treated first M line vectors then N column vectors of the current block B ,, first N column vectors then the M line vectors of the current block B, is a function of the prediction direction of the data of the current block which is associated with the given prediction mode, - if the transform Ti is selected as the optimal transform T * to the from step C3, the choice to process either the M row vectors or the N column vectors of the current block B is a function of the prediction direction of the data of the current block which is associated with the given prediction mode.

During a step C4 shown in FIG. 1, the selected transform T * is applied to the current block B 1. At the end of step C4 is obtained a transformed data block BT ,.

Such an operation is performed by a transform calculation device MTR_C, as shown in FIG. 2, which device is controlled by the processor PROC_C.

During a step C5 shown in FIG. 1, the data of the transformed block BT are quantized according to a conventional quantization operation, such as, for example, a scalar or vector quantization. A block Bq of quantized coefficients is then obtained. Step C5 is implemented by a quantization device MQ_C as represented in FIG. 2, which device is controlled by the processor PROC_C.

In a manner known per se, during a step C6 shown in FIG. 1, the data of the block Bq 1 is encoded. Such coding is, for example, entropic coding of CABAC type ("Context Adaptive Binary Arithmetic Coder" in English) or else an entropy coding of arithmetic type or Huffman type. At the end of step C6, coded data associated with the current block B 1 are obtained. Step C6 is implemented by a coding device MC_C shown in FIG. 2, which device is controlled by the processor PROC_C.

During a step C7 represented in FIG. 1, a signal or data stream φ is constructed which contains the coded data of the current block B, obtained at the end of the aforementioned step C6. Step C7 is implemented by a data signal construction device MCF, as shown in FIG. 2, which device is controlled by the processor PROC_C.

The data signal φ is then delivered via the output SOR_C of the encoder CO of FIG. 2. Such a signal is either stored in the buffer memory MT_C of the encoder CO of FIG. 2, or transmitted by a communication network (not represented). to a remote terminal. This includes the decoder DO shown in FIG.

In a manner known per se, the data signal φ furthermore comprises certain information encoded by the coder CO, such as the type of prediction (Inter or Intra) that has possibly been applied, and if appropriate, the prediction mode selected. the index of the predictor block selected, the reference image index and the motion vector used in the Inter prediction mode, an IT * index associated with the transform T * applied during the aforementioned step C4.

Class B is then decoded conventionally. A decoded BD block is then obtained. It should be noted that the decoded block BD is the same as the decoded block obtained at the end of the image decoding process ICj which will be described later in the description. The decoded block BD is thus made available for use by the coder CO of FIG. 2.

The coding steps C1 to C7 which have just been described above are then implemented for each of the blocks Bi, B2,..., B ,,..., Bf to be encoded of the current image ICj considered. in a predetermined order which is for example the lexicographic order.

Various possible configurations of sets of transforms will now be described.

It is for example considered that the CO encoder of FIG. 2 has a set of two transforms for each proposed prediction mode and for each block size. In this context, and in accordance with the publication "Mode-dependent transform competition in HEVC", Adrià Arrufat et al., Image Processing (ICIP), IEEE ICIP 2015, pp. 1598-1602, the coder CO can thus, during the above-mentioned step C3, put in competition a plurality of transforms by prediction mode.

Thus, for example, for a current block B, of size 4x4 and for a given prediction, for example the HEVC Intra 6 prediction mode, the set E comprises two transforms T0 and Ti which are put into competition during of step C3 of FIG.

According to a first embodiment of this configuration, and as already described above, the transform To is composed of a pair of primary transforms D0 and secondary Co, which are for example of the same type, namely each a type VII DST . The coefficients of each of the transforms C0 and D0 are thus expressed in the form of the equation below, to a multiplicative factor of:

where n is a spatial index (abscissa), such that 0 ^ n <3, and k is a frequency index (ordinate), such that 0 <k <3. The coefficients of each of the transformations C0 and D0 obtained can be approximated and expressed as, for example, whole numbers below, after each multiplied by a multiplicative factor equal to 27: 29 55 74 84 74 74 0 -74 84 -29 -74 55 55 -84 74 -29

A matrix of this type is considered quasi-orthogonal, which advantageously implies that its inverse is its transpose. As such, the product of such a matrix by its transpose gives a matrix having on each of its lines only negligible terms except one, significantly larger than the others (for example a factor 100).

According to this first embodiment, the transform Ti is itself a transform of the type optimized for distortion rate according to the aforementioned criterion RDOT.

The transform Ti is represented, for example, in the form of following integers, represented on 8 bits: 33 55 74 81 61 73 9 -84 99 -31 -63 38 39 -83 82 -34

The transform Τι is composed of: a D-ι transform of type optimized in distortion rate in accordance with the RDOT criterion, which preferably applies to the M = 4 line vectors of the current residual block Br, resulting from the prediction of the block current B, according to the prediction mode Intra No. 6 of the HEVC standard, so as to obtain a processed current block Β1ί = Τ- | .Βηι, where t represents the transpose of the current residue block Bn, - of an identity matrix ID of 4x4 size which preferably applies to the N = 4 column vectors of the treated current block B1 ,, so as to obtain a transformed current block ΒΤί = Ιϋ. (Β1ί) 1.

The composition of the transform Ti also takes account of the fact that the prediction direction of the prediction mode No. 6 is essentially horizontal.

In a manner known per se, the ID identity matrix is in the following form, with a normalization factor of:

As a result, the transformed current block BT can be written as:

Which amounts to:

In a particularly advantageous manner, the number of arithmetic operations is thus only related to the application of a transform of size in accordance with the number of columns of the current block B 1.

As indicated in the comparative table below, it thus appears that the computational complexity generated following the application of the transform Τι is limited to seven arithmetic operations per pixel, such complexity being: - much lower than that generated following the application of a product-type transform of two matrices, denoted Tpm, which requires fourteen arithmetic operations, - a little lower than that generated following the application of the transform T0 composed of the same two trigonometric transforms DST-VII, which requires eight arithmetic operations.

The coding performances which use the set of transforms E compound, according to the invention, of the transforms To and Ti, are compared with those using a set of transforms composed according to the state of the art, noted EEa, which is for example, composed of the To transform and a T10 transform which is itself composed of a pair of D10 primary and secondary C10 transforms, for example jointly optimized according to a RDOT criterion.

Transforms C10 and D10 are respectively in the form of the following matrices: 38 57 72 79 90 56 -20 -67 66 -50 -69 67 47 -85 76 -30 0-17 127 127 6 2 0 -6 89 91 - 4 -3 91 -89 6

The comparison of the coding performances is carried out in relation with the current block B, of size 4x4 and for the prediction mode Intra No. 6 of the HEVC standard.

The comparison is evaluated for example using a measure compactness in the distortion / parsimony plan, according to the Sezer publication cited above. For this purpose, on a TestSet set of residual image signals, the following quantity J, which must be the lowest possible, is measured:

such that: - Brv is a current residual block which is collected on a large set of varied images, - Bqv is the quantized current residual block obtained after application of the considered transform Tu on the residual current block Brv, such that u = {0,1,10}, - ||. || o represents the zero norm, that is the number of non-zero coefficients of the residual residual Bqv block quantized by thresholding, - λ is a Lagrangian operator weighting which adjusts the transmission rate constraint, - R is the transmission rate of the residual current quantized Bqv block, - D is the distortion of the residual current quantized Bqv block, - G is the number of residual blocks considered. , - K is the number of pixels of each residual block.

The table below summarizes the values of R, D and J that are obtained for each of the sets E and EEa proposed in the example above.

It is noted that there is a small difference in performance between the set E and the set Eea to the benefit, for the set E, of a lower computational complexity, since the transform Ti requires seven operations per pixel, whereas Transform T10 requires fourteen operations per pixel.

According to a second embodiment of the aforementioned configuration, the set E comprises the above-mentioned transform T0 and another type of transform T ^ than that mentioned above, the transform Ti being still an optimized transformation in distortion flow according to the criterion RDOT.

In this second embodiment, the transform Ti is a discrete trigonometric transform DTT (abbreviation of "Discrete Trigonometry Transforms").

The transform Ti is composed of: a transform D 1 of type optimized in distortion rate according to the criterion RDOT, which applies for example to the M = 4 line vectors of the current residue block Βη, so as to obtain a treated current block Β1, = Τι.Βηι, where t represents the transpose of the current residual block Br ,, - of a identity matrix ID of size 4x4 which applies to the N = 4 column vectors of the treated current block B1 ,, so as to obtain a transformed current block B ^ ID ^ B1,) 1.

According to this second embodiment, the optimized transform according to the RDOT criterion is a DCT-V transform which is expressed in the following form: 48 68 68 68 68 60 -22 -87 68 -22 -87 60 68 -87 60 - 22

In a particularly advantageous way, the number of arithmetic operations associated with the transform Ti is therefore only related to the application of a transform of size in accordance with the number of columns of the current block Bi.

The coding performances which use the set of transforms E composed, according to the second embodiment of the invention, of the transforms T0 and Τι, are compared with those using a set Eea of transforms composed according to the state of the art, which is for example composed of the transform T0 and of a transform T20 which is itself composed of a pair of primary transforms D20 and secondary C2o, which are for example each trigonometric and jointly optimized according to a criterion RDOT.

The optimized primary D20 transform is a DST-VII transform already shown above in the description.

The optimized secondary transform C2o is, for example, a DCT-IV transform which can be expressed using a formula or be expressed in eight-bit integer values as below:

DCT-IV 89 75 50 18 75 -18 -89 -50 50 -89 18 75 18 -50 75 -89

The comparison of the coding performances is implemented in the same way as in the first embodiment.

The table below summarizes the values of R, D and J that are obtained for each of the sets E and EEa proposed according to this second embodiment.

It is found that the coding performance is much better by using the set E for the benefit of a lower computational complexity since the number of arithmetic operations required by the transform Ti represents approximately half the number of arithmetic operations required by the transformed T2o-

The configuration of the set E of transforms which has been described above is of course variable, in particular according to the prediction mode chosen to predict the current block. Thus, for vertical prediction modes, the transform Ti is rather composed as follows: an identity matrix ID of size 4x4 which preferably applies to the M = 4 line vectors of the current residue block Βη, so as to to obtain a processed current block Β1ί = Ιϋ. (Βη) 1, - a D-type transform optimized in distortion rate in accordance with the RDOT criterion, which preferably applies to the M = 4 column vectors of the treated current block B1 ,, of way to obtain a transformed current block ΒΤί = Τ-ι. (ΒηΥ.

In a particularly advantageous manner, the number of arithmetic operations is thus only related to the application of a transform of size in accordance with the number of rows of the current block B 1.

It is also obvious that the set E of transforms may comprise more than two transforms. Different examples of sets E of transforms which make it possible to obtain good compromises in terms of computational complexity / coding performance, are listed below: E = (T0, Ti, T2), such that T0 = (DST- VII, DST-VII), T1 = (ID, DCT-V) and T2 = (ID, DST-VI); E = (T0, Ti, T2, T3, T5), such that T0 = (DST-VII, DST-VII), T1 = (DCT-IV, DST-VII), T2 = (ID, DCT-II) , T3 = (DCT-VI, DCT-VI), T4 = (ID, DST-IV); E = (T0, T1; T2), such that T0 = (DST-VII, DST-VII), T1 = (DCT-V, ID) and T2 = (DCT-V, DCT-VII); E = (T0, T1, T2, T3, T5), such that T0 = (DST-VII, DST-VII), T1 = (DST-IV, DCT-III), T2 = (DCT-V, ID) , T3 = (DCT-V, DCT-IV), T4 = (DCT-VI, DCT-V).

Detailed description of the decoding part

An embodiment of the invention will now be described, in which the decoding method according to the invention is used to decode a signal or data stream representative of an image or a sequence of images which is suitable for be decoded by a decoder according to any of the current or future video decoding standards.

In this embodiment, the decoding method according to the invention is for example implemented in a software or hardware way by modifications of such a decoder.

The decoding method according to the invention is represented in the form of an algorithm comprising steps D1 to D7 as represented in FIG.

According to this embodiment, the decoding method according to the invention is implemented in a decoding device or decoder DO represented in FIG. 4.

As illustrated in FIG. 4, such a decoder device comprises: an input ENT_D for receiving the data signal or current flow φ to be decoded, a processing circuit CT_D for implementing the decoding method according to the invention, the circuit CT_D processing device containing: a memory MEM_D comprising a buffer memory MT_D, a processor PROC_D controlled by a computer program PG_D, an output SOR_D to deliver a reconstructed current image containing the data obtained after the decoding according to the method of the invention. At initialization, the code instructions of the computer program PG_D are for example loaded into a RAM memory, MR_D, before being executed by the processing circuit CT_D.

The decoding method shown in FIG. 5 applies to a signal or data stream φ representative of a current image ICj to be decoded which is fixed or which belongs to a sequence of images to be decoded. For this purpose, information representative of the current image ICj to be decoded is identified in the data signal φ received at the input ENT_D of the decoder DO and as delivered at the end of the coding method of FIG.

With reference to FIG. 5, during a step D1, it is known, in a manner known per se, to determine in the signal φ coded blocks associated with each of the blocks Bi, B2, B ,, ... , Bf previously encoded according to the above lexicographic order.

Such a determination step D1 is implemented by an identification device MI_D flow analysis, as shown in Figure 4, which is controlled by the processor PROC_D. Other types of course than the one mentioned above are of course possible and depend on the order of course chosen coding.

During a step D2 shown in FIG. 5, the decoder DO of FIG. 4 selects, as current block B, to be decoded, the first block which has been coded at the end of the coding method of FIG.

An example of such a block is shown in FIG. 3. It contains, for example: M = 8 data line vectors, such as a first line vector Mi of four data di, d2, d3, d4, a second line vector M2 of four data ds, d6, d7, d3, a third line vector M3 of four data dg, d-io, dn, di2, a fourth line vector M4 of four data di3, du, di5, di6, a fifth line vector M5 of four data of, dis, di9, d20, a sixth vector line M6 of four data d2i, d22, d23, d24, a seventh vector line M7 of four data d2s, d26, d27, d23, an eighth vector line M8 of four data d2g, d30, d3i, d32, - and N = 4 column vectors, such as a first column vector

Neither of eight data di, ds, dg, di3, di7, d2i, d2s, d2g, a second column vector N2 of eight data d2, d6, d-ιο, du, dis, d22, d26, d3o, a third column vector N3 of eight data d3, d7, di5, d-ig, d23, d27, d3i, a fourth column vector N4 of eight data d4, d3, di2, d-16, d20, d24, d23, d32.

During a step D3 shown in FIG. 5, a determination, for example by decoding, of the data associated with the current block B, to be decoded, which have been coded during the first step, is carried out in a manner known per se. step C6 of FIG. 1. On completion of such a determination, a set of digital information associated with the quantized coefficient block Bq is obtained, which was obtained at the end of the quantization step C5 of FIG. Figure 1.

Also during the step D3, information can be determined which is related to the prediction type of the current block B ,, if the latter has been predicted at the coding, and which has been written in the data signal φ. Such prediction information is in particular the prediction mode selected at the coding and the index of the selected predictor block.

During step D3, the index IT * of the selected transform is also determined, in a manner known per se, at the coding in step C3 of FIG. 1, then applied to step C4 of FIG. .

Such a decoding step D3 is implemented by a decoding device MD_D shown in FIG. 4, which device is controlled by the processor PROC_D.

During a step D4 shown in FIG. 5, the quantized coefficient block Bq 1 is dequantized according to a conventional dequantization operation which is the inverse operation of the quantization implemented during the step for quantization C5 of FIG. 1. A set of current dequantized coefficients BDq is then obtained at the end of step D4. Such a dequantization step is for example of scalar or vector type. Step D4 is implemented by means of an inverse quantization MQ'1_D device, as represented in FIG. 4, which device is controlled by the PROC_D processor.

During a step D5 shown in FIG. 5, the decoder DO proceeds to the selection of a transform T'1 * associated with the index IT * determined in the aforementioned step D3, from a set E'1 of transformed previously stored in the buffer MT_D of the decoder DO of FIG. 4.

According to the invention, the set E'1 comprises at least two transforms T'1o and T'11, respectively inverse of the transforms T0 and Ti used at the encoder, such that: one of the at least two transforms, for example T'10, implements the following operations: • first data processing applied on the M or N vectors of the current dequantized coefficient block BDq ,, at the end of which is obtained a processed data block Β °, • second treatment data set applied on the N or M vectors of the processed data block Β °, at the end of which is obtained a transformed decoded data block BDtj, - at least one other of the at least two transforms of the set E'1, here T'1i, implements: • either only a processing of the M vector data lines of the current dequantized coefficient block BDq ,, • or only a processing of the N column vector data of the current dequantized coefficient block BDqi.

In the example described here, data is understood to mean the pixels of the transformed decoded data block BDtj.

It should be noted, however, that data are also understood to mean the pixels of a modified decoded residue transformed block, in the case where a prediction of the current block B has been implemented at the coding.

Transform T10 is composed of a pair of transforms consisting of a primary transform D'10 and a secondary transform C'10 respectively inverse of the primary transforms D0 and secondary Co mentioned above.

According to a first embodiment: the primary transform D'10 is a 4x4 matrix which applies to the M = 8 line vectors of the current dequantized coefficient block BDq ,, so as to obtain a treated current block BVD'ViBDqi) 1, where t represents the transpose of the block BDq ,, - the secondary transform C'1o is an 8x8 matrix which applies to the N = 4 column vectors of the processed current block Β °, so as to obtain a transformed decoded current block ΒΟΤΐ = Ο'10. (° Β ί) 1.

According to a variant of this first embodiment: the primary transform D'10 is an 8 × 8 matrix which applies to the N = 4 column vectors of the current dequantized coefficient block BDq ,, so as to obtain a current treated block B ° i = Of 1o. (BDqi), - the secondary transform C'10 is a 4x4 matrix that applies to the M = 8 line vectors of the current processed block Β °, so as to obtain a decoded current block transformed BDTi ^ 'ViB0,) 1.

According to a second embodiment, correspondingly to the above coding, the C'10 and D'10 transforms are applied through a fast implementation by a butterfly algorithm.

According to this second embodiment, the transformed decoded current block BDI is obtained in less arithmetic operations than by successively applying the matrices of primary and secondary transforms D 1o and CV

According to one embodiment of the invention, the T'1i transform of the set E'1 is a trigonometric transform.

According to another embodiment of the invention, in the case where a prediction of the current block B has been implemented in the coding according to a given prediction mode, Intra for example, which corresponds to a prediction direction given. if the transform T10 is selected at the end of the step D5, the order in which the M line vectors and then the N column vectors of the current dequantized coefficient block BDq are first processed, or first the N column vectors and then the M line vectors of the current dequantized coefficient block BDq ,, depends on the prediction direction of the data of the current block which is associated with the given prediction mode, - if the transform T'1i is selected at at the end of step D5, the choice to process either the M row vectors or the N column vectors of the current dequantized coefficient block BDq depends on the prediction direction of the data of the current block which is associated with the given prediction mode.

During a step D6 shown in FIG. 5, the selected transform T1 * is applied to the current dequantized coefficient block BO.sub.q. At the end of step D6 is obtained a transformed decoded data block BDTi which constitutes the reconstructed current BD, BD.

Such an operation is performed by a transform calculation device MTR'1_D, as shown in FIG. 4, which device is controlled by the processor PROC_D.

During a step D7 shown in FIG. 5, said current reconstructed block BD is written in a decoded image IDj.

Such a step is implemented by an image reconstruction URI device as shown in FIG. 4, said device being controlled by the PROC_D processor.

The decoding steps D1 to D7 which have just been described above are implemented for all the blocks B-ι, B2,..., B ,,..., BF to be decoded from the current image ICj. considered, in a predetermined order which is for example the lexicographic order.

It goes without saying that the embodiments which have been described above have been given for purely indicative and non-limiting purposes, and that many modifications can easily be made by those skilled in the art without departing from the scope. of the invention.

Claims (12)

REVENDICATIONS 1. Procédé de codage d'au moins une image (ICj) découpée en blocs de données, mettant en œuvre, pour un bloc courant (B,) à coder de ladite image, ledit bloc courant contenant M vecteurs lignes et N vecteurs colonnes de données, tel que M>2 et N>2, un traitement des données du bloc courant par application (C4) d’une transformée qui est sélectionnée selon un critère de performance de codage prédéterminé, dans un ensemble (E) comprenant au moins deux transformées, une transformée dudit ensemble mettant en œuvre les opérations suivantes : - premier traitement de données appliqué sur les M ou N vecteurs du bloc courant, à l’issue duquel est obtenu un bloc de données traité, - deuxième traitement de données appliqué sur les N ou M vecteurs du bloc de données traité, à l’issue duquel est obtenu un bloc de données transformé, le procédé de codage étant caractérisé en ce que au moins une autre transformée dudit ensemble met en œuvre : - soit uniquement un traitement des M vecteurs lignes de données du bloc courant, - soit uniquement un traitement des N vecteurs colonnes de données du bloc courant.A method for encoding at least one image (ICj) cut into data blocks, implementing, for a current block (B,) to be encoded of said image, said current block containing M row vectors and N column vectors of data, such as M> 2 and N> 2, processing the data of the current block by applying (C4) a transform which is selected according to a predetermined coding performance criterion, in a set (E) comprising at least two transformed, a transform of said set implementing the following operations: - first data processing applied to the M or N vectors of the current block, at the end of which is obtained a processed data block, - second data processing applied to the N or M vectors of the processed data block, at the end of which is obtained a transformed data block, the coding method being characterized in that at least one other transform of said set implements: a treatment of the M vector rows of data of the current block, or only a processing of N column vectors of data of the current block. 2. Procédé de codage selon la revendication 1, dans lequel une transformée dudit ensemble, mettant en œuvre soit uniquement un traitement des M vecteurs lignes du bloc courant, soit uniquement un traitement des N vecteurs colonnes du bloc courant, est une transformée trigonométrique.2. Coding method according to claim 1, wherein a transform of said set, implementing either only a treatment of the M line vectors of the current block, or only a processing of the N column vectors of the current block, is a trigonometric transform. 3. Procédé de codage selon la revendication 1 ou la revendication 2, dans lequel si est sélectionnée une transformée mettant en œuvre soit uniquement un traitement des M vecteurs lignes de données du bloc courant, soit uniquement un traitement des N vecteurs colonnes de données du bloc courant, le choix du traitement est fonction de la direction de prédiction des données du bloc courant.3. coding method according to claim 1 or claim 2, wherein si is selected a transform implementing either only a treatment of the M vector rows of data of the current block, or only a processing of N column data vectors of the block current, the choice of the treatment depends on the direction of prediction of the data of the current block. 4. Dispositif (CO) de codage d'au moins une image (ICj) découpée en blocs, comprenant un circuit de traitement (CT_C) qui, pour un bloc courant (B,) à coder de ladite image, ledit bloc courant contenant M vecteurs lignes et N vecteurs colonnes de données, tel que M>2 et N>2, est agencé pour traiter des données du bloc courant par application d’une transformée qui est sélectionnée selon un critère de performance de codage prédéterminé, dans un ensemble (E) comprenant au moins deux transformées, une transformée dudit ensemble mettant en oeuvre les opérations suivantes : - premier traitement de données appliqué sur les M ou N vecteurs du bloc courant, à l’issue duquel est obtenu un bloc de données traité, - deuxième traitement de données appliqué sur les N ou M vecteurs du bloc de données traité, à l’issue duquel est obtenu un bloc de données transformé, caractérisé en ce que au moins une autre transformée dudit ensemble met en oeuvre : - soit uniquement un traitement des M vecteurs lignes de données du bloc courant, - soit uniquement un traitement des N vecteurs colonnes de données du bloc courant.4. Device (CO) encoding at least one image (ICj) cut into blocks, comprising a processing circuit (CT_C) which, for a current block (B,) to be encoded of said image, said current block containing M row vectors and N data column vectors, such as M> 2 and N> 2, are arranged to process data of the current block by applying a transform which is selected according to a predetermined coding performance criterion, in a set ( E) comprising at least two transforms, a transform of said set implementing the following operations: - first data processing applied to the M or N vectors of the current block, at the end of which is obtained a processed data block, - second data processing applied on the N or M vectors of the processed data block, at the end of which is obtained a transformed data block, characterized in that at least one other transform of said set implements: - either only ent a processing of the M vector rows of data of the current block, or only a processing of the N column vectors of data of the current block. 5. Programme d’ordinateur comportant des instructions de code de programme pour l’exécution des étapes du procédé de codage selon l'une quelconque des revendications 1 à 3, lorsque ledit programme est exécuté sur un ordinateur.A computer program comprising program code instructions for performing the steps of the encoding method according to any one of claims 1 to 3, when said program is executed on a computer. 6. Support d’enregistrement lisible par un ordinateur sur lequel est enregistré un programme d’ordinateur comprenant des instructions de code de programme pour l’exécution des étapes du procédé de codage selon l'une quelconque des revendications 1 à 3, lorsque ledit programme est exécuté sur un ordinateur.A computer-readable recording medium on which a computer program is recorded comprising program code instructions for performing the steps of the encoding method according to any one of claims 1 to 3, when said program is running on a computer. 7. Procédé de décodage d'un signal de données (φ) représentatif d'au moins une image (ICj) découpée en blocs, mettant en oeuvre, pour un bloc courant (B,) à décoder de ladite image, ledit bloc courant contenant M vecteurs lignes et N vecteurs colonnes de données, tel que M>2 et N>2, ce qui suit : - détermination, dans ledit signal de données : • d’un bloc courant de données codées associé au bloc courant à décoder, • d’un indicateur (IT*) d’une transformée à appliquer aux données du bloc courant de données codées, - traitement des données codées du bloc courant par application (D5) auxdites données codées de la transformée associée à l’indicateur déterminé, ladite transformée étant sélectionnée dans un ensemble (E'1) de transformées comprenant au moins deux transformées, une transformée dudit ensemble mettant en oeuvre les opérations suivantes : • premier traitement de données appliqué sur les M ou N vecteurs du bloc courant, à l’issue duquel est obtenu un bloc de données traité, • deuxième traitement de données appliqué sur les N ou M vecteurs du bloc de données traité, à l’issue duquel est obtenu un bloc de données transformé, le procédé de décodage étant caractérisé en ce que au moins une autre transformée dudit ensemble met en oeuvre : - soit uniquement un traitement des M vecteurs lignes de données codées du bloc courant, - soit uniquement un traitement des N vecteurs colonnes de données codées du bloc courant.7. A method of decoding a data signal (φ) representative of at least one image (ICj) cut into blocks, implementing, for a current block (B,) to be decoded from said image, said current block containing M row vectors and N column vector data, such as M> 2 and N> 2, as follows: - determining, in said data signal: • a current block of coded data associated with the current block to be decoded, • an indicator (IT *) of a transform to be applied to the data of the current block of coded data, - processing of the coded data of the current block by application (D5) to said coded data of the transform associated with the determined indicator, said transformed being selected from a set (E'1) of transforms comprising at least two transforms, a transform of said set implementing the following operations: • first data processing applied to the M or N vectors of the current block, at least a result of which is obtained a processed data block, • second data processing applied to the N or M vectors of the processed data block, after which a transformed data block is obtained, the decoding method being characterized in that at least one other transform of said set implements: either only a processing of the M coded data line vectors of the current block, or only a processing of the N column vectors of coded data of the current block. 8. Procédé de décodage selon la revendication 7, dans lequel une transformée dudit ensemble, mettant en oeuvre soit uniquement un traitement des M vecteurs lignes du bloc courant de données codées, soit uniquement un traitement des N vecteurs colonnes du bloc courant de données codées, est une transformée trigonométrique.The decoding method according to claim 7, wherein a transform of said set, implementing either only a processing of the M line vectors of the current block of coded data, or only a processing of the N column vectors of the current block of coded data, is a trigonometric transform. 9. Procédé de décodage selon la revendication 7 ou la revendication 8, dans lequel si à la suite de la détermination de l’indicateur de la transformée à appliquer aux données codées du bloc courant, est sélectionnée une transformée mettant en œuvre soit uniquement un traitement des M vecteurs lignes de données codées du bloc courant, soit uniquement un traitement des N vecteurs colonnes de données codées du bloc courant, le choix du traitement est fonction de la direction de prédiction des données codées du bloc courant.The decoding method according to claim 7 or claim 8, wherein if, following the determination of the indicator of the transform to be applied to the coded data of the current block, a transform implementing only one processing is selected. M coded data line vectors of the current block, ie only a processing of the N coded data column vectors of the current block, the choice of processing is a function of the prediction direction of the coded data of the current block. 10. Dispositif (DO) de décodage d'un signal de données (φ) représentatif d'au moins une image (ICj) découpée en blocs, comprenant un circuit de traitement (CT_D) qui, pour un bloc courant (B,) à décoder de ladite image, ledit bloc courant contenant M vecteurs lignes et N vecteurs colonnes de données, tel que M>2 et N>2, est agencé pour : - déterminer, dans ledit signal de données : • un bloc courant de données codées associé au bloc courant à décoder, • un indicateur (IT*) d’une transformée à appliquer aux données du bloc courant de données codées, - traiter des données codées du bloc courant par application auxdites données codées de la transformée associée à l’indicateur déterminé, ladite transformée étant sélectionnée dans un ensemble (E'1) de transformées comprenant au moins deux transformées, une transformée dudit ensemble mettant en œuvre les opérations suivantes : • premier traitement de données appliqué sur les M ou N vecteurs du bloc courant, à l’issue duquel est obtenu un bloc de données traité, • deuxième traitement de données appliqué sur les N ou M vecteurs du bloc de données traité, à l’issue duquel est obtenu un bloc de données transformé, caractérisé en ce que au moins une autre transformée dudit ensemble met en œuvre : - soit uniquement un traitement des M vecteurs lignes de données codées du bloc courant, - soit uniquement un traitement des N vecteurs colonnes de données codées du bloc courant.10. Device (DO) for decoding a data signal (φ) representative of at least one image (ICj) cut into blocks, comprising a processing circuit (CT_D) which, for a current block (B,) to decoding said image, said current block containing M row vectors and N column data vectors, such as M> 2 and N> 2, is arranged to: - determine, in said data signal: • a current block of associated coded data to the current block to be decoded, an indicator (IT *) of a transform to be applied to the data of the current block of coded data, - processing coded data of the current block by applying to said coded data of the transform associated with the determined indicator , said transform being selected from a set (E'1) of transforms comprising at least two transforms, a transform of said set implementing the following operations: • first data processing applied to the M or N vectors of the current block, at the end of which a processed data block is obtained, • second data processing applied to the N or M vectors of the processed data block, at the end of which is obtained a transformed data block, characterized in at least one other transform of said set implements: either only a processing of the M coded data line vectors of the current block, or only a processing of the N coded data column vectors of the current block. 11. Programme d’ordinateur comportant des instructions de code de programme pour l’exécution des étapes du procédé de décodage selon l'une quelconque des revendications 7 à 9, lorsque ledit programme est exécuté sur un ordinateur.A computer program comprising program code instructions for performing the steps of the decoding method according to any of claims 7 to 9, when said program is executed on a computer. 12. Support d’enregistrement lisible par un ordinateur sur lequel est enregistré un programme d’ordinateur comprenant des instructions de code de programme pour l’exécution des étapes du procédé de décodage selon l'une quelconque des revendications 7 à 9, lorsque ledit programme est exécuté sur un ordinateur.A computer-readable recording medium on which a computer program is recorded comprising program code instructions for performing the steps of the decoding method according to any one of claims 7 to 9, when said program is running on a computer.
FR1653884A 2016-04-29 2016-04-29 IMAGE ENCODING AND DECODING METHOD, IMAGE ENCODING AND DECODING DEVICE AND CORRESPONDING COMPUTER PROGRAMS Withdrawn FR3050858A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR1653884A FR3050858A1 (en) 2016-04-29 2016-04-29 IMAGE ENCODING AND DECODING METHOD, IMAGE ENCODING AND DECODING DEVICE AND CORRESPONDING COMPUTER PROGRAMS

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1653884A FR3050858A1 (en) 2016-04-29 2016-04-29 IMAGE ENCODING AND DECODING METHOD, IMAGE ENCODING AND DECODING DEVICE AND CORRESPONDING COMPUTER PROGRAMS

Publications (1)

Publication Number Publication Date
FR3050858A1 true FR3050858A1 (en) 2017-11-03

Family

ID=56787528

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1653884A Withdrawn FR3050858A1 (en) 2016-04-29 2016-04-29 IMAGE ENCODING AND DECODING METHOD, IMAGE ENCODING AND DECODING DEVICE AND CORRESPONDING COMPUTER PROGRAMS

Country Status (1)

Country Link
FR (1) FR3050858A1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130114730A1 (en) * 2011-11-07 2013-05-09 Qualcomm Incorporated Coding significant coefficient information in transform skip mode

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130114730A1 (en) * 2011-11-07 2013-05-09 Qualcomm Incorporated Coding significant coefficient information in transform skip mode

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ANKUR SAXENA ET AL: "CE7: Mode-dependent DCT/DST without 4*4 full matrix multiplication for intra prediction", 96. MPEG MEETING; 21-3-2011 - 25-3-2011; GENEVA; (MOTION PICTURE EXPERT GROUP OR ISO/IEC JTC1/SC29/WG11),, no. m19640, 20 March 2011 (2011-03-20), XP030048207 *
CHEN J ET AL: "Algorithm description of Joint Exploration Test Model 2", 2. JVET MEETING; 20-2-2016 - 26-2-2016; SAN DIEGO; (THE JOINT VIDEO EXPLORATION TEAM OF ISO/IEC JTC1/SC29/WG11 AND ITU-T SG.16 ); URL: HTTP://PHENIX.INT-EVRY.FR/JVET/,, no. JVET-B1001, 8 March 2016 (2016-03-08), XP030150091 *
ZHONG GUOYUN ET AL: "Adaptive horizontal and vertical transform skip scheme for H.264/AVC", OPTICAL ENGINEERING, SOC. OF PHOTO-OPTICAL INSTRUMENTATION ENGINEERS, BELLINGHAM, vol. 51, no. 9, 1 September 2012 (2012-09-01), pages 97402, XP060025545, ISSN: 0091-3286, [retrieved on 20120920], DOI: 10.1117/1.OE.51.9.097402 *

Similar Documents

Publication Publication Date Title
FR3023112A1 (en) METHOD FOR ENCODING A DIGITAL IMAGE, DECODING METHOD, DEVICES AND COMPUTER PROGRAMS
EP3694209A1 (en) Method for image decoding, device for image decoding, and corresponding computer program
WO2015059400A1 (en) Method for encoding and decoding images, device for encoding and decoding images and corresponding computer programs
EP3075155B1 (en) Method for encoding and decoding images, device for encoding and decoding images and corresponding computer programs
EP3345391A2 (en) Method of coding and decoding images, device for coding and decoding images and computer programmes corresponding thereto
EP3449631A1 (en) Method of decoding a digital image, method of coding, devices, and computer programs associated therewith
FR3032583A1 (en) METHOD FOR ENCODING A DIGITAL IMAGE, DECODING METHOD, DEVICES, AND COMPUTER PROGRAMS
EP3180914A1 (en) Image encoding and decoding method, image encoding and decoding device, and corresponding computer programs
FR2955995A1 (en) METHOD AND DEVICE FOR PROCESSING A VIDEO SEQUENCE
FR3050858A1 (en) IMAGE ENCODING AND DECODING METHOD, IMAGE ENCODING AND DECODING DEVICE AND CORRESPONDING COMPUTER PROGRAMS
WO2017129880A1 (en) Method for encoding and decoding data, device for encoding and decoding data, and corresponding computer programs
FR2956789A1 (en) METHOD AND DEVICE FOR PROCESSING A VIDEO SEQUENCE
EP3384672A1 (en) Method for encoding and decoding images, device for encoding and decoding images and corresponding computer programs
FR3057130B1 (en) METHOD OF ENCODING AN IMAGE, DECODING METHOD, DEVICES, TERMINAL EQUIPMENT AND COMPUTER PROGRAMS
WO2020002796A1 (en) Methods and devices for coding and decoding a data stream representing at least one image
FR3035761A1 (en) IMAGE ENCODING AND DECODING METHOD, IMAGE ENCODING AND DECODING DEVICE AND CORRESPONDING COMPUTER PROGRAMS
FR2957744A1 (en) METHOD FOR PROCESSING A VIDEO SEQUENCE AND ASSOCIATED DEVICE
RU2772313C2 (en) Method and apparatus for filtering images with adaptive multiplier coefficients
EP3854088A1 (en) Methods and devices for encoding and decoding a data stream representing at least one image
EP3815366A1 (en) Methods and devices for coding and decoding a data stream representing at least one image
FR2956552A1 (en) Method for coding video sequence consisting digital images, involves determining reference block in reference image, modifying determined reference block, and coding block to be coded by using predictor block
FR2918203A1 (en) METHODS AND APPARATUSES FOR ENCODING AND DECODING DIGITAL IMAGES BASED ON THE TYPE OF SOURCE BLOCKS, SIGNAL, AND CORRESPONDING COMPUTER PROGRAM PRODUCTS.
FR3018149A1 (en) METHOD AND DEVICE FOR SELECTING IMAGE DYNAMIC CONVERTING OPERATOR, COMPUTER PROGRAM AND CORRESPONDING STORAGE MEDIUM

Legal Events

Date Code Title Description
PLSC Publication of the preliminary search report

Effective date: 20171103

ST Notification of lapse

Effective date: 20171229