EP3272122A1 - Codage d'images par quantification vectorielle - Google Patents

Codage d'images par quantification vectorielle

Info

Publication number
EP3272122A1
EP3272122A1 EP16718390.4A EP16718390A EP3272122A1 EP 3272122 A1 EP3272122 A1 EP 3272122A1 EP 16718390 A EP16718390 A EP 16718390A EP 3272122 A1 EP3272122 A1 EP 3272122A1
Authority
EP
European Patent Office
Prior art keywords
data
decoded
quantization
block
image
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
EP16718390.4A
Other languages
German (de)
English (en)
Inventor
Félix Henry
Bihong HUANG
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
Publication of EP3272122A1 publication Critical patent/EP3272122A1/fr
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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/94Vector quantisation
    • 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/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • 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/124Quantisation
    • 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/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • 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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Abstract

L'invention concerne le codage d'au moins une image (ICj), mettant en œuvre, pour un bloc courant (Bu) à coder de ladite image : - une prédiction (C3) du bloc courant conformément à un mode de prédiction sélectionné parmi une pluralité de modes de prédiction 10 prédéterminés, - une obtention d'un bloc prédicteur (BPopt) à l'issue de la prédiction, - un calcul (C4) d'un premier ensemble de données représentatives d'une comparaison entre le bloc prédicteur obtenu et le bloc courant, - une comparaison (C5) dudit premier ensemble calculé avec une 15 pluralité de vecteurs de quantification, - une sélection (C6) d'un des vecteurs selon un critère de performance de codage prédéterminé, - un codage (C7) d'un index associé audit vecteur sélectionné, - un calcul (C8) d'un deuxième ensemble de données représentatives 20 d'une comparaison entre le premier ensemble de données calculé et le vecteur sélectionné, - un codage (C9) du deuxième ensemble de données calculé au cours duquel au moins un desdits vecteurs de quantification est modifié en fonction des données du deuxième ensemble de données calculé.

Description

