FR2831016A1 - Procede et dispositif de decodage de donnees video codees selon la norme mpeg - Google Patents

Procede et dispositif de decodage de donnees video codees selon la norme mpeg Download PDF

Info

Publication number
FR2831016A1
FR2831016A1 FR0113083A FR0113083A FR2831016A1 FR 2831016 A1 FR2831016 A1 FR 2831016A1 FR 0113083 A FR0113083 A FR 0113083A FR 0113083 A FR0113083 A FR 0113083A FR 2831016 A1 FR2831016 A1 FR 2831016A1
Authority
FR
France
Prior art keywords
coefficient
coefficients
block
reverse
operations
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.)
Pending
Application number
FR0113083A
Other languages
English (en)
Inventor
Jean Kypreos
Edouard Francois
Dominique Thoreau
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.)
Thomson Licensing SAS
Original Assignee
Thomson Licensing SAS
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 Thomson Licensing SAS filed Critical Thomson Licensing SAS
Priority to FR0113083A priority Critical patent/FR2831016A1/fr
Priority to EP20020292276 priority patent/EP1303144A1/fr
Priority to MXPA02009691A priority patent/MXPA02009691A/es
Priority to KR1020020060144A priority patent/KR20030030871A/ko
Priority to JP2002289986A priority patent/JP2003189306A/ja
Priority to MYPI20023774A priority patent/MY136459A/en
Priority to US10/267,623 priority patent/US7269218B2/en
Priority to CNB021457735A priority patent/CN1241394C/zh
Publication of FR2831016A1 publication Critical patent/FR2831016A1/fr
Pending 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • 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/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame 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/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/172Methods 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 picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Le procédé est caractérisé en ce qu'il effectue les opérations inverses (26, 27, 28) d'opérations successives de codage dans un ordre inverse, non pas bloc par bloc mais coefficient par coefficient.Les applications concernent la compression de données vidéo.

Description

