FR2939264A1 - DEVICE FOR ENCODING A STREAM OF DIGITAL IMAGES AND CORRESPONDING DECODING DEVICE - Google Patents

DEVICE FOR ENCODING A STREAM OF DIGITAL IMAGES AND CORRESPONDING DECODING DEVICE Download PDF

Info

Publication number
FR2939264A1
FR2939264A1 FR0806775A FR0806775A FR2939264A1 FR 2939264 A1 FR2939264 A1 FR 2939264A1 FR 0806775 A FR0806775 A FR 0806775A FR 0806775 A FR0806775 A FR 0806775A FR 2939264 A1 FR2939264 A1 FR 2939264A1
Authority
FR
France
Prior art keywords
data
current block
approximation
block
decoded
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.)
Granted
Application number
FR0806775A
Other languages
French (fr)
Other versions
FR2939264B1 (en
Inventor
Christine Guillemot
Jean Jacques Fuchs
Laurent Guillo
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.)
Centre National de la Recherche Scientifique CNRS
Universite de Rennes 1
Institut National de Recherche en Informatique et en Automatique INRIA
Original Assignee
Centre National de la Recherche Scientifique CNRS
Universite de Rennes 1
Institut National de Recherche en Informatique et en Automatique INRIA
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 Centre National de la Recherche Scientifique CNRS, Universite de Rennes 1, Institut National de Recherche en Informatique et en Automatique INRIA filed Critical Centre National de la Recherche Scientifique CNRS
Priority to FR0806775A priority Critical patent/FR2939264B1/en
Priority to US13/132,553 priority patent/US8798161B2/en
Priority to PCT/FR2009/001361 priority patent/WO2010063898A1/en
Priority to EP09795458.0A priority patent/EP2364552B1/en
Publication of FR2939264A1 publication Critical patent/FR2939264A1/en
Application granted granted Critical
Publication of FR2939264B1 publication Critical patent/FR2939264B1/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/97Matching pursuit coding
    • 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

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

Un dispositif de décodage d'un flux d'images numériques, comprend : une mémoire de travail (42) pour des données de blocs d'image déjà décodés, un pilote (40), monté pour analyser un flux incident de données d'images numériques, et agencé pour déterminer des données à décoder d'un bloc courant de type données complètes ou données-paramètres, pour stocker les données complètes dans la mémoire de travail (42) en tant que données de blocs d'image déjà décodés, et pour appeler une unité de décodage (48) avec les données-paramètres, l'unité de décodage (48) réagissant à la réception de données-paramètres par : - la sélection de certains blocs d'image déjà décodés, formant une base d'approche, qui avoisine le bloc courant selon une règle choisie, - le calcul d'une approximation du bloc courant, à partir d'une fonction algébrique linéaire des données de la base d'approche, et - le stockage dans la mémoire de travail (42), pour le bloc courant, de données de blocs d'image déjà décodés tirées de cette approximation.A decoding device of a digital image stream, comprising: a working memory (42) for already decoded image block data, a driver (40), mounted to analyze an incident flow of image data digital, and arranged to determine data to be decoded from a current block of the complete data or data-parameter type, for storing the complete data in the working memory (42) as already decoded picture block data, and for calling a decoding unit (48) with the parameter data, the decoding unit (48) responsive to the reception of parameter data by: - selecting some already decoded image blocks, forming a base of approach, which approximates the current block according to a chosen rule, - the calculation of an approximation of the current block, from a linear algebraic function of the data of the approach base, and - the storage in the working memory ( 42), for the current block, already decoded image block data derived from this approximation.

Description

INRIA 101.FRD 1 Dispositif d'encodage d'un flux d'images numériques et dispositif de décodage correspondant INRIA 101.FRD 1 Encoding device for a digital image stream and corresponding decoding device

L'invention concerne le traitement d'images et plus particulièrement les architectures de 5 codage vidéo. The invention relates to image processing and more particularly to video coding architectures.

Les dix dernières années ont vu un développement conséquent de la diffusion des vidéos sous forme électronique. Le format le plus connu et le plus répandu de nos jours est le MPEG-2 utilisé par les DVD. La qualité de ce standard a été depuis améliorée avec le MPEG-4 et plus récemment avec le H.264. Cependant, au fur et à mesure que les architectures de codage ont progressé, plusieurs problèmes ont progressivement surgi. The last ten years have seen a significant increase in the distribution of videos in electronic form. The most popular and popular format nowadays is the MPEG-2 used by DVDs. The quality of this standard has since been improved with MPEG-4 and more recently with H.264. However, as the coding architectures progressed, several problems gradually arose.

15 Dans un premier temps, il a fallu améliorer la qualité des images restituées. Cela a été réalisé en augmentant progressivement la taille des fichiers encodés. At first, it was necessary to improve the quality of the rendered images. This was achieved by gradually increasing the size of the encoded files.

Cela a permis d'augmenter le débit d'encodage, c'est-à-dire la quantité de données par seconde. Assez rapidement, le débit a dû être limité pour des raisons de limitations 20 matérielles. This allowed to increase the encoding rate, that is to say the amount of data per second. Quite quickly, the throughput had to be limited for reasons of material limitations.

Diverses architectures dont celles citées ci-dessus ont donc été développées, afin de compresser de manière plus fidèle à débit comparable. Ces architectures ont eu pour résultat une augmentation conséquente du coût en temps de calcul de décodage et d'encodage 25 comme les architectures se sophistiquaient. Various architectures, including those mentioned above, have therefore been developed in order to compress more accurately at a comparable rate. These architectures have resulted in a consequent increase in the cost of decoding and encoding computing time as architectures become sophisticated.

En outre, cette sophistication a eu pour conséquence de rendre les informations encodées de plus en plus critiques. En effet, plus les architectures sont avancées, et plus les données à décoder représentent un "condensé" d'informations, et plus les erreurs de transmission de 30 ces données tendent à dégrader l'image restituée. 10 L'invention vient améliorer la situation. In addition, this sophistication has resulted in making the encoded information more and more critical. Indeed, the more the architectures are advanced, and the more data to be decoded represent a "digest" of information, and the more the transmission errors of these data tend to degrade the rendered image. The invention improves the situation.

A cet effet, l'invention propose un dispositif de décodage d'un flux de données d'images numériques, comprenant : * une mémoire de travail pour des données de blocs d'image déjà décodés, * un pilote, monté pour analyser un flux incident de données d'images numériques, et agencé pour déterminer des données à décoder d'un bloc courant de type données complètes ou données-paramètres, pour stocker les données complètes dans la mémoire de travail en tant que données de blocs d'image déjà décodés, et pour appeler une unité de décodage (48) avec les données-paramètres, * l'unité de décodage réagissant à la réception de données-paramètres par : - la sélection de certains blocs d'image déjà décodés, formant une base d'approche, qui avoisine le bloc courant selon une règle choisie, - le calcul d'une approximation du bloc courant, à partir d'une fonction algébrique linéaire 15 des données de la base d'approche, et - le stockage dans la mémoire de travail, pour le bloc courant, de données de blocs d'image déjà décodés tirées de cette approximation. For this purpose, the invention proposes a device for decoding a digital image data stream, comprising: a working memory for already decoded image block data, a driver, mounted to analyze a stream digital image data incident, and arranged to determine data to be decoded from a current block of the complete data or data-parameter type, for storing the complete data in the working memory as image block data already decoded, and for calling a decoding unit (48) with the parameter data, * the decoding unit responsive to the reception of parameter data by: - selecting some already decoded image blocks, forming a base d approach, which approximates the current block according to a chosen rule, - the calculation of an approximation of the current block, from a linear algebraic function 15 of the data of the approach base, and - the storage in the memory of working, for the current block, already decoded picture block data derived from this approximation.

L'invention concerne également un dispositif d'encodage d'un flux de données d'images 20 numériques, caractérisé en ce qu'il comprend : * une mémoire de travail pour des données de blocs d'image déjà encodés, * un pilote, monté pour analyser un flux incident de données d'images numériques, et agencé pour déterminer des données à encoder d'un bloc courant de type données complètes ou données-paramètres, pour stocker les données complètes dans la 25 mémoire de travail en tant que données de blocs d'image déjà encodés, et pour appeler une unité d'encodage avec les données-paramètres, * l'unité d'encodage réagissant à la réception de données-paramètres par : - la sélection de certains blocs d'image déjà encodés, formant une base d'approche, qui avoisine le bloc courant selon une règle choisie, 30 - le calcul d'une approximation du bloc courant, à partir d'une fonction algébrique linéaire des données de la base d'approche, et 2 The invention also relates to a device for encoding a stream of digital image data, characterized in that it comprises: a working memory for already encoded image block data, a driver, configured to analyze an incident flow of digital image data, and arranged to determine data to be encoded from a current block of the complete data or data-parameter type, to store the complete data in the working memory as data. of already encoded image blocks, and to call an encoding unit with the parameter data, * the encoding unit reacting to the reception of parameter data by: - the selection of some already encoded image blocks , forming an approach base, which approximates the current block according to a chosen rule, 30 - calculating an approximation of the current block, from a linear algebraic function of the data of the approach base, and 2

3 - le stockage dans la mémoire de travail, pour le bloc courant, de données de blocs d'image déjà encodés et de données à décoder tirées de cette approximation. 3 - storing in the working memory, for the current block, already encoded image block data and data to be decoded from this approximation.

De tels dispositifs sont particulièrement avantageux car ils offrent une grande qualité d'image tout en permettant de mettre en place une grande variété de schémas d'encodage qui permettent de faire des compromis taux de compression/robustesse extrêmement intéressants. Such devices are particularly advantageous because they offer a high image quality while allowing to implement a wide variety of encoding schemes that make compromises compression ratio / robustness extremely interesting.

D'autres caractéristiques et avantages de l'invention apparaîtront mieux à la lecture de la 10 description qui suit, tirée d'exemples donnés à titre illustratif et non limitatif, tirés des dessins sur lesquels : - la figure l représente une vue schématique d'un encodeur et d'un décodeur selon l'invention ; - la figure 2 représente un organigramme de fonctionnement d'un premier mode de 15 réalisation d'un encodeur de la figure 1 ; - la figure 3 représente une fonction de la figure 2 ; - la figure 4 représente un organigramme de fonctionnement d'un deuxième mode de réalisation d'un encodeur de la figure 1 ; - la figure 5 représente un exemple de fonction de la figure 4 ; et 20 - la figure 6 représente un organigramme de fonctionnement d'un mode de réalisation d'un décodeur de la figure 1. Other features and advantages of the invention will appear better on reading the following description, taken from examples given by way of non-limiting illustration, taken from the drawings in which: FIG. 1 represents a schematic view of an encoder and a decoder according to the invention; FIG. 2 represents an operating flowchart of a first embodiment of an encoder of FIG. 1; FIG. 3 represents a function of FIG. 2; FIG. 4 represents an operating flow diagram of a second embodiment of an encoder of FIG. 1; FIG. 5 represents an exemplary function of FIG. 4; and Figure 6 shows an operating flow chart of an embodiment of a decoder of Figure 1.

Les dessins et la description ci-après contiennent, pour l'essentiel, des éléments de caractère certain. Ils pourront donc non seulement servir à mieux faire comprendre la présente 25 invention, mais aussi contribuer à sa définition, le cas échéant. The drawings and the description below contain, for the most part, elements of a certain character. They will thus be able not only to serve to better understand the present invention, but also to contribute to its definition, if necessary.