CODAGE D'IMAGES PAR QUANTIFICATION VECTORIELLE
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.
L'invention peut s'appliquer notamment, mais non exclusivement, 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), ainsi qu'au décodage correspondant.
Arrière-plan de l'invention
Les codeurs vidéo actuels (MPEG, H.264, HEVC, ...) utilisent une représentation par blocs des images à coder. Les images sont subdivisées en blocs de forme carrée ou rectangulaire, lesquels sont susceptibles d'être subdivisés à leur tour de façon récursive.
Pour au moins un bloc considéré parmi les différents blocs obtenus, une prédiction de pixels du bloc considéré est mise en œuvre par rapport à des pixels de prédiction qui appartiennent soit à la même image (prédiction Intra), soit à une ou plusieurs images précédentes d'une séquence d'images (prédiction Inter) qui ont déjà été décodées. De telles images précédentes sont appelées classiquement images de référence et sont conservées en mémoire aussi bien au codeur qu'au décodeur. Au cours d'une telle prédiction, un ensemble de données est calculé par soustraction des pixels du bloc considéré, des pixels de prédiction. Les coefficients de l'ensemble de données calculé sont alors quantifiés après une éventuelle transformation mathématique, par exemple de type transformée en cosinus discrète (DCT), puis codés par un codeur entropique. Les données codées sont inscrites dans un signal de données destiné à être transmis à un décodeur.
Ledit signal de données comprend notamment : - le type 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 »)) ;
- le mode de prédiction (direction de prédiction, composante d'image de référence, ...) ;
- le type de subdivision en sous-blocs ;
- le type de transformée, par exemple DCT 4x4, DCT 8x8, etc .. ;
- les valeurs de pixels, les valeurs de coefficients transformés, amplitudes, signes de coefficients quantifiés des pixels contenus dans le bloc ou le sous-bloc considéré.
Une fois que le signal de données 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 signal de données sont lus. La quantification inverse et la transformation inverse des coefficients des blocs sont effectuées pour produire un bloc de données résiduelles décodé. Puis, la prédiction du bloc est calculée et le bloc est reconstruit en ajoutant la prédiction au bloc de données résiduelles décodé.
De façon connue en soi, la quantification des coefficients du bloc de données résiduelles calculé peut être de type scalaire ou vectorielle.
La quantification scalaire utilise un pas de quantification qui est déterminé au codage à partir d'un paramètre appelé QP (abréviation anglaise de « Quantization Parameter »).
La quantification vectorielle consiste au codage :
- à comparer l'ensemble de données résiduelles calculé avec une pluralité de vecteurs de quantification regroupés dans au moins un dictionnaire,
- à sélectionner un des vecteurs de quantification selon un critère de performance de codage prédéterminé, tel que par exemple le compromis débit-distorsion bien connu de l'homme du métier,
- à coder un index associé audit vecteur de quantification sélectionné.
L'index codé est alors transmis dans le signal de données à destination du décodeur qui contient le ou les mêmes dictionnaires que le codeur et qui applique la quantification vectorielle inverse en décodant ledit index transmis, puis en déterminant le vecteur de quantification associé audit index décodé.
Compte tenu du fait que les vecteurs de quantification font partie d'un dictionnaire prédéterminé, le codage du bloc courant par quantification vectorielle peut s'avérer mal adapté à la statistique du signal vidéo.
Au final, il en résulte des performances de compression qui ne sont pas satisfaisantes.
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, mettant en œuvre, pour un bloc courant à coder de l'image :
- une prédiction du bloc courant conformément à un mode de prédiction sélectionné parmi une pluralité de modes de prédiction prédéterminés,
- une obtention d'un bloc prédicteur à l'issue de la prédiction,
- un calcul d'un premier ensemble de données représentatives d'une différence entre le bloc prédicteur obtenu et le bloc courant,
- une comparaison du premier ensemble de données calculé avec une pluralité de vecteurs de quantification,
- une sélection d'un des vecteurs de quantification selon un critère de performance de codage prédéterminé,
- un codage d'un index associé au vecteur de quantification sélectionné.
Le procédé de codage selon l'invention est remarquable en ce qu'il comprend:
- un calcul d'un deuxième ensemble de données représentatives d'une différence entre le premier ensemble de données calculé et le vecteur de quantification sélectionné, - un codage du deuxième ensemble de données calculé au cours duquel au moins un des vecteurs de quantification est modifié en fonction des données du deuxième ensemble de données calculé.
Une telle disposition permet avantageusement de cumuler :
- le bénéfice tiré de l'exploitation des corrélations entre le premier ensemble de données résiduelles courant et des vecteurs de quantification d'un dictionnaire,
- et le bénéfice tiré d'une mise à jour d'au moins un desdits vecteurs de quantification, ladite mise à jour permettant de s'adapter, au cours du temps, aux modifications du signal de données codées.
La prédiction du bloc courant est ainsi à la fois plus précise et plus adaptée au contexte vidéo courant, ce qui a pour avantage d'améliorer significativement les performances de compression du signal de données codées à transmettre au décodeur.
Dans un mode de réalisation particulier, la modification d'un des vecteurs de quantification est mise en œuvre uniquement si les données du deuxième ensemble de données calculé remplissent un critère prédéterminé.
Une telle disposition permet de n'effectuer la modification d'un des vecteurs de quantification que lorsque cette modification est substantielle, ce qui évite des calculs inutiles.
Dans un autre mode de réalisation particulier, la modification d'un des vecteurs de quantification est mise en œuvre à l'aide d'un paramètre dont la valeur dépend de la taille de l'image à coder.
Une telle disposition permet de s'adapter à la taille des données dont le codeur dispose. Ainsi, si l'image est petite, les modifications du dictionnaire doivent être de grande amplitude, puisque le codeur dispose de peu de données pour capturer la statistique du signal vidéo. En revanche, si l'image est grande, il est possible de privilégier une mise à jour de faible amplitude, qui résiste mieux aux variations statistiques non pertinentes du signal vidéo, puisque le codeur dispose de beaucoup plus de données pour s'adapter à ces variations. Dans encore un autre mode de réalisation particulier, si l'image courante est de type Intra, les vecteurs de quantification sont chacun initialisés à des valeurs prédéterminées.
Une telle disposition permet de conserver la caractéristique de codage indépendant des autres images qui est propre aux images Intra, même si l'invention propose une mise à jour du dictionnaire de vecteurs de quantification qui évolue au fur et à mesure du traitement des images d'une séquence d'images considérée. En effet, il est généralement souhaitable que les images de type Intra soient codées puis décodées indépendamment de toute autre image du flux vidéo, de façon à pouvoir décoder une vidéo en cours de transmission (par exemple, pour changer de chaîne sur un récepteur de télévision, dans le cas de la diffusion d'un flux audiovisuel). Ainsi, lorsqu'une image Intra de cette séquence doit être codée, elle ne peut pas l'être par rapport à un vecteur de quantification d'un dictionnaire qui a été mis à jour pour une image précédent cette image Intra. Par conséquent, l'invention propose avantageusement d'initialiser les vecteurs de quantification du dictionnaire à des valeurs respectives prédéterminées pour rendre le codage de l'Image Intra indépendant de toute autre image de la séquence.
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 opérations mises en œuvre au cours du procédé de codage tel que défini ci- dessus.
Corrélativement, l'invention concerne un dispositif de codage d'au moins une image découpée en blocs, comprenant, pour un bloc courant à coder de ladite image :
- un module de prédiction pour prédire le bloc courant conformément à un mode de prédiction sélectionné parmi une pluralité de modes de prédiction prédéterminés, délivrant un bloc prédicteur,
- un module de calcul pour calculer un premier ensemble de données représentatives d'une différence entre le bloc prédicteur obtenu et le bloc courant,
- un module de comparaison pour comparer le premier ensemble de données calculé avec une pluralité de vecteurs de quantification, - un module de sélection pour sélectionner un des vecteurs de quantification selon un critère de performance de codage prédéterminé,
- un premier module de codage pour coder un index associé au vecteur de quantification sélectionné.
Un tel dispositif de codage est remarquable en ce que :
- le module de calcul est activé pour calculer un deuxième ensemble de données représentatives d'une différence entre le premier ensemble de données calculé et le vecteur de quantification sélectionné, et en ce qu'il comprend un deuxième module de codage qui est activé pour coder le deuxième ensemble de données calculé, au moins un des vecteurs de quantification étant modifié en fonction des données du deuxième ensemble de données calculé.
De façon correspondante, 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 œuvre, pour un bloc courant à décoder :
- un décodage :
• d'un index associé à un vecteur de quantification qui appartient à un ensemble de vecteurs de quantification,
• et de données de prédiction du bloc courant à décoder, - un décodage de l'index,
- une détermination du vecteur de quantification associé à l'index décodé,
- une obtention d'un bloc prédicteur à partir des données de prédiction décodées.
Un tel procédé de décodage est remarquable en ce qu'il comprend:
- une détermination, dans le signal de données, de données relatives au bloc courant à décoder,
- un décodage des données relatives au bloc courant à décoder, au cours duquel au moins un des vecteurs de quantification est modifié en fonction des données décodées,
- une reconstruction du bloc courant à partir des données décodées, du vecteur de quantification déterminé et du bloc prédicteur obtenu. Les données relatives au bloc courant à décoder sont typiquement les valeurs des pixels de ce bloc permettant de reconstruire ce bloc ou des valeurs de coefficients transformés permettant de reconstruire ce bloc.
Dans un mode de réalisation particulier, la modification d'un des vecteurs de quantification est mise en œuvre uniquement si les données décodées remplissent un critère prédéterminé.
Dans un autre mode de réalisation particulier, la modification d'un des vecteurs de quantification est mise en œuvre à l'aide d'un paramètre dont la valeur dépend de la taille de l'image à décoder.
Dans encore un autre mode de réalisation particulier, si l'image courante est de type Intra, les vecteurs de quantification sont chacun initialisés à des valeurs prédéterminées.
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.
Corrélativement, l'invention concerne un dispositif de décodage d'un signal de données représentatif d'au moins une image découpée en blocs, comprenant, pour un bloc courant à décoder :
- un premier module de décodage pour décoder :
· un index associé à un vecteur de quantification qui appartient à un ensemble de vecteurs de quantification, • et des données de prédiction du bloc courant à décoder,
- un module de calcul pour déterminer le vecteur de quantification associé à l'index décodé,
- un module de prédiction pour obtenir un bloc prédicteur à partir des données de prédiction décodées.
Un tel dispositif de décodage est remarquable en ce qu'il comprend :
- un deuxième module de décodage qui est activé pour décoder des données relatives au bloc courant à décoder déterminées dans le signal de données, au moins un des vecteurs de quantification étant modifié en fonction des données décodées, - un module de reconstruction pour reconstruire le bloc courant à partir des données décodées, du vecteur de quantification déterminé et du bloc prédicteur obtenu.
L'invention concerne encore un programme d'ordinateur comportant des instructions pour mettre en œuvre le procédé de codage et/ou le procédé de décodage selon l'invention, lorsqu'il est exécuté sur un ordinateur.
Un tel programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable.
Un autre objet de l'invention vise aussi un support d'enregistrement lisible par un ordinateur, et comportant des instructions de programme d'ordinateur tel que mentionné 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, ou encore un moyen d'enregistrement magnétique, ou encore un moyen d'enregistrement numérique tel que par exemple une clé USB ou un disque dur.
D'autre part, un tel 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, un tel support d'enregistrement peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter le procédé de codage et/ou de décodage selon l'invention ou pour être utilisé dans l'exécution de ce et/ou ces derniers. 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 un mode de réalisation de l'invention,
- la figure 2 représente un dispositif de codage mettant en œuvre les étapes du procédé de codage de la figure 1 ,
- la figure 3 représente un dispositif de décodage selon un mode de réalisation de l'invention,
- la figure 4 représente les étapes du procédé de décodage mises en œuvre dans le dispositif de décodage de la figure 3. 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 mis en œuvre dans un codeur conforme à l'une quelconque des normes de codage vidéo actuelles ou à venir.
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 tel codeur. Le procédé de codage selon l'invention est représenté sous la forme d'un algorithme comportant des étapes C1 à C15 telles que représentées à la figure 1.
Selon ce mode de réalisation, 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 de codage comprend une mémoire MEM_CO comprenant une mémoire tampon TAMP_CO, une unité de traitement UT_CO équipée par exemple d'un microprocesseur μΡ et pilotée par un programme d'ordinateur PG_CO qui met en œuvre le procédé de codage selon l'invention. A l'initialisation, les instructions de code du programme d'ordinateur PG_CO sont par exemple chargées dans une mémoire RAM MR_CO avant d'être exécutées par le processeur de l'unité de traitement UT_CO.
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 IC-i , 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, à la subdivision d'une image courante ICj en une pluralité de blocs B-i , B2, Bu, ..., Bs (1 <u≤S). Une telle étape de subdivision est mise en œuvre par un module logiciel de partitionnement MP_CO représenté sur la figure 2, lequel module est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO. 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, macroblocs, ou bien des ensembles de pixels présentant d'autres formes géométriques.
Lesdits blocs B ; B2, Bu, ..., Bs 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.
D'autres types de parcours sont bien sûr possibles. Ainsi, il est possible de subdiviser l'image ICj en plusieurs sous-images appelées slices et d'appliquer indépendamment une subdivision 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.
Selon un exemple, les blocs B-i , B2, Bu, ..., Bs ont une forme carrée et contiennent tous K pixels, avec K>1 . Selon un mode préféré de réalisation, lesdits blocs sont de taille 4x4 ou 8x8 pixels.
En fonction de la taille de l'image qui n'est pas forcément un multiple de la taille des blocs, les derniers blocs à gauche et les derniers blocs en bas peuvent ne pas être carrés. Dans un mode alternatif de réalisation, les blocs peuvent être par exemple de taille rectangulaire et/ou non alignés les uns avec les autres.
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 Bu de l'image ICj, tel que par exemple le premier bloc B-,.
Au cours d'une étape C3 représentée à la figure 1 , il est procédé à la prédiction du bloc courant Bu par des techniques connues de prédiction Intra et/ou Inter. A cet effet, le bloc Bu est prédit par rapport à au moins un bloc prédicteur conformément à un mode de prédiction sélectionné parmi une pluralité de modes de prédiction prédéterminés MP0, MP-i , . . . , MPV, ..., MPQ où 0<v≤Q. De façon connue en soi, le bloc Bu est prédit par rapport à une pluralité de blocs prédicteurs candidats. Chacun des blocs prédicteurs candidats est un bloc de pixels qui a été déjà codé ou bien codé puis décodé. De tels blocs prédicteurs sont préalablement stockés dans la mémoire tampon TAMP_CO du codeur CO telle que représentée à la figure 2.
Selon un exemple de réalisation, la prédiction est de type Intra qui est, de façon connue en soi, associée à une pluralité de modes de prédiction définis chacun par une direction prédéterminée. Dans le cas de la prédiction Intra proposée par exemple dans le standard HEVC, il existe trente-cinq directions de prédiction possibles, ce qui revient à déterminer trente-cinq blocs prédicteurs candidats disponibles pour la prédiction du bloc courant Bu.
A l'issue de l'étape C3 de prédiction, un bloc prédicteur optimal BPopt est obtenu suite à une mise en compétition desdits blocs prédicteurs candidats, par exemple par minimisation d'un critère débit distorsion bien connu de l'homme du métier. Le bloc BPopt est considéré comme une approximation du bloc courant Bu. Les informations relatives à cette prédiction sont destinées à être inscrites dans un signal ou flux de données F à transmettre à un décodeur qui sera décrit plus en détail dans la suite de la description.
L'étape C3 est mise en œuvre par un processeur ou module logiciel de codage prédictif PRED_CO représenté sur la figure 2, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO.
Au cours d'une étape C4 représentée à la figure 1 , il est procédé classiquement à la comparaison des données relatives au bloc courant Bu aux données du bloc prédicteur BPopt. Plus précisément, au cours de cette étape, il est procédé au calcul de la différence entre le bloc courant Bu et le bloc prédicteur BPopt obtenu.
Un premier ensemble de données, appelé premier bloc résidu Bru est alors obtenu à l'issue de l'étape C4.
L'étape C4 est mise en œuvre par un processeur ou module logiciel
CAL1_CO de calcul tel que représenté sur la figure 2, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO.
Au cours d'une étape C5 représentée à la figure 1 , il est procédé à une comparaison du premier bloc résidu Bru avec une pluralité de de vecteurs de quantification. De façon connue en soi, ces vecteurs de quantification appartiennent à un ou plusieurs dictionnaires de vecteurs de quantification disponibles au codeur, notés CBK-,, CBK2, ..., CBKW. De tels dictionnaires sont préalablement stockés dans la mémoire tampon TAMP_CO du codeur CO, telle que représentée à la figure 2.
Plus précisément, l'étape C5 consiste à sélectionner l'un desdits dictionnaires de vecteurs de quantification parmi les dictionnaires disponibles
L'étape C5 est mise en œuvre par un processeur ou module logiciel de calcul CAL2_CO tel que représenté sur la figure 2, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO.
Conformément à l'invention, une telle sélection est mise en œuvre en fonction de l'un et/ou de l'autre des éléments suivants:
-les caractéristiques de la prédiction (par exemple, le mode Intra choisi parmi les 35 modes Intra du standard HEVC) qui a été appliquée à l'étape C3,
- les caractéristiques fréquentielles du bloc prédicteur BPopt, -la taille du bloc courant Bu,
-des caractéristiques de l'image courante ICj, comme sa taille ou son énergie.
Dans le mode préféré de réalisation, W=70, c'est-à-dire que :
- dans le cas d'un bloc courant Bu de taille 4x4, il existe un dictionnaire différent pour chacun des 35 modes Intra considérés dans le standard HEVC, - dans le cas d'un bloc courant Bu de taille 8x8, il existe un dictionnaire différent pour chacun des 35 modes Intra considérés dans le standard HEVC.
Conformément à ce mode préféré de réalisation, le dictionnaire sélectionné dépend donc à la fois de la taille du bloc courant Bu et du mode de prédiction sélectionné.
Le dictionnaire sélectionné à l'issue de l'étape C5 est noté CBKopt.
Au cours d'une étape C6 représentée à la figure 1 , il est procédé à une sélection d'un des vecteurs de quantification du dictionnaire CBKopt qui a été sélectionné à l'étape C5.
Un vecteur de quantification optimal Vopt est obtenu suite à une mise en compétition desdits vecteurs de quantification du dictionnaire CBKopt, par exemple :
- soit par minimisation d'un critère débit distorsion bien connu de l'homme du métier,
- soit par minimisation de l'erreur quadratique moyenne calculée entre les données du bloc résidu Bru et les données correspondantes de chacun des vecteurs de quantification du dictionnaire CBKopt.
Le vecteur de quantification optimal Vopt est considéré comme une approximation du bloc résidu Bru. Les informations relatives à cette prédiction sont destinées à être inscrites dans le signal de données F précité.
L'étape C6 est mise en œuvre par un processeur ou module logiciel de calcul CAL3_CO tel que représenté sur la figure 2, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO.
Au cours d'une étape C7 représentée à la figure 1 , il est procédé à un codage du vecteur de quantification Vopt sélectionné à l'issue de l'étape C6.
Une telle étape consiste à représenter l'index noté IVopt du vecteur de quantification Vopt sous forme binaire. Par exemple, si le dictionnaire CBKopt auquel appartient le vecteur de quantification Vopt contient 256 vecteurs de quantification, alors le vecteur de quantification Vopt peut être représenté sur 8 bits, ce qui permet d'identifier précisément ce vecteur parmi tous les autres vecteurs de quantification du dictionnaire CBKopt. L'étape C7 est mise en œuvre par un processeur ou module logiciel de codage binaire CB_CO tel que représenté sur la figure 2, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO.
Au cours d'une étape C8 représentée à la figure 1 , il est procédé à la comparaison des données relatives au bloc résidu Bru aux données du vecteur V0pt. Plus précisément, au cours de cette étape, il est procédé au calcul de la différence entre le bloc résidu Bru et le vecteur Vopt.
Un deuxième ensemble de données, appelé bloc résidu secondaire BSru, est alors obtenu à l'issue de l'étape C8.
L'étape C8 est mise en œuvre par le processeur ou module logiciel
CAL4_CO représenté sur la figure 2.
Au cours d'une étape C9 représentée à la figure 1 , il est procédé, conformément à l'invention, à un codage des données du bloc résidu secondaire BSru.
Au cours de l'étape C9, il est procédé, au cours d'une sous-étape C91 , à une transformation du bloc résidu secondaire BSru selon une opération classique de transformation directe, pour produire un bloc transformé BStu.
La sous-étape C91 est mise en œuvre par un processeur ou module logiciel MT_CO de transformation représenté sur la figure 2, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO.
Le processeur MT_CO est apte à mettre en œuvre une transformation directe telle que par exemple une transformation en cosinus discrètes de type DCT (abréviation anglaise de « Discrète Cosine Transform »), une transformation en sinus discrètes de type DST (abréviation anglaise de « Discrète Sine Transform »), une transformation en ondelettes discrètes de type DWT (abréviation anglaise de « Discrète Wavelet Transform »).
Au cours de l'étape C9, il est procédé en outre, au cours d'une sous- étape C92 représentée à la figure 1 , à une quantification des données du bloc transformé BStu, pour produire un bloc quantifié BSqu formé de coefficients quantifiés. Une telle étape de quantification est par exemple de type scalaire ou vectoriel. La sous-étape C92 est effectuée au moyen d'un processeur ou module logiciel de quantification MQ_CO tel que représenté à la figure 2, lequel module est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO.
De façon connue en soi, au cours de l'étape C9, il est procédé en outre, au cours d'une sous-étape C93 représentée à la figure 1 , au codage des coefficients quantifiés du bloc BSqu. 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.
La sous-étape C93 est mise en œuvre par un processeur ou module logiciel de codage MC_CO représenté sur la figure 2, lequel module est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO.
Au cours d'une étape C10 représentée à la figure 1 , il est procédé à la construction du signal ou flux de données F qui contient :
- les données codées à l'issue de l'étape C9 précitée,
- l'index IVopt du vecteur de quantification optimal Vopt. L'étape C10 est mise en œuvre par un processeur ou module logiciel MCF de construction de signal de données, tel que représenté sur la figure 2.
Le signal de données F est ensuite transmis par un réseau de communication (non représenté) à un terminal distant. Celui-ci comporte le décodeur DO représenté à la figure 3.
De façon connue en soi, le signal de données F comprend en outre certaines informations encodées par le codeur CO, telles que le type de prédiction (Inter ou Intra) appliqué à l'étape C3, et le cas échéant, le mode de prédiction sélectionné, l'indice du bloc prédicteur obtenu BPopt obtenu à l'issue de l'étape C3, noté IBPopt, le type de partitionnement du bloc courant Bu si ce dernier a été partitionné, l'indice d'image de référence et le vecteur de déplacement utilisés dans le mode de prédiction Inter.
De façon connue en soi, il est ensuite procédé au décodage du bloc résidu BSru. Un bloc résidu décodé BSDru est alors obtenu. Il est alors procédé à la construction du bloc décodé BDU en ajoutant au bloc prédit BPopt le bloc résidu décodé BSDru. Il est à noter que le bloc décodé BDU 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é BDU est ainsi rendu disponible pour être utilisé par le codeur CO de la figure 2.
Au cours d'une étape C1 1 représentée à la figure 1 , conformément à l'invention, il est procédé à un test qui consiste à vérifier si un critère de mise à jour des dictionnaires CBK-,, CBK2, ..., CBKW est rempli ou non.
Selon une première variante, un tel critère consiste à comparer le nombre de coefficients non nuls dans le bloc résidu BSru à un seuil prédéterminé. Par exemple, le critère de mise à jour est considéré rempli si le nombre de coefficients non nuls est supérieur à 3.
Selon une deuxième variante, un tel critère consiste à comparer le débit du codage du bloc résidu BSru à un seuil prédéterminé. Par exemple, le critère de mise à jour est considéré rempli si le débit du codage du bloc résidu BSru est supérieur à 10 bits.
L'étape C1 1 est mise en œuvre par un processeur ou module logiciel de calcul CAL5_CO tel que représenté sur la figure 2, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO.
Si le critère de mise à jour est rempli, au cours d'une étape C12 représentée à la figure 1 , il est procédé à une mise à jour d'au moins un des dictionnaires CBK^ CBK2, ..., CBKW.
L'étape C12 est mise en œuvre par un processeur ou module logiciel de calcul CAL6_CO tel que représenté sur la figure 2, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_CO.
Selon une première variante, l'étape C12 consiste à remettre à jour l'ensemble des dictionnaires courants CBK-ι , CBK2,..., CBKW.
Selon une deuxième variante préférée, il est procédé uniquement à une mise à jour du dictionnaire CBKopt.
Dans le mode préféré de réalisation, le dictionnaire CBKopt est mis à jour de la façon suivante.
Le vecteur Vopt, ainsi que ses voisins contenus dans le dictionnaire CBKopt, sont tout d'abord considérés. Les voisins sont notés Vopt-R, Vopt-R+i , Vopt-
R+2, . . . , Vopt-1 , Vopt, Vopt+1 , . . . , Vopt+R-2j Vopt+R-1 , Vopt+R. Le paramètre R qui définit le nombre de voisins suivants et précédents du vecteur Vopt est prédéterminé, par exemple à la valeur 5. Selon cette configuration, les 5 vecteurs voisins qui suivent et précédent le vecteur Vopt sont considérés.
Puis des vecteurs Zopt+n, n appartenant à <-R,+R>, sont construits en vue de la mise à jour, de la façon suivante :
^-opt+n= Vop,+n+alpha*f(n)*((Vop,+BSru)-Vop,+n)
où :
- alpha est un paramètre prédéterminé, par exemple égal à 0.1 , - et f (n) est une valeur qui dépend de la distance entre l'index n et l'index opt.
Par exemple, dans le mode préféré de réalisation :
f(n)=0.2* (5-n)/5
Les vecteurs Zopt+n avec n allant de -5 à +5 sont donc calculés, et viennent remplacer respectivement les vecteurs Vopt+n dans le dictionnaire CBKopt-
L'ensemble des dictionnaires courants CBK-ι, CBK2, ..., CBKW est donc ainsi remis à jour.
Dans un mode alternatif de réalisation, les paramètres de la mise à jour peuvent être différents suivant la taille de l'image. En effet, si l'image est petite, un apprentissage rapide de la statistique de l'image courante ICj est nécessaire.
Par exemple :
- pour une taille d'image appartenant à une vidéo simple définition SD (abréviation anglaise de « Standard Définition »), soit moins de 720 pixels de haut et moins de 1280 pixels de large, un paramètre alpha égal à 0.3 est retenu ;
- pour une taille d'image appartenant à une vidéo haute définition HD (Abréviation anglaise de « High Définition »), soit entre 720 et 1080 pixels de haut et entre 1280 et 1920 pixels de large, ou bien supérieure à 1280x1920 pixels, un paramètre alpha égal à 0.2 est retenu ;
- pour une taille d'image supérieure à la taille d'une image HD, un paramètre égal à 0.1 est retenu. Il est bien sûr possible de remettre à jour les dictionnaires d'autres façons. Par exemple, il est possible d'appliquer le même type de mise à jour de vecteur de quantification que dans le mode préféré. Toutefois, la mise à jour, au lieu de s'appliquer aux vecteurs voisins du vecteur de quantification Vopt dans le dictionnaire CBKopt, s'applique aux vecteurs proches de Vopt+BSDru au sens de la distorsion. En variante, la mise à jour s'applique à des vecteurs proches de Vopt+BSDru non seulement dans le dictionnaire CBKopt, mais dans l'ensemble des dictionnaires courants CBK-,, CBK2, ..., CBKW.
A la suite de l'étape C12 précitée, il est procédé, au cours d'une étape C13 représentée sur la figure 1 , à la sélection du bloc suivant de l'image courante ICj. Puis les étapes de codage de bloc décrites ci-dessus sont à nouveau mises en œuvre pour ce bloc suivant.
Si à l'issue de l'étape C1 1 précitée, le critère de mise à jour n'est pas rempli, il est procédé, au cours de l'étape C13 précitée, à la sélection du bloc suivant de l'image courante ICj. Puis les étapes de codage de bloc décrites ci- dessus sont à nouveau mises en œuvre pour ce bloc suivant.
Au cours d'une étape C14 représentée à la figure 1 , le codeur CO de la figure 2 teste si le bloc courant qui a été codé conformément au procédé de codage décrit ci-dessus est le dernier bloc de l'image courante ICj.
Si tel n'est pas le cas, l'étape C12 précitée est mise en œuvre.
Si le bloc courant est le dernier bloc de l'image courante ICj, au cours d'une étape C15 représentée à la figure 1 , le codeur CO de la figure 2 teste si l'image courante suivante ICj+i est une image de type Intra ou non.
Dans le cas où l'image courante suivante ICj+i est de type Intra, avant de procéder au codage des blocs de cette image conformément au procédé de codage de la figure 1 , l'étape C12 de mise à jour des dictionnaires est mise en œuvre.
Dans l'exemple représenté, les vecteurs de quantification du dictionnaire CBKopt sont alors chacun initialisés à une valeur respective prédéterminée.
Dans le cas où l'image courante suivante ICj+i n'est pas de type Intra, il est procédé directement au codage des blocs de cette image conformément au procédé de codage de la figure 1. Les étapes de codage C1 à C15 qui viennent d'être décrites ci-dessus sont ensuite mises en œuvre pour chacun des blocs B-i , B2, Bu,..., Bs à coder de l'image courante ICj considérée, dans un ordre prédéterminé qui est par exemple l'ordre lexicographique.
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 à D15 telles que représentées à la figure 4.
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 3.
Comme illustré en figure 3, selon ce mode de réalisation de l'invention, le décodeur DO comprend une mémoire MEM_DO qui comprend elle-même une mémoire tampon TAMP_DO, une unité de traitement UT_DO équipée par exemple d'un microprocesseur μΡ et pilotée par un programme d'ordinateur PG_DO qui met en œuvre le procédé de décodage selon l'invention. A l'initialisation, les instructions de code du programme d'ordinateur PG_DO sont par exemple chargées dans une mémoire RAM, notée MR_DO, avant d'être exécutées par le processeur de l'unité de traitement UT_DO.
Le procédé de décodage représenté sur la figure 4 s'applique à un signal ou flux de données F 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 F reçu au 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 4, au cours d'une étape D1 , il est procédé à l'identification dans le signal F des blocs résidus quantifiés BSq-ι , BSq2, ..., BSqu, BSqs (1≤u≤S) associés respectivement aux blocs B-i , B2, Bu, ..., Bs codés précédemment conformément à l'ordre lexicographique précité, au cours de l'étape de codage C9 de la figure 1.
Une telle étape d'identification est mise en œuvre par un processeur ou module logiciel d'identification MI_DO d'analyse de flux, tel que représenté à la figure 3, ledit module étant piloté par le microprocesseur μΡ de l'unité de traitement UT_DO.
D'autres types de parcours que celui qui vient d'être décrit ci-dessus sont bien sûr possibles et dépendent de l'ordre de parcours choisi au codage.
Dans l'exemple représenté, les blocs B ; B2, Bu, ..., Bs à décoder ont une forme carrée et contiennent tous K pixels, avec K>1 . Selon un mode préféré de réalisation, lesdits blocs à décoder sont de taille 4x4 ou 8x8 pixels.
En fonction de la taille de l'image qui n'est pas forcément un multiple de la taille des blocs, les premiers blocs en haut, à gauche de l'image, et les derniers blocs en bas, à droite de l'image peuvent ne pas être carrés. Dans un mode alternatif de réalisation, les blocs peuvent être par exemple de taille rectangulaire et/ou non alignés les uns avec les autres.
Chaque bloc à décoder peut par ailleurs être lui-même divisé en sous blocs qui sont eux-mêmes subdivisibles.
Au cours d'une étape D2 représentée à la figure 4, le décodeur DO de la figure 3 sélectionne comme bloc courant le premier bloc quantifié BSqu qui contient des données quantifiées qui ont été codées au cours de la sous-étape C93 de la figure 1 .
Au cours d'une étape D3 représentée à la figure 4, il est procédé à un décodage des informations relatives à la prédiction du bloc courant Bu telle que mise en œuvre au codage, au cours de l'étape C3 de la figure 1 , et qui ont été inscrites dans le signal de données F. De telles informations de reconstruction comprennent le type de prédiction (Inter ou Intra) appliqué à l'étape C3, et le cas échéant, le mode de prédiction sélectionné, l'indice IBopt du bloc prédicteur obtenu BPopt obtenu à l'issue de l'étape C3, le type de partitionnement du bloc courant Bu si ce dernier a été partitionné, l'indice d'image de référence et le vecteur de déplacement utilisés dans le mode de prédiction Inter.
Une telle étape D3 de décodage est mise en œuvre par le module de décodage binaire DB_DO représenté sur la figure 3.
Au cours d'une étape D4 représentée à la figure 4, il est procédé au décodage prédictif du bloc courant à décoder à l'aide de l'indice IBopt du bloc prédicteur BPopt qui a été décodé au cours de l'étape D3 précitée. A cet effet, de façon connue en soi, il est procédé, en association avec l'indice décodé du bloc prédicteur BPopt, à la sélection, dans la mémoire tampon TAMP_DO du décodeur DO de la figure 3, du bloc prédicteur BPopt correspondant, lequel figure parmi une pluralité de blocs prédicteurs candidats préalablement stockés dans la mémoire tampon TAMP_DO. Chacun des blocs prédicteurs candidats est un bloc de pixels qui a déjà été décodé.
L'étape D4 est mise en œuvre par un processeur ou module logiciel PRED"1_DO de prédiction inverse, tel que représenté sur la figure 3, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_DO.
Au cours d'une étape D5 représentée à la figure 4, il est procédé à un décodage de l'indice IVopt du vecteur de quantification optimal Vopt qui a été sélectionné à l'issue de l'étape C6 de la figure 1.
Une telle étape D5 de décodage est mise en œuvre par le module de décodage DB_DO de la figure 3.
Au cours d'une étape D6 représentée à la figure 4, il est procédé à la détermination du vecteur de quantification optimal Vopt associé à l'indice IVopt décodé.
L'étape D6 est mise en œuvre par un processeur ou module logiciel de calcul CAL1_DO tel que représenté sur la figure 3, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_DO.
Au cours d'une étape D7 représentée à la figure 4, il est procédé à la sélection d'un dictionnaire de vecteurs de quantification, noté CBKopt, qui contient le vecteur de quantification Vopt sélectionné à l'étape D6. Un tel dictionnaire appartient à une pluralité de dictionnaires de vecteurs de quantification disponibles, notés CBK-ι , CBK2, ..., CBKW. De tels dictionnaires sont préalablement stockés dans la mémoire tampon TAMP_DO du décodeur DO, telle que représentée à la figure 3.
L'étape D7 est mise en œuvre par un processeur ou module logiciel de calcul CAL2_DO tel que représenté sur la figure 3, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_DO.
Conformément à l'invention, de façon correspondante au codage, une telle sélection est mise en œuvre en fonction de l'un et/ou de l'autre des éléments suivants:
- les caractéristiques de la prédiction (par exemple, le mode Intra choisi parmi les 35 modes Intra du standard HEVC), dont les indices ont été décodés à l'étape D3,
- les caractéristiques fréquentielles du bloc prédicteur BPopt dont l'indice IBopt a été décodé à l'étape D3,
- la taille du bloc courant Bu à décoder,
- des caractéristiques de l'image courante ICj à décoder, comme sa taille ou son énergie.
Dans le mode préféré de réalisation, W=70, c'est-à-dire que :
- dans le cas d'un bloc courant Bu de taille 4x4, il existe un dictionnaire différent pour chacun des 35 modes Intra considérés dans le standard HEVC,
- dans le cas d'un bloc courant Bu de taille 8x8, il existe un dictionnaire différent pour chacun des 35 modes Intra considérés dans le standard HEVC.
Conformément à ce mode préféré de réalisation, le dictionnaire sélectionné dépend donc à la fois de la taille du bloc courant Bu à décoder et du mode de prédiction dont l'indice a été décodé à l'étape D3.
Au cours d'une étape D8 représentée à la figure 4, il est procédé, conformément à l'invention, à un décodage des données du bloc résidu quantifié BSqu.
Au cours de l'étape D8, il est procédé, au cours d'une sous-étape D81 représentée à la figure 4, à un décodage de l'ensemble de coefficients quantifiés BSqu courant. Un tel décodage est par exemple un décodage entropique de type CABAC ou bien encore un décodage entropique de type arithmétique ou de Huffman.
A l'issue de la sous-étape D81 précitée, est obtenu un ensemble BSDqu d'informations numériques associées à l'ensemble de coefficients quantifiés BSqu courant.
Une telle sous-étape D81 de décodage est mise en œuvre par un module de décodage entropique MD_DO représenté sur la figure 3, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_DO.
Au cours de l'étape D8, il est procédé, au cours d'une sous-étape D82 représentée à la figure 4, à une déquantification des informations numériques obtenues à la suite de la sous-étape D81 , selon une opération classique de déquantification qui est l'opération inverse de la quantification mise en œuvre lors de la sous-étape de quantification C92 de la figure 1. Un ensemble de coefficients déquantifiés BSDtu courant est alors obtenu à l'issue de la sous- étape D82. Une telle sous-étape de déquantification est par exemple de type scalaire ou vectoriel.
La sous-étape D82 est effectuée au moyen d'un processeur ou module logiciel de quantification MQ"1_DO représenté à la figure 3, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_DO.
Au cours de l'étape D8, il est procédé, au cours d'une sous-étape D83 représentée à la figure 4, à une transformation de l'ensemble de coefficients déquantifiés BSDtu courant, une telle transformation étant une transformation directe inverse. Cette transformation est l'opération inverse de la transformation effectuée à la sous-étape C91 de la figure 1 . A l'issue de la sous-étape D83, est obtenu un bloc résidu décodé courant BSDru.
La sous-étape D83 est mise en œuvre par un processeur ou module logiciel MT"1_DO de transformation inverse, tel que représenté sur la figure 3, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_DO.
Le processeur MT"1_DO est apte à mettre en œuvre une transformation directe inverse telle que par exemple une transformation inverse en cosinus discrètes de type DCT1 , une transformation inverse en sinus discrètes de type DST1 , une transformation inverse en ondelettes discrètes de type DWT1. Au cours d'une étape D9 représentée à la figure 4, il est procédé, conformément à l'invention, à la reconstruction du bloc courant Bu en ajoutant au bloc résidu décodé BSDru, obtenu à l'issue de la sous-étape D83 :
- le bloc prédicteur optimal BPopt qui a été obtenu à l'issue de l'étape D4 précitée,
- et le vecteur de quantification optimal Vopt qui a été obtenu à l'issue de l'étape D6 précitée.
A l'issue de l'étape D9, un bloc décodé courant BDU est obtenu.
L'étape D9 est mise en œuvre par un processeur ou module logiciel de calcul CAL3_DO représenté sur la figure 3, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_DO.
Au cours d'une étape D10 représentée à la figure 4, ledit bloc décodé BDU est écrit dans une image décodée IDj.
Une telle étape est mise en œuvre par un processeur ou module logiciel URI de reconstruction d'image tel que représenté sur la figure 3, ledit module étant piloté par le microprocesseur μΡ du module de traitement UT_DO.
Au cours d'une étape D1 1 représentée à la figure 4, il est procédé à un test qui consiste à vérifier si un critère de mise à jour des dictionnaires CBK-i , CBK2, ..., CBKW est rempli ou non.
Selon une première variante, un tel critère consiste à comparer le nombre de coefficients non nuls dans le bloc résidu décodé BSDru à un seuil prédéterminé. Par exemple, le critère de mise à jour est considéré rempli si le nombre de coefficients non nuls est supérieur à 3.
Selon une deuxième variante, un tel critère consiste à comparer le débit du codage du bloc résidu décodé BSDru à un seuil prédéterminé. Par exemple, le critère de mise à jour est considéré rempli si le débit du codage du bloc résidu décodé BSDru est supérieur à 10 bits.
L'étape D1 1 est mise en œuvre par un processeur ou module logiciel de calcul CAL4_DO tel que représenté sur la figure 3, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_DO.
Si le critère de mise à jour est rempli, au cours d'une étape D12 représentée à la figure 4, il est procédé à une mise à jour d'au moins un des dictionnaires CBK^ CBK2, ..., CBKW. L'étape D12 est mise en œuvre par un processeur ou module logiciel de calcul CAL5_DO tel que représenté sur la figure 3, lequel est piloté par le microprocesseur μΡ de l'unité de traitement UT_DO.
L'étape D12 étant identique à l'étape C12 de mise à jour des dictionnaires telle que mise en œuvre au codage en référence à la figure 1 , cette étape ne sera pas décrite plus longuement.
A la suite de l'étape D12 précitée, il est procédé, au cours d'une étape D13 représentée sur la figure 4, à la sélection du bloc résidu quantifié suivant de l'image courante ICj à décoder. Puis les étapes de décodage du bloc résidu quantifié suivant décrites ci-dessus sont à nouveau mises en œuvre.
Si à l'issue de l'étape D1 1 précitée, le critère de mise à jour n'est pas rempli, il est procédé, au cours de l'étape D13 précitée, à la sélection du bloc résidu quantifié suivant de l'image courante ICj à décoder. Puis les étapes de décodage du bloc résidu quantifié suivant décrites ci-dessus sont à nouveau mises en œuvre.
Au cours d'une étape D14 représentée à la figure 4, le décodeur DO de la figure 3 teste si le bloc courant qui a été décodé conformément au procédé de décodage décrit ci-dessus est le dernier bloc de l'image courante ICj à décoder.
Si tel n'est pas le cas, l'étape D13 précitée est mise en œuvre.
Si le bloc courant est le dernier bloc de l'image courante ICj à décoder, au cours d'une étape D15 représentée à la figure 4, le décodeur DO de la figure 3 teste si l'image courante suivante ICj+i à décoder est une image de type Intra ou non.
Dans le cas où l'image courante suivante ICj+i à décoder est de type
Intra, avant de procéder au décodage des blocs de cette image conformément au procédé de décodage de la figure 4, l'étape D12 de mise à jour des dictionnaires est mise en œuvre.
Dans l'exemple représenté, les vecteurs de quantification du dictionnaire CBKopt sont chacun initialisés à une valeur respective prédéterminée.
Dans le cas où l'image courante suivante ICj+i à décoder n'est pas de type Intra, il est procédé directement au décodage des blocs de cette image conformément au procédé de décodage de la figure 4. Les étapes de décodage qui viennent d'être décrites ci-dessus sont mises en œuvre pour tous les blocs B-i , B2, Bu,..., Bs à décoder de l'image courante ICj considérée, dans un ordre prédéterminé qui est par exemple l'ordre lexicographique.
II 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.