canal recherché.
L'invention concerne un procédé et un dispositif de décodage
exploitant la norme MPEG.
Les ressources nécessaires au traitement de la vidéo, en particulier dans le cadre d'un codage de type MPEG 4 génèrent de nombreux traitements consommateurs de temps et, si le décodage ne s'effectue pas à une vitesse suffisante pour permettre un traitement global
correct, il peut arriver que l'on soit confronté à des problèmes de temps réel.
L'utilisation de langages objet de haut niveau (par exemple C++) plutôt que du langage assembleur, pour la programmation des algorithmes de traitement, ne va pas dans le sens d'une optimisation de ce temps de
1 5 traitement.
D'autre part, I'implémentation de modes de plus en plus complexes de décodage MPEG 4, I'ajout de nouveaux outils vidéo consommateurs en temps de calcul nécessite une optimisation des temps de traitement si l'on veut s'affranchir de processeurs puissants, ceci afin de limiter la taille et ie coût des circuits pour le décodage MPEG 4, par exemple
des circuits customisés de type ASIC.
L'invention a pour but de pallier les inconvénients précités.
Elle a pour objet un procédé de décodage de données numériques vidéo codéss selon la norme MPEG à partir d'opérations successives de codage de blocs de coefficients, caractérisé en ce qu'il effectue les opérations inverses des opérations successives de codoge, dans
un ordre inverse, non pas bloc par bloc mais coefficient par coefficient.
Selon une mise en _uvre particulière, une opération de codage consiste en la quantification des coefficients, la prédiction des coefficients
DC/AC ou bien le balayage zig-zag.
Selon une mise en _uvre particulière, les opérations inverses effectuéss dans l'ordre inverse sur un coefficient sont successivement l'inversion de balayage (26), la construction, le cas échéant, du coefficient DC/AC (27) à partir du coefficient DC/AC prédit, la quantification inverse (28)
du coefficient.
2 2831016
Selon une mise en _uvre particulière, I'inversion de balayage (26) est calculée à partir d'une table de balayage zig-zag inverse, une table de balayage horizontal alterné inverse ou une table de balayage vertical alterné inverse donnant la position réelle s du coefficient dans le bloc à partir du rang n de balayage au codeur. L' invention concerne également u n circu it de décod age vidéo pou r le décodage de données vidéo codées selon la norme MPEG à partir d'opérations successives de codage de blocs de coefficients, caractérisé en ce qu'il comprend un circuit de traitement pour la mise en _uvre d'un algorithme de décodage qui effectue les opérations inverses (26, 27, 28) des opérations successives de codage, dans un ordre inverse, non pas bloc par
bloc mais coefficient par coefficient.
L'invention concerne également un appareil numérique
comprenant un tel circuit de décodage vidéo.
Grâce à l'invention, les accès mémoires sont réduits, le temps de traitement est optimisé, le coût et la taille des circuits de décodage sont réduits. La qualité des images est maintenue, c'est à dire non dégradée pour
compenser un temps de traitement trop long.
D'autres particularités et avantages de l'invention appara'^tront
clairement dans la description suivante donnée à titre d'exemple non limitatif,
et faite en regard des figures annexées qui représentent: - la figure 1, un schéma classique d'un décodage vidéo, - la figure 2, un circuit de décodage vidéo, - la figure 3, un algorithme de décodage selon l'invention, - la figure 4, un exemple de décodage de coefficients,
- la figure 5, des tableaux de balayage inverse.
La figure 1 schématise un décodage classique vidéo.
Les informations relatives au codage vidéo et provenant de la lecture du train binaire de données codées subissent un premier traitement 1 qui est un décodage à longueur variable. Les donnses traitées sont écrites dans une mémoire 2. Ces données sont stockées de manière à représenter un tableau intermédiaire des données. Puis les données stockées sont lues par un deuxième circuit de traitement 3 qui effectue une inversion de
3 2831016
balayage. Les donnces obtenues sont à nouveau stockées dans une mémoire 4, puis sont lues par un circuit d'inversion 5, sont stockées par une mémoire 6, sont traitées par un circuit 7 de quantification inverse, sont à nouveau stockée par une mémoire 8 puis sont lues par un circuit de transformation inverse 9. Ces actions sont réalisées de manière séquentielle et par bloc de codoge de l'image ou du plan objet vidéo vop (acronyme de l'anglais video
object plane) décrit dans la norme.
L'invention permet d'éviter ces nombreux accès à une mémoire et à ces tableaux de données intermédiaires, ces écritures/lectures très consommatrices de temps. D'autre part, un traitement au niveau de chaque coefficient plutôt qu'au niveau du bloc d'image, permet de détecter les coefficients à zéros, en généra l nomb reux da ns d es b locs co rrespondant à des zones peu texturées ou uniformes. Dans un schéma classique, tous les
coefficients sont pris en compte, les zéros sont stockés dans un tableau.
Dans le procédé selon l'invention, les coefficients à zéro ne sont pas traités
et ne sont pas mémorisés lors des calcuis intermédiaires.
La figure 2 représente, de manière connue, des circuits d'un
décodeur de type MPEG.
Les notations suivantes sont employées par la suite pour définir les coefficients des blocs aux différentes étapes: - n est le rang du coefficient correspondant au balayage choisi par le codeur, (u, v) ou s la position spatiale récile du coefficient dans le bloc, u et v étant le numéro de la ligne et colonne dans le bloc, s étant la position spatiale définie de manière classique à partir d'une numérotation croissante partant de O en haut et gauche du bloc jusqu'à 63 en bas à droite, I'incrémentation se faisant,
pour ce bloc de 8 x 8 coefficients, de gauche à droite et ligne par ligne.
- QFS(n) correspond au coefficient quantifié de rang n, après décodage VLC.
- PQF(u,v) ou PQF(s) correspond au coefficient quantifié à la position réelle
(u,v) ou s dans le bloc, après balayage inverse.
- QF(u,v) ou QF(s) correspond au coefficient après prédiction inverse le cas
échéant, c'est à dire au coefficient reconstruit quantifié.
- F(u,v) ou F(s) correspond au coefficient QF déquantifié.
Le train binaire résultant du codage des images selon la norme MPEG 4 est reçu en entrée d'un circuit 10. Il s'agit des coefficients DCT codés selon un code à longueur variable ou VLC (acronyme de l'anglais Variable Length Coding). Le circuit 10 est un circuit de décodage à longueur variable qui effectue l'opération inverse du codage à longueur variable
réalisé par le codeur.
Les données décodées, qui sont les coefficients quantifiés, sont transmises à l'entrée d'un circuit de balayage inverse 11 qui réalise un balayage inverse du balayage opéré par le codeur. Au codage, un rang n avait été affecté à chaque coefficient du bloc et le balayage avait été effectué séquentiellement selon l'ordre correspondant au rang. L'opération inverse consiste donc à repositionner les coefficients dans le bloc à partir de leur numéro ou rang n correspondant au balayage. Ainsi, les données unidimensionnelles représentant les coefficients quantifiés de rang n, QFS(n), sont transformées en donnces bidimensionnelles, PQF(u,v), qui constituent un tableau de coefficients de colonne u et de rangée v. Pour des blocs d'image de 8x8 pixels, n correspond à une valeur entre 0 et 63, 0 étant
le rang du coefficient DC, u et v sont compris entre 0 et 7.
Le circuit 12 effectue une prédiction inverse des coefficients DC et AC pour les macroblocs codés en intra, lorsqu'une telle prédiction a été exploitée au codage. Il s'agit alors de calculer les coefficients DC du bloc courant à partir de valeurs prédites qui sont les coefficients DC du bloc correspondant du macrobloc supérieur ou précédant (c'est à dire à gauche) le macrobloc à décoder. On parle respectivement de direction de prédiction DC verticale ou horizontale. Cette direction de prédiction est calculée, pour chaque bloc du macrobloc courant, en fonction des gradients DC du bloc correspondant supérieur (gradient horizontal par rapport au bloc à gauche) et du bloc correspondant à gauche (gradient vertical par rapport au bloc supérieur) du macrobloc courant. Il s'agit aussi de calculer les coefficients AC de la première ligne ou première colonne à partir de valeurs prédites qui sont respectivement les coefficients AC de la première ligne du bloc correspond ant d u macrobloc supérieu r ou les coefficients AC de la première colonne du bloc correspondant du macrobloc précédant le macrobloc à décoder. La direction de prédiction AC d'un bloc est celle de prédiction DC pour ce même bloc. Ainsi, pour ce mode de codage, seule la première ligne
ou première colonne du bloc est codée, les autres coefficients sont nuis.
Le circuit 13 reçoit les coefficients ainsi calculés QF(u,v) pour effectuer une quantification inverse et fournir des coefficients déquantifiés
>, 2831016
F(u,v). Le circuit en aval 14 réalise ensuite une transformation cosinus discrète inverse (DCT) de ces coefficients déquantifiés F(u,v), les coefficients obtenus étant f(y,x), x et y correspondant à des coordonnées
spatiales dans l'image et non plus à des rangs fréquentiels comme u et v.
Une mémoire vop 16 qui mémorise l'image (ou l'objet) précédente reconstruite est exploitée par le circuit de compensation de mouvement 15 qui extrait de cette mémoire le macrobloc prédit désigné par le vecteur mouvement associé au macrobloc courant. En mode inter, ce circuit 15 ajoute le macrobloc décodé f(x,y) qu'il reçoit du circuit de transformation
inverse au macrobloc prédit pour fournir le macrobloc décodé.
Les différents traitements décrits ci-dessus sont effectués bloc par bloc, les données traitées par les différents circuits et transmises d'un circuit
à l'autre étant des blocs de coefficients ou blocs d'images.
Les différents types de balayage, le balayage zig-zag, le balayage alterné horizontal et le balayage alterné vertical sont définis dans la norme MPEG 4, dans le document ISO/IEC 14496-2:1999(E) paragraphe 7.4.2 (inverse scan). Le procédé de décodage selon le mode prédictif AC/DC est défini dans ce méme document paragraphe 7.4.3 (intra dc and ac prediction
for intra macroblocks).
La figure 3 représente un algorithme de traitement des blocs de coefficient selon l'invention, o le traitement est effectué coefficient par
coefficient et non plus bloc par bloc.
Le flux de données binaire comprenant les coefficients DCT est traité lors d'une première étape 17. Comme indiqué précédemment, à chaque coefficient correspond un numéro de coefficient n qui est le rang provenant du balayage au niveau du codeur. L'étape 17 extrait les coefficients de ce flux binaire, c'est à dire leur valeur et leur numéro. Un premier coefficient est ainsi transmis à l'étape 18 qui réalise une opération inverse du balayage. Le rang s calculé et la valeur de coefficient sont transmis à l'étape suivante 19 qui effectue le traitement correspondant à la prédiction DC/AC. CeKe étape est en liaison avec la mémoire 20 qui fournit les coefficients DC/AC de l'image courante nécessaires au calcul du coefficient courant traité, c'est à dire à partir desquels a été effectuée la prédiction au niveau du codeur. La valeur calculée est mémorisée dans cette mémoire 20 et est également transmise à l'étape 21 qui effectue une quantification inverse. Le coefficient déquantifié est mémorisé dans la mémoire 22. L'étape suivante 23 vérifie si le coefficient traité est le dernier coefficient du bloc de coefficients. Dans la négative, l'étape 23 est rebouclée sur l'étape 17 qui fournit alors le coefficient suivant à l'étape 18. Dans I'affirmative, tous les coefficients du bloc ayant été traités, I'étape suivante est l'étape 24 qui récupère de la mémoire 22 ces coefficients DCT déquantifiés et effectue une transformation DCT inverse sur le bloc complet
de coefficients DCT pour fournir le bloc d'image décodé.
La figure 4 donne un exemple de décodage des coefficients selon l'invention. Le bloc traité est un bloc 8 x 8 constitué de trois coefficients de valeur 19, 31 et-1 pour un rang respectif de 0, 5 et 6, les autres coefficients du bloc ayant une valeur nulle. Le cas traité est celui o, au codage, les coefficients sont calculés à partir d'une prédiction DC/AC horizontale et le
balayage est effectué en mode vertical alterné.
Sur la figure est représenté l'ensemble des opérations effectuées sur les coefficients du bloc. Ces opérations sont réalisées de manière séquentielle pour chaque coefficient. L'ensemble des calcuis ou chaque calcul, inversion de balayage, inversion DC/AC, quantification inverse, est effectué d'abord sur le premier coefficient lu puis sur le deuxième coefficient,
le troisième...
Avant traitement des coefficients d'un nouveau bloc, le contenu des tableaux de données DctQuantCoeff[] référencé 29 et DctCoeff[]
référencé 30 est mis à zéro.
Les données codées provenant du flux de données après décodage VLC sont reçues par le circuit 25 qui extrait les valeurs codées des
coefficients du bloc et les transmets successivement en sa sortie.
Un premier coefficient de valeur 19 et de rang 0 est ainsi lu et
transmis à un circuit d'inversion de balayage 26.
PQF (u,v) = PQF (s) = QFS (n) L'inversion de balayage a pour but d'attribuer la position spatiale réelle s au coefficient de rang n traité, c'est à dire de calculer PQF(s) à partir
de QFS(n).
Le tableau de balayage donné dans la norme pour chaque type de balayage indique la valeur du rang n pour chaque emplacement du
7 2831016
coefficient dans ie bloc correspondant à s. Les tableaux de balayage inverse des figures 5, débuits des tableaux de balayage définis dans la norme, permettent d'obtenir directement la valeur de s pour chaque emplacement du coefficient dans le bloc correspondant à n. Par exemple pour le balayage vertical alterné, figure 5 c, I'emplacement correspondant à n=5, c'est à dire la 6ème colonne, 1ère ligne, a pour valeur s=9, I'emplacement correspondant à
n=6 a pour valeur 2.
QFS(0) = 19 = PQF(0)
QFS(5) =31 = PQF(9)
La position spatiale réelle du coefficient dans le bloc est donc
obtenue directement de ces tableaux de balayage inverse des figures 5.
Après cette inversion de balayage, le coefficient est transmis à un circuit d'inversion AC/DC référencé 27. La valeur du coefficient est calculée en fonction du type de prédiction, horizontale ou verticale. Seuls sont intéressés les coefficients de la première ligne ou première colonne, c'est à dire les coefficients de rang s compris entre O et 7 et les coefficients 8, 16,
24, 32, 40, 48 et 56.
Le circuit d'inversion AC/DC est relié à une mémoire DctQuantCoeff[] référencée 29 qui mémorise les coefficients des première ligne et première colonne des blocs précédents de l'image. lci, le coefficient de rang O est concerné et le circuit d'inversion recherche, dans cette mémoire, le coefficient dqO qui est le coefficient de rang zéro du bloc immédiatement à gauche du bloc courant traité et qui est la valeur à partir de
laquelle à été effectuée la prédiction au codeur.
Un circuit de quantification inverse 28 réalise ensuite la quantification inverse du coefficient dqO pour fournir le coefficient déquantifié dctO. Ce circuit est relié à une mémoire DctCoeff[] référencée 30 qui
mémorise ce coefficient.
Après traitement et mémorisation de ce premier coefficient de rang zéro, le coefficient suivant est exploité. Le signal de transmission de ce nouveau coefficient par le circuit 25 au circuit 26 est par exemple synchronisé sur le signal d'écriture de ce premier coefficient dans la mémoire 30. Il peut tout aussi bien provenir du circuit d'inversion de balayage 26. En effet, les traitements des coefficients par les différents circuits peuvent être réalisés en quasi-simultané, c'est à dire sans attendre la mémorisation du coefficient courant dans la mémoire 30 pour le traitement du coefficient
8 2831016
suivant. Dès après la libération d'un circuit par le coefficient courant, le coefficient suivant peut être traité par ce circuit. Alors, le signal de transmission du coefficient d'un circuit à l'autre est fourni par le circuit en aval
traitant le coefficient précédent.
Le deuxième coefficient non nul du bloc courant est le coefficient
de rang 5, de valeur 31.11 est transmis au circuit d'inversion de balayage 26.
Sur la figure, les circuits 26 à 28 sont représentés au moins autant de fois qu'il y a de coefficients à traiter afin d'expliciter les valeurs des coefficients
obtenues lors des étapes intermédiaires, pour chacun des coefficients traités.
11 peut s'agir bien sar des mêmes circuits de traitement.
Le circuit de balayage inverse 26 calcule le rang réel du
coefficient, qui est maintenant s= 9.
QFS(5) = PQF(9)
Le circuit d'inversion DC/AC 27 n'a pas d'influence sur la valeur 31 de ce coefficient qui ne se trouve pas à la première ligne ou première colonne du bloc. La valeur 31 est mémorisée dans la mémoire 29. Ensuite une quantification inverse est effectuée pour fournir une valeur dct9 pour ce
coefficient de rang 9, valeur mémorisée dans la mémoire 30.
Ensuite, le circuit d'inversion de balayage 26 prend en compte le rang du dernier coefficient traité et calcule le "run", c'est à dire la longueur de la plage de zéros. Pour un coefficient courant, le "run" est égal au nombre de coefficients à la valeur zéro qui se trouvent entre le coefficient courant et le
coefficient précédant non nul.
Le deuxième coefficient non nul ayant pour rang n =5, la plage de zaros précédent ce deuxième coefficient non nul a une longueur de 4 (run = 4). Les valeurs des coefficients de rang 1 à 4 sont nulles. Ces quatre coefficients nuls sont traités par le circuit d'inversion de balayage 26. Après l'inversion de balayage, les rangs s des coefficients correspondant aux rangs
n = 1 à 4, d'après le tableau 5c, sont respectivement 8, 16, 24 et 1.
L'opération d'inversion DC/AC réalisée par le circuit 27, attribue aux coefficients de numéro 8, 16, 24, coefficients correspondant à la première colonne du bloc, puisqu'il s'agit d'une prédiction horizontale, les valeurs dq8, dq16 et dq24. Ce sont les valeurs des coefficients correspondant du bloc à gauche du bloc courant et mémorisées dans la mémoire 29. La valeur du coefficient de rang 1 reste à zéro car il s'agit d'un coefficient de la deuxième colonne non concerné par les opérations de prédiction. Enfin, le circuit de quantification inverse 28 calcule les valeurs déquantifiées des valeurs dq8, dq16, dq24 et 0, à savoir respectivement dct8, dct16, dct24, dct1 qui sont les
valeurs des coefficients de rang s=8, 16, 24 et 1. La valeur dct1 est zéro.
Ces valeurs sont mémorisoes dans la mémoire 30.
Le circuit 25 transmet maintenant au circuit 26 le dernier
coefficient non nul, à savoir le coefficient de rang n=6 qui a pour valeur -1.
Le circuit d'inversion de balayage 26 fournit le rang correspondant s= 2. Ce rang n'est pas concerné par les opérations de prédiction et c'est cette même valeur-1, pour un rang s=2, qui est mémorisée dans la mémoire 29, en sortie du circuit d'inversion DC/AC 27. Le circuit de quantification inverse 28 fournit une nouvelle valeur déquantifiée dct2 qui est mémorisée dans la
mémoire 30.
Il est possible que des coefficients de la première coionne, pour le type de prédiction qui nous concerne, bien que transmis par le codeur avec la valeur zéro, aient une valeur réelle, c'est à dire après ajout de la valeur prédite, différente de zéro. Si la valeur du "run" est non nulle, il est donc nocessaire de traiter aussi les coefficients sautés de la méme manière qu'un coefficient extrait de valeur non nulle. ll faut vérifier si leur position spatiale réelle (valeur s) correspond à la première ligne ou première colonne du bloc 8x8, selon que la prédiction est une prédiction verticale ou horizontale. Dans l'affirmative, le coefficient est calculé en fonction des valeurs prédites et est mémorisé dans la mémoire 29 car le calcul d'inversion DC/AC utilise les valeurs des premières lignes et premières colonnes des blocs précédents de l'image. Un compteur cptNbDcAc est utilisé pour compter le nombre de coefficients de la première colonne ou première ligne traités selon que la prédiction est une prédiction horizontale ou verticale. Une fois le traitement du dernier coefficient différent de zéro effectué, la valeur du compteur est exploitée et le traitement des coefficients à zéro se poursuit jusqu'à ce que le compteur atteigne la valeur 8. Une valeur du compteur inférieure à 8 signifie en effet qu'entre le dernier coefficient transmis et le nombre maximal de coefficients à extraire, il reste des coefficients de valeur nulle qui n'ont pas été traités par l'inversion DC/AC. Il faut donc refaire l'opération d'inversion DC/AC suivie de l'opération de quantification inverse pour ces coefficients manquants. Dans notre exemple, le compteur cptNbDcAc compte le nombre de coefficients de la première ligne traités. ll est par exemple déclenché par
le circuit d'inversion de balayage en fonction des rangs s des coefficients.
Pour le premier coefficient de rang n=s=O, le compteur est incrémenté. Le deuxième coefficient est de rang s=9. Les coefficients correspondant à la plage de zéro (run =4) sont de rang s=8, s=16, s=24, s=1 et le compteur est donc incrémenté de 3 et a pour valeur 4. Le coefficient suivant est de rang s=2 et l'on va donc traiter les coefficients suivants à zéro jusqu'à obtenir une
valeur de compteur égale à 8.
Les coefficients de rang n= 7 et suivants, de valeur zéro, sont transmis au circuit d'inversion de balayage 26. Ce circuit fournit les rangs s de ces coefficients et le compteur est incrémenté pour les valeurs de s
correspondant à la première colonne, à savoir les valeurs s = 32, 40, 48, 56.
Ensuite ces coefficients sont transmis au circuit d'inversion DC/AC 27 qui calcule la valeur récile de chacun d'entre eux, en fonction de la première colonne du bloc d'image précédent. Les valeurs trouvées, dq32, dq40, dq48, dq56 sont mémorisées dans ia mémoire 29. Elles sont également transmises au circuit 28 qui effectue une déquantification pour obtenir respectivement les valeurs déquantifiées dct32, dct40, dct48, dct56 mémoriséss dans la
mémoire 30.
Le tableau de données dctCoeff[] correspondant au bloc de coefficients ainsi mémorisé est lu et transmis au circuit DCT inverse 31. Le bloc transmis subit une transformation cosinus discrète inverse pour fournir
un bloc d'image.
Une variante de l'invention consiste à supprimer l'inversion de balayage en entrée de la boucle de décodage, en travaillant alors
directement sur les coefficients dct désordonnés spatialement.
L'inversion DC/AC fait alors appel à un tableau de données qui indique si le coefficient doit être pris en compte ou pas. Par exemple à partir du tableau de balayage vertical alterné, en considérant les coefficients de la première colonne qui ont pour rang n= 0, 1, 2, 3, 10,11, 12,13, le tableau de données affecte la valeur 1 pour ces valeurs de n, la valeur 0 pour les autres
valeurs de n.
La quantification inverse est faite de la même manière que celle décrite précédemment. A l'issue du calcul, les résultats sont repositionnés spatialement dans la mémoire 30 pour effectuer le calcul de dct inverse nécessitant de prendre les résultats dans l'ordre. Les accès mémoire sont optimisés lors des accès en ligne, ce qui est adapté à l'algorithme de calcul
de la dct inverse, qui effectue un calcul en ligne puis en colonne.
La description a été faite pour un codage exploitant la prédiction
DC/AC. Il serait tout aussi envisageable d'exploiter l'invention sans ces opérations de prédiction, par exemple pour les traitements conformes à la
norme MPEG2.
L'invention concerne tout type de décodeur comportant un logiciel mettant en _uvre l'algorithme précédemment décrit ou tout type de matériel tel que téléviseur, lecteur DVD, récepteur satellite comportant des circuits de
d écod age mettant en _uvre cet a lg orith me.
" 2831016

Claims (7)

REVENDICATIONS
1 Procédé de décodage de données numériques vidéo codées selon la norme MPEG à partir d'opérations successives de codage de blocs de coefficients, caractérisé en ce qu'il effectue les opérations inverses (26, 27, 28) des opérations successives de codage, dans un ordre inverse, non
pas bloc par bloc mais coefficient par coefficient.
2 Procédé selon la revendication 1, caractérisé en ce qu'une opération de codage consiste en la quantification des coefficients, la
prédiction des coefficients DC/AC ou bien le balayage zig-zag.
3 Procédé selon la revendication 1, caractérisé en ce que les opérations inverses effectuces dans l'ordre inverse sur un coefficient sont successivement l'inversion de balayage (26), la construction, le cas échéant, du coefficient DC/AC (27) à partir du coefficient DC/AC prédit, la
quantification inverse (28) du coefficient.
4 Procédé selon la revendication 3, caractérisé en ce que l'inversion de balayage (26) est calculée à partir d'une table de balayage zig zag inverse, une table de balayage horizontal alterné inverse ou une table de balayage vertical alterné inverse donnant la position réelle s du coefficient
dans le bloc à partir du rang n de balayage au codeur.
Procédé selon la revendication 1, caractérisé en ce que, pour une image donnée, les coefficients des premières lignes et colonnes d'un bloc, reconstruits après construction du coefficient AC/DC (27), sont mémorisés dans une mémoire (29) pour étre exploités lors de la construction
des coefficients DC/AC de blocs suivants de l'image.
6 Procédé selon la revendication 1, caractérisé en ce que les coefficients sont mémorisés (30) après les opérations de quantification inverse pour fournir un bloc de coefficients mémorisé et en ce que la
transformation de Fourier (31) est effectuée sur le bloc mémorisé.
7 Circuit de décodage vidéo pour le décodage de données vidéo codées selon la norme MPEG à partir d'opérations successives de codage de blocs de coefficients, caractérisé en ce qu'il comprend un circuit de traitement pour la mise en _uvre d'un algorithme de décodage qui effectue les opérations inverses (26, 27, 28) des opérations successives de codage,
dans un ordre inverse, non pas bloc par bloc mais coefficient par coefficient.
8 Appareil numérique comprenant un circuit de décodage vidéo
selon la revendication 7.
FR0113083A 2001-10-11 2001-10-11 Procede et dispositif de decodage de donnees video codees selon la norme mpeg Pending FR2831016A1 (fr)

Priority Applications (8)

Application Number Priority Date Filing Date Title
FR0113083A FR2831016A1 (fr) 2001-10-11 2001-10-11 Procede et dispositif de decodage de donnees video codees selon la norme mpeg
EP20020292276 EP1303144A1 (fr) 2001-10-11 2002-09-18 Décodage d'images MPEG
MXPA02009691A MXPA02009691A (es) 2001-10-11 2002-10-01 Proceso y dispositivo para descodificar datos de video codificados de acuerdo a la norma mpeg.
KR1020020060144A KR20030030871A (ko) 2001-10-11 2002-10-02 Mpeg 표준에 따라 코딩된 비디오 데이터를 디코딩하는프로세스 및 디바이스
JP2002289986A JP2003189306A (ja) 2001-10-11 2002-10-02 Mpeg標準に準拠して符号化されたビデオデータを復号するための方法及び装置
MYPI20023774A MY136459A (en) 2001-10-11 2002-10-09 Process and device for decoding video data coded according to the mpeg standard
US10/267,623 US7269218B2 (en) 2001-10-11 2002-10-09 Process and device for decoding video data coded according to the MPEG standard
CNB021457735A CN1241394C (zh) 2001-10-11 2002-10-11 基于mpeg标准用于解码编码的视频数据的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0113083A FR2831016A1 (fr) 2001-10-11 2001-10-11 Procede et dispositif de decodage de donnees video codees selon la norme mpeg

Publications (1)

Publication Number Publication Date
FR2831016A1 true FR2831016A1 (fr) 2003-04-18

Family

ID=8868161

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0113083A Pending FR2831016A1 (fr) 2001-10-11 2001-10-11 Procede et dispositif de decodage de donnees video codees selon la norme mpeg

Country Status (8)

Country Link
US (1) US7269218B2 (fr)
EP (1) EP1303144A1 (fr)
JP (1) JP2003189306A (fr)
KR (1) KR20030030871A (fr)
CN (1) CN1241394C (fr)
FR (1) FR2831016A1 (fr)
MX (1) MXPA02009691A (fr)
MY (1) MY136459A (fr)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060222247A1 (en) * 2005-04-01 2006-10-05 Bhaskar Sherigar Hardware implementation of inverse scan for a plurality of standards
JP5194762B2 (ja) * 2007-12-14 2013-05-08 ヤマハ株式会社 データ圧縮装置およびデータ伸張装置
US8238676B2 (en) 2007-12-14 2012-08-07 Yamaha Corporation Image data compressor and image data decompressor
US10171813B2 (en) 2011-02-24 2019-01-01 Qualcomm Incorporated Hierarchy of motion prediction video blocks

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0786902A1 (fr) * 1996-01-29 1997-07-30 Matsushita Electric Industrial Co., Ltd. Procédé et dispositif pour changer la résolution par conversion DCT directe
US5959872A (en) * 1996-10-28 1999-09-28 Samsung Electronics Co., Ltd. Apparatus and method for bidirectional scanning of video coefficients
EP0948212A2 (fr) * 1998-04-03 1999-10-06 Sony Corporation Méthode et dispositif pour coder des coefficients de tansformée orthogonale
JP2000125294A (ja) * 1998-10-15 2000-04-28 Sony Corp ウェーブレット復号化装置及び方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870497A (en) * 1991-03-15 1999-02-09 C-Cube Microsystems Decoder for compressed video signals
JPH06350854A (ja) * 1993-06-10 1994-12-22 Matsushita Electric Ind Co Ltd 画像圧縮符号化装置
EP0714212A3 (fr) * 1994-11-21 1999-03-31 SICAN, GESELLSCHAFT FÜR SILIZIUM-ANWENDUNGEN UND CAD/CAT NIEDERSACHSEN mbH Décodeur vidéo employant traitement concurrent et partage de ressources
KR100487989B1 (ko) * 1997-10-23 2005-05-09 미쓰비시덴키 가부시키가이샤 화상 복호화 장치 및 화상 부호화 장치
JP2001125294A (ja) 1999-10-29 2001-05-11 Canon Inc 画像形成装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0786902A1 (fr) * 1996-01-29 1997-07-30 Matsushita Electric Industrial Co., Ltd. Procédé et dispositif pour changer la résolution par conversion DCT directe
US5959872A (en) * 1996-10-28 1999-09-28 Samsung Electronics Co., Ltd. Apparatus and method for bidirectional scanning of video coefficients
EP0948212A2 (fr) * 1998-04-03 1999-10-06 Sony Corporation Méthode et dispositif pour coder des coefficients de tansformée orthogonale
JP2000125294A (ja) * 1998-10-15 2000-04-28 Sony Corp ウェーブレット復号化装置及び方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
PATENT ABSTRACTS OF JAPAN vol. 2000, no. 07 29 September 2000 (2000-09-29) *

Also Published As

Publication number Publication date
US20030072369A1 (en) 2003-04-17
KR20030030871A (ko) 2003-04-18
EP1303144A1 (fr) 2003-04-16
MXPA02009691A (es) 2003-10-06
US7269218B2 (en) 2007-09-11
JP2003189306A (ja) 2003-07-04
CN1413020A (zh) 2003-04-23
CN1241394C (zh) 2006-02-08
MY136459A (en) 2008-10-31

Similar Documents

Publication Publication Date Title
US7860324B2 (en) Video coding system providing separate coding chains for dynamically selected small-size or full-size playback
US7949042B2 (en) Image searching device and method, program and program recording medium
US7707422B2 (en) Method for embedding watermark into an image and digital video recorder using said method
US8045611B2 (en) Video processing and recording apparatuses and methods
EP2985998B1 (fr) Support d'enregistrement mémorisant un flux de données d'images codées
KR930007278A (ko) 화상 부호화 복호화 장치
US7227589B1 (en) Method and apparatus for video decoding on a multiprocessor system
FR3012714A1 (fr) Procede de codage et de decodage d'images, dispositif de codage et de decodage d'images et programmes d'ordinateur correspondants
JPH03216089A (ja) 予測符号化装置及び復号化装置
KR20040060980A (ko) 압축되지 않은 디지털 비디오로부터 인트라-코딩된화상들을 검출하고 인트라 dct 정확도 및매크로블록-레벨 코딩 파라메터들을 추출하는 방법 및시스템
RU2624464C1 (ru) Порядки сканирования для кодирования без преобразования
CN103517071B (zh) 图像编码设备和图像编码方法
FR2790899A1 (fr) Dispositif et procede de regulation de debit dans un systeme de multiplexage statistique de flux d'images codees selon le codage mpeg 2
US6735340B1 (en) Apparatus and method for decoding digital image and provision medium
FR2831016A1 (fr) Procede et dispositif de decodage de donnees video codees selon la norme mpeg
US9479771B2 (en) Using multiple transform/subband representations for video encoding
TW202327354A (zh) 視訊編解碼方法及其裝置
Naidu et al. A novel framework for JPEG image compression using baseline coding with parallel process
EP3520416B1 (fr) Procédé de codage d'une image, procédé de decodage, dispositifs, equipement terminal et programmes d'ordinateurs associés
CN1965584A (zh) 补偿由移动的物体引起的水印不规律
WO2019180350A1 (fr) Procédé d'encodage et de décodage vidéo faible latence
FR2735258A1 (fr) Dispositif de decodage d'un flux de donnees
JPH06233266A (ja) 映像符号化装置および映像復号化装置
US20210152832A1 (en) Reconstructing transformed domain information in encoded video streams
US20050238246A1 (en) Data encoding methods and circuits