La présente description est de nature à faire intervenir des éléments susceptibles de protection par le droit d'auteur et/ou le copyright. Le titulaire des droits n'a pas d'objection à la reproduction à l'identique par quiconque du présent document de brevet ou de sa 30 description, telle qu'elle apparaît dans les dossiers officiels. Pour le reste, il réserve intégralement ses droits. 4 La figure 1 représente une vue schématique d'un encodeur 2 et d'un décodeur 4 selon l'invention. This description is likely to involve elements likely to be protected by copyright and / or copyright. The rights owner has no objection to the identical reproduction by anyone of this patent document or its description, as it appears in the official records. For the rest, he reserves his rights in full. FIG. 1 represents a schematic view of an encoder 2 and a decoder 4 according to the invention.

L'encodeur 2 reçoit un fichier vidéo décodé 6, et le transforme en fichier vidéo encodé 8 5 pour stockage dans une mémoire de stockage 10. The encoder 2 receives a decoded video file 6, and transforms it into an encoded video file 85 for storage in a storage memory 10.

On notera tout d'abord que, bien que l'architecture de codage et les éléments particuliers qui la composent sont particulièrement adaptés au codage/décodage des fichiers vidéo, l'invention n'est pas limitée à ce seul domaine et pourra trouver son application avec 10 d'autres types de fichiers. It will be noted first of all that, although the coding architecture and the particular elements that compose it are particularly adapted to the coding / decoding of video files, the invention is not limited to this single domain and may find its application with 10 other types of files.

De même, par mémoire de stockage 10, on entend tout type de mémoire de stockage, des plus classiques de nos jours comme un disque dur, ou une mémoire flash, aux systèmes de stockage plus complexes de type SAN, NAS ou autrement stockés à travers un réseau. Inversement, le décodeur 4 reçoit un ficher encodé 8, et le transforme en fichier vidéo décodé 6 pour stockage dans une mémoire de stockage 10. Similarly, storage memory 10 means any type of storage memory, more conventional nowadays as a hard disk, or a flash memory, more complex storage systems SAN, NAS or otherwise stored through a network. Conversely, the decoder 4 receives an encoded file 8, and transforms it into a decoded video file 6 for storage in a storage memory 10.

L'encodeur 2 comprend un découpeur 20, une mémoire tampon 22, une unité 20 d'approximation spatiale 24, une unité d'approximation temporelle 26, et une unité d'encodage 28. Encoder 2 comprises a chopper 20, a buffer memory 22, a spatial approximation unit 24, a temporal approximation unit 26, and an encoding unit 28.

Le décodeur 4 comprend un découpeur 40, une mémoire tampon 42, une unité d'approximation spatiale 44, une unité d'approximation temporelle 46, et une unité de 25 décodage 48. The decoder 4 comprises a chopper 40, a buffer memory 42, a spatial approximation unit 44, a time approximation unit 46, and a decoding unit 48.

Comme cela apparaîtra mieux par la suite, l'encodeur 2 et le décodeur 4 ont des structures extrêmement similaires. Ces similitudes reflètent le fait que cette architecture est conçue de manière symétrique pour rendre le décodeur 4 très indépendant du processus d'encodage. 30 En effet, cette symétrie de structure permet d'assurer que le décodeur 4 peut fonctionner de manière découplée de l'encodeur 2, puisqu'il fonctionne très similairement. 15 Comme on le verra plus bas, les mémoires tampon 22 et 42 peuvent être vues comme des mémoires de travail. As will become clearer later, the encoder 2 and the decoder 4 have extremely similar structures. These similarities reflect the fact that this architecture is symmetrically designed to make the decoder 4 very independent of the encoding process. Indeed, this symmetry of structure makes it possible to ensure that the decoder 4 can operate decoupled from the encoder 2, since it operates very similarly. As will be seen below, the buffers 22 and 42 may be viewed as working memories.

L'invention utilise une technique de codage qui vise à approcher un bloc d'une image par 5 une combinaison linéaire d'autres blocs déjà connus. The invention uses a coding technique which aims to approach a block of an image by a linear combination of other known blocks.

Cette technique est bien plus efficace que les "motion vectors" connus de l'art antérieur en termes de qualité. En outre, comme on le verra plus bas, cette technique permet de réduire la quantité de données critiques qui doivent subir un codage entropique. Cela rend le décodeur 4 plus indépendant des informations encodées transmises et donc plus robuste que dans les techniques antérieures. This technique is much more effective than the "motion vectors" known from the prior art in terms of quality. In addition, as will be seen below, this technique makes it possible to reduce the amount of critical data that must undergo entropy coding. This makes the decoder 4 more independent of the transmitted encoded information and therefore more robust than in the prior art.

Les unités d'approximation spatiale 24 et 44 et temporelle 26 et 46 mettent en oeuvre des algorithmes mathématiques de "matching pursuit", qui permettent d'approcher un bloc d'image par une combinaison linéaire de blocs déjà connus, en minimisant le nombre d'éléments dans cette combinaison. The spatial approximation units 24 and 44 and temporal 26 and 46 implement mathematical "matching pursuit" algorithms, which make it possible to approach an image block by a linear combination of already known blocks, while minimizing the number of frames. elements in this combination.

Les algorithmes de "matching pursuit" fonctionnent par itérations successives, en construisant peu à peu un vecteur de poids associé à une base d'approche pour un vecteur en 20 entrée. The matching pursuit algorithms operate by successive iterations, gradually constructing a weight vector associated with an approach base for an input vector.