Claims

REVENDICATIONS
1 . Procédé de codage d'au moins une image (ICj) découpée en blocs, mettant en œuvre, pour un bloc courant (Bu) à coder de ladite image :
- une prédiction (C3) du bloc courant conformément à un mode de prédiction sélectionné parmi une pluralité de modes de prédiction prédéterminés,
- une obtention d'un bloc prédicteur (BPopt) à l'issue de ladite prédiction, - un calcul (C4) d'un premier ensemble de données représentatives d'une différence entre le bloc prédicteur obtenu et le bloc courant,
- une comparaison (C5) dudit premier ensemble de données calculé avec une pluralité de vecteurs de quantification,
- une sélection (C6) d'un des vecteurs de quantification selon un critère de performance de codage prédéterminé,
- un codage (C7) d'un index associé audit vecteur de quantification sélectionné,
ledit procédé étant caractérisé en ce qu'il comprend:
- un calcul (C8) d'un deuxième ensemble de données représentatives d'une différence entre le premier ensemble de données calculé et le vecteur de quantification sélectionné,
- un codage (C9) du deuxième ensemble de données calculé au cours duquel au moins un desdits vecteurs de quantification est modifié (C12) en fonction des données du deuxième ensemble de données calculé.
2. Procédé de codage selon la revendication 1 , dans lequel la modification d'un desdits vecteurs de quantification est mise en œuvre uniquement si les données du deuxième ensemble de données calculé remplissent un critère prédéterminé.
3. Procédé de codage selon la revendication 1 ou 2, dans lequel la modification d'un desdits vecteurs de quantification est mise en œuvre à l'aide d'un paramètre dont la valeur dépend de la taille de l'image à coder.
4. Procédé de codage selon l'une quelconque des revendications 1 à 3, dans lequel si ladite image courante est de type Intra, les vecteurs de quantification sont chacun initialisés à des valeurs prédéterminées.
5. Dispositif de codage (CO) d'au moins une image (ICj) découpée en blocs, comprenant, pour un bloc courant (Bu) à coder de ladite image :
- des moyens (PRED_CO) de prédiction pour prédire le bloc courant conformément à un mode de prédiction sélectionné parmi une pluralité de modes de prédiction prédéterminés (MP0, MP-i , . . . , MPV,..., MPQ), délivrant un bloc prédicteur (BPopt),
- des moyens (CAL1_CO) de calcul pour calculer un premier ensemble de données représentatives d'une différence entre le bloc prédicteur obtenu et le bloc courant,
- des moyens (CAL2_CO) de comparaison pour comparer ledit premier ensemble de données calculé avec une pluralité de vecteurs de quantification,
- des moyens (CAL3_CO) de sélection pour sélectionner un des vecteurs de quantification selon un critère de performance de codage prédéterminé,
- des premiers moyens (CB_CO) de codage pour coder un index associé audit vecteur de quantification sélectionné,
ledit dispositif de codage étant caractérisé en ce que:
- lesdits moyens de calcul sont activés pour calculer un deuxième ensemble de données représentatives d'une différence entre le premier ensemble de données calculé et le vecteur de quantification sélectionné, et en ce qu'il comprend des deuxièmes moyens de codage (MC_CO) qui sont activés pour coder le deuxième ensemble de données calculé, au moins un desdits vecteurs de quantification étant modifié en fonction des données du deuxième ensemble de données calculé.
6. 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 à 4, lorsque ledit programme est exécuté sur un ordinateur.
7. 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 à 4, lorsque ledit programme est exécuté par un ordinateur.
8. Procédé de décodage d'un signal de données (F) représentatif d'au moins une image (ICj) découpée en blocs, mettant en œuvre, pour un bloc courant (Bu) à décoder :
- un décodage (D3, D5) :
• d'un index (IVopt) associé à un vecteur de quantification (Vopt) qui appartient à un ensemble de vecteurs de quantification,
• et de données de prédiction du bloc courant à décoder,
- une détermination (D6) dudit vecteur de quantification associé audit index décodé,
- une obtention (D4) d'un bloc prédicteur (BPopt) à partir des données de prédiction décodées,
ledit procédé étant caractérisé en ce qu'il comprend:
- une détermination (D1 ), dans ledit signal de données, de données relatives au bloc courant à décoder,
- un décodage (D8) des données relatives au bloc courant à décoder, au cours duquel au moins un desdits vecteurs de quantification est modifié (D1 2) en fonction des données décodées,
- une reconstruction (D9) du bloc courant à partir des données décodées, dudit vecteur de quantification et du bloc prédicteur obtenu.
9. Procédé de décodage selon la revendication 8, dans lequel la modification d'un desdits vecteurs de quantification est mise en œuvre uniquement si les données décodées remplissent un critère prédéterminé.
10. Procédé de décodage selon la revendication 8 ou 9, dans lequel la modification d'un desdits vecteurs de quantification est mise en œuvre à l'aide d'un paramètre dont la valeur dépend de la taille de l'image à décoder.
1 1 . Procédé de décodage selon l'une quelconque des revendications 8 à 10, dans lequel si ladite image courante est de type Intra, les vecteurs de quantification sont chacun initialisés à des valeurs prédéterminées.
12. Dispositif de décodage d'un signal de données (F) représentatif d'au moins une image (ICj) découpée en blocs, comprenant, pour un bloc courant (Bu) à décoder :
- des premiers moyens de décodage (DB_DO) pour décoder :
• un index associé à un vecteur de quantification qui appartient à un ensemble de vecteurs de quantification,
• et des données de prédiction du bloc courant à décoder,
- des moyens de calcul (CAL1_DO) pour déterminer ledit vecteur de quantification associé audit index décodé,
- des moyens de prédiction (PRED"1_DO) pour obtenir un bloc prédicteur (BPopt) à partir des données de prédiction décodées,
ledit dispositif de décodage étant caractérisé en ce qu'il comprend:
- des deuxièmes moyens de décodage (MD_DO) qui sont activés pour décoder des données relatives au bloc courant à décoder déterminées dans le signal de données, au moins un desdits vecteurs de quantification étant modifié en fonction des données décodées,
- des moyens de reconstruction (CAL3_DO) pour reconstruire le bloc courant à partir des données décodées, dudit vecteur de quantification déterminé et du bloc prédicteur obtenu.
13. 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 8 à 1 1 , lorsque ledit programme est exécuté sur un ordinateur.
14. 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 8 à 1 1 , lorsque ledit programme est exécuté par un ordinateur.
EP16718390.4A 2015-02-19 2016-02-18 Codage d'images par quantification vectorielle Withdrawn EP3272122A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1551420A FR3033114A1 (fr) 2015-02-19 2015-02-19 Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants
PCT/FR2016/050373 WO2016132074A1 (fr) 2015-02-19 2016-02-18 Codage d'images par quantification vectorielle

Publications (1)

Publication Number Publication Date
EP3272122A1 true EP3272122A1 (fr) 2018-01-24

Family

ID=52829174

Family Applications (1)

Application Number Title Priority Date Filing Date
EP16718390.4A Withdrawn EP3272122A1 (fr) 2015-02-19 2016-02-18 Codage d'images par quantification vectorielle

Country Status (6)

Country Link
US (1) US20180070109A1 (fr)
EP (1) EP3272122A1 (fr)
KR (1) KR20170120634A (fr)
CN (1) CN107343391A (fr)
FR (1) FR3033114A1 (fr)
WO (1) WO2016132074A1 (fr)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11012714B1 (en) * 2020-06-23 2021-05-18 Google Llc Image coding using lexicographic coding order with floating block-partitioning

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4851906A (en) * 1986-11-04 1989-07-25 Nec Corporation Data compression using orthogonal transform and vector quantization
EP0285902A3 (fr) * 1987-04-07 1990-10-10 Siemens Aktiengesellschaft Procédé pour la réduction de données de séquences numérisées d'images
US5872864A (en) * 1992-09-25 1999-02-16 Olympus Optical Co., Ltd. Image processing apparatus for performing adaptive data processing in accordance with kind of image
JP3013698B2 (ja) * 1994-04-20 2000-02-28 松下電器産業株式会社 ベクトル量子化符号化装置と復号化装置
US5457495A (en) * 1994-05-25 1995-10-10 At&T Ipm Corp. Adaptive video coder with dynamic bit allocation
US5821986A (en) * 1994-11-03 1998-10-13 Picturetel Corporation Method and apparatus for visual communications in a scalable network environment
US5978514A (en) * 1994-11-10 1999-11-02 Kabushiki Kaisha Toshiba Image data coding and decoding system for efficiently compressing information using the shape and position of the image content
JPH1080187A (ja) * 1996-09-06 1998-03-24 Aichi Electric Co Ltd モータ駆動回路
US6278385B1 (en) * 1999-02-01 2001-08-21 Yamaha Corporation Vector quantizer and vector quantization method
JP3519673B2 (ja) * 2000-07-07 2004-04-19 松下電器産業株式会社 動画データ作成装置及び動画符号化装置
US7463684B2 (en) * 2002-05-03 2008-12-09 Microsoft Corporation Fading estimation/compensation
KR100987765B1 (ko) * 2003-09-30 2010-10-13 삼성전자주식회사 동영상 부호화기에서의 예측 수행 방법 및 장치
KR100654436B1 (ko) * 2004-07-07 2006-12-06 삼성전자주식회사 비디오 코딩 방법과 디코딩 방법, 및 비디오 인코더와디코더
US7649549B2 (en) * 2004-09-27 2010-01-19 Texas Instruments Incorporated Motion stabilization in video frames using motion vectors and reliability blocks
EP1679902A3 (fr) * 2005-01-06 2012-04-25 Qualcomm Incorporated Codage du résidu de prédiction pour un standard vidéo avec une quantification vectorielle
US20070286277A1 (en) * 2006-06-13 2007-12-13 Chen Xuemin Sherman Method and system for video compression using an iterative encoding algorithm
JP5427785B2 (ja) * 2007-09-28 2014-02-26 ドルビー ラボラトリーズ ライセンシング コーポレイション ビデオ圧縮技法及びビデオ伝達技法
US8611423B2 (en) * 2008-02-11 2013-12-17 Csr Technology Inc. Determination of optimal frame types in video encoding
US20090207915A1 (en) * 2008-02-15 2009-08-20 Freescale Semiconductor, Inc. Scalable motion search ranges in multiple resolution motion estimation for video compression
US8130277B2 (en) * 2008-02-20 2012-03-06 Aricent Group Method and system for intelligent and efficient camera motion estimation for video stabilization
US20120076203A1 (en) * 2009-05-29 2012-03-29 Mitsubishi Electric Corporation Video encoding device, video decoding device, video encoding method, and video decoding method
WO2011042900A1 (fr) * 2009-10-05 2011-04-14 I.C.V.T Ltd. Procédé et système de traitement d'une image
US20110170608A1 (en) * 2010-01-08 2011-07-14 Xun Shi Method and device for video transcoding using quad-tree based mode selection
GB2483294B (en) * 2010-09-03 2013-01-02 Canon Kk Method and device for motion estimation of video data coded according to a scalable coding structure
KR20120098499A (ko) * 2011-02-25 2012-09-05 삼성전자주식회사 영상의 변환 방법 및 장치, 및 영상의 역변환 방법 및 장치
US20150131713A1 (en) * 2012-04-16 2015-05-14 Samsung Electronics Co. Ltd. Video coding method and device using high-speed edge detection, and related video decoding method and device
JP2017034531A (ja) * 2015-08-04 2017-02-09 富士通株式会社 動画像符号化装置及び動画像符号化方法
US10187655B2 (en) * 2015-09-30 2019-01-22 Apple Inc. Memory-to-memory low resolution motion estimation systems and methods
US10609383B2 (en) * 2017-04-07 2020-03-31 Hulu, LLC Video compression using down-sampling patterns in two phases

Also Published As

Publication number Publication date
FR3033114A1 (fr) 2016-08-26
KR20170120634A (ko) 2017-10-31
US20180070109A1 (en) 2018-03-08
WO2016132074A1 (fr) 2016-08-25
CN107343391A (zh) 2017-11-10

Similar Documents

Publication Publication Date Title
EP2991351B1 (fr) Procédé de décodage d&#39;images
EP3209021B1 (fr) Support d&#39;enregistrement mémorisant un flux de données d&#39;images codées
WO2015197945A1 (fr) Procédé de codage d&#39;une image numérique, procédé de décodage, dispositifs, et programmes d&#39;ordinateurs associés
EP3061246A1 (fr) Procédé de codage et de décodage d&#39;images, dispositif de codage et de décodage d&#39;images et programmes d&#39;ordinateur correspondants
WO2015055937A1 (fr) Procédé de codage et de décodage d&#39;images, dispositif de codage et de décodage d&#39;images et programmes d&#39;ordinateur correspondants
EP3075155B1 (fr) Procédé de codage et de décodage d&#39;images, dispositif de codage et de décodage d&#39;images et programmes d&#39;ordinateur correspondants
WO2017037368A2 (fr) Procédé de codage et de décodage d&#39;images, dispositif de codage et de décodage d&#39;images et programmes d&#39;ordinateur correspondants
EP3180914A1 (fr) Procédé de codage et de décodage d&#39;images, dispositif de codage et de décodage d&#39;images et programmes d&#39;ordinateur correspondants
EP3632103B1 (fr) Procédés et dispositifs de codage et de décodage d&#39;un flux de données représentatif d&#39;au moins une image
EP2716045A1 (fr) Procédé de codage et de décodage d&#39;images, dispositif de codage et de décodage d&#39;images et programmes d&#39;ordinateur correspondants
EP3272122A1 (fr) Codage d&#39;images par quantification vectorielle
EP3259909B1 (fr) Procédé de codage et décodage d&#39;images, dispositif de codage et décodage et programmes d&#39;ordinateur correspondants
EP3409016A1 (fr) Procédé de codage et décodage de données, dispositif de codage et décodage de données et programmes d&#39;ordinateur correspondants
WO2020058593A1 (fr) Procédés et dispositifs de codage et de décodage d&#39;un flux de données représentatif d&#39;au moins une image

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20170919

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

AX Request for extension of the european patent

Extension state: BA ME

DAV Request for validation of the european patent (deleted)
DAX Request for extension of the european patent (deleted)
17Q First examination report despatched

Effective date: 20180829

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20190312