Cela signifie que, pour approcher un vecteur donné (par exemple un vecteur composé des données de luminance et chrominance d'un bloc de pixels donné) par une base d'approche donnée (par exemple ensemble de vecteurs composés des données de luminance et 25 chrominance de blocs de pixels environnants), on cherche une suite de coefficients. This means that, to approach a given vector (for example a vector composed of the luminance and chrominance data of a given block of pixels) by a given approach base (for example set of vectors composed of luminance and chrominance data. of surrounding blocks of pixels), we look for a sequence of coefficients.

Cette suite de coefficients est telle que, en réalisant une combinaison linéaire des vecteurs de la base avec ces coefficients, on obtient une approximation du vecteur en entrée avec un seuil de précision choisi. 30 La suite de coefficients peut elle-même être représentée sous la forme d'un vecteur dont les valeurs sont établies itérativement. This series of coefficients is such that, by realizing a linear combination of the vectors of the base with these coefficients, we obtain an approximation of the input vector with a precision threshold chosen. The sequence of coefficients may itself be represented as a vector whose values are set iteratively.

Les algorithmes de "matching pursuit" visent à produire le vecteur de coefficients le plus rapidement possible, et de sorte qu'il contienne un maximum de zéros, ce qui permet de ne 5 transmettre que les valeurs non nulles (et leur indice dans le vecteur de coefficients). The matching pursuit algorithms aim to produce the coefficient vector as quickly as possible, and so that it contains a maximum of zeros, which makes it possible to transmit only the non-zero values (and their index in the vector). coefficients).

Chaque opération d'un algorithme de "matching pursuit", est caractérisée par l'indice de l'itération, le vecteur d'approche calculé à cette itération, et le vecteur approché correspondant au produit du vecteur d'approche par la base d'approche. Il est possible de stocker les résultats intermédiaires de l'ensemble des itérations, et l'algorithme s'arrête lorsque la différence entre le vecteur approché et le vecteur donné est inférieure à une valeur seuil. Par différence, on entend la mesure choisie pour l'algorithme, par exemple la norme euclidienne. 15 Il existe de nombreuses variantes dans les algorithmes de "matching pursuit", et l'homme du métier saura les reconnaître. D'autres algorithmes pourraient être mis en oeuvre que les algorithmes de "matching pursuit", qui sont basés sur une reconstruction à partir des valeurs de blocs environnants. L'homme du métier saura également les reconnaître et adapter 20 l'invention le cas échéant. Each operation of a "matching pursuit" algorithm is characterized by the index of the iteration, the approach vector calculated at this iteration, and the approximate vector corresponding to the product of the approach vector by the base of approach. It is possible to store the intermediate results of all the iterations, and the algorithm stops when the difference between the approximate vector and the given vector is less than a threshold value. By difference, we mean the measurement chosen for the algorithm, for example the Euclidean norm. There are many variations in matching pursuit algorithms, and those skilled in the art will recognize them. Other algorithms could be implemented than "matching pursuit" algorithms, which are based on a reconstruction from the surrounding block values. Those skilled in the art will also recognize them and adapt the invention if necessary.

Les unités d'approximation temporelle utilisent comme blocs de référence pour la base d'approche des blocs dans les images précédentes (backward prediction) ou suivantes (forward prediction), ou un mélange des deux. Les unités d'approximation spatiale utilisent comme blocs de référence pour la base d'approche des blocs de la même image. The time approximation units use as reference blocks for the block approach base in the preceding (forward prediction) or forward prediction frames, or a mixture of both. Spatial approximation units use as reference blocks for the approach base blocks of the same image.

La notion de bloc de référence implique de découper une image d'un fichier donné en blocs 30 réguliers. 6 10 25 Ce découpage mentionné est réalisé par les découpeurs 20 et 40. Ces éléments ont pour fonction de "découper" le fichier en blocs courants, et de traiter ces blocs courants en les transmettant aux unités d'encodage et de décodage. Les découpeurs 20 et 40 jouent donc le rôle de pilotes, en traitant les images une par une, et bloc par bloc. The notion of reference block involves cutting an image of a given file into regular blocks. This cutting is done by the cutters 20 and 40. These elements have the function of "cutting" the file into current blocks, and to process these current blocks by transmitting them to the encoding and decoding units. The cutters 20 and 40 therefore act as pilots, processing the images one by one, and block by block.

Le découpage d'une image étant classiquement fait du coin en haut à gauche vers le coin en bas à droite en parcourant l'image par ligne de blocs, ces blocs sont donc choisis "en haut (aussi bien à gauche qu'à droite) par rapport au bloc et à gauche dans la ligne du bloc" par rapport à un bloc courant. The cutting of an image being classically done from the top left corner to the lower right corner by browsing the image by line of blocks, these blocks are therefore chosen "at the top (both left and right) relative to the block and left in the block line "relative to a current block.

Il en découle que, pour qu'un bloc courant soit encodé/décodé par la méthode spatiale, les blocs en haut à gauche le précédant doivent être connus. It follows that for a current block to be encoded / decoded by the spatial method, the blocks at the top left preceding it must be known.

Cela signifie que les blocs situés le plus à gauche et le plus en haut d'une image ne peuvent 15 pas être encodés par cette méthode et qu'ils doivent être encodés/décodés différemment par exemple par un codage dit "intra", des autres blocs de la même image, soit par exemple par application d'une transformation, puis d'une quantification suivie d'un codage entropique. En variante, ces blocs peuvent aussi être encodés avec la méthode temporelle. This means that the leftmost and highest blocks of an image can not be encoded by this method and that they must be encoded / decoded differently for example by an "intra" encoding, others blocks of the same image, for example by applying a transformation, then a quantization followed by an entropy coding. Alternatively, these blocks can also be encoded with the time method.

20 Il va de soit que, si l'image est parcourue dans un sens différent, c'est ce sens qui définira quels blocs doivent être connus pour l'application de la méthode spatiale. It goes without saying that if the image is traveled in a different direction, it is this meaning that will define which blocks must be known for the application of the spatial method.

La Demanderesse a observé que, pour chaque série de 25 images environ, la première image est en général encodée selon la méthode spatiale, et les suivantes selon la méthode 25 temporelle. The Applicant has observed that, for each series of approximately 25 images, the first image is generally encoded according to the spatial method, and the following according to the temporal method.

Ainsi, il n'y a qu'une seule image sur 25 qui nécessite une initialisation. Comme cela a été décrit plus haut, cette initialisation peut se faire en codant les données des bords par transformation, quantification puis codage entropique, ou par codage selon la méthode 30 temporelle. 10 Il en découle que seuls le bord haut et le bord gauche d'une image sur 25 ont dans la pratique besoin d'être transmis en codant les données des bords par transformation, quantification puis codage entropique pour réaliser l'initialisation de l'invention. Ensuite, le fonctionnement se déroule comme décrit plus haut pour le reste de cette image, ainsi que pour les 24 images suivantes. Thus, there is only one image out of 25 that requires initialization. As described above, this initialization can be done by coding the edge data by transformation, quantization then entropy encoding, or by coding according to the time method. It follows that only the top edge and the left edge of an image over 25 in practice need to be transmitted by coding the edge data by transformation, quantization and entropy coding to achieve the initialization of the invention. . Then, the operation proceeds as described above for the rest of this image, as well as for the next 24 images.

En outre, comme on le verra plus bas, à l'exception des blocs sur les bords haut et gauche de l'image, les blocs d'une image peuvent être encodés indépendamment par la méthode spatiale ou temporelle. Un marqueur indiquant la méthode utilisée suffira au décodage. In addition, as will be seen below, except for the blocks on the top and left edges of the image, the blocks of an image can be encoded independently by the spatial or temporal method. A marker indicating the method used will be sufficient for decoding.

Comme cela apparaît maintenant plus clairement, il convient donc de distinguer deux types de données des blocs courants du fichier 8 : les données complètes, n'ont pas vocation à être décodées et qui sont les données des blocs auxquels il est fait référence dans les paragraphes précédents ; et - des données-paramètres, qui vont être décodées, et qui représentent la majeure partie des données du fichier 8. As it now appears more clearly, it is therefore necessary to distinguish two types of data from the current blocks of the file 8: the complete data are not intended to be decoded and which are the data of the blocks referred to in the paragraphs previous ones; and - parameter data, which will be decoded, and which represent most of the data in file 8.

Dans le mode de réalisation décrit ici, c'est le découpeur 40 qui fait cette distinction et qui : stocke directement dans la mémoire de travail 42 les données complètes en tant 20 que données de blocs d'image déjà décodés ; appelle l'unité de décodage 48 avec les données-paramètres pour leur traitement. In the embodiment described here, it is the chopper 40 that makes this distinction and which: stores directly in the working memory 42 the complete data as already decoded image block data; calls the decoding unit 48 with the parameter data for their processing.

Cette distinction pourrait cependant être réalisée par l'unité de décodage elle-même. 25 La situation est similaire du côté de l'encodeur. En effet, comme on l'a vu plus haut, on sait parmi les données à encoder quelles sont des données complètes et quelles sont des données-paramètres. Dans le mode de réalisation décrit ici, c'est le découpeur 20 qui fait cette distinction et qui : 30 stocke directement dans la mémoire de travail 22 les données complètes en tant que données de blocs d'image déjà encodés ; appelle l'unité d'encodage 28 avec les données-paramètres pour leur traitement. This distinction could, however, be made by the decoding unit itself. The situation is similar on the encoder side. Indeed, as we have seen above, it is known from the data to be encoded what are complete data and what are parameter data. In the embodiment described here, it is the chopper 20 that makes this distinction and which: stores the complete data directly in the working memory 22 as already encoded image block data; calls the encoding unit 28 with the parameter data for their processing.

Cette distinction pourrait cependant être réalisée par l'unité d'encodage elle-même. This distinction could however be achieved by the encoding unit itself.

Le fichier encodé 8 peut en outre comprendre comme données-paramètres de chaque bloc des données à décoder et des données à décoder complémentaires. Les données encodées et les données encodées complémentaires seront décrites plus avant avec les différents modes de réalisation. The encoded file 8 may further comprise as data-parameters of each block of data to be decoded and data to be decoded complementary. The encoded data and the additional encoded data will be further described with the various embodiments.

La figure 2 représente un diagramme générique du fonctionnement d'un premier mode de réalisation pour l'encodeur 2. Dans ce premier mode de réalisation, l'architecture est basée sur le principe que les unités d'approximation côté encodeur et côté décodeur vont fonctionner de manière identique. FIG. 2 represents a generic diagram of the operation of a first embodiment for the encoder 2. In this first embodiment, the architecture is based on the principle that the encoder-side and decoder-side approximation units will operate. identically.

Pour cela, l'approximation d'un bloc donné n'est pas réalisée sur la base de ce bloc, mais sur la base de blocs environnants déjà encodés/décodés. Ainsi, le décodeur 4 n'a plus besoin que de connaître la méthode qui a servi au calcul de l'approximation d'un bloc pour le retrouver. For this, the approximation of a given block is not done on the basis of this block, but on the basis of surrounding blocks already encoded / decoded. Thus, the decoder 4 only needs to know the method that was used to calculate the approximation of a block to find it.

Dans ce premier mode de réalisation, l'unité d'encodage 28 appelle l'unité d'approximation temporelle 24 dans une opération 200 et l'unité d'approximation spatiale 26 dans une opération 210, avec le bloc courant reçu du découpeur 20. In this first embodiment, the encoding unit 28 calls the time approximation unit 24 in an operation 200 and the spatial approximation unit 26 in an operation 210, with the current block received from the chopper 20.

Lors de ces opérations, les unités 24 et 26 déterminent les approximations du bloc courant 25 selon les méthodes spatiale et temporelle. Les opérations 200 et 210 peuvent être réalisées séquentiellement ou en parallèle. During these operations, the units 24 and 26 determine the approximations of the current block 25 according to the spatial and temporal methods. Operations 200 and 210 can be performed sequentially or in parallel.

Dans une opération 220, l'unité d'encodage 28 reçoit ces deux approximations, détermine celle qui est la plus proche du bloc courant, et la stocke dans la mémoire tampon 22. 30 Dans d'autres modes de réalisation, le critère de choix entre ces approximations peut être basé sur un compromis entre la qualité de l'approximation (c'est-à-dire la fidélité absolue de l'approximation) et le débit (la quantité d'information à transmettre) pour les données complémentaires (résidu et/ou numéro d'itération). In an operation 220, the encoding unit 28 receives these two approximations, determines the one that is closest to the current block, and stores it in the buffer memory 22. In other embodiments, the criterion of choice between these approximations can be based on a compromise between the quality of the approximation (that is to say the absolute fidelity of the approximation) and the flow (the quantity of information to be transmitted) for the complementary data (residual and / or iteration number).

L'opération 220 peut être suivie de deux opérations optionnelles 230 et 240, et le codage des données encodées du bloc courant est réalisé dans une opération 250. The operation 220 can be followed by two optional operations 230 and 240, and the coding of the encoded data of the current block is performed in an operation 250.

Dans l'opération 230 optionnelle, l'unité d'encodage peut en outre choisir une itération la plus favorable. Comme on l'a vu, dans ce premier mode de réalisation, c'est le voisinage du bloc courant qui est approché et non pas le bloc courant lui-même. In the optional operation 230, the encoding unit can furthermore choose a most favorable iteration. As we have seen, in this first embodiment, it is the neighborhood of the current block which is approached and not the current block itself.

Il en découle que l'approximation obtenue par itérations successives jusqu'à atteindre un 15 seuil fixé n'est pas forcément la plus proche du bloc courant. It follows that the approximation obtained by successive iterations until reaching a fixed threshold is not necessarily the closest to the current block.

Il est en effet possible qu'une des itérations a produit une approximation qui n'approchait pas le voisinage avec la précision requise du seuil, mais qui approchait le bloc courant de manière plus proche que l'approximation de la dernière itération. It is indeed possible that one of the iterations produced an approximation that did not approach the neighborhood with the required precision of the threshold, but approached the current block more closely than the approximation of the last iteration.

L'opération 230 optionnelle permet ainsi d'augmenter encore la précision de l'encodage, en choisissant celle des itérations qui représente la meilleure approximation du bloc courant. The optional operation 230 thus makes it possible to further increase the accuracy of the encoding, by choosing the one of the iterations which represents the best approximation of the current block.

L'opération 230 peut être réalisée de diverses manières. Operation 230 can be performed in a variety of ways.

Ainsi, elle peut être réalisée séquentiellement avec l'opération 220, c'est-à-dire que dans l'opération 220, la méthode la plus précise est choisie, et que dans l'opération 230 l'itération la plus précise de la méthode choisie dans l'opération 220 est déterminée. Thus, it can be performed sequentially with the operation 220, that is to say that in the operation 220, the most accurate method is chosen, and that in the operation 230 the most precise iteration of the method chosen in operation 220 is determined.

30 Dans une autre variante, l'opération 230 peut être incorporée à l'opération 220, l'itération représentant la meilleure approximation du bloc courant pour les deux méthodes étant 20 25 choisie parmi toutes les itérations des deux méthodes. In another variant, the operation 230 may be incorporated in the operation 220, the iteration representing the best approximation of the current block for the two methods being selected from all the iterations of the two methods.

Pour la réalisation de l'opération 230, il est possible d'opérer après que les opérations 200 et 210 ont été exécutées. Dans ce cas, il suffit de stocker dans la mémoire tampon 22 l'approximation en résultat de chacune des itérations de chaque méthode avec son indice. For carrying out operation 230, it is possible to operate after operations 200 and 210 have been executed. In this case, it suffices to store in the buffer 22 the approximation as a result of each of the iterations of each method with its index.

Il suffit alors à l'opération 230 d'accéder à ces approximations et de choisir l'indice d'itération de la meilleure. It then suffices for the operation 230 to access these approximations and to choose the iteration index of the best one.

Dans une autre variante, l'opération 230 peut être simplifiée en modifiant légèrement les opérations 200 et 210 pour qu'elles stockent au cours des itérations la meilleure approximation du bloc courant et son indice d'itération. In another variant, the operation 230 can be simplified by slightly modifying the operations 200 and 210 so that they store during the iterations the best approximation of the current block and its iteration index.

Cela peut être réalisé en rajoutant dans l'algorithme de "matching pursuit" un tampon 15 approprié qui stocke la meilleure approximation en cours. This can be achieved by adding in the matching pursuit algorithm a suitable buffer which stores the best approximation in process.

Alors, à chaque fin d'itération, l'approximation obtenue est comparée à l'approximation du tampon. Then, at each end of iteration, the approximation obtained is compared to the approximation of the buffer.

20 Si cette nouvelle approximation approche mieux le bloc courant, alors elle est stockée dans le tampon. Sinon, l'approximation stockée dans le tampon est inchangée. If this new approximation approaches the current block better, then it is stored in the buffer. Otherwise, the approximation stored in the buffer is unchanged.

Ainsi, des la fin des opérations 200 et 210, le tampon contiendra déjà la meilleure approximation spatiale d'une part et temporelle d'autre part, et les opérations 220 et 230 25 seront réalisées par le choix de la meilleure des deux approximations tirées de ces opérations. A la fin de l'opération 230, l'approximation du bloc courant correspondante est stockée dans la mémoire tampon 22. 30 Dans une autre opération optionnelle 240, l'unité d'encodage 28 détermine un résidu et l'encode. Le résidu est calculé en réalisant la différence entre les données à encoder du bloc courant et l'approximation de ce bloc qui vient d'être calculée. Cet encodage inclut généralement une transformée DCT et une quantification pour éliminer les termes nuls ou faibles. Les données résultantes subissent alors un codage entropique et sont stockées comme données encodées complémentaires dans le fichier encodé. Thus, at the end of the operations 200 and 210, the buffer will already contain the best spatial approximation on the one hand and temporal on the other hand, and the operations 220 and 230 will be performed by the choice of the best of the two approximations drawn from these operations. At the end of the operation 230, the approximation of the corresponding current block is stored in the buffer memory 22. In another optional operation 240, the encoding unit 28 determines a residue and the encode. The residual is calculated by realizing the difference between the data to be encoded from the current block and the approximation of this block which has just been calculated. This encoding typically includes a DCT transform and quantization to eliminate null or weak terms. The resulting data then undergoes entropy encoding and is stored as complementary encoded data in the encoded file.

Ensuite, les données encodées complémentaires sont déquantifiées et subissent une 10 opération DCT inverse et sont ajoutées à l'approximation du bloc courant qui correspond aux données encodées pour obtenir des données encodées-décodées. Then, the complementary encoded data is dequantized and undergoes an inverse DCT operation and is added to the current block approximation that corresponds to the encoded data to obtain encoded-decoded data.

Ces données encodées-décodées sont alors stockées dans la mémoire tampon 22 à la place de l'approximation du bloc courant. Ainsi, on peut considérer que ces données constituent des nouvelles données de bloc d'image encodé , qui viendront remplacer les données à encoder pour l'encodage des blocs ultérieurs. This encoded-decoded data is then stored in the buffer memory 22 in place of the approximation of the current block. Thus, it can be considered that these data constitute new coded picture block data, which will replace the data to be encoded for the encoding of the subsequent blocks.

20 Le but de cette opération est de prévenir le bruit de quantification. Le fait d'utiliser les données encodées-décodées pour l'encodage des blocs ultérieurs permet d'éviter une dérive due au bruit de quantification sur les résidus. The purpose of this operation is to prevent quantization noise. The fact of using the encoded-decoded data for the encoding of the subsequent blocks makes it possible to avoid a drift due to the quantization noise on the residues.

En effet, comme l'approximation du bloc courant n'est pas transmise au décodeur, les 25 données encodées-décodées représentent les données qui seront à la disposition du décodeur 4 lors du décodage. Indeed, since the approximation of the current block is not transmitted to the decoder, the encoded-decoded data represents the data that will be available to the decoder 4 during the decoding.

Il est donc avantageux que ces données soient utilisées pour encoder les blocs suivants. It is therefore advantageous that these data be used to encode the following blocks.

30 On notera que, dans le cas où l'opération 240 n'est pas réalisée, les données de l'approximation du bloc courant tirées de l'opération 220 présentes dans la mémoire 22 15 correspondent aux données encodées-décodées, ou données de bloc d'image déjà encodé. Enfin, dans une opération 250, le type d'approximation (spatial ou temporel) tiré de l'opération 220 est encodé, et le cas échéant, l'indice de meilleure itération tiré de l'opération 230. La figure 3 représente un exemple de mise en oeuvre de l'algorithme de "matching pursuit" des opérations 200 et 210. Note that, in the case where the operation 240 is not performed, the data of the current block approximation from the operation 220 present in the memory 22 corresponds to the encoded-decoded data, or data of block of picture already encoded. Finally, in an operation 250, the type of approximation (spatial or temporal) derived from the operation 220 is encoded, and if necessary, the index of best iteration derived from the operation 230. FIG. 3 represents an example implementation of the "matching pursuit" algorithm of operations 200 and 210.

Dans une opération 300, l'unité d'approximation détermine un voisinage d'approximation du 10 bloc courant. C'est ce voisinage d'approximation qui va représenter le bloc courant dans l'algorithme. In an operation 300, the approximation unit determines an approximation neighborhood of the current block. It is this approximation neighborhood that will represent the current block in the algorithm.

Dans le mode de réalisation décrit ici, l'unité d'approximation comprend un sélecteur de voisinage d'approximation qui réalise cette sélection à partir des coordonnées du bloc 15 courant. In the embodiment described herein, the approximation unit comprises an approximation neighborhood selector that performs this selection from the coordinates of the current block.

Le voisinage d'approximation est choisi dans la mémoire tampon 22 avec des blocs entourant directement le bloc courant. Comme on l'a vu plus haut, cela permet de tenir compte des données disponibles au décodeur pour l'encodage des blocs suivants. 20 D'une manière pratique, si le bloc courant a un indice (x;y) dans le découpage de l'image en blocs, cela peut être fait en choisissant des blocs de coordonnées (p;q) avec : - p choisi dans l'intervalle [x-kl;x], - q choisi dans l'intervalle [y-k2;y], et 25 - (p;q) différent de (x;y), kl et k2 étant deux indices qui détermineront la taille du voisinage d'approximation. The approximation neighborhood is chosen in the buffer memory 22 with blocks directly surrounding the current block. As we have seen above, this makes it possible to take into account the data available at the decoder for the encoding of the following blocks. Conveniently, if the current block has an index (x; y) in the clipping of the block image, this can be done by choosing blocks of coordinates (p; q) with: - p selected in the interval [x-kl; x], - q chosen in the interval [y-k2; y], and 25 - (p; q) different from (x; y), kl and k2 being two indices which will determine the size of the approximation neighborhood.

Ces indices influeront également sur le coût de calcul de l'algorithme et sa précision. These indices will also affect the algorithm's calculation cost and accuracy.

30 En effet, d'une manière générale, on peut considérer que si k l et k2 sont trop petits, alors le voisinage d'approximation risque de ne pas être représentatif du bloc courant, par exemple5 dans les régions de fort contraste. In fact, in general, it can be considered that if k 1 and k 2 are too small, then the approximation neighborhood may not be representative of the current block, for example in high contrast regions.

Inversement, si k1 et k2 sont trop grands, alors le voisinage d'approximation risque de ne pas être plus représentatif car forcément trop distinct du bloc courant. En outre, plus le 5 voisinage est grand, et plus le coût de calcul sera élevé. Conversely, if k1 and k2 are too large, then the approximation neighborhood may not be more representative because it is obviously too distinct from the current block. In addition, the larger the neighborhood, the higher the computing cost will be.

Une fois sélectionnés, les données associées à ces blocs sont ordonnées dans un vecteur qui va former le vecteur à approcher. Once selected, the data associated with these blocks are ordered in a vector that will form the vector to approach.

10 On notera que ce vecteur est appelé "voisinage causal" car il est considéré comme "causalement" relié au bloc courant. Note that this vector is called "causal neighborhood" because it is considered "causally" connected to the current block.

Ensuite, dans une opération 310, l'unité d'approximation détermine un voisinage de recherche du bloc courant. C'est ce voisinage de recherche qui va servir de base d'approche 15 dans l'algorithme. Next, in an operation 310, the approximation unit determines a search neighborhood of the current block. It is this research neighborhood that will serve as the basis of approach in the algorithm.

Dans le mode de réalisation décrit ici, l'unité d'approximation comprend un sélecteur de base d'approche qui réalise cette sélection à partir des coordonnées du bloc courant. In the embodiment described here, the approximation unit comprises an approach base selector that makes this selection from the coordinates of the current block.

20 Dans le cas de la méthode spatiale, cela peut être fait en définissant une fenêtre de recherche comprenant des blocs d'indice (p;q) avec : - p choisi dans l'intervalle [x-m;x] pour q choisi dans l'intervalle [y-n;y-k2-1], et - p choisi dans l'intervalle [x-m;x-k l - l ] pour q choisi dans l'intervalle [y-k2;y], m et n étant des indices qui définissent la taille de la fenêtre de recherche. 25 Cette fenêtre de recherche tient compte du fait que, pour le décodage avec la méthode spatiale, seuls les blocs de l'image courante qui ont déjà été décodés seront accessibles au décodeur. In the case of the spatial method, this can be done by defining a search window comprising index blocks (p; q) with: - p chosen in the interval [xm; x] for q chosen in the interval [yn; y-k2-1], and - p chosen in the interval [xm; xk l - l] for q chosen in the interval [y-k2; y], m and n being indices that define the size of the search window. This search window takes into account the fact that, for decoding with the spatial method, only the blocks of the current image that have already been decoded will be accessible to the decoder.

30 Dès lors, pour assurer la symétrie de l'architecture, côté encodage, seuls les blocs "déjà encodés", doivent être utilisés. Ces blocs "déjà encodés" sont ceux qui sont au-dessus du 14 voisinage causal, et "à gauche" dans la même ligne, comme décrit ci-dessus. Therefore, to ensure symmetry of the architecture, encoding side, only blocks "already encoded" must be used. These "already encoded" blocks are those that are above the causal neighborhood, and "left" in the same line, as described above.

Dans le cas de la méthode temporelle, la sélection de la fenêtre de recherche peut être faite en choisissant des blocs dans un rectangle de côtés m et n, centré sur le bloc courant, en tenant compte des bords de l'image, dans une ou plusieurs images précédentes (ou suivantes selon la méthode) qui ont déjà été encodées. De la même manière que pour la méthode spatiale, les indices m et n influeront sur le coût de calcul de l'algorithme et sa précision. In the case of the temporal method, the selection of the search window can be done by choosing blocks in a rectangle of sides m and n, centered on the current block, taking into account the edges of the image, in one or several previous images (or following depending on the method) that have already been encoded. In the same way as for the spatial method, the indices m and n will affect the calculation cost of the algorithm and its accuracy.

Une fois la fenêtre de recherche définie, les blocs sont agencés en un voisinage de recherche sous la forme d'une matrice dont : - chaque colonne comprend les échantillons de kl *k2 blocs, c'est-à-dire le même nombre de blocs que le voisinage causal ajouté du bloc à encoder, et - chaque colonne comprend des blocs de la fenêtre de recherche, choisis par exemple sélection par une fenêtre glissante qui part du bloc de coordonnées [x-m ; y-n] et qui parcourt la fenêtre de recherche de haut en bas et de gauche à droite comme défini plus haut. La fenêtre glissante a une taille kl *k2. Once the search window has been defined, the blocks are arranged in a search neighborhood in the form of a matrix whose: - each column comprises the samples of kl * k2 blocks, that is to say the same number of blocks than the added causal neighborhood of the block to be encoded, and each column comprises blocks of the search window, chosen for example by a sliding window starting from the coordinate block [xm; y-n] and which traverses the search window from top to bottom and from left to right as defined above. The sliding window has a size kl * k2.

Ainsi, la matrice comprend les données des blocs déjà encodés sélectionnés comme le 20 voisinage de recherche pour le bloc à encoder, et, dans chaque colonne, les derniers éléments correspondent aux données du bloc à encoder. Thus, the matrix comprises the data of the already encoded blocks selected as the search neighborhood for the block to be encoded, and in each column the last elements correspond to the data of the block to be encoded.

Enfin, la matrice est ramenée à un nombre de lignes correspondant à celui du voisinage causal. Cela revient en fait à retirer les éléments de la fenêtre glissante qui correspondent 25 aux données du bloc à encoder. Ces éléments retirés sont stockés pour la suite. Finally, the matrix is reduced to a number of lines corresponding to that of the causal neighborhood. This is in fact to remove the elements of the sliding window that correspond to the data of the block to be encoded. These removed items are stored for later.

Ensuite, dans une opération 320, l'algorithme de "matching pursuit" en tant que tel est réalisé comme décrit plus haut par un calculateur, avec comme vecteur en entrée le voisinage causal, et comme base d'approche le voisinage de recherche. 30 Cette opération peut être accompagnée comme cela a été décrit plus haut du stockage de la 16 meilleure approximation du bloc courant pour l'opération optionnelle 230. Then, in an operation 320, the algorithm of "matching pursuit" as such is performed as described above by a calculator, with as input vector the causal neighborhood, and as the approach base the search neighborhood. This operation can be accompanied, as described above, with storing the best approximation of the current block for the optional operation 230.

Enfin, dans une opération 330, la matrice correspondant au voisinage de recherche tiré de la fenêtre de recherche est restaurée avec les valeurs qui ont été stockées en 310, et cette 5 matrice est multipliée par l'approximation (vecteur de poids) obtenue en 320. Finally, in an operation 330, the matrix corresponding to the search neighborhood from the search window is restored with the values that have been stored at 310, and this matrix is multiplied by the approximation (weight vector) obtained at 320. .

Ensuite, les derniers termes correspondant au bloc à encoder du vecteur résultant sont récupérés et sont retournés comme approximation du bloc courant. Then, the last terms corresponding to the block to be encoded of the resulting vector are retrieved and returned as an approximation of the current block.

10 La figure 4 représente un diagramme générique du fonctionnement d'un deuxième mode de réalisation pour l'encodeur 2. FIG. 4 shows a generic diagram of the operation of a second embodiment for the encoder 2.

Dans ce deuxième mode de réalisation, l'architecture est basée sur le principe que les unités d'approximation côté encodeur et côté décodeur vont fonctionner de manière différente, 15 mais avec des données induisant un résultat identique. In this second embodiment, the architecture is based on the principle that the encoder-side and decoder-side approximation units will operate in a different manner, but with data inducing an identical result.

Pour cela, l'approximation d'un bloc donné est réalisée pour le bloc donné et plus pour des blocs dans un voisinage causal de celui-ci. Ici, le décodeur 4 aura besoin de connaître la méthode qui a servi au calcul de l'approximation d'un bloc pour le retrouver, ainsi que le 20 vecteur de poids qui permet d'approcher le bloc donné. For this, the approximation of a given block is performed for the given block and more for blocks in a causal neighborhood thereof. Here, the decoder 4 will need to know the method that was used to calculate the approximation of a block to find it, as well as the weight vector that makes it possible to approach the given block.

Dans ce deuxième mode de réalisation, les opérations 400, 410 et 420 sont essentiellement identiques aux opérations 200, 210 et 220, à cela prêt que l'approximation est légèrement différente comme cela apparaîtra mieux avec la figure 5. La figure 5 représente un exemple de mise en oeuvre de l'algorithme de "matching pursuit" des opérations 400 et 410. Comme on l'a mentionné plus haut, cette mise en oeuvre est légèrement différente, comme 30 elle est basée non plus sur une approximation des blocs environnants, mais sur une approximation du bloc lui-même. 25 Ainsi, une opération équivalente à l'opération 300 n'est pas nécessaire, et l'approximation commence avec une opération 510 de détermination du voisinage de recherche. In this second embodiment, the operations 400, 410 and 420 are essentially identical to the operations 200, 210 and 220, except that the approximation is slightly different as will appear better with FIG. 5. FIG. implementation of the "matching pursuit" algorithm of operations 400 and 410. As mentioned above, this implementation is slightly different, as it is no longer based on an approximation of the surrounding blocks, but on an approximation of the block itself. Thus, an operation equivalent to the operation 300 is not necessary, and the approximation begins with an operation 510 of determining the search neighborhood.

C'est ce voisinage de recherche qui va servir de base d'approche dans l'algorithme. 5 Dans le cas de la méthode spatiale, cela peut être fait en définissant une fenêtre de recherche comprenant des blocs d'indice (p;q) avec : - p choisi dans l'intervalle [x-m;x] pour q choisi dans l'intervalle [0;y-1], et - p choisi dans l'intervalle [x-m;x-1] pour q=y, 10 m et n étant deux indices qui détermineront la taille du voisinage de recherche et donc le coût de calcul de l'algorithme et sa précision. It is this research neighborhood that will serve as the basis of approach in the algorithm. In the case of the spatial method, this can be done by defining a search window comprising index blocks (p; q) with: - p chosen in the interval [xm; x] for q selected in the interval [0; y-1], and - p chosen in the interval [xm; x-1] for q = y, 10 m and n being two indices which will determine the size of the search neighborhood and therefore the calculation cost of the algorithm and its accuracy.

En effet, d'une manière générale, on peut considérer que si m et n sont trop petits, alors le voisinage de recherche risque de ne pas être représentatif du bloc courant, par exemple dans 15 les régions de fort contraste. Inversement, si m et n sont trop grands, alors le voisinage de recherche risque de ne pas être plus représentatif car forcément trop distinct du bloc courant. En outre, plus le voisinage est grand, et plus le coût de calcul sera élevé. Indeed, in general, it can be considered that if m and n are too small, then the search neighborhood may not be representative of the current block, for example in regions of high contrast. Conversely, if m and n are too large, then the search neighborhood may not be more representative because it is obviously too distinct from the current block. In addition, the larger the neighborhood, the higher the calculation cost will be.

Dans le cas de la méthode temporelle, cela peut être fait en choisissant des blocs dans un 20 rectangle de côtés m et n, centré sur le bloc courant, en tenant compte des bords de l'image, dans les images précédentes (ou suivantes selon la méthode) qui ont déjà été encodées. In the case of the temporal method, this can be done by selecting blocks in a rectangle of sides m and n, centered on the current block, taking into account the edges of the image, in the preceding (or subsequent) images. method) that have already been encoded.

Une fois la fenêtre de recherche définie, les blocs sont agencés en un voisinage de recherche sous la forme d'une matrice dont chaque colonne contient les valeurs d'un bloc. L'opération 510 est donc fonctionnellement proche de l'opération 310, sauf qu'elle est plus simple comme il n'est pas nécessaire de substituer le voisinage causal au bloc courant. Once the search window has been defined, the blocks are arranged in a search neighborhood in the form of a matrix whose each column contains the values of a block. Operation 510 is therefore functionally close to operation 310, except that it is simpler since it is not necessary to substitute the causal neighborhood for the current block.

Cela simplifie l'établissement du voisinage de recherche et permet d'inclure en plus des 30 blocs qui correspondent au voisinage causal dans le cas de la méthode spatiale. 25 15 20 25 30 This simplifies the establishment of the search neighborhood and makes it possible to include in addition blocks corresponding to the causal neighborhood in the case of the spatial method. 25 15 20 25 30

18 Ensuite, dans une opération 520, l'algorithme de "matching pursuit" en lui-même est réalisé, avec comme vecteur en entrée le bloc courant, et comme base d'approche le voisinage de recherche. Then, in an operation 520, the algorithm of "matching pursuit" in itself is realized, with as input vector the current block, and as the approach base the search neighborhood.

Comme on le voit ici, l'opération 520 est proche de l'opération 320, à cela prêt que, comme on l'a mentionné plus haut, c'est le bloc courant lui-même qui est approché par le voisinage de recherche et plus le voisinage causal du bloc courant. As seen here, the operation 520 is close to the operation 320, except that, as mentioned above, it is the current block itself that is approached by the search neighborhood and plus the causal neighborhood of the current block.

Enfin, dans une opération 530, l'approximation obtenue est retournée, c'est-à-dire le vecteur 10 approché avec le vecteur de coefficients correspondant. Finally, in an operation 530, the approximation obtained is returned, that is to say the approximated vector 10 with the corresponding vector of coefficients.

Il ressort donc que les méthodes d'approximation des premier et deuxième modes de réalisation sont très proches, et que leur différence porte principalement sur l'élément qui est approché. Comme mentionné plus haut, les opérations 400 et 410 sont suivies de l'opération 420. Cette opération est identique à l'opération 220 de la figure 3 et vise à choisir celle des deux approximations (spatiale ou temporelle) qui est la meilleure en fonction de critères établis (fidélité au bloc, compromis qualité/débit, etc.). It thus appears that the methods of approximation of the first and second embodiments are very close, and that their difference relates mainly to the element that is approached. As mentioned above, the operations 400 and 410 are followed by the operation 420. This operation is identical to the operation 220 of FIG. 3 and aims at choosing the one of the two approximations (spatial or temporal) which is the best in function established criteria (block loyalty, quality / debit compromise, etc.).

Ensuite, une opération optionnelle 440 peut être réalisée. Cette opération est similaire à l'opération d'encodage du résidu 240 de la figure 2. Mais cette opération doit tenir compte que c'est le vecteur de poids qui est transmis dans ce mode de réalisation, et plus seulement la méthode d'encodage. Then, an optional operation 440 can be performed. This operation is similar to the operation of encoding the residue 240 of FIG. 2. But this operation must take into account that it is the weight vector that is transmitted in this embodiment, and not only the encoding method. .

Il s'agit ici d'opérer de la même manière, à savoir encoder le résidu par transformation, puis quantification et codage entropique pour stockage comme donnée encodées complémentaire. Ensuite, décoder de manière entropique, puis déquantifier, et faire la transformation inverse. Parallèlement, il est prévu de quantifier et déquantifier l'approximation tirée de l'opération 420 pour tenir compte du bruit de quantification sur cet élément. Enfin, ajouter ces deux éléments, et le stocker dans la mémoire tampon 22 pour remplacer l'approximation tirée de l'opération 420 et ainsi améliorer l'encodage des blocs suivants. Enfin dans une opération 450, le type d'approximation (spatiale ou temporelle) tiré de l'opération 420 et le vecteur d'approximation correspondant contenant les poids de la combinaison linéaire de la base de recherche sont codés de manière entropique et stockés comme données de bloc d'image encodé. 10 Dans le cas où l'opération 440 n'a pas été réalisée, l'opération 450 prévoit de quantifier et déquantifier l'approximation (vecteur de poids) tirée de l'opération 420 pour tenir compte du bruit de quantification sur cet élément, et de le stocker dans la mémoire tampon 22 pour remplacer l'approximation tirée de l'opération 420 et améliorer l'encodage des blocs 15 suivants. It is a question here of operating in the same way, namely to encode the residue by transformation, then quantization and entropy coding for storage as complementary encoded data. Then, decode entropically, then dequantize, and do the inverse transformation. In parallel, it is planned to quantify and dequantize the approximation derived from operation 420 to take into account the quantization noise on this element. Finally, add these two elements, and store it in the buffer memory 22 to replace the approximation taken from the operation 420 and thus improve the encoding of the following blocks. Finally, in an operation 450, the type of approximation (spatial or temporal) derived from the operation 420 and the corresponding approximation vector containing the weights of the linear combination of the search base are entropically coded and stored as data. encoded picture block. In the case where the operation 440 has not been performed, the operation 450 provides for quantifying and dequantizing the approximation (weight vector) derived from the operation 420 to take account of the quantization noise on this element, and store it in buffer 22 to replace the approximation from operation 420 and improve the encoding of subsequent blocks.

Ainsi, comme pour le premier mode de réalisation, on obtient : des données à décoder, qui sont le type d'approximation (spatiale ou temporelle) tiré de l'opération 420 et le vecteur d'approximation correspondant contenant 20 les poids de la combinaison linéaire de la base de recherche qui sont codés par quantification et codage entropique ; et - des données de blocs d'image déjà encodés, qui sont les données encodées-décodées (tenant compte de la transmission des résidus ou pas) et qui sont stockées dans la mémoire tampon. 25 Comme on le voit ici, la différence principale avec le premier mode de réalisation est que c'est le bloc lui-même qui est approché, et que cette approximation est transmise comme donnée encodée avec un marqueur de la méthode utilisée pour choisir les blocs qui ont servi à calculer cette approximation. 30 Il suffit au décodeur de multiplier le vecteur contenant les poids de la combinaison linéaire Thus, as for the first embodiment, the following are obtained: data to be decoded, which is the type of approximation (spatial or temporal) derived from the operation 420 and the corresponding approximation vector containing the weights of the combination linear of the search base that are encoded by quantization and entropy coding; and - already encoded image block data, which are the encoded-decoded data (taking into account the transmission of the residuals or not) and which are stored in the buffer memory. As seen here, the main difference with the first embodiment is that it is the block itself which is approximated, and that this approximation is transmitted as encoded data with a marker of the method used to select the blocks. which were used to calculate this approximation. It is sufficient for the decoder to multiply the vector containing the weights of the linear combination

20 par la base de recherche désignée par le marqueur de méthode pour réaliser la combinaison linéaire avec les données déjà décodées des blocs du voisinage de recherche pour retrouver l'approximation du bloc original. 20 by the search base designated by the method marker to achieve the linear combination with the already decoded data of the blocks of the search neighborhood to find the approximation of the original block.

On notera que dans les deux modes de réalisation décrits, un drapeau ou une autre donnée peut être enregistrée dans le fichier 8 pour indiquer quel mode de réalisation a été utilisé pour l'encodage, ainsi que d'autres informations, comme par exemple le seuil de convergence de l'algorithme de matching pursuit, les dimensions des images etc... Note that in the two embodiments described, a flag or other data may be recorded in the file 8 to indicate which embodiment was used for encoding, as well as other information, such as the threshold convergence of the pursuit matching algorithm, the dimensions of the images etc ...

La figure 6 représente une opération effectuée par le décodeur 4 pour décoder le fichier 8. FIG. 6 represents an operation performed by the decoder 4 to decode the file 8.

Dans une première opération 600, le décodeur 4 appelle le découpeur 40 pour découper les images en blocs courants et les traiter. Dans cette même opération, le découpeur 40 peut lire un drapeau ou autre donnée du fichier 8 qui indique quel est le mode de réalisation qui a été utilisé pour réaliser l'encodage. In a first operation 600, the decoder 4 calls the chopper 40 to cut the images into current blocks and process them. In this same operation, the chopper 40 can read a flag or other data file 8 which indicates what is the embodiment that was used to perform the encoding.

Dans les deux modes de réalisation, cela peut être également tiré du marqueur de la méthode d'approximation. Le découpeur 40 envoie alors les données à décoder dans l'unité de décodage 48. In both embodiments, this can also be derived from the approximation method marker. The chopper 40 then sends the data to be decoded in the decoding unit 48.

L'unité de décodage 48 peut alors envoyer les données dans l'une ou l'autre de l'unité d'approximation spatiale 44 et de l'unité d'approximation temporelle 46, avec un drapeau indiquant de quelle manière la combinaison linéaire des données à décoder doit être faite avec le voisinage de recherche. The decoding unit 48 may then send the data into either of the spatial approximation unit 44 and the time approximation unit 46, with a flag indicating how the linear combination of the data to be decoded must be made with the search neighborhood.

Ensuite, dans une opération 610, l'unité 44 ou 46 qui a reçu les données à décoder opère pour déterminer une approximation du bloc courant. Then, in an operation 610, the unit 44 or 46 that received the data to be decoded operates to determine an approximation of the current block.

Dans le premier mode de réalisation, l'unité 44 ou 46 opère selon la figure 3, comme l'unité 30 24 ou 26, en se servant des données déjà décodées présentes dans le tampon 42. 25 In the first embodiment, the unit 44 or 46 operates according to FIG. 3 as the unit 24 or 26, using the already decoded data present in the buffer 42.

21 Dans le deuxième mode de réalisation, comme décrit plus haut, l'unité 44 ou 46 réalise une combinaison linéaire des données déjà décodées des blocs du voisinage de recherche dans le tampon 42, pour retrouver l'approximation du bloc original, avec un vecteur de poids tiré des données à décoder. In the second embodiment, as described above, the unit 44 or 46 realizes a linear combination of the already decoded data of the blocks of the search neighborhood in the buffer 42, to find the approximation of the original block, with a vector weight drawn from the data to be decoded.

Cette combinaison linéaire est en fait un calcul direct du bloc à décoder, sans algorithme de matching pursuit. This linear combination is in fact a direct calculation of the block to be decoded, without a matching pursuit algorithm.

L'approximation résultante est transmise à l'unité de décodage 48. The resulting approximation is transmitted to the decoding unit 48.

Ensuite, dans une opération optionnelle 620, l'unité de décodage 48 décode les données à décoder complémentaires comprenant le résidu lorsque celles-ci ont été transmises, et les ajoute à l'approximation reçue de l'opération 610 dans une opération 630 pour recouvrer le bloc décodé. Then, in an optional operation 620, the decoding unit 48 decodes the additional decoded data including the residue when it has been transmitted, and adds them to the approximation received from the operation 610 in an operation 630 to recover. the decoded block.

Enfin, dans une opération 640, le bloc décodé est enregistré à la fois dans le fichier décodé 6 ainsi reconstitué, et dans la mémoire tampon 42 pour le décodage des blocs ultérieurs. Finally, in an operation 640, the decoded block is recorded both in the decoded file 6 thus reconstituted, and in the buffer memory 42 for the decoding of the subsequent blocks.

Certains éléments présentés plus haut peuvent être mis en oeuvre de diverses manières : 20 - les découpeurs peuvent avoir un rôle de découpage des images en blocs seulement, tandis qu'un autre élément joue le rôle de pilote qui traite le flux d'images image par image ; - le sélecteur de voisinage d'approximation (ou voisinage causal), et le sélecteur de voisinage de recherche peuvent être réalisés en un seul élément qui reçoit des paramètres appropriés, comme le mode d'encodage/de décodage et les paramètres de sélections 25 correspondants (x, y, k 1, k2, m et n) ; - les sélecteurs décrits ici sélectionnent toujours des blocs en haut et à gauche du bloc courant, afin que les conditions aux bords de l'image soient limitées. D'autres types de sélection, notamment en haut et à droite du bloc courant pourraient être faites en tenant compte de ces conditions limites ; 30 - le calculateur des unités d'approximation spatiale et temporelle peut être partagé dans chaque mode de réalisation par ces unités puisqu'il réalise la même fonction ; 10 15 Some of the elements presented above can be implemented in various ways: the chopper can have a role of clipping the images into blocks only, while another element plays the role of a driver which processes the image flow image by picture ; the approximation neighborhood selector (or causal neighborhood), and the search neighborhood selector can be made in a single element which receives appropriate parameters, such as the encoding / decoding mode and the corresponding selection parameters (x, y, k 1, k2, m and n); - The selectors described here always select blocks at the top and left of the current block, so that the conditions at the edges of the image are limited. Other types of selection, especially at the top and to the right of the current block could be made taking into account these boundary conditions; The calculator of the spatial and temporal approximation units can be shared in each embodiment by these units since it performs the same function; 10 15

22 - les unités d'approximation spatiale et temporelle peuvent donc être séparées ou être une seule unité de calcul qui reçoit les paramètres nécessaires ; - d'autres méthodes que le codage par transformation, quantification suivie de codage entropique peuvent être utilisées là ou cela est décrit ; - la quantification/déquantification peut être évitée en sacrifiant un peu de performances en termes de débit ; - les indices des sélecteurs pourraient être variés pour calculer d'autres approximations, et les paramètres de l'approximation la plus performante pourraient être encodés avec les données encodées; - les autres paramètres comme le seuil de convergence de l'algorithme de matching pursuit ou la taille des images ou autres pourraient être implicites pour le décodeur, ou encore tirés du fichier (par exemple à partir du poids du fichier ou de son bitrate) ; - les deux modes de réalisations pourraient être combinés pour des blocs du même fichier 6 ; - la sélection des blocs dans le voisinage de recherche peut être guidée par une classification de ces blocs selon les caractéristiques de la texture qu'ils contiennent selon zone uniforme , zone texturée , contour à orientation dominante horizontale , contour à orientation dominante verticale ; on ne sélectionnera alors que les blocs qui appartiennent à la même classe que le bloc à prédire, avec des gains importants sur le temps calcul de l'approximation ; - la combinaison linéaire peut être réalisée en réalisant un post-traitement comme un lissage des données du voisinage de recherche, par exemple en appliquant un filtre (par exemple un noyau Gaussien), ou encore en appliquant des transformations géométriques aux données du voisinage de recherche (s'appuyant sur la détection de contours par exemple). The spatial and temporal approximation units can therefore be separate or be a single computing unit that receives the necessary parameters; other methods than transformation coding, quantization followed by entropy coding may be used where described; - Quantization / dequantization can be avoided by sacrificing a bit of performance in terms of flow; the indices of the selectors could be varied to calculate other approximations, and the parameters of the best-performing approximation could be encoded with the encoded data; the other parameters such as the convergence threshold of the matching pursuit algorithm or the size of the images or others could be implicit for the decoder, or else taken from the file (for example from the weight of the file or its bitrate); the two embodiments could be combined for blocks of the same file 6; the selection of the blocks in the search neighborhood can be guided by a classification of these blocks according to the characteristics of the texture they contain according to the uniform area, the textured area, the predominantly horizontal outline, the vertically dominant outline; only the blocks that belong to the same class as the block to be predicted will be selected, with significant gains on the time of calculation of the approximation; the linear combination can be realized by carrying out a post-treatment such as a smoothing of the data of the search neighborhood, for example by applying a filter (for example a Gaussian kernel), or by applying geometric transformations to the data of the search neighborhood (relying on the detection of contours for example).

Plusieurs modes de réalisation ont été décrits plus haut, avec des caractéristiques optionnelles. À chaque fois que cela a paru possible, la combinaison de ces caractéristiques avec chacun de ces modes de réalisation a été décrite. Several embodiments have been described above, with optional features. Whenever possible, the combination of these features with each of these embodiments has been described.

Cependant, c'est l'ensemble des combinaisons des caractéristiques des modes de réalisation décrits qui rentre dans la portée de l'invention. However, it is the combination of the features of the described embodiments that is within the scope of the invention.

Il doit donc être compris que toutes les combinaisons des modes de réalisation entre eux et des caractéristiques optionnelles sont décrites dans la présente description, ainsi que leurs équivalents, même lorsque cela n'a pas été explicitement décrit par souci de simplicité. It must therefore be understood that all the combinations of the embodiments between them and optional features are described in the present description, as well as their equivalents, even when this has not been explicitly described for the sake of simplicity.

L'invention concerne également un procédé de décodage d'un flux de données d'images numériques, comprenant : a. analyser un flux incident de données d'images numériques, pour déterminer des données à décoder d'un bloc courant de type données complètes ou données-paramètres, b. stocker les données complètes dans une mémoire de travail (42) en tant que données de blocs d'image déjà décodés, c. décoder les données-paramètres, l'étape c. comprenant : i. sélectionner certains blocs d'image déjà décodés, formant une base d'approche, qui avoisine le bloc courant selon une règle choisie, ii. calculer une approximation du bloc courant, à partir d'une fonction algébrique linéaire des données de la base d'approche, et iii. stocker dans la mémoire de travail (42), pour le bloc courant, de données de blocs d'image déjà décodés tirées de cette approximation. The invention also relates to a method for decoding a digital image data stream, comprising: a. analyzing an incident flow of digital image data, for determining data to be decoded from a current block of type complete data or data-parameters, b. storing the complete data in a working memory (42) as already decoded image block data, c. decode the parameter data, step c. comprising: i. select some already decoded image blocks, forming an approach base, which is close to the current block according to a chosen rule, ii. calculate an approximation of the current block, from a linear algebraic function of the data of the approach database, and iii. storing in the working memory (42), for the current block, already decoded picture block data derived from this approximation.

Le procédé de décodage peut en outre présenter les caractéristiques suivantes : * l'étape c.i. comprend la sélection d'un voisinage d'approximation, comprenant des données de blocs d'image déjà décodés correspondant à un voisinage immédiat du bloc courant, et l'étape c.ii. comprend la sélection de données de blocs d'image déjà décodés correspondant à un voisinage élargi du bloc courant, le calcul comprenant exécuter ladite fonction algébrique linéaire des données de la base d'approche pour approcher les données du voisinage d'approximation ; * l'étape c.ii. comprend exécuter ladite fonction algébrique linéaire un nombre de fois tiré de données d'itération que comprennent les données-paramètres ; * l'étape c.i. comprend la sélection d'un voisinage d'approximation, comprenant des données de blocs d'image déjà décodés correspondant à un voisinage immédiat du bloc courant, l'étape c.ii. comprenant exécuter ladite fonction algébrique linéaire des données de la base d'approche pour approcher les données du bloc courant ; * exécuter l'étape c. selon un mode de décodage choisi parmi le groupe comprenant un décodage spatial et un décodage temporel tiré de données de mode de 5 décodage que comprennent les données-paramètres ; * l'étape c. comprend sélectionner des données de blocs d'image déjà décodés dans l'image courante dans le mode spatial, et des données de blocs d'image déjà décodés dans des images contigües à l'image courante dans le mode temporel ; * l'étape c.iii. comprend combiner l'approximation du bloc courant avec des 10 données à décoder complémentaires correspondantes pour calculer les données de blocs d'image décodés du bloc courant. The decoding method may furthermore have the following characteristics: step c.i. comprises selecting an approximation neighborhood, including already decoded picture block data corresponding to an immediate neighborhood of the current block, and step c.ii. comprises selecting already decoded image block data corresponding to an expanded neighborhood of the current block, the calculation comprising executing said linear algebraic function of the approach database data to approximate the approximation neighborhood data; * step c.ii. comprises performing said linear algebraic function a number of times drawn from iteration data that comprise the parameter data; * step c.i. comprises selecting an approximation neighborhood, comprising already decoded picture block data corresponding to an immediate neighborhood of the current block, step c.ii. comprising performing said linear algebraic function of the data of the approach database to approximate the data of the current block; * execute step c. in a decoding mode selected from the group consisting of spatial decoding and time decoding derived from decoding mode data which comprise the parameter data; * step c. comprises selecting already decoded image block data in the current image in the spatial mode, and already decoded image block data in images contiguous to the current image in the time mode; * step c.iii. comprises combining the current block approximation with corresponding complementary decode data to compute the decoded picture block data of the current block.

L'invention concerne également un procédé d'encodage d'un flux de données d'images numériques, comprenant : 15 a. analyser un flux incident de données d'images numériques, pour déterminer des b. données à encoder d'un bloc courant de type données complètes ou données- paramètres, stocker les données complètes dans une mémoire de travail (42) en tant que données de blocs d'image déjà décodés, 20 c. encoder les données-paramètres, l'étape c. comprenant : i. sélectionner certains blocs d'image déjà encodés, formant une base d'approche, qui avoisine le bloc courant selon une règle choisie, ii. calculer une approximation du bloc courant, à partir d'une fonction algébrique 25 linéaire des données de la base d'approche, et iii. stocker dans la mémoire de travail (42), pour le bloc courant, de données de blocs d'image déjà encodés et de données à décoder tirées de cette approximation. Le procédé d'encodage peut en outre présenter les caractéristiques suivantes : 30 * l'étape c.i. comprend la sélection d'un voisinage d'approximation, comprenant des données de blocs d'image déjà encodés correspondant à un voisinage immédiat du bloc The invention also relates to a method of encoding a digital image data stream, comprising: a. analyzing an incident flow of digital image data, to determine b's. data to be encoded from a current block of the complete data or data-parameter type, storing the complete data in a working memory (42) as already decoded picture block data, c. encode the parameter data, step c. comprising: i. select some already encoded image blocks, forming a base of approach, which approximates the current block according to a chosen rule, ii. computing an approximation of the current block, from a linear algebraic function of the approach base data, and iii. storing in the working memory (42), for the current block, already encoded picture block data and data to be decoded from this approximation. The encoding method may further have the following characteristics: step c.i. includes selecting an approximation neighborhood, including already encoded image block data corresponding to an immediate neighborhood of the block

25 courant, et l'étape c.ii. comprend sélectionner des données de blocs d'image déjà encodés correspondant à un voisinage élargi du bloc courant, et exécuter ladite fonction algébrique linéaire avec les données de la base d'approche pour approcher les données du voisinage d'approximation ; * l'étape c.iii. comprend déterminer des données d'itération et les enregistrer dans les données à décoder ; * l'étape c.i. comprend la sélection d'un voisinage d'approximation, comprenant des données de blocs d'image déjà encodés correspondant à un voisinage immédiat du bloc courant, et l'étape c.ii. comprend exécuter ladite fonction algébrique linéaire avec les données de la base d'approche pour approcher les données du bloc courant ; * les étapes c.i. et c.ii. sont exécutées pour chaque bloc courant selon un mode spatial et un mode temporel, et l'étape c.iii. comprend choisir une approximation parmi les approximations résultantes, et encoder dans les données à décoder des données de mode de décodage indiquant le mode de l'approximation choisie ; * l'étape c. comprend sélectionner des données de blocs d'image déjà décodés dans l'image courante dans le mode spatial, et des données de blocs d'image déjà décodés dans des images contigües à l'image courante dans le mode temporel ; * l'étape c.iii. comprend, pour certains au moins des blocs courants, calculer des données à décoder complémentaires à partir des données à décoder et des données de blocs d'image déjà encodés correspondantes de ces blocs, et les stocker avec les données à décoder correspondantes. Current, and step c.ii. comprises selecting already encoded image block data corresponding to a widened neighborhood of the current block, and executing said linear algebraic function with the data of the approach database to approximate the approximation neighborhood data; * step c.iii. includes determining iteration data and recording it in the data to be decoded; * step c.i. comprises selecting an approximation neighborhood, comprising already encoded picture block data corresponding to an immediate neighborhood of the current block, and step c.ii. comprises performing said linear algebraic function with the data of the approach database to approximate the data of the current block; * the stages c.i. and c.ii. are executed for each current block according to a spatial mode and a time mode, and the step c.iii. comprises choosing an approximation from the resulting approximations, and encoding in the data to be decoded decoding mode data indicating the mode of the chosen approximation; * step c. comprises selecting already decoded image block data in the current image in the spatial mode, and already decoded image block data in images contiguous to the current image in the time mode; * step c.iii. comprises, for at least some of the current blocks, calculating additional data to be decoded from the data to be decoded and corresponding already encoded picture block data from these blocks, and storing them with the corresponding data to be decoded.

Claims (14)

Revendications1. Dispositif de décodage d'un flux de données d'images numériques, comprenant : * une mémoire de travail (42) pour des données de blocs d'image déjà décodés, * un pilote (40), monté pour analyser un flux incident de données d'images numériques, et agencé pour déterminer des données à décoder d'un bloc courant de type données complètes ou données-paramètres, pour stocker les données complètes dans la mémoire de travail (42) en tant que données de blocs d'image déjà décodés, et pour appeler une unité de décodage (48) avec les données-paramètres, * l'unité de décodage (48) réagissant à la réception de données-paramètres par : 10 - la sélection de certains blocs d'image déjà décodés, formant une base d'approche, qui avoisine le bloc courant selon une règle choisie, - le calcul d'une approximation du bloc courant, à partir d'une fonction algébrique linéaire des données de la base d'approche, et - le stockage dans la mémoire de travail (42), pour le bloc courant, de données de blocs 15 d'image déjà décodés tirées de cette approximation. Revendications1. Device for decoding a digital image data stream, comprising: * a working memory (42) for already decoded picture block data; * a driver (40) mounted for analyzing a data incident stream of digital images, and arranged to determine data to be decoded from a current block of the complete data or data-parameter type, for storing the complete data in the working memory (42) as image block data already decoded, and for calling a decoding unit (48) with the parameter data, * the decoding unit (48) responsive to receiving parameter data by: - selecting some already decoded picture blocks, forming an approach base, which approximates the current block according to a chosen rule, - calculating an approximation of the current block, from a linear algebraic function of the data of the approach base, and - the storage in the working memory (42), p For the current block, already decoded image block data derived from this approximation. 2. Dispositif selon la revendication 1, caractérisé en ce que l'unité de décodage comprend : * un sélecteur de voisinage d'approximation, agencé pour sélectionner des données de blocs d'image déjà décodés correspondant à un voisinage immédiat du bloc 20 courant, et * un sélecteur de base d'approche, agencé pour sélectionner des données de blocs d'image déjà décodés correspondant à un voisinage élargi du bloc courant, et * un calculateur, agencé pour exécuter ladite fonction algébrique linéaire avec les données de la base d'approche pour approcher les données du voisinage d'approximation. 25 2. Device according to claim 1, characterized in that the decoding unit comprises: an approximation neighborhood selector, arranged to select already decoded picture block data corresponding to an immediate neighborhood of the current block, and a basic approach selector, arranged to select already decoded image block data corresponding to a widened neighborhood of the current block, and a calculator, arranged to execute said linear algebraic function with the database data. approach to approaching neighborhood approximation data. 25 3. Dispositif selon la revendication 2, caractérisé en ce que les données- paramètres comprennent des données d'itération, et en ce que le calculateur est agencé pour exécuter ladite fonction algébrique linéaire un nombre de fois tiré des données d'itération. 3. Device according to claim 2, characterized in that the data-parameters comprise iteration data, and in that the computer is arranged to perform said linear algebraic function a number of times drawn iteration data. 4. Dispositif selon la revendication 1, caractérisé en ce que l'unité de calcul 30 comprend :* un sélecteur de base d'approche, agencé pour sélectionner des données de blocs d'image déjà décodés correspondant à un voisinage élargi du bloc courant, et * un calculateur, agencé pour exécuter ladite fonction algébrique linéaire des données de la base d'approche pour approcher les données du bloc courant. 4. Device according to claim 1, characterized in that the computing unit 30 comprises: an approach base selector, arranged to select already decoded image block data corresponding to an enlarged neighborhood of the current block, and a calculator arranged to execute said linear algebraic function of the data of the approach database to approximate the data of the current block. 5. Dispositif selon l'une des revendications 2 à 4, caractérisé en ce que les données-paramètres comprennent des données de mode de décodage indiquant un mode de décodage choisi parmi le groupe comprenant un décodage spatial et un décodage temporel. 5. Device according to one of claims 2 to 4, characterized in that the parameter data comprises decoding mode data indicating a decoding mode selected from the group comprising a spatial decode and a time decode. 6. Dispositif selon la revendication 5, caractérisé en ce que le sélecteur de base d'approche est agencé pour sélectionner des données de blocs d'image déjà décodés dans l'image courante dans le mode spatial, et des données de blocs d'image déjà décodés dans des images contigües à l'image courante dans le mode temporel. Device according to claim 5, characterized in that the approach basic selector is arranged to select image block data already decoded in the current image in the spatial mode, and image block data. already decoded in images contiguous to the current image in the time mode. 7. Dispositif selon l'une des revendications précédentes, caractérisé en ce que certaines au moins des données-paramètres comprennent en outre des données à décoder complémentaires, et en ce que l'unité de décodage est agencée pour combiner l'approximation du bloc courant avec des données à décoder complémentaires correspondantes pour calculer les données de blocs d'image décodés du bloc courant. 7. Device according to one of the preceding claims, characterized in that at least some of the parameter data further comprise complementary data to be decoded, and in that the decoding unit is arranged to combine the approximation of the current block. with corresponding complementary decoder data for calculating the decoded picture block data of the current block. 8. Dispositif d'encodage d'un flux de données d'images numériques, caractérisé en ce qu'il comprend : * une mémoire de travail (42) pour des données de blocs d'image déjà encodés, * un pilote (40), monté pour analyser un flux incident de données d'images numériques, et agencé pour déterminer des données à encoder d'un bloc courant de type données complètes ou données-paramètres, pour stocker les données complètes dans la mémoire de travail (42) en tant que données de blocs d'image déjà encodés, et pour appeler une unité d'encodage (48) avec les données-paramètres, * l'unité d'encodage (28) réagissant à la réception de données-paramètres par : - la sélection de certains blocs d'image déjà encodés, formant une base d'approche, qui avoisine le bloc courant selon une règle choisie, - le calcul d'une approximation du bloc courant, à partir d'une fonction algébrique linéaire 30 des données de la base d'approche, et- le stockage dans la mémoire de travail (42), pour le bloc courant, de données de blocs d'image déjà encodés et de données à décoder tirées de l'approximation du bloc courant. 8. Device for encoding a digital image data stream, characterized in that it comprises: a working memory (42) for already encoded image block data, a driver (40) , mounted to analyze an incident flow of digital image data, and arranged to determine data to be encoded from a current block of the complete data or data-parameter type, for storing the complete data in the working memory (42) in as already encoded picture block data, and to call an encoding unit (48) with the parameter data, * the encoding unit (28) responsive to the reception of parameter data by: - the selection of certain already encoded image blocks, forming an approach basis, which approximates the current block according to a chosen rule, - calculating an approximation of the current block, from a linear algebraic function 30 of the data of the base of approach, and- the storage in the memory of the work (42), for the current block, already encoded image block data and data to be decoded from the approximation of the current block. 9. Dispositif selon la revendication 8, caractérisé en ce que l'unité d'encodage comprend : * un sélecteur de voisinage d'approximation, agencé pour sélectionner des données de blocs d'image déjà encodés correspondant à un voisinage immédiat du bloc courant, et * un sélecteur de base d'approche, agencé pour sélectionner des données de blocs d'image déjà encodés correspondant à un voisinage élargi du bloc courant, et * un calculateur, agencé pour exécuter ladite fonction algébrique linéaire avec les données de la base d'approche pour approcher les données du voisinage d'approximation. 9. Device according to claim 8, characterized in that the encoding unit comprises: an approximation neighborhood selector, arranged to select already encoded image block data corresponding to an immediate neighborhood of the current block, and a basic approach selector, arranged to select already encoded image block data corresponding to a widened neighborhood of the current block, and a calculator, arranged to execute said linear algebraic function with the database data. approach to approaching neighborhood approximation data. 10. Dispositif selon la revendication 9, caractérisé en ce que l'unité d'encodage est agencée pour tirer du calculateur des données d'itération, et pour encoder lesdites données d'itération dans les données à décoder. 10. Device according to claim 9, characterized in that the encoding unit is arranged to pull the calculator iteration data, and to encode said iteration data in the data to be decoded. 11. Dispositif selon la revendication 8, caractérisé en ce que l'unité de calcul comprend : * un sélecteur de base d'approche, agencé pour sélectionner des données de blocs d'image déjà décodés correspondant à un voisinage élargi du bloc courant, et * un calculateur, agencé pour exécuter ladite fonction algébrique linéaire des données de la base d'approche pour approcher les données du bloc courant. 11. Device according to claim 8, characterized in that the computing unit comprises: a basic approach selector, arranged to select already decoded image block data corresponding to a widened neighborhood of the current block, and a calculator, arranged to execute said linear algebraic function of the data of the approach database to approach the data of the current block. 12. Dispositif selon l'une des revendications 9 à 11, caractérisé en ce que l'unité d'encodage est agencée pour appeler le calculateur en sélectionnant les données de blocs d'image déjà encodés selon un critère spatial et selon un critère temporel, pour choisir l'approximation du bloc courant parmi les approximations résultantes, et pour encoder dans les données à décoder des données de mode d'encodage indiquant le critère utilisé pour générer ladite approximation du bloc donné. 12. Device according to one of claims 9 to 11, characterized in that the encoding unit is arranged to call the computer by selecting the image block data already encoded according to a spatial criterion and according to a time criterion, for selecting the approximation of the current block among the resulting approximations, and for encoding in the data to be decoded encoding mode data indicating the criterion used to generate said approximation of the given block. 13. Dispositif selon la revendication 12, caractérisé en ce que les données de mode d'encodage indiquent que le sélecteur de base d'approche a sélectionné des données de blocs d'image déjà encodés dans l'image courante pour le critère spatial, et des données de blocs d'image déjà encodés dans des images contigües à l'image courante pour le critère temporel. Apparatus according to claim 12, characterized in that the encoding mode data indicates that the approach base selector has selected image block data already encoded in the current image for the spatial criterion, and image block data already encoded in images contiguous to the current image for the temporal criterion. 14. Dispositif selon l'une des revendications 8 à 13, caractérisé en ce que, pour certains au moins des blocs courants, l'unité d'encodage est agencée pour calculer des données à décoder complémentaires à partir des données à décoder et des données de blocs d'image déjà encodés correspondantes de ces blocs, et pour les stocker avec ces données à décoder. 14. Device according to one of claims 8 to 13, characterized in that, for at least some of the current blocks, the encoding unit is arranged to calculate additional data to be decoded from the data to be decoded and data. corresponding already encoded image blocks of these blocks, and to store them with this data to be decoded.
FR0806775A 2008-12-03 2008-12-03 DEVICE FOR ENCODING A STREAM OF DIGITAL IMAGES AND CORRESPONDING DECODING DEVICE Expired - Fee Related FR2939264B1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
FR0806775A FR2939264B1 (en) 2008-12-03 2008-12-03 DEVICE FOR ENCODING A STREAM OF DIGITAL IMAGES AND CORRESPONDING DECODING DEVICE
US13/132,553 US8798161B2 (en) 2008-12-03 2009-12-01 Encoding device for a flow of digital images and corresponding decoding device
PCT/FR2009/001361 WO2010063898A1 (en) 2008-12-03 2009-12-01 Device for encoding a digital image stream and corresponding decoding device with approximation of the neighbourhood of a block by the widened neighbourhood of the block
EP09795458.0A EP2364552B1 (en) 2008-12-03 2009-12-01 Device for encoding a digital image stream and corresponding decoding device with approximation of the neighbourhood of a block by the widened neighbourhood of the block

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0806775A FR2939264B1 (en) 2008-12-03 2008-12-03 DEVICE FOR ENCODING A STREAM OF DIGITAL IMAGES AND CORRESPONDING DECODING DEVICE

Publications (2)

Publication Number Publication Date
FR2939264A1 true FR2939264A1 (en) 2010-06-04
FR2939264B1 FR2939264B1 (en) 2011-04-08

Family

ID=40852404

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0806775A Expired - Fee Related FR2939264B1 (en) 2008-12-03 2008-12-03 DEVICE FOR ENCODING A STREAM OF DIGITAL IMAGES AND CORRESPONDING DECODING DEVICE

Country Status (4)

Country Link
US (1) US8798161B2 (en)
EP (1) EP2364552B1 (en)
FR (1) FR2939264B1 (en)
WO (1) WO2010063898A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011098488A1 (en) * 2010-02-11 2011-08-18 Thomson Licensing Method for coding and for reconstruction of a block of an image sequence

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190045224A1 (en) * 2016-02-04 2019-02-07 Mediatek Inc. Method and apparatus of non-local adaptive in-loop filters in video coding

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7916796B2 (en) * 2005-10-19 2011-03-29 Freescale Semiconductor, Inc. Region clustering based error concealment for video data

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A. MARTIN ET AL: "sparse representation for image prediction", EUSIPCO, September 2007 (2007-09-01), Poznan, pages 1255 - 1259, XP002538752 *
GHARAVI-ALKANSARI M ET AL: "a generalized method for image coding using fractal-based techniques", JOURNAL OF VISUAL COMMUNICATION AND IMAGE REPRESENTATION, vol. 8, 2 June 1997 (1997-06-02), pages 208 - 225, XP002548040, ISBN: 978-0-8186-6952-1 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011098488A1 (en) * 2010-02-11 2011-08-18 Thomson Licensing Method for coding and for reconstruction of a block of an image sequence

Also Published As

Publication number Publication date
WO2010063898A1 (en) 2010-06-10
US8798161B2 (en) 2014-08-05
EP2364552B1 (en) 2020-05-06
EP2364552A1 (en) 2011-09-14
FR2939264B1 (en) 2011-04-08
US20110317767A1 (en) 2011-12-29

Similar Documents

Publication Publication Date Title
FR3023112A1 (en) METHOD FOR ENCODING A DIGITAL IMAGE, DECODING METHOD, DEVICES AND COMPUTER PROGRAMS
EP1721470B1 (en) Method of encoding and decoding an image sequence by means of hierarchical temporal analysis
EP2304963B1 (en) Method and device for encoding images using improved prediction, and corresponding decoding method and device, signal and computer software
EP2304962B1 (en) Method and device for coding a sequence of images implementing a time prediction, corresponding signal, data medium, decoding method and device and computer program products
EP2392141A1 (en) Method and device for encoding an image using a prediction mask decoding method and device and corresponding signals and computer programs
EP3075155B1 (en) Method for encoding and decoding images, device for encoding and decoding images and corresponding computer programs
WO2016124867A1 (en) Method for encoding a digital image and associated decoding method, devices and computer programs
EP1591962A2 (en) Method and device for generating candidate vectors for image interpolation systems using motion estimation and compensation
EP3398330A1 (en) Method for encoding a digital image and associated decoding method, devices, user terminal and computer programs
WO2017037368A2 (en) Method of coding and decoding images, device for coding and decoding images and computer programmes corresponding thereto
FR3002062A1 (en) SYSTEM AND METHOD FOR DYNAMICALLY REDUCING ENTROPY OF A SIGNAL BEFORE A DATA COMPRESSION DEVICE.
FR2939264A1 (en) DEVICE FOR ENCODING A STREAM OF DIGITAL IMAGES AND CORRESPONDING DECODING DEVICE
FR3053555A1 (en) METHOD FOR ENCODING A DIGITAL IMAGE, DECODING METHOD, DEVICES, TERMINAL AND COMPUTER PROGRAMS
EP2716045A1 (en) Method for encoding and decoding images, device for encoding and decoding images and corresponding computer programs
FR2955995A1 (en) METHOD AND DEVICE FOR PROCESSING A VIDEO SEQUENCE
EP3158749B1 (en) Method for encoding and decoding images, device for encoding and decoding images, and corresponding computer programmes
WO2018073523A1 (en) Method for coding and decoding image parameters, device for coding and decoding image parameters and computer programs corresponding thereto
WO2008049628A1 (en) Method and device for optimizing the compression of a video stream
WO2019180350A1 (en) Method of low-latency video encoding and decoding
FR3057130B1 (en) METHOD OF ENCODING AN IMAGE, DECODING METHOD, DEVICES, TERMINAL EQUIPMENT AND COMPUTER PROGRAMS
FR2957744A1 (en) METHOD FOR PROCESSING A VIDEO SEQUENCE AND ASSOCIATED DEVICE
WO2010086562A1 (en) Method and device for encoding images using separate encoding modes, decoding method and device, and corresponding computer programs
FR3035761A1 (en) IMAGE ENCODING AND DECODING METHOD, IMAGE ENCODING AND DECODING DEVICE AND CORRESPONDING COMPUTER PROGRAMS
EP4078959A1 (en) Method for encoding a digital image in order to compress same
FR3098071A1 (en) Low latency video encoding and decoding process

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9

PLFP Fee payment

Year of fee payment: 10

PLFP Fee payment

Year of fee payment: 12

PLFP Fee payment

Year of fee payment: 13

ST Notification of lapse

Effective date: 20220808