EP2724536A1 - Method for encoding and decoding images, encoding and decoding device, and corresponding computer programs - Google Patents

Method for encoding and decoding images, encoding and decoding device, and corresponding computer programs

Info

Publication number
EP2724536A1
EP2724536A1 EP12734974.4A EP12734974A EP2724536A1 EP 2724536 A1 EP2724536 A1 EP 2724536A1 EP 12734974 A EP12734974 A EP 12734974A EP 2724536 A1 EP2724536 A1 EP 2724536A1
Authority
EP
European Patent Office
Prior art keywords
block
blocks
subset
decoding
coding
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.)
Ceased
Application number
EP12734974.4A
Other languages
German (de)
French (fr)
Inventor
Felix Henry
Stéphane PATEUX
Gordon Clare
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.)
Dolby International AB
Original Assignee
Orange SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=46508090&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=EP2724536(A1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Orange SA filed Critical Orange SA
Priority to EP20155879.8A priority Critical patent/EP3700207A1/en
Publication of EP2724536A1 publication Critical patent/EP2724536A1/en
Ceased legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B7/00Radio transmission systems, i.e. using radiation field
    • H04B7/02Diversity systems; Multi-antenna system, i.e. transmission or reception using multiple antennas
    • H04B7/12Frequency diversity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/174Methods 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 slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • H04N19/197Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters including determination of the initial value of an encoding parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/625Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using discrete cosine transform [DCT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • 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/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Definitions

  • the present invention relates generally to the field of image processing, and more specifically to the encoding and decoding of digital images and digital image sequences.
  • the invention can thus, in particular, apply to the video coding implemented in current (MPEG, H.264, etc.) or future video encoders (ITU-T / VCEG (H.265) or ISO / MPEG ( HVC).
  • current MPEG, H.264, etc.
  • future video encoders ITU-T / VCEG (H.265)
  • ISO / MPEG HVC
  • each macroblock is itself divided into blocks and each block, or macroblock, is coded by intra-image prediction or inter-image prediction.
  • intra-image prediction some images are coded by spatial prediction (intra prediction), while other images are coded by temporal prediction (inter prediction) with respect to one or more coded-decoded reference images, by means of compensation. in motion known to those skilled in the art.
  • inter prediction temporal prediction
  • for each block can be coded a residual block corresponding to the original block minus a prediction.
  • the coefficients of this block are quantized after a possible transformation, then coded by an entropic coder.
  • Intra prediction and inter prediction require that some blocks that have been previously coded and decoded be available, so as to be used, both at the decoder and the encoder, to predict the current block.
  • a schematic example of such a predictive coding is shown in FIG. 1, in which an image I N is divided into blocks, a current block MB of this image being subjected to a predictive coding with respect to a predetermined number of three blocks.
  • MBr- ⁇ , MBr 2 and MBr 3 previously coded and decoded, as indicated by the gray arrows.
  • the three aforementioned blocks specifically include the MBn block located immediately to the left of the current block MB ,, and the two blocks MBr 2 and MBr 3 respectively located immediately above and to the right above the current block MB ,.
  • the entropic encoder encodes the information according to their order of arrival. Typically a line-by-line path of the blocks is made, of "raster-scan" type, as illustrated in FIG. 1 by the reference PRS, starting from the block at the top left of the image. For each block, the various information necessary for the representation of the block (block type, prediction mode, residual coefficients, ...) are sent sequentially to the entropy coder.
  • CABAC Context Adaptive Binary Arithmetic Coder
  • This entropic coder implements different concepts:
  • arithmetic coding the coder, as initially described in J. Rissanen and G. G. Langdon, "Universal modeling and coding,” IEEE Trans. Inform. Theory, vol. IT-27, pp. 12-23, Jan. 1981, uses, to encode a symbol, a probability of appearance of this symbol;
  • Adaptation to the context it is a question of adapting the probability of appearance of the symbols to be coded. On the one hand, an on-the-fly learning is done. On the other hand, depending on the state of the previously coded information, a specific context is used for the coding.
  • Each context corresponds to a probability of appearance of the symbol itself.
  • a context corresponds to a type of coded symbol (the representation of a coefficient of a residue, coding mode signaling, etc.) according to a given configuration, or a neighborhood state (for example the number of modes). "Intra" selected in the neighborhood, ...);
  • binarization a setting in the form of a sequence of bits of the symbols to be encoded is performed. Subsequently, these different bits are successively sent to the binary entropic coder.
  • this entropic coder implements, for each context used, a system for learning on-the-fly probabilities with respect to symbols previously coded for the context in question. This learning is based on the coding order of these symbols. Typically, the image is scanned according to a "raster-scan" type order, described above.
  • the learning of the probability p of appearance of this symbol is updated for a current block MB, as follows: where a is a predetermined value, for example 0.95 and p M is the probability of appearance of symbol calculated at the last appearance of this symbol.
  • FIG. 1 A schematic example of such an entropy coding is shown in FIG. 1, in which a current block MB of the image 1 N is subjected to entropy coding.
  • the probabilities of appearance of symbols used are those obtained after coding a previously coded and decoded block, which is the one immediately preceding the current block MB, in accordance with the line-by-line blocks of the type "raster scan" supra.
  • Such learning based block dependency is shown in Figure 1 for some blocks only for the sake of clarity of the figure, by the arrows fine line.
  • a disadvantage of such a type of entropy encoding lies in the fact that when encoding a symbol at the beginning of a line, the probabilities used correspond mainly to those observed for the symbols at the end of the previous line. , taking into account the "raster scan" path of the blocks.
  • the probabilities of the symbols for example for a symbol linked to a movement information, the movement situated on the right part of an image may be different from that observed on the left part and therefore of even for the resulting local probabilities
  • a lack of local matching of the probabilities can be observed, which may lead to a loss of efficiency during coding.
  • proposals for changes to the order of the blocks have been made, in order to ensure better local consistency, but the coding and decoding remain sequential.
  • the entropic coder CABAC has the particularity of assigning a non-integer number of bits to each symbol of a current alphabet to be encoded, which is advantageous for the probabilities of appearance of symbols. greater than 0.5. Specifically, the CABAC encoder waits to read several symbols, then assigns to this set of symbols read a predetermined number of bits that the encoder registered in the compressed stream to be transmitted to the decoder.
  • Such an arrangement thus makes it possible to "mutualize" the bits over several symbols and to encode a symbol on a fractional number of bits, this number reflecting information that is closer to the information actually conveyed by a symbol.
  • Other bits associated with the symbols read are not transmitted in the compressed stream but are kept waiting to be assigned to one or more new symbols read by the CABAC coder again to mutualize these other bits.
  • the entropic coder proceeds at a given instant to "emptying" these non-transmitted bits. In other words, at said given instant, the encoder extracts the bits not yet transmitted and writes them in the compressed stream to the decoder.
  • Such emptying occurs for example at the moment when the last symbol to be coded has been read, so as to ensure that the compressed stream contains all the bits that will allow the decoder to decode all the symbols of the alphabet.
  • the time at which the drain is performed is determined by the performance and functionality of a particular encoder / decoder.
  • the document which is available at http://research.microsoft.com/en-us/um/people/iinl/paper 2002 / msri jpeg.htm as of April 15, 201 1, describes a process still image encoding compliant with the JPEG2000 compression standard.
  • the still image data undergo discrete wavelet transform followed by quantization, thereby obtaining quantized wavelet coefficients to which quantization indices are respectively associated.
  • Quantization indices obtained are encoded using an entropy coder.
  • the quantized coefficients are previously grouped in rectangular blocks called codeblocks, typically of size 64x64 or 32x32. Each codeblock is then independently encoded by entropy coding.
  • the entropic coder when coding a current block code, does not use the appearance probabilities of symbols calculated during the coding of previous codeblocks.
  • the entropic coder is therefore in a state initialized at the beginning of coding a code-block.
  • Such a method has the advantage of decoding the data of a code-block without having to decode neighboring code blocks.
  • client software may require server software to provide compressed codeblocks that the client only needs to decode an identified sub-part of an image.
  • Such a method also has the advantage of authorizing the encoding and / or the decoding in parallel of the code blocks.
  • the smaller the code-blocks the higher the level of parallelism.
  • the value of the level of parallelism is equal to the number of code blocks to be encoded in the image.
  • the compression performance obtained with this method is not optimal considering that such a coding does not take advantage of probabilities arising from the immediate environment of the current code-block.
  • One of the aims of the invention is to overcome disadvantages of the state of the art mentioned above.
  • an object of the present invention relates to a method of encoding at least one image comprising the steps of:
  • the coding step comprising, for the first block of the image, a substep of initialization of state variables of the entropy coding module,
  • the current block is the first block to code a subset considered, it is proceeded to the determination of symbol occurrence probabilities for the first current block, the probabilities being those which have been determined for a predetermined coded and decoded block of at least one other subset,
  • the writing step mentioned above amounts to carrying out, as soon as the last block of a subset of blocks has been coded, an emptying of the digital information (bits) not yet transmitted, as explained above. in the description.
  • Coupling the aforementioned write step and the entropy coding module reset step produces an encoded data stream containing different data sub-streams corresponding to at least one coded block subset, respectively. said stream being adapted to be decoded in parallel according to different levels of parallelism, regardless of the type of coding, sequential or parallel, which has been applied to the subsets of blocks.
  • the level of parallelism to the decoding is variable and may even be different from the level of parallelism with the coding, since at the start of the decoding of a subset of blocks, the decoder is always in an initialized state.
  • the state variables of the entropy coding module are the two terminals of an interval representative of the probability of appearance of a symbol among the symbols of the predetermined set of symbols.
  • the state variables of the entropy coding module are the symbol strings contained in the translation table of a LZW entrapment coder (Lempel-Ziv-Welch) well known to those skilled in the art, and described at the following internet address as of June 21, 201 1: http: //en.wikipedia.orq/wiki/lempel%E2%80%93Ziv%E2%80%93Weich.
  • the subsets of blocks are coded sequentially or in parallel.
  • the at least two subsets of coded blocks are contained in the same sub-stream. of data.
  • Such an arrangement makes it possible in particular to save on the signaling of the sub-data streams.
  • a decoding unit to be able to decode a sub-stream as soon as possible, it is necessary to indicate in the compressed file where the sub-stream in question begins.
  • only one flag is needed, which reduces the size of the compressed file.
  • the sub-data streams delivered after coding respectively of each of the subsets of blocks are previously ordered. in the predetermined order before being transmitted for decoding.
  • Such an arrangement makes it possible to adapt the coded data stream to a specific type of decoding without the need to decode and re-encode the image.
  • the invention also relates to a device for coding at least one image comprising: means for cutting the image into a plurality of blocks able to contain symbols belonging to a predetermined set of symbols,
  • the coding means for each of the subsets of blocks, the coding means comprising an entropy coding module able to associate digital information with the symbols of each block of a subset considered, the coding means comprising, for the first block of the image, means of initialization of state variables of the entropy coding module,
  • Such a coding device is remarkable in that it comprises:
  • writing means which, in the case where the current block is the last coded block of the subset considered, are activated to write, in the sub-stream representative of the subset considered, all the digital information which has have been associated with the symbols during the coding of the blocks of the subset considered,
  • the initialization sub-means being further activated to reset the state variables of the entropy coding module.
  • the invention also relates to a method for decoding a representative stream of at least one coded picture, comprising the steps of:
  • decoding the subsets of blocks identified by means of an entropy decoding module by reading, in at least one of the identified substreams, digital information associated with the symbols of each block of the subset corresponding to the at least one an identified substream, the decoding step comprising, for the first block to be decoded from the image, a substep of initialization of state variables of the entropy decoding module.
  • the current block is the first block to be decoded from a subset considered, it is proceeded to the determination of symbol occurrence probabilities for the first block of the subset considered, the probabilities being those which have been determined for a predetermined decoded block of at least one other subset,
  • the current block is the last decoded block of the subset considered, it is proceeded to the implementation of the initialization sub-step.
  • the subsets of blocks are decoded sequentially or in parallel.
  • one of the identified data substreams is representative of the at least two subsets of blocks.
  • the sub-data streams respectively corresponding to the subsets of coded blocks are previously ordered according to said order predetermined in said stream to be decoded.
  • the invention further relates to a device for decoding a representative stream of at least one coded picture, comprising:
  • the decoding means comprising an entropy decoding module capable of reading, in at least one of the identified subflows, digital information associated with the symbols of each block of the subset; corresponding to said at least one identified sub-stream, the decoding means comprising, for the first block to be decoded from the image, initialization sub-means of state variables of the entropy decoding module.
  • Such a decoding device is remarkable in that it comprises means for determining probabilities of symbol appearance for a current block which, in the case where the current block is the first block to be decoded of a considered subset. , determine the symbol occurrence probabilities for the first block as those determined for a decoded predetermined block of at least one other subset,
  • the initialization sub-means are activated to reset the state variables of the entropy decoding module.
  • the invention also relates to a computer program comprising instructions for executing the steps of the above coding or decoding method, when the program is executed by a computer.
  • Such a program can use any programming language, and be in the form of source code, object code, or intermediate code between source code and object code, such as in a partially compiled form, or in any another desirable form.
  • Still another object of the invention is directed to a computer readable recording medium, and including computer program instructions as mentioned above.
  • the recording medium may be any entity or device capable of storing the program.
  • a medium may comprise storage means, such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or a magnetic recording medium, for example a floppy disk or a Hard disk.
  • a recording medium may be a transmissible medium such as an electrical or optical signal, which may be conveyed via an electrical or optical cable, by radio or by other means.
  • the program according to the invention can be downloaded in particular on an Internet type network.
  • such a recording medium may be an integrated circuit in which the program is incorporated, the circuit being adapted to execute the method in question or to be used in the execution of the latter.
  • the coding device, the decoding method, the decoding device and the aforementioned computer programs have at least the same advantages as those conferred by the coding method according to the present invention. Brief description of the drawings
  • FIG. 1 represents an image coding scheme of the prior art
  • FIG. 2A represents the main steps of the coding method according to the invention
  • FIG. 2B shows in detail the coding implemented in the coding method of FIG. 2A
  • FIG. 3A represents a first embodiment of a coding device according to the invention
  • FIG. 3B represents a coding unit of the coding device of FIG. 3A
  • FIG. 3C represents a second embodiment of a coding device according to the invention.
  • FIG. 4A represents an image coding / decoding scheme according to a first preferred embodiment
  • FIG. 4B represents an image coding / decoding scheme according to a second preferred embodiment
  • FIG. 5A represents the main steps of the decoding method according to the invention
  • FIG. 5B shows in detail the decoding implemented in the decoding method of FIG. 5A
  • FIG. 6A represents an embodiment of a decoding device according to the invention
  • FIG. 6B represents a decoding unit of the decoding device of FIG. 6A
  • FIG. 7A represents an image coding / decoding scheme implementing a sequential type coding and a parallel type decoding
  • FIG. 7B represents an image coding / decoding scheme implementing a parallel type coding / decoding, with different levels of parallelism respectively.
  • the coding method according to the invention is used to code a sequence of images according to a bit stream close to that obtained by a coding according to the H standard. .264 / MPEG-4 AVC.
  • the coding method according to the invention is for example implemented in a software or hardware way by modifications of an encoder initially compliant with the H.264 / MPEG-4 AVC standard.
  • the coding method according to the invention is represented in the form of an algorithm comprising steps C1 to C5, represented in FIG. 2A.
  • the coding method according to the invention is implemented in a coding device CO, two embodiments of which are respectively represented in FIGS. 3A and 3C.
  • the first coding step C1 is the division of an image IE of an image sequence to be encoded into a plurality of blocks or macroblocks MB, as represented in FIG. 4A or 4B.
  • Said macroblocks are capable of containing one or more symbols, said symbols forming part of a predetermined set of symbols.
  • said MB blocks have a square shape and are all the same size.
  • the last blocks on the left and the last blocks on the bottom may not be square.
  • the blocks may be for example of rectangular size and / or not aligned with each other.
  • Each block or macroblock can also be itself divided into sub-blocks that are themselves subdividable.
  • Such splitting is performed by a partitioning PCO module shown in FIG. 3A which uses, for example, a partitioning algorithm that is well known as such.
  • the second coding step C2 is the grouping of the aforementioned blocks into a predetermined number P of consecutive subsets of blocks SE1, SE2,..., SEk,..., SEP intended to be coded sequentially. or in parallel.
  • P 6
  • subsets SE1, SE2, SE3, SE4 are shown for the sake of clarity of the figures.
  • These four subsets of blocks are each represented in dashed line and consist respectively of the first four block lines of the image IE.
  • Such a grouping is performed by a GRCO calculation module represented in FIG. 3A, using a well-known algorithm per se.
  • the third coding step C3 consists in the coding of each of said subsets of blocks SE1 to SE6, the blocks of a subset considered being coded according to a predetermined PS travel order, which is for example of sequential type.
  • the blocks of a subset SEk current (1 ⁇ k ⁇ P) are coded one after the other, from left to right, as indicated by the arrow PS.
  • such an encoding is of the sequential type and is implemented by a single coding unit UC as represented in FIG. 3A.
  • the coder CO comprises a buffer MT which is adapted to contain the probability of appearance of symbols such as progressively updated as and when encoding a current block.
  • the coding unit UC comprises:
  • An entropy coding module of said current block by using at least one symbol appearance probability calculated for said previously coded and decoded block, denoted ECM.
  • the predictive coding module MCP is a software module that is able to carry out a predictive coding of the current block, according to conventional prediction techniques, such as for example in Intra and / or Inter mode.
  • the entropic coding module MCE is CABAC type, but modified according to the present invention as will be described later in the description.
  • the entropic coding module MCE could be a Huffman coder known as such.
  • the unit UC encodes the blocks of the first line SE1, from left to right. When it reaches the last block of the first line SE1, it goes to the first block of the second line SE2. When it reaches the last block of the second line SE2, it goes to the first block of the third line SE3. When it reaches the last block of the third line SE3, it goes to the first block of the fourth line SE4, and so on until the last block of the image IE is coded.
  • Such parallel coding is known to generate a substantial acceleration of the coding method.
  • Each of the coding units UCk is identical to the coding unit UC shown in FIG. 3B.
  • a coding unit UCk comprises a predictive coding module MCPk and an entropy coding module MCEk.
  • the first unit UC1 codes, for example, the blocks of lines of odd rank
  • the second unit UC2 codes, for example, the blocks of lines of even rank.
  • the first unit UC1 codes the blocks of the first line SE1, from left to right.
  • the last block of the first line SE1 it goes to the first block of the (2n + 1) th line, that is to say the third line SE3, etc.
  • the second unit UC2 codes the blocks of the second line SE2, from left to right.
  • it reaches the last block of the second line SE2 it goes to the first block of the (2n) th line, here the fourth line SE4, etc.
  • the two aforementioned paths are repeated until the last block of the IE image is encoded.
  • the fourth encoding step C4 is the production of L sub-flux F1, F2,..., Fm,..., FL (1 ⁇ m ⁇ L ⁇ P) of bits representing the blocks processed by the aforementioned UC encoding unit or each of the aforementioned UCk coding units, as well as a decoded version of the processed blocks of each subset SEk.
  • the decoded processed blocks of a considered subset, denoted SED1, SED2, ..., SEDk, ..., SEDP are likely to be reused by the coding unit UC represented in FIG. 3A or each encoding units UCk shown in Figure 3C, according to a synchronization mechanism which will be detailed later in the description.
  • the sub-stream production step L is implemented by a flow generating software module MGSF or MGSFk which is adapted to produce data streams, such as bits for example.
  • the fifth encoding step C5 consists in constructing a global flux F from the aforementioned L subflows F1, F2,..., Fm,... FL.
  • the substreams F1, F2,..., Fm,..., FL are simply juxtaposed, with additional information intended to indicate to the decoder the location of each sub-flow Fm in the stream. global F.
  • the latter is then transmitted by a communication network (not shown) to a remote terminal.
  • the coder CO before transmitting the stream F to the decoder DO, previously orders the L substreams F1, F2, ... , Fm, ..., FL according to a predetermined order which corresponds to the order in which the decoder DO is able to decode the sub-streams.
  • the decoder is able to isolate the substreams F1, F2, ..., Fm, ..., FL within the overall flow F and assign them to one or more decoding units composing the decoder. It will be noted that such a decomposition of the subflows into a global stream is independent of the choice of the use of a single coding unit or of several coding units operating in parallel, and that it is possible with this approach to only have the encoder or only the decoder which includes units operating in parallel.
  • Such a construction of the global flow F is implemented in a flow generating module CF, as shown in FIG. 3A and FIG. 3C.
  • the encoding unit UC or UCk selects as the current block the first block to be encoded of a current line SEk shown in FIG. 4A or 4B, such as for example the first line SE1.
  • the unit UC or UCk tests whether the current block is the first block (located at the top left) of the image IE which has been cut into blocks in the aforementioned step C1.
  • the entropic coding module MCE or MCEk initializes its state variables.
  • this interval is initialized with two terminals L and H, respectively lower and upper.
  • the value of the lower bound L is set to 0, while the value of the upper bound is set to 1, which corresponds to the probability of occurrence of a first symbol among all the symbols of the predetermined set of symbols. .
  • the initialized interval is further conventionally partitioned into a plurality of predetermined sub-intervals which are respectively representative of the appearance probabilities of the symbols of the predetermined set of symbols.
  • a symbol string translation table is initialized, so that it contains all possible symbols once and only once.
  • the current block is not the first block of the image IE, it is proceeded during a step C40 which will be described later in the following description, to determining the availability of the previously coded and decoded blocks needed.
  • the first current block MB1 of the first line SE1 shown in FIG. 4A or 4B is coded.
  • Such a step C34 comprises a plurality of sub-steps C341 to C348 which will be described below.
  • the predictive coding of the current block MB1 is carried out by known intra and / or inter prediction techniques, during which the block MB1 is predicted with respect to least one block previously coded and decoded.
  • the current block MB1 may also be subjected to prediction coding in inter mode, during which the current block is predicted with respect to a block resulting from a previously coded and decoded picture.
  • prediction coding in inter mode, during which the current block is predicted with respect to a block resulting from a previously coded and decoded picture.
  • Other types of prediction are of course conceivable.
  • the optimal prediction is chosen according to a distortion flow criterion well known to those skilled in the art.
  • Said aforementioned predictive coding step makes it possible to construct a predicted block MBp- ⁇ which is an approximation of the current block MB- ,.
  • the information relating to this predictive coding will subsequently be written in the stream F transmitted to the decoder DO.
  • Such information includes in particular the type of prediction (inter or intra), and if appropriate, the intra prediction mode, the type of partitioning of a block or macroblock if the latter has been subdivided, the image index of reference and displacement vector used in the inter prediction mode. This information is compressed by the CO encoder.
  • the predicted block MBpi of the current block MBi is subtracted to produce a residue block MBr-i.
  • the residue block ⁇ is transformed according to a conventional direct transformation operation such as, for example, a discrete cosine transformation of the DCT type, to produce a transformed block MBt-i.
  • the transformed block MBti is quantized according to a conventional quantization operation, such as, for example, a scalar quantization.
  • a block of quantized coefficients MBqi is then obtained.
  • the entropic coding of the quantized coefficient block MBq- is carried out. In the preferred embodiment, it is a CABAC entropic coding.
  • Such a step consists of:
  • the coding used is an LZW coding
  • digital information corresponding to the code of the symbol in the current translation table is associated with the symbol to be coded, and an update of the translation table is carried out, according to a method known per se.
  • the block MBq is dequantized according to a conventional dequantization operation, which is the inverse operation of the quantization performed in step C344.
  • a block of dequantized coefficients MBDq is then obtained.
  • the inverse transformation of the dequantized coefficient block MBDqi is carried out which is the inverse operation of the direct transformation carried out in step C343 above.
  • a decoded residue block MBDr- ⁇ is then obtained.
  • the decoded block MBDi is constructed by adding or prediction block MBpi the decoded residue block MBDr-i. It should be noted that this last block is the same as the decoded block obtained at the end of the decoding process of the IE image which will be described later in the description.
  • the decoded block MBDi is thus made available for use by the coding unit UCk or any other coding unit forming part of the predetermined number R of coding units.
  • the entropic coding module MCE or MCEk as represented in FIG. 3B contains all the probabilities such as progressively being updated as the first block is coded. These probabilities correspond to the different elements of possible syntaxes and to the different coding contexts associated. Following the aforementioned coding step C34, it is tested, during a step C35, if the current block is the jth block of this same line, where j is a known predetermined value of the CO encoder which is at less than 1.
  • the set of probabilities calculated for the jth block is stored in the buffer memory MT of the coder CO as represented in FIG. 3A or 3B and FIGS. FIGS. 4A and 4B, the size of said memory being adapted to store the number of calculated probabilities.
  • step C37 the coding unit UC or UCk tests whether the current block of the line SEk that has just been encoded is the last block of the image IE. Such a step is also implemented if during step C35, the current block is not the jth block of the line SE1.
  • the coding process is terminated.
  • step C39 it is proceeded, in step C39, to the selection of the next block MB, to be encoded according to the order of travel represented by the arrow PS in Figure 4A or 4B.
  • step C40 the availability of previously coded and decoded blocks which are necessary to code the current block MB, is determined.
  • such a step consists in checking the availability of at least one block to the left of the current block to be coded MB ,.
  • the blocks are encoded one after the other on a line SEk considered.
  • the coded and decoded block on the left is always available (except for the first block of a line). In the example shown in FIG. 4A or 4B, it is the block located immediately to the left of the current block to be coded.
  • said determining step further comprises checking whether a predetermined number N 'of blocks located on the previous line SEk-1, for example the two blocks located respectively above and to the right of the current block, are available for the coding of the current block, that is to say if they have already been coded and then decoded by the UC or UCk-1 coding unit.
  • a clock CLK shown in FIG. 3C is adapted to synchronize the advanced block coding so as to guarantee the availability of the two blocks located respectively above and above right of the current block, without it being necessary to check the availability of these two blocks.
  • step C41 shown in Figure 2B it is tested if the current block is the first block of the SEk line considered.
  • Such a reading consists in replacing the probabilities of the CABAC encoder by those present in the buffer memory MT.
  • this reading step is shown in FIG. 4A by the arrows represented in fine lines.
  • Such a reading consists in replacing the probabilities of the CABAC encoder by those present in the buffer memory MT.
  • this reading step is shown in FIG. 4B by the arrows represented in dashed fine lines.
  • the current block is coded and then decoded by iteration of the steps C34 to C38 described above.
  • the current block is not the first block of the line SEk considered, it is advantageously not proceeded to the reading of the probabilities from the previously coded and decoded block which is on the same line SEk, that is to say the encoded and decoded block located immediately to the left of the current block, in the example shown.
  • the probabilities of appearance of symbols present in the CABAC coder at the time of the beginning of the coding of the current block are exactly those which are present after coding / decoding of the previous block on this same line.
  • step C43 the current block is coded and then decoded by iteration of the steps C34 to C38 described above.
  • step C44 step C39 of selecting the next block MB to be coded is again implemented.
  • the coding device CO of Figure 3A or 3C performs a drain as mentioned above in the description.
  • the coding unit UCk transmits to the corresponding sub-stream generation module MGSFk all the bits that have been associated with the symbol (s) read during the coding of each block of said line.
  • SEk considered so that the MGSFk module writes, in the sub-data stream Fm containing a bitstream representative of the coded blocks of said line SEk considered, said totality of bits.
  • Such emptying is symbolized in FIGS. 4A and 4B by a triangle at the end of each line SEk.
  • the coding unit UC or UCk performs a step identical to the aforementioned step C33, that is to say, it initializes again the interval representative of the probability of appearance of a symbol contained in the predetermined set of symbols.
  • a reset is shown in Figures 4A and 4B by a black dot at the beginning of each line SEk.
  • the decoding method according to the invention is represented in the form of an algorithm comprising steps D1 to D4, represented in FIG. 5A.
  • the decoding method according to the invention is implemented in a decoding device DO shown in FIG. 6A.
  • the first decoding step D1 is the identification in said stream F of the L substreams F1, F2,..., Fm,..., FL respectively containing the P subsets SE1, SE2, ..., SEk, ..., SEP of previously coded blocks or macroblocks MB, as shown in FIG. 4A or 4B.
  • each sub-flow Fm in the stream F is associated with an indicator intended to allow the decoder DO to determine the location of each sub-stream Fm in the stream F.
  • the coder CO orders the substreams F1, F2, ..., Fm, ..., FL in the stream F, in the order expected by the decoder DO, which avoids the insertion in the stream F subflow indicators.
  • Such an arrangement thus makes it possible to reduce the flow rate cost of the data stream F.
  • the said MB blocks have a square shape and all have the same size.
  • the last blocks on the left and the last blocks on the bottom may not be square.
  • the blocks may be for example of rectangular size and / or not aligned with each other.
  • Each block or macroblock can also be itself divided into sub-blocks that are themselves subdividable.
  • Such identification is performed by an EXDO flow extraction module as shown in FIG. 6A.
  • the predetermined number P is equal to 6 but only four subsets SE1, SE2, SE3, SE4 are shown in dashed line, for the sake of clarity of the figures.
  • the second decoding step D2 is the decoding of each of said subsets of blocks SE1, SE2, SE3 and SE4, the blocks of a subset considered being coded according to a sequential scanning order PS predetermined.
  • the blocks of a current subset SEk (1 ⁇ k ⁇ P) are decoded one after the other, from left to right, as indicated by the arrow PS. .
  • the subsets of decoded blocks SED1, SED2, SED3,..., SEDk,..., SEDP are obtained.
  • Such a decoding can be of sequential type and, consequently, be carried out using a single decoding unit.
  • the decoder DO comprises a buffer MT which is adapted to contain the probabilities of appearance of symbols such as progressively updated as the decoding of a current block.
  • each of the UDk decoding units comprises:
  • An entropy decoding module of said current block by learning at least one computed symbol occurrence probability for at least one previously decoded block, denoted MDEk,
  • a decoding module predictive of a current block with respect to said previously decoded block denoted MDPk.
  • the predictive decoding module SUDPk is able to perform a predictive decoding of the current block, according to conventional prediction techniques, such as for example in Intra and / or Inter mode.
  • the entropy decoding module MDEk is CABAC type, but modified according to the present invention as will be described later in the description.
  • the entropy decoding module MDEk could be a Huffman decoder known as such.
  • the first unit UD1 decodes the blocks of the first line SE1, from left to right. When it reaches the last block of the first line SE1, it passes to the first block of the (n + 1) th line, by the 5 th row, etc.
  • the second unit UC2 decodes the blocks of the second line SE2, from left to right. When it reaches the last block of the second line SE2, it passes to the first block of the (n + 2) th line, by the 6 th row, etc. This path is repeated until the unit UD4, which decodes the blocks of the fourth line SE4, from left to right. When it reaches the last block of the first line, it passes the first block of the (n + 4) th line, here the 8 th line, and so on until the last block of the last substream identified is decoded.
  • each decoding unit might not handle nested lines, as explained above, but columns nested. It is also possible to browse the rows or columns in one direction or the other.
  • the third decoding step D3 is the reconstruction of a decoded picture ID from each decoded subset SED1, SED2,..., SEDk,..., SEDP obtained at the step decoding D2. More precisely, the decoded blocks of each decoded subset SED1, SED2,..., SEDk,..., SEDP are transmitted to an image reconstruction URI unit as represented in FIG. 6A. During this step D3, the URI unit writes the decoded blocks in a decoded image as these blocks become available.
  • a fully decoded ID image is provided by the URI unit shown in FIG. 6A.
  • the decoding unit UDk selects as the current block the first block to be decoded from the current line SEk shown in FIG. 4A or 4B.
  • the decoding unit UDk tests whether the current block is the first block of the decoded picture, in this case the first block of the substream F1.
  • the entropy decoding module MDE or MDEk initializes its state variables. According to the example shown, it is an initialization of an interval representative of the probability of appearance of a symbol contained in the predetermined set of symbols.
  • step D23 is identical to the aforementioned coding step C33, it will not be described further. If following the aforementioned step D22, the current block is not the first block of the decoded picture ID, it is proceeded, during a step D30 which will be described later in the following description, determining the availability of the previously decoded blocks needed.
  • step D24 the first current block MB1 of the first line SE1 shown in FIG. 4A or 4B is decoded.
  • Such a step D24 comprises a plurality of substeps D241 to D246 which will be described below.
  • entropic decoding of the syntax elements related to the current block is performed.
  • Such a step consists mainly of:
  • the decoding used is an LZW decoding
  • digital information corresponding to the code of the symbol in the current translation table is read, the symbol is reconstructed from the code read and an update of the translation table. is performed, according to a method known per se.
  • the syntax elements related to the current block are decoded by the entrapment decoding module MDE1 CABAC as represented in FIG. 6B.
  • the latter decodes the sub-stream of F1 bits of the compressed file to produce the syntax elements, and, at the same time, updates its probabilities so that, at the moment when the latter decodes a symbol, the probabilities of appearance of this symbol are identical to those obtained during the coding of the same symbol during the aforementioned entropy coding step C345.
  • predictive decoding of the current block MB1 is carried out by known intra and / or inter prediction techniques, during which the block MB1 is predicted with respect to at least one previously decoded block.
  • intra prediction modes as proposed in the H.264 standard are possible.
  • the predictive decoding is performed using the syntax elements decoded in the previous step and including in particular the type of prediction (inter or intra), and if appropriate, the intra prediction mode, the type of partitioning of a block or macroblock if the latter has been subdivided, the reference image index and the displacement vector used in the inter prediction mode.
  • Said aforementioned predictive decoding step makes it possible to construct a predicted MBp block! .
  • a quantized residual block MBqi is constructed using previously decoded syntax elements.
  • dequantization of the quantized residue block MBq is carried out according to a conventional dequantization operation which is the inverse operation of the quantization performed in the aforementioned step C344, to produce a dequantized block decoded MBDt-i.
  • the inverse transformation of the dequantized block MBDti is carried out which is the reverse operation of the direct transformation carried out in step C343 above.
  • a decoded residue block MBDr- ⁇ is then obtained.
  • the decoded block MBDi is constructed by adding or predicting MBpi the decoded residue block MBDr-i.
  • the decoded block MBD is thus made available for use by the decoding unit UD1 or any other decoding unit belonging to the predetermined number N of decoding units.
  • the entropy decoding module MDE1 as represented in FIG. 6B contains all the probabilities such as progressively being updated as the first block is decoded. These probabilities correspond to the different possible syntax elements and the different decoding contexts associated with them.
  • the entropy decoding module MDE1 as represented in FIG. 6B contains all the probabilities such as progressively being updated as the first block is decoded. These probabilities correspond to the different possible syntax elements and the different decoding contexts associated with them.
  • it is tested, during a step D25, if the current block is the jth block of this same line, where j is a predetermined known value of the decoder DO which is at less than 1.
  • the set of probabilities calculated for the jth block is stored in the buffer memory MT of the decoder DO as represented in FIG. 6A and in FIG. 4A or 4B, FIG. size of said memory being adapted to store the calculated number of probabilities.
  • the unit UDk tests whether the current block that has just been decoded is the last block of the last sub-stream.
  • step D29 is used to select the next block MB to be decoded according to the order of travel represented by the arrow PS in FIG. 4A or 4B.
  • step D25 If during the aforementioned step D25, the current block is not the jth block of the line SEDk considered, it is proceeded to step D27 above.
  • step D30 which follows the aforementioned step D29, the availability of previously decoded blocks which are necessary for decoding the current block MB, is determined. Given that it is a parallel decoding of the blocks by different UDk decoding units, it is possible that these blocks have not been decoded by the decoding unit assigned to the decoding of these blocks. and so they are not yet available.
  • Said determination step consists in checking whether a predetermined number N 'of blocks located on the previous line SEk-1, for example the two blocks situated respectively above and to the right of the current block, are available for the decoding of the current block, that is to say if they have already been decoded by decoding unit UDk-1 assigned to the decoding of the latter.
  • Said determination step also consists in checking the availability of at least one block to the left of the current block to be decoded MB ,.
  • the blocks are decoded one after the other on a line SEk considered.
  • the block Decoded left is always available (except the first block of a line).
  • it is the block located immediately to the left of the current block to be decoded. For this purpose, only the availability of the two blocks located respectively above and above the right of the current block is tested.
  • a clock CLK shown in FIG. 6A is adapted to synchronize the advance of the decoding of the blocks so as to guarantee the availability of the two blocks. located respectively above and above right of the current block, without it being necessary to check the availability of these two blocks.
  • step D31 it is tested if the current block is the first block of the SEk line considered.
  • Such a reading consists in replacing the probabilities of the CABAC decoder by those present in the buffer memory MT.
  • this reading step is shown in FIG. 4A by the arrows represented in fine lines.
  • Such a reading consists in replacing the probabilities of the CABAC decoder by those present in the buffer memory MT.
  • this reading step is shown in Figure 4B by the arrows shown in dashed fine lines.
  • step D32 the current block is decoded by iteration of the steps D24 to D28 described above.
  • the current block is not the first block of the line SEk considered, it is advantageously not proceeded to the reading of the probabilities from the previously decoded block which is on the same line SEk, that is to say the decoded block located immediately to the left of the current block, in the example shown.
  • the probabilities of appearance of symbols present in the CABAC decoder at the moment of the beginning of the decoding of the current block are exactly the ones that are present after decoding the previous block on that same line.
  • step D33 the current block is decoded by iterating the steps D24 to D28 described above.
  • step D34 step D29 for selecting the next block MB to be coded is again implemented.
  • the decoding unit UDk performs a step identical to the aforementioned step D23, that is to say initializes again the an interval representative of the probability of appearance of a symbol contained in the predetermined set of symbols.
  • a reset is shown in Figures 4A and 4B by a black dot at the beginning of each line SEk.
  • the decoder DO is in a state initialized at each beginning of the line, which allows a great flexibility from the point of view of the choice of the level of decoding parallelism and an optimization of the processing time during decoding.
  • the coder CO comprises a single coding unit UC, as shown in FIG. 3A, while the decoder DO comprises six decoding units.
  • the encoding unit UC sequentially encodes the lines SE1, SE2, SE3, SE4, SE5 and SE6.
  • the lines SE1 to SE4 are fully coded, the line SE5 is being coded and the line SE6 has not yet been coded.
  • the coding unit UC is adapted to deliver a stream F which contains the substreams F1, F2, F3, F4 ordered one after the other, in the coding order of the lines SE1, SE2, SE3 and SE4.
  • the substreams F1, F2, F3 and F4 are symbolized with the same hatching as those which respectively symbolize the lines SE1, SE2, SE3, SE4 encoded.
  • the decoder DO whenever it reads a sub-stream to decode it, is in an initialized state and can therefore optimally decode in parallel the four sub-streams F1, F2, F3, F4 with decoding units UD1, UD2, UD3 and UD4 which can by example be installed on four different platforms.
  • the coder CO comprises two coding units UC1 and UC2, as shown in FIG. 3C, while the decoder DO comprises six decoding units.
  • the encoding unit UC1 sequentially codes the odd-rank lines SE1, SE3 and SE5, while the encoding unit UC2 sequentially encodes the even-numbered lines SE2, SE4 and SE6.
  • lines SE1, SE3 and SE5 have a white background
  • lines SE2, SE4 and SE6 have a dotted background.
  • the lines SE1 to SE4 are fully encoded, the SE5 line is being coded and the SE6 line has not yet been coded.
  • the coding unit UC1 is adapted to deliver a sub-flux F 2n + i broken down into two parts F1 and F3 obtained following the coding respectively of the lines SE1 and SE3
  • the coding unit UC2 is adapted to deliver a sub-flux F 2n decomposed into two parts F2 and F4 obtained following the coding respectively lines SE2 and SE4.
  • the encoder CO is therefore adapted to transmit to the decoder DO a stream F which contains the juxtaposition of the two substreams F 2n + 1 and F 2n and therefore a scheduling of the substreams F1, F3, F2, F4 which differs from that shown in FIG. 7A.
  • the substreams F1, F2, F3 and F4 are symbolized with the same hatching as those which respectively symbolize the lines SE1, SE2, SE3, SE4 coded, the substreams F1 and F3 having a white background (coding lines of odd rank) and the substreams F2 and F4 having a dotted background (coding of lines of even rank).
  • such a coding / decoding scheme also has the advantage of being able to have a decoder whose level of decoding parallelism is completely independent of the level of parallelism of the coding. which makes it possible to further optimize the operation of an encoder / decoder.

Abstract

The invention relates to an encoding method including cutting out (C1) the image from a plurality of blocks (MB) capable of containing symbols belonging to a predetermined set of symbols, grouping (C2) blocks in a predetermined number (P) of subsets of blocks (SE1, SE2,…SEk,…,SEP), encoding (C3), using an entropic module, each of said subsets of blocks, by combining digital information with the symbols of each block of a subset in question, said encoding step including, for the first block of the image, a sub-step (C33) of initializing status variables of said entropic encoding module, and then generating at least one sub-stream of data representative of at least one of said subsets of encoded blocks. In the event the current block is the first block being encoded of a subset of blocks in question, the probabilities of a symbol appearing for said first current block are those determined for a predetermined encoded and decoded block of at least one other subset. In the event the current unit is the last encoded unit of the subset in question, all of the digital information that was associated with the symbols during the encoding of the blocks of the said subset in question are written (C45) in the sub-stream representative of at least said subset in question, and the initialization sub-step is implemented (C46).

Description

PROCÉDÉ DE CODAGE ET DÉCODAGE D'IMAGES, DISPOSITIF DE CODAGE ET DÉCODAGE ET PROGRAMMES D'ORDINATEUR  METHOD FOR ENCODING AND DECODING IMAGES, DEVICE FOR ENCODING AND DECODING AND COMPUTER PROGRAMS
CORRESPONDANTS Domaine de l'invention  CORRESPONDENTS Field of the invention
La présente invention se rapporte de manière générale au domaine du traitement d'images, et plus précisément au codage et au décodage d'images numériques et de séquences d'images numériques.  The present invention relates generally to the field of image processing, and more specifically to the encoding and decoding of digital images and digital image sequences.
L'invention peut ainsi, notamment, s'appliquer au codage vidéo mis en œuvre dans les codeurs vidéo actuels (MPEG, H.264, etc) ou à venir (ITU- T/VCEG (H.265) ou ISO/MPEG (HVC).  The invention can thus, in particular, apply to the video coding implemented in current (MPEG, H.264, etc.) or future video encoders (ITU-T / VCEG (H.265) or ISO / MPEG ( HVC).
Arrière-plan de l'invention Background of the invention
Les codeurs vidéo actuels (MPEG, H264, ...) utilisent une représentation par blocs de la séquence vidéo. Les images sont découpées en macro-blocs, chaque macro-bloc est lui-même découpé en blocs et chaque bloc, ou macrobloc, est codé par prédiction intra-images ou inter-images. Ainsi, certaines images sont codées par prédiction spatiale (prédiction intra), tandis que d'autres images sont codées par prédiction temporelle (prédiction inter) par rapport à une ou plusieurs images de référence codées-décodées, à l'aide d'une compensation en mouvement connue par l'homme de l'art. De plus, pour chaque bloc peut être codé un bloc résiduel correspondant au bloc original diminué d'une prédiction. Les coefficients de ce bloc sont quantifiés après une éventuelle transformation, puis codés par un codeur entropique.  Current video encoders (MPEG, H264, ...) use a block representation of the video sequence. The images are divided into macroblocks, each macroblock is itself divided into blocks and each block, or macroblock, is coded by intra-image prediction or inter-image prediction. Thus, some images are coded by spatial prediction (intra prediction), while other images are coded by temporal prediction (inter prediction) with respect to one or more coded-decoded reference images, by means of compensation. in motion known to those skilled in the art. In addition, for each block can be coded a residual block corresponding to the original block minus a prediction. The coefficients of this block are quantized after a possible transformation, then coded by an entropic coder.
La prédiction intra et la prédiction inter nécessitent que certains blocs qui ont été précédemment codés et décodés soient disponibles, de façon à être utilisés, aussi bien au décodeur qu'au codeur, pour prédire le bloc courant. Un exemple schématique d'un tel codage prédictif est représenté à la figure 1 , dans laquelle une image lN est divisée en blocs, un bloc courant MB, de cette image étant soumis à un codage prédictif par rapport à un nombre prédéterminé de trois blocs MBr-ι, MBr2 et MBr3 précédemment codés et décodés, tels que désignés par les flèches grisées. Les trois blocs précités comprennent spécifiquement le bloc MBn situé immédiatement à gauche du bloc courant MB,, et les deux blocs MBr2 et MBr3 situés respectivement immédiatement au-dessus et à droite au-dessus du bloc courant MB,. Intra prediction and inter prediction require that some blocks that have been previously coded and decoded be available, so as to be used, both at the decoder and the encoder, to predict the current block. A schematic example of such a predictive coding is shown in FIG. 1, in which an image I N is divided into blocks, a current block MB of this image being subjected to a predictive coding with respect to a predetermined number of three blocks. MBr-ι, MBr 2 and MBr 3 previously coded and decoded, as indicated by the gray arrows. The three aforementioned blocks specifically include the MBn block located immediately to the left of the current block MB ,, and the two blocks MBr 2 and MBr 3 respectively located immediately above and to the right above the current block MB ,.
On s'intéresse ici plus particulièrement au codeur entropique. Le codeur entropique encode les informations suivant leur ordre d'arrivée. Typiquement un parcours ligne par ligne des blocs est réalisé, de type « raster-scan », comme illustré sur la figure 1 par la référence PRS, en partant du bloc en haut à gauche de l'image. Pour chaque bloc, les différentes informations nécessaires à la représentation du bloc (type de bloc, mode de prédiction, coefficients de résidu, ...) sont envoyées séquentiellement au codeur entropique.  We are interested here more particularly in the entropic coder. The entropic encoder encodes the information according to their order of arrival. Typically a line-by-line path of the blocks is made, of "raster-scan" type, as illustrated in FIG. 1 by the reference PRS, starting from the block at the top left of the image. For each block, the various information necessary for the representation of the block (block type, prediction mode, residual coefficients, ...) are sent sequentially to the entropy coder.
On connaît déjà un codeur arithmétique efficace et de complexité raisonnable, appelé « CABAC » ("Context Adaptive Binary Arithmetic Coder" en anglais), introduit dans le standard de compression AVC (aussi connu sous le nom de ISO-MPEG4 partie 10 et ITU-T H.264).  There is already known an efficient arithmetic coder of reasonable complexity, called CABAC (Context Adaptive Binary Arithmetic Coder), introduced in the AVC compression standard (also known as ISO-MPEG4 Part 10 and ITU-A). T H.264).
Ce codeur entropique met en œuvre différents concepts :  This entropic coder implements different concepts:
- le codage arithmétique : le codeur, tel que décrit initialement dans le document J. Rissanen and G. G. Langdon Jr, "Universal modeling and coding," IEEE Trans. Inform. Theory, vol. IT-27, pp. 12-23, Jan. 1981 , utilise, pour coder un symbole, une probabilité d'apparition de ce symbole ;  arithmetic coding: the coder, as initially described in J. Rissanen and G. G. Langdon, "Universal modeling and coding," IEEE Trans. Inform. Theory, vol. IT-27, pp. 12-23, Jan. 1981, uses, to encode a symbol, a probability of appearance of this symbol;
- l'adaptation au contexte : il s'agit ici d'adapter la probabilité d'apparition des symboles à coder. D'une part, un apprentissage à la volée est réalisé. D'autre part, suivant l'état des informations préalablement codées, un contexte spécifique est utilisé pour le codage. A chaque contexte correspond une probabilité d'apparition propre du symbole. Par exemple un contexte correspond à un type de symbole codé (la représentation d'un coefficient d'un résidu, signalisation de mode de codage, ...) suivant une configuration donnée, ou un état du voisinage (par exemple le nombre de modes « intra » sélectionnés dans le voisinage, ...) ;  - Adaptation to the context: it is a question of adapting the probability of appearance of the symbols to be coded. On the one hand, an on-the-fly learning is done. On the other hand, depending on the state of the previously coded information, a specific context is used for the coding. Each context corresponds to a probability of appearance of the symbol itself. For example, a context corresponds to a type of coded symbol (the representation of a coefficient of a residue, coding mode signaling, etc.) according to a given configuration, or a neighborhood state (for example the number of modes). "Intra" selected in the neighborhood, ...);
- la binarisation : une mise sous la forme d'une suite de bits des symboles à coder est réalisée. Par la suite, ces différents bits sont envoyés successivement au codeur entropique binaire.  binarization: a setting in the form of a sequence of bits of the symbols to be encoded is performed. Subsequently, these different bits are successively sent to the binary entropic coder.
Ainsi, ce codeur entropique met en œuvre, pour chaque contexte utilisé, un système d'apprentissage des probabilités à la volée par rapport aux symboles précédemment codés pour le contexte considéré. Cet apprentissage est basé sur l'ordre de codage de ces symboles. Typiquement, l'image est parcourue selon un ordre de type « raster-scan », décrit ci-dessus. Thus, this entropic coder implements, for each context used, a system for learning on-the-fly probabilities with respect to symbols previously coded for the context in question. This learning is based on the coding order of these symbols. Typically, the image is scanned according to a "raster-scan" type order, described above.
Lors du codage d'un symbole b donné pouvant valoir 0 ou 1 , l'apprentissage de la probabilité p, d'apparition de ce symbole est mis à jour pour un bloc courant MB, de la façon suivante: où a est une valeur prédéterminée, par exemple 0.95 et pM est la probabilité d'apparition de symbole calculée lors de la dernière apparition de ce symbole. When coding a given symbol b that can be 0 or 1, the learning of the probability p of appearance of this symbol is updated for a current block MB, as follows: where a is a predetermined value, for example 0.95 and p M is the probability of appearance of symbol calculated at the last appearance of this symbol.
Un exemple schématique d'un tel codage entropique est représenté à la figure 1 , dans laquelle un bloc courant MB, de l'image lN est soumis à un codage entropique. Lorsque le codage entropique du bloc MB, commence, les probabilités d'apparition de symboles utilisées sont celles obtenues après codage d'un bloc précédemment codé et décodé, qui est celui qui précède immédiatement le bloc courant MB, conformément au parcours ligne par ligne des blocs de type « raster scan » précité. Un tel apprentissage basé sur la dépendance bloc à bloc est représenté sur la figure 1 pour certains blocs seulement dans un souci de clarté de la figure, par les flèches en trait fin. A schematic example of such an entropy coding is shown in FIG. 1, in which a current block MB of the image 1 N is subjected to entropy coding. When the entropic coding of the block MB begins, the probabilities of appearance of symbols used are those obtained after coding a previously coded and decoded block, which is the one immediately preceding the current block MB, in accordance with the line-by-line blocks of the type "raster scan" supra. Such learning based block dependency is shown in Figure 1 for some blocks only for the sake of clarity of the figure, by the arrows fine line.
Un inconvénient d'un tel type de codage entropique réside dans le fait que lors du codage d'un symbole se situant en début d'une ligne, les probabilités utilisées correspondent principalement à celles observées pour les symboles se situant en fin de la ligne précédente, compte tenu du parcours « raster scan » des blocs. Or, du fait de la possible variation spatiale des probabilités des symboles (par exemple pour un symbole lié à une information de mouvement, le mouvement situé sur la partie droite d'une image peut être différent de celui observé sur la partie gauche et donc de même pour les probabilités locales en découlant), un manque d'adéquation locale des probabilités peut être observé, ce qui risque d'entraîner une perte en efficacité lors du codage. Pour limiter ce phénomène, des propositions de modifications de l'ordre de parcours des blocs ont été faites, dans le but d'assurer une meilleure cohérence locale, mais le codage et le décodage restent séquentiels. A disadvantage of such a type of entropy encoding lies in the fact that when encoding a symbol at the beginning of a line, the probabilities used correspond mainly to those observed for the symbols at the end of the previous line. , taking into account the "raster scan" path of the blocks. However, because of the possible spatial variation of the probabilities of the symbols (for example for a symbol linked to a movement information, the movement situated on the right part of an image may be different from that observed on the left part and therefore of even for the resulting local probabilities), a lack of local matching of the probabilities can be observed, which may lead to a loss of efficiency during coding. To limit this phenomenon, proposals for changes to the order of the blocks have been made, in order to ensure better local consistency, but the coding and decoding remain sequential.
C'est là un autre inconvénient de ce type de codeur entropique. En effet, le codage et le décodage d'un symbole étant dépendants de l'état de la probabilité apprise jusque-là, le décodage des symboles ne peut se faire que dans le même ordre que celui utilisé lors du codage. Typiquement, le décodage ne peut alors être que séquentiel, empêchant ainsi un décodage en parallèle de plusieurs symboles (par exemple pour profiter des architectures multi-cœur).  This is another disadvantage of this type of entropic coder. Indeed, the coding and the decoding of a symbol being dependent on the state of the probability learned so far, the decoding of the symbols can be done in the same order as that used during the coding. Typically, the decoding can then be only sequential, thus preventing a parallel decoding of several symbols (for example to take advantage of multi-core architectures).
Le document: Thomas Wiegand, Gary J. Sullivan, Gisle Bjontegaard, and Ajay Luthra, "Overview of the H.264/AVC Video Coding Standard", IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 7, pp. 560-576, July 2003, précise par ailleurs que le codeur entropique CABAC a pour particularité d'affecter un nombre non entier de bits à chaque symbole d'un alphabet courant à coder, ce qui est avantageux pour les probabilités d'apparition de symboles supérieure à 0,5. Concrètement, le codeur CABAC attend d'avoir lu plusieurs symboles, puis affecte à cet ensemble de symboles lus un nombre prédéterminé de bits que le codeur inscrit dans le flux compressé à transmettre au décodeur. Une telle disposition permet ainsi de « mutualiser » les bits sur plusieurs symboles et de coder un symbole sur un nombre fractionnaire de bits, ce nombre reflétant une information qui est plus proche de l'information réellement transportée par un symbole. D'autres bits associés aux symboles lus ne sont pas transmis dans le flux compressé mais sont conservés dans l'attente d'être affectés à un ou plusieurs nouveaux symboles lus par le codeur CABAC permettant à nouveau de mutualiser ces autres bits. De façon connue en tant que telle, le codeur entropique procède, à un instant donné, à une « vidange » de ces bits non transmis. Autrement dit, audit instant donné, le codeur extrait les bits non encore transmis et les inscrit dans le flux compressé à destination du décodeur. Une telle vidange se produit par exemple à l'instant où le dernier symbole à coder a été lu, de façon à assurer que le flux compressé contienne bien tous les bits qui permettront au décodeur de décoder tous les symboles de l'alphabet. De façon plus générale, l'instant auquel est effectuée la vidange est déterminé en fonction des performances et des fonctionnalités propres à un codeur/décodeur donné. The document: Thomas Wiegand, Gary J. Sullivan, Gisle Bjontegaard, and Ajay Luthra, "Overview of the H.264 / Video Coding Standard", IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 7, pp. 560-576, July 2003, further specifies that the entropic coder CABAC has the particularity of assigning a non-integer number of bits to each symbol of a current alphabet to be encoded, which is advantageous for the probabilities of appearance of symbols. greater than 0.5. Specifically, the CABAC encoder waits to read several symbols, then assigns to this set of symbols read a predetermined number of bits that the encoder registered in the compressed stream to be transmitted to the decoder. Such an arrangement thus makes it possible to "mutualize" the bits over several symbols and to encode a symbol on a fractional number of bits, this number reflecting information that is closer to the information actually conveyed by a symbol. Other bits associated with the symbols read are not transmitted in the compressed stream but are kept waiting to be assigned to one or more new symbols read by the CABAC coder again to mutualize these other bits. In a manner known per se, the entropic coder proceeds at a given instant to "emptying" these non-transmitted bits. In other words, at said given instant, the encoder extracts the bits not yet transmitted and writes them in the compressed stream to the decoder. Such emptying occurs for example at the moment when the last symbol to be coded has been read, so as to ensure that the compressed stream contains all the bits that will allow the decoder to decode all the symbols of the alphabet. In a general view, the time at which the drain is performed is determined by the performance and functionality of a particular encoder / decoder.
Le document, qui est disponible à l'adresse Internet http://research.microsoft.com/en-us/um/people/iinl/paper 2002/msri jpeg.htm à la date du 15 avril 201 1 , décrit un procédé de codage d'images fixes conforme au standard de compression JPEG2000. Selon ce procédé, les données d'image fixe subissent une transformée en ondelettes discrète suivie d'une quantification, ce qui permet d'obtenir des coefficients d'ondelettes quantifiés auxquels sont associés respectivement des index de quantification. Les index de quantification obtenus sont codés à l'aide d'un codeur entropique. Les coefficients quantifiés sont préalablement groupés en bloc rectangulaires appelés code-blocks, typiquement de taille 64x64 ou 32x32. Chaque code- block est ensuite codé indépendamment par codage entropique. Ainsi, le codeur entropique, lorsqu'il procède au codage d'un code-block courant, n'utilise pas les probabilités d'apparition de symboles calculées lors du codage de code-blocks précédents. Le codeur entropique se trouve donc dans un état initialisé à chaque début de codage d'un code-block. Un tel procédé présente l'avantage de décoder les données d'un code-block sans avoir à décoder les code-blocks voisins. Ainsi par exemple, un logiciel client peut requérir auprès d'un logiciel serveur la fourniture des code-blocks compressés dont le client a uniquement besoin pour décoder une sous-partie identifiée d'une image. Un tel procédé présente également l'avantage d'autoriser l'encodage et/ou le décodage en parallèle des code-blocks. Ainsi, plus les code-blocks sont de petite taille, plus le niveau de parallélisme est élevé. Par exemple, pour un niveau de parallélisme fixé à deux, deux code-blocks seront codés et/ou décodés en parallèle. En théorie, la valeur du niveau de parallélisme est égale au nombre de code-blocks à coder de l'image. Toutefois, les performances de compression obtenues avec ce procédé ne sont pas optimales compte tenu du fait qu'un tel codage ne tire pas partie des probabilités issues de l'environnement immédiat du code-block courant. Objet et résumé de l'invention The document, which is available at http://research.microsoft.com/en-us/um/people/iinl/paper 2002 / msri jpeg.htm as of April 15, 201 1, describes a process still image encoding compliant with the JPEG2000 compression standard. In this method, the still image data undergo discrete wavelet transform followed by quantization, thereby obtaining quantized wavelet coefficients to which quantization indices are respectively associated. Quantization indices obtained are encoded using an entropy coder. The quantized coefficients are previously grouped in rectangular blocks called codeblocks, typically of size 64x64 or 32x32. Each codeblock is then independently encoded by entropy coding. Thus, the entropic coder, when coding a current block code, does not use the appearance probabilities of symbols calculated during the coding of previous codeblocks. The entropic coder is therefore in a state initialized at the beginning of coding a code-block. Such a method has the advantage of decoding the data of a code-block without having to decode neighboring code blocks. For example, client software may require server software to provide compressed codeblocks that the client only needs to decode an identified sub-part of an image. Such a method also has the advantage of authorizing the encoding and / or the decoding in parallel of the code blocks. Thus, the smaller the code-blocks, the higher the level of parallelism. For example, for a level of parallelism set at two, two codeblocks will be encoded and / or decoded in parallel. In theory, the value of the level of parallelism is equal to the number of code blocks to be encoded in the image. However, the compression performance obtained with this method is not optimal considering that such a coding does not take advantage of probabilities arising from the immediate environment of the current code-block. Object and summary of the invention
Un des buts de l'invention est de remédier à des inconvénients de l'état de la technique précité.  One of the aims of the invention is to overcome disadvantages of the state of the art mentioned above.
A cet effet, un objet de la présente invention concerne un procédé de codage d'au moins une image comprenant les étapes de :  For this purpose, an object of the present invention relates to a method of encoding at least one image comprising the steps of:
- découpage de l'image en une pluralité de blocs aptes à contenir des symboles appartenant à un ensemble prédéterminé de symboles,  - cutting the image into a plurality of blocks able to contain symbols belonging to a predetermined set of symbols,
- regroupement de blocs en un nombre prédéterminé de sous- ensembles de blocs,  grouping blocks into a predetermined number of subsets of blocks,
- codage, au moyen d'un module de codage entropique, de chacun des sous-ensembles de blocs, par association d'informations numériques aux symboles de chaque bloc d'un sous-ensemble considéré, l'étape de codage comprenant, pour le premier bloc de l'image, une sous-étape d'initialisation de variables d'état du module de codage entropique,  coding, by means of an entropy coding module, of each of the subsets of blocks, by association of digital information with the symbols of each block of a subset considered, the coding step comprising, for the first block of the image, a substep of initialization of state variables of the entropy coding module,
- génération d'au moins un sous-flux de données représentatif d'au moins un des sous-ensembles de blocs codés.  generating at least one sub-data stream representative of at least one of the coded block subsets.
Le procédé selon l'invention est remarquable en ce que :  The process according to the invention is remarkable in that:
- dans le cas où le bloc courant est le premier bloc à coder d'un sous-ensemble considéré, il est procédé à la détermination de probabilités d'apparition de symbole pour le premier bloc courant, les probabilités étant celles qui ont été déterminées pour un bloc prédéterminé codé et décodé d'au moins un autre sous-ensemble,  in the case where the current block is the first block to code a subset considered, it is proceeded to the determination of symbol occurrence probabilities for the first current block, the probabilities being those which have been determined for a predetermined coded and decoded block of at least one other subset,
- dans le cas où le bloc courant est le dernier bloc codé du sous- ensemble considéré il est procédé à:  in the case where the current block is the last coded block of the subset considered, it is proceeded to:
· l'écriture, dans le sous-flux représentatif du sous-ensemble considéré, de la totalité des informations numériques qui ont été associées aux symboles lors du codage des blocs du sous-ensemble considéré,  · Writing, in the representative sub-stream of the subset considered, all the digital information that has been associated with the symbols during the coding of the blocks of the subset considered,
• la mise en œuvre de la sous-étape d'initialisation.  • the implementation of the initialization sub-step.
L'étape d'écriture mentionnée ci-dessus revient à effectuer, dès que le dernier bloc d'un sous-ensemble de blocs a été codé, une vidange des informations numériques (bits) non encore transmises, comme cela a été expliqué plus haut dans la description. Le couplage de l'étape d'écriture précitée et de l'étape de réinitialisation du module de codage entropique permet de produire un flux de données codé contenant différents sous-flux de données correspondant respectivement à au moins un sous-ensemble de blocs codé, ledit flux étant adapté à être décodé en parallèle selon différents niveaux de parallélisme, et cela indépendamment du type de codage, séquentiel ou parallèle, qui a été appliqué aux sous- ensembles de blocs. Ainsi, un grand degré de liberté peut être obtenu au décodage sur le choix du niveau de parallélisme, en fonction des performances de codage/décodage attendues. Le niveau de parallélisme au décodage est variable et peut même être différent du niveau de parallélisme au codage, puisque au démarrage du décodage d'un sous-ensemble de blocs, le décodeur est toujours dans un état initialisé. The writing step mentioned above amounts to carrying out, as soon as the last block of a subset of blocks has been coded, an emptying of the digital information (bits) not yet transmitted, as explained above. in the description. Coupling the aforementioned write step and the entropy coding module reset step produces an encoded data stream containing different data sub-streams corresponding to at least one coded block subset, respectively. said stream being adapted to be decoded in parallel according to different levels of parallelism, regardless of the type of coding, sequential or parallel, which has been applied to the subsets of blocks. Thus, a large degree of freedom can be obtained at decoding on the choice of the level of parallelism, according to the expected coding / decoding performance. The level of parallelism to the decoding is variable and may even be different from the level of parallelism with the coding, since at the start of the decoding of a subset of blocks, the decoder is always in an initialized state.
Selon un premier exemple, les variables d'état du module de codage entropique sont les deux bornes d'un intervalle représentatif de la probabilité d'apparition d'un symbole parmi les symboles de l'ensemble prédéterminé de symboles.  According to a first example, the state variables of the entropy coding module are the two terminals of an interval representative of the probability of appearance of a symbol among the symbols of the predetermined set of symbols.
Selon un deuxième exemple, les variables d'état du module de codage entropique sont les chaînes de symboles contenues dans la table de traduction d'un codeur entropique LZW (Lempel-Ziv-Welch) bien connu de l'homme de l'art, et décrit à l'adresse internet suivante à la date du 21 juin 201 1 : http://en.wikipedia.orq/wiki/lempel%E2%80%93Ziv%E2%80%93Weich.  According to a second example, the state variables of the entropy coding module are the symbol strings contained in the translation table of a LZW entrapment coder (Lempel-Ziv-Welch) well known to those skilled in the art, and described at the following internet address as of June 21, 201 1: http: //en.wikipedia.orq/wiki/lempel%E2%80%93Ziv%E2%80%93Weich.
L'utilisation des probabilités d'apparition de symbole déterminées pour le premier bloc dudit autre sous-ensemble lors du codage entropique du premier bloc courant d'un sous-ensemble de blocs considéré a principalement pour avantage d'économiser la mémoire tampon du codeur en stockant dans cette dernière uniquement la mise à jour desdites probabilités d'apparition de symboles, sans prendre en compte les probabilités d'apparition de symboles apprises par les autres blocs consécutifs dudit autre sous-ensemble.  The use of the symbol occurrence probabilities determined for the first block of said other subset during the entropy coding of the first current block of a subset of blocks considered mainly has the advantage of saving the buffer memory of the encoder by storing in the latter only updating said probabilities of appearance of symbols, without taking into account the probabilities of appearance of symbols learned by the other consecutive blocks of said other subset.
L'utilisation des probabilités d'apparition de symbole déterminées pour un bloc dudit autre sous-ensemble, autre que le premier bloc, par exemple le deuxième bloc, lors du codage entropique du premier bloc courant d'un sous- ensemble de blocs considéré a principalement pour avantage l'obtention d'un apprentissage plus précis et donc meilleur des probabilités d'apparition de symboles, ce qui entraîne de meilleures performances de compression vidéo. The use of the symbol occurrence probabilities determined for a block of said other subset, other than the first block, for example the second block, during the entropic coding of the first current block of a subset of blocks considered a mainly for the benefit of obtaining a more accurate learning and therefore better probability of occurrence of symbols, resulting in better video compression performance.
Dans un mode de réalisation particulier, les sous-ensembles de blocs sont codés séquentiellement ou bien en parallèle.  In a particular embodiment, the subsets of blocks are coded sequentially or in parallel.
Le fait que les sous-ensembles de blocs soient codés séquentiellement a pour avantage de rendre le procédé de codage selon l'invention conforme à la norme H.264/MPEG-4 AVC.  The fact that the block subsets are coded sequentially has the advantage of making the coding method according to the invention in accordance with the H.264 / MPEG-4 AVC standard.
Le fait que les sous-ensembles de blocs soient codés en parallèle a pour avantage d'accélérer le temps de traitement du codeur et de bénéficier d'une architecture multiplateforme pour le codage d'une image.  The fact that the block subsets are coded in parallel has the advantage of accelerating the encoder processing time and benefiting from a multiplatform architecture for coding an image.
Dans un autre mode de réalisation particulier, lorsqu'au moins deux sous-ensembles de blocs sont codés parallèlement à au moins un autre sous- ensemble de blocs, les au moins deux sous-ensembles de blocs codés sont contenus dans le même sous-flux de données.  In another particular embodiment, when at least two subsets of blocks are coded parallel to at least one other subset of blocks, the at least two subsets of coded blocks are contained in the same sub-stream. of data.
Une telle disposition permet en particulier d'économiser sur la signalisation des sous-flux de données. En effet, pour qu'une unité de décodage puisse décoder le plus tôt possible un sous-flux, il est nécessaire d'indiquer dans le fichier compressé à quel endroit commence le sous-flux en question. Lorsque plusieurs sous-ensembles de blocs sont contenus dans le même sous-flux de données, un seul indicateur est nécessaire, ce qui réduit la taille du fichier compressé.  Such an arrangement makes it possible in particular to save on the signaling of the sub-data streams. In fact, for a decoding unit to be able to decode a sub-stream as soon as possible, it is necessary to indicate in the compressed file where the sub-stream in question begins. When multiple subsets of blocks are contained in the same data sub-stream, only one flag is needed, which reduces the size of the compressed file.
Dans encore un autre mode de réalisation particulier, lorsque les sous- ensembles de blocs codés sont destinés à être décodés en parallèle selon un ordre prédéterminé, les sous-flux de données délivrés après codage respectivement de chacun des sous-ensembles de blocs sont préalablement ordonnés selon l'ordre prédéterminé avant d'être transmis en vue de leur décodage.  In yet another particular embodiment, when the subsets of coded blocks are intended to be decoded in parallel according to a predetermined order, the sub-data streams delivered after coding respectively of each of the subsets of blocks are previously ordered. in the predetermined order before being transmitted for decoding.
Une telle disposition permet d'adapter le flux de données codé à un type de décodage spécifique sans avoir besoin de décoder puis de ré-encoder l'image.  Such an arrangement makes it possible to adapt the coded data stream to a specific type of decoding without the need to decode and re-encode the image.
Corrélativement, l'invention concerne encore un dispositif de codage d'au moins une image comprenant : - des moyens de découpage de l'image en une pluralité de blocs aptes à contenir des symboles appartenant à un ensemble prédéterminé de symboles, Correlatively, the invention also relates to a device for coding at least one image comprising: means for cutting the image into a plurality of blocks able to contain symbols belonging to a predetermined set of symbols,
- des moyens de regroupement des blocs en un nombre prédéterminé de sous-ensembles de blocs,  means for grouping the blocks into a predetermined number of subsets of blocks,
- des moyens de codage de chacun des sous-ensembles de blocs, les moyens de codage comprenant un module de codage entropique apte à associer des informations numériques aux symboles de chaque bloc d'un sous-ensemble considéré, les moyens de codage comprenant, pour le premier bloc de l'image, des sous-moyens d'initialisation de variables d'état du module de codage entropique,  coding means for each of the subsets of blocks, the coding means comprising an entropy coding module able to associate digital information with the symbols of each block of a subset considered, the coding means comprising, for the first block of the image, means of initialization of state variables of the entropy coding module,
- des moyens de génération d'au moins un sous-flux de données représentatif d'au moins un des sous-ensembles de blocs codés.  means for generating at least one data sub-stream representative of at least one of the coded block subsets.
Un tel dispositif de codage est remarquable en ce qu'il comprend :  Such a coding device is remarkable in that it comprises:
- des moyens de détermination de probabilités d'apparition de symbole pour un bloc courant qui, dans le cas où le bloc courant est le premier bloc à coder d'un sous-ensemble considéré, déterminent les probabilités d'apparition de symbole pour le premier bloc comme étant celles qui ont été déterminées pour un bloc prédéterminé codé et décodé d'au moins un autre sous-ensemble,  means for determining symbol appearance probabilities for a current block which, in the case where the current block is the first block to be encoded for a considered subset, determine the symbol appearance probabilities for the first block block as those which have been determined for a predetermined coded and decoded block of at least one other subset,
- des moyens d'écriture qui, dans le cas où le bloc courant est le dernier bloc codé du sous-ensemble considéré, sont activés pour écrire, dans le sous-flux représentatif du sous-ensemble considéré, la totalité des informations numériques qui ont été associées aux symboles lors du codage des blocs du sous-ensemble considéré,  writing means which, in the case where the current block is the last coded block of the subset considered, are activated to write, in the sub-stream representative of the subset considered, all the digital information which has have been associated with the symbols during the coding of the blocks of the subset considered,
les sous-moyens d'initialisation étant en outre activés pour réinitialiser les variables d'état du module de codage entropique. the initialization sub-means being further activated to reset the state variables of the entropy coding module.
De façon correspondante, l'invention concerne aussi un procédé de décodage d'un flux représentatif d'au moins une image codée, comprenant les étapes de :  Correspondingly, the invention also relates to a method for decoding a representative stream of at least one coded picture, comprising the steps of:
- identification dans le flux d'un nombre prédéterminé de sous-flux de données correspondant respectivement à au moins un sous-ensemble de blocs à décoder, les blocs étant aptes à contenir des symboles appartenant à un ensemble prédéterminé de symboles, identification in the stream of a predetermined number of sub-data streams respectively corresponding to at least one subset of blocks to be decoded, the blocks being able to contain symbols belonging to a predetermined set of symbols,
- décodage des sous-ensembles de blocs identifiés au moyen d'un module de décodage entropique, par lecture, dans au moins un des sous- flux identifiés, d'informations numériques associées aux symboles de chaque bloc du sous-ensemble correspondant audit au moins un sous-flux identifié, l'étape de décodage comprenant, pour le premier bloc à décoder de l'image, une sous-étape d'initialisation de variables d'état du module de décodage entropique.  decoding the subsets of blocks identified by means of an entropy decoding module, by reading, in at least one of the identified substreams, digital information associated with the symbols of each block of the subset corresponding to the at least one an identified substream, the decoding step comprising, for the first block to be decoded from the image, a substep of initialization of state variables of the entropy decoding module.
Un tel procédé de décodage est remarquable en ce que :  Such a decoding method is remarkable in that:
- dans le cas où le bloc courant est le premier bloc à décoder d'un sous-ensemble considéré, il est procédé à la détermination de probabilités d'apparition de symbole pour le premier bloc du sous-ensemble considéré, les probabilités étant celles qui ont été déterminées pour un bloc prédéterminé décodé d'au moins un autre sous-ensemble,  in the case where the current block is the first block to be decoded from a subset considered, it is proceeded to the determination of symbol occurrence probabilities for the first block of the subset considered, the probabilities being those which have been determined for a predetermined decoded block of at least one other subset,
- dans le cas où le bloc courant est le dernier bloc décodé du sous-ensemble considéré, il est procédé à la mise en œuvre de la sous-étape d'initialisation.  - In the case where the current block is the last decoded block of the subset considered, it is proceeded to the implementation of the initialization sub-step.
Dans un mode de réalisation particulier, les sous-ensembles de blocs sont décodés séquentiellement ou bien en parallèle.  In a particular embodiment, the subsets of blocks are decoded sequentially or in parallel.
Dans un autre mode de réalisation particulier, lorsqu'au moins deux sous-ensembles de blocs sont décodés parallèlement à au moins un autre sous-ensemble de blocs, un des sous-flux de données identifiés est représentatif des au moins deux sous-ensembles de blocs.  In another particular embodiment, when at least two subsets of blocks are decoded in parallel with at least one other subset of blocks, one of the identified data substreams is representative of the at least two subsets of blocks.
Dans encore un autre mode de réalisation particulier, lorsque les sous- ensembles de blocs codés sont destinés à être décodés en parallèle selon un ordre prédéterminé, les sous-flux de données correspondant respectivement aux sous-ensembles de blocs codés sont ordonnés préalablement selon ledit ordre prédéterminé dans ledit flux à décoder.  In yet another particular embodiment, when the subsets of coded blocks are intended to be decoded in parallel in a predetermined order, the sub-data streams respectively corresponding to the subsets of coded blocks are previously ordered according to said order predetermined in said stream to be decoded.
Corrélativement, l'invention concerne encore un dispositif de décodage d'un flux représentatif d'au moins une image codée, comprenant :  Correlatively, the invention further relates to a device for decoding a representative stream of at least one coded picture, comprising:
- des moyens d'identification dans le flux d'un nombre prédéterminé de sous-flux de données correspondant respectivement à au moins un sous-ensemble de blocs à décoder, les blocs étant aptes à contenir des symboles appartenant à un ensemble prédéterminé de symboles, means for identifying in the stream a predetermined number of data sub-streams respectively corresponding to the minus a subset of blocks to be decoded, the blocks being able to contain symbols belonging to a predetermined set of symbols,
- des moyens de décodage des sous-ensembles de blocs identifiés, les moyens de décodage comprenant un module de décodage entropique apte à lire, dans au moins un des sous-flux identifiés, des informations numériques associées aux symboles de chaque bloc du sous- ensemble correspondant audit au moins un sous-flux identifié, les moyens de décodage comprenant, pour le premier bloc à décoder de l'image, des sous- moyens d'initialisation de variables d'état du module de décodage entropique.  means for decoding the subsets of identified blocks, the decoding means comprising an entropy decoding module capable of reading, in at least one of the identified subflows, digital information associated with the symbols of each block of the subset; corresponding to said at least one identified sub-stream, the decoding means comprising, for the first block to be decoded from the image, initialization sub-means of state variables of the entropy decoding module.
Un tel dispositif de décodage est remarquable en ce qu'il comprend des moyens de détermination de probabilités d'apparition de symbole pour un bloc courant qui, dans le cas où le bloc courant est le premier bloc à décoder d'un sous-ensemble considéré, déterminent les probabilités d'apparition de symbole pour le premier bloc comme étant celles qui ont été déterminées pour un bloc prédéterminé décodé d'au moins un autre sous-ensemble,  Such a decoding device is remarkable in that it comprises means for determining probabilities of symbol appearance for a current block which, in the case where the current block is the first block to be decoded of a considered subset. , determine the symbol occurrence probabilities for the first block as those determined for a decoded predetermined block of at least one other subset,
et en ce que dans le cas où le bloc courant est le dernier bloc décodé du sous- ensemble considéré, les sous-moyens d'initialisation sont activés pour réinitialiser les variables d'état du module de décodage entropique. and in that in the case where the current block is the last decoded block of the subset considered, the initialization sub-means are activated to reset the state variables of the entropy decoding module.
L'invention vise également un programme d'ordinateur comportant des instructions pour l'exécution des étapes du procédé de codage ou de décodage ci-dessus, lorsque le programme est exécuté par un ordinateur.  The invention also relates to a computer program comprising instructions for executing the steps of the above coding or decoding method, when the program is executed by a computer.
Un tel programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable.  Such a program can use any programming language, and be in the form of source code, object code, or intermediate code between source code and object code, such as in a partially compiled form, or in any another desirable form.
Encore un autre objet de l'invention vise aussi un support d'enregistrement lisible par un ordinateur, et comportant des instructions de programme d'ordinateur tel que mentionné ci-dessus.  Still another object of the invention is directed to a computer readable recording medium, and including computer program instructions as mentioned above.
Le support d'enregistrement peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, un tel support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple une disquette (floppy dise) ou un disque dur. D'autre part, un tel support d'enregistrement peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. The recording medium may be any entity or device capable of storing the program. For example, such a medium may comprise storage means, such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or a magnetic recording medium, for example a floppy disk or a Hard disk. On the other hand, such a recording medium may be a transmissible medium such as an electrical or optical signal, which may be conveyed via an electrical or optical cable, by radio or by other means. The program according to the invention can be downloaded in particular on an Internet type network.
Alternativement, un tel support d'enregistrement peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter le procédé en question ou pour être utilisé dans l'exécution de ce dernier.  Alternatively, such a recording medium may be an integrated circuit in which the program is incorporated, the circuit being adapted to execute the method in question or to be used in the execution of the latter.
Le dispositif de codage, le procédé de décodage, le dispositif de décodage et les programmes d'ordinateur précités présentent au moins les mêmes avantages que ceux conférés par le procédé de codage selon la présente invention. Brève description des dessins  The coding device, the decoding method, the decoding device and the aforementioned computer programs have at least the same advantages as those conferred by the coding method according to the present invention. Brief description of the drawings
D'autres caractéristiques et avantages apparaîtront à la lecture de deux modes de réalisation préférés décrits en référence aux figures dans lesquelles:  Other features and advantages will appear on reading two preferred embodiments described with reference to the figures in which:
- la figure 1 représente un schéma de codage d'image de l'art antérieur,  FIG. 1 represents an image coding scheme of the prior art,
- la figure 2A représente les principales étapes du procédé de codage selon l'invention,  FIG. 2A represents the main steps of the coding method according to the invention,
- la figure 2B représente en détail le codage mis en œuvre dans le procédé de codage de la figure 2A,  FIG. 2B shows in detail the coding implemented in the coding method of FIG. 2A,
- la figure 3A représente un premier mode de réalisation d'un dispositif de codage selon l'invention,  FIG. 3A represents a first embodiment of a coding device according to the invention,
- la figure 3B représente une unité de codage du dispositif de codage de la figure 3A,  FIG. 3B represents a coding unit of the coding device of FIG. 3A,
- la figure 3C représente un second mode de réalisation d'un dispositif de codage selon l'invention,  FIG. 3C represents a second embodiment of a coding device according to the invention,
- la figure 4A représente un schéma de codage/décodage d'image selon un premier mode de réalisation préférentiel,  FIG. 4A represents an image coding / decoding scheme according to a first preferred embodiment,
- la figure 4B représente un schéma de codage/décodage d'image selon un deuxième mode de réalisation préférentiel, - la figure 5A représente les principales étapes du procédé de décodage selon l'invention, FIG. 4B represents an image coding / decoding scheme according to a second preferred embodiment, FIG. 5A represents the main steps of the decoding method according to the invention,
- la figure 5B représente en détail le décodage mis en œuvre dans le procédé de décodage de la figure 5A,  FIG. 5B shows in detail the decoding implemented in the decoding method of FIG. 5A,
- la figure 6A représente un mode de réalisation d'un dispositif de décodage selon l'invention,  FIG. 6A represents an embodiment of a decoding device according to the invention,
- la figure 6B représente une unité de décodage du dispositif de décodage de la figure 6A,  FIG. 6B represents a decoding unit of the decoding device of FIG. 6A,
- la figure 7A représente un schéma de codage/décodage d'image mettant en œuvre un codage de type séquentiel et un décodage de type parallèle,  FIG. 7A represents an image coding / decoding scheme implementing a sequential type coding and a parallel type decoding,
- la figure 7B représente un schéma de codage/décodage d'image mettant en œuvre un codage/décodage de type parallèle, avec respectivement des niveaux de parallélisme différents.  FIG. 7B represents an image coding / decoding scheme implementing a parallel type coding / decoding, with different levels of parallelism respectively.
Description détaillée d'un premier mode de réalisation de la partie codage Detailed description of a first embodiment of the coding part
Un mode de réalisation de l'invention va maintenant être décrit, dans lequel le procédé de codage selon l'invention est utilisé pour coder une séquence d'images selon un flux binaire proche de celui qu'on obtient par un codage selon la norme H.264/MPEG-4 AVC. Dans ce mode de réalisation, le procédé de codage selon l'invention est par exemple implémenté de manière logicielle ou matérielle par modifications d'un codeur initialement conforme à la norme H.264/MPEG-4 AVC. Le procédé de codage selon l'invention est représenté sous la forme d'un algorithme comportant des étapes C1 à C5, représentées à la figure 2A.  An embodiment of the invention will now be described, in which the coding method according to the invention is used to code a sequence of images according to a bit stream close to that obtained by a coding according to the H standard. .264 / MPEG-4 AVC. In this embodiment, the coding method according to the invention is for example implemented in a software or hardware way by modifications of an encoder initially compliant with the H.264 / MPEG-4 AVC standard. The coding method according to the invention is represented in the form of an algorithm comprising steps C1 to C5, represented in FIG. 2A.
Selon le mode de réalisation de l'invention, le procédé de codage selon l'invention est implémenté dans un dispositif de codage CO dont deux modes de réalisation sont représentés respectivement sur les figures 3A et 3C.  According to the embodiment of the invention, the coding method according to the invention is implemented in a coding device CO, two embodiments of which are respectively represented in FIGS. 3A and 3C.
En référence à la figure 2A, la première étape de codage C1 est le découpage d'une image IE d'une séquence d'images à coder en une pluralité de blocs ou macro-blocs MB, comme représenté sur la figure 4A ou 4B. Lesdits macro-blocs sont aptes à contenir un ou plusieurs symboles, lesdits symboles faisant partie d'un ensemble prédéterminé de symboles. Dans les exemples représentés, lesdits blocs MB ont une forme carrée et ont tous la même taille. En fonction de la taille de l'image qui n'est pas forcément un multiple de la taille des blocs, les derniers blocs à gauche et les derniers blocs en bas peuvent ne pas être carrés. Dans un mode alternatif de réalisation, les blocs peuvent être par exemple de taille rectangulaire et/ou non alignés les uns avec les autres. With reference to FIG. 2A, the first coding step C1 is the division of an image IE of an image sequence to be encoded into a plurality of blocks or macroblocks MB, as represented in FIG. 4A or 4B. Said macroblocks are capable of containing one or more symbols, said symbols forming part of a predetermined set of symbols. In the examples shown, said MB blocks have a square shape and are all the same size. Depending on the size of the image that is not necessarily a multiple of the size of the blocks, the last blocks on the left and the last blocks on the bottom may not be square. In an alternative embodiment, the blocks may be for example of rectangular size and / or not aligned with each other.
Chaque bloc ou macrobloc peut par ailleurs être lui-même divisé en sous blocs qui sont eux-mêmes subdivisibles.  Each block or macroblock can also be itself divided into sub-blocks that are themselves subdividable.
Un tel découpage est effectué par un module PCO de partitionnement représenté à la figure 3A qui utilise par exemple un algorithme de partitionnement bien connu en tant que tel.  Such splitting is performed by a partitioning PCO module shown in FIG. 3A which uses, for example, a partitioning algorithm that is well known as such.
En référence à la figure 2A, la deuxième étape de codage C2 est le regroupement des blocs précités en un nombre prédéterminé P de sous- ensembles de blocs consécutifs SE1 , SE2,.., SEk, ...,SEP destinés à être codés séquentiellement ou en parallèle. Dans les exemples représentés sur les figures 4A et 4B, P=6, mais seuls quatre sous-ensembles SE1 , SE2, SE3, SE4, sont représentés dans un souci de clarté des figures. Ces quatre sous- ensembles de blocs sont chacun représentés en trait pointillé et sont constitués respectivement par les quatre premières lignes de blocs de l'image IE.  With reference to FIG. 2A, the second coding step C2 is the grouping of the aforementioned blocks into a predetermined number P of consecutive subsets of blocks SE1, SE2,..., SEk,..., SEP intended to be coded sequentially. or in parallel. In the examples shown in FIGS. 4A and 4B, P = 6, but only four subsets SE1, SE2, SE3, SE4 are shown for the sake of clarity of the figures. These four subsets of blocks are each represented in dashed line and consist respectively of the first four block lines of the image IE.
Un tel regroupement est effectué par un module de calcul GRCO représenté à la figure 3A, à l'aide d'un algorithme bien connu en soi.  Such a grouping is performed by a GRCO calculation module represented in FIG. 3A, using a well-known algorithm per se.
En référence à la figure 2A, la troisième étape de codage C3 consiste dans le codage de chacun desdits sous-ensembles de blocs SE1 à SE6, les blocs d'un sous-ensemble considéré étant codés selon un ordre de parcours PS prédéterminé, qui est par exemple de type séquentiel. Dans les exemples représentés sur les figures 4A et 4B, les blocs d'un sous-ensemble SEk courant (1≤k≤P) sont codés les uns après les autres, de la gauche vers la droite, comme indiqué par la flèche PS.  With reference to FIG. 2A, the third coding step C3 consists in the coding of each of said subsets of blocks SE1 to SE6, the blocks of a subset considered being coded according to a predetermined PS travel order, which is for example of sequential type. In the examples shown in Figures 4A and 4B, the blocks of a subset SEk current (1≤k≤P) are coded one after the other, from left to right, as indicated by the arrow PS.
Selon une première variante, un tel codage est du type séquentiel et est mis en œuvre par une seule unité de codage UC tel que représentée sur la figure 3A. De façon connue en tant que telle, le codeur CO comprend une mémoire tampon MT qui est adaptée pour contenir les probabilités d'apparition de symboles telles que progressivement remises à jour au fur et à mesure du codage d'un bloc courant. According to a first variant, such an encoding is of the sequential type and is implemented by a single coding unit UC as represented in FIG. 3A. In a manner known per se, the coder CO comprises a buffer MT which is adapted to contain the probability of appearance of symbols such as progressively updated as and when encoding a current block.
Comme représenté plus en détail sur la figure 3B, l'unité de codage UC comprend :  As shown in more detail in FIG. 3B, the coding unit UC comprises:
• un module de codage prédictif d'un bloc courant par rapport à au moins un bloc précédemment codé et décodé, notée MCP;  A coding module predictive of a current block with respect to at least one previously coded and decoded block, denoted MCP;
• un module de codage entropique dudit bloc courant par utilisation d'au moins une probabilité d'apparition de symbole calculée pour ledit bloc précédemment codé et décodé, notée MCE. An entropy coding module of said current block by using at least one symbol appearance probability calculated for said previously coded and decoded block, denoted ECM.
Le module de codage prédictif MCP est un module logiciel qui est apte à effectuer un codage prédictif du bloc courant, selon les techniques de prédiction classiques, telles que par exemple en mode Intra et/ou Inter. The predictive coding module MCP is a software module that is able to carry out a predictive coding of the current block, according to conventional prediction techniques, such as for example in Intra and / or Inter mode.
Le module de codage entropique MCE est quant à lui de type CABAC, mais modifié selon la présente invention comme cela sera décrit plus loin dans la description.  The entropic coding module MCE is CABAC type, but modified according to the present invention as will be described later in the description.
En variante, le module de codage entropique MCE pourrait être un codeur de Huffman connu en tant que tel.  Alternatively, the entropic coding module MCE could be a Huffman coder known as such.
Dans les exemples représentés sur les figures 4A et 4B, l'unité UC code les blocs de la première ligne SE1 , de gauche à droite. Lorsqu'elle parvient au dernier bloc de la première ligne SE1 , elle passe au premier bloc de la deuxième ligne SE2. Lorsqu'elle parvient au dernier bloc de la deuxième ligne SE2, elle passe au premier bloc de la troisième ligne SE3. Lorsqu'elle parvient au dernier bloc de la troisième ligne SE3, elle passe au premier bloc de la quatrième ligne SE4, et ainsi de suite jusqu'à ce que le dernier bloc de l'image IE soit codé.  In the examples shown in FIGS. 4A and 4B, the unit UC encodes the blocks of the first line SE1, from left to right. When it reaches the last block of the first line SE1, it goes to the first block of the second line SE2. When it reaches the last block of the second line SE2, it goes to the first block of the third line SE3. When it reaches the last block of the third line SE3, it goes to the first block of the fourth line SE4, and so on until the last block of the image IE is coded.
D'autres types de parcours que celui qui vient d'être décrit ci-dessus sont bien sûr possibles. Ainsi, il est possible de découper l'image IE en plusieurs sous-images et d'appliquer indépendamment un découpage de ce type sur chaque sous-image. Il est également possible pour l'unité de codage de traiter non pas une succession de lignes, comme expliqué ci-dessus, mais une succession de colonnes. Il est également possible de parcourir les lignes ou colonnes dans un sens ou dans l'autre. Other types of course than the one just described above are of course possible. Thus, it is possible to cut the IE image into several sub-images and to independently apply a division of this type on each sub-image. It is also possible for the coding unit to process not a succession of lines, as explained above, but a succession of columns. It is also possible to browse the rows or columns in one direction or the other.
Selon une seconde variante, un tel codage est du type parallèle et se distingue de la première variante de codage séquentiel, uniquement par le fait qu'il est mis en œuvre par un nombre R prédéterminé d'unités de codage UCk (1≤k≤R), avec R=2 dans l'exemple représenté sur la figure 3C. Un tel codage parallèle est connu pour engendrer une accélération substantielle du procédé de codage.  According to a second variant, such an encoding is of the parallel type and differs from the first variant of sequential coding only in that it is implemented by a predetermined number R of coding units UCk (1 k k cod R), with R = 2 in the example shown in Figure 3C. Such parallel coding is known to generate a substantial acceleration of the coding method.
Chacune des unités de codage UCk est identique à l'unité de codage UC représentée à la figure 3B. De façon correspondante, une unité de codage UCk comprend un module de codage prédictif MCPk et un module de codage entropique MCEk.  Each of the coding units UCk is identical to the coding unit UC shown in FIG. 3B. Correspondingly, a coding unit UCk comprises a predictive coding module MCPk and an entropy coding module MCEk.
En référence à nouveau aux figures 4A et 4B, la première unité UC1 code par exemple les blocs des lignes de rang impair, tandis que la deuxième unité UC2 code par exemple les blocs des lignes de rang pair. Plus précisément, la première unité UC1 code les blocs de la première ligne SE1 , de gauche à droite. Lorsqu'elle parvient au dernier bloc de la première ligne SE1 , elle passe au premier bloc de la (2n+1 )eme ligne, c'est-à-dire la troisième ligne SE3, etc. Parallèlement au traitement effectué par la première unité UC1 , la deuxième unité UC2 code les blocs de la deuxième ligne SE2, de gauche à droite. Lorsqu'elle parvient au dernier bloc de la deuxième ligne SE2, elle passe au premier bloc de la (2n)eme ligne, ici la quatrième ligne SE4, etc. Les deux parcours précités se répètent jusqu'à ce que le dernier bloc de l'image IE soit codé. Referring again to FIGS. 4A and 4B, the first unit UC1 codes, for example, the blocks of lines of odd rank, whereas the second unit UC2 codes, for example, the blocks of lines of even rank. Specifically, the first unit UC1 codes the blocks of the first line SE1, from left to right. When it reaches the last block of the first line SE1, it goes to the first block of the (2n + 1) th line, that is to say the third line SE3, etc. In parallel with the processing performed by the first unit UC1, the second unit UC2 codes the blocks of the second line SE2, from left to right. When it reaches the last block of the second line SE2, it goes to the first block of the (2n) th line, here the fourth line SE4, etc. The two aforementioned paths are repeated until the last block of the IE image is encoded.
En référence à la figure 2A, la quatrième étape de codage C4 est la production de L sous-flux F1 , F2, ..., Fm, ..., FL (1 <m<L<P) de bits représentant les blocs traités compressés par l'unité de codage UC précitée ou chacune des unités de codage UCk précitées, ainsi qu'une version décodée des blocs traités de chaque sous-ensemble SEk. Les blocs traités décodés d'un sous-ensemble considéré, notés SED1 , SED2, ..., SEDk,..., SEDP sont susceptibles d'être réutilisés par l'unité de codage UC représentée sur la figure 3A ou chacune des unités de codage UCk représentées sur la figure 3C, selon un mécanisme de synchronisation qui sera détaillé plus loin dans la description. With reference to FIG. 2A, the fourth encoding step C4 is the production of L sub-flux F1, F2,..., Fm,..., FL (1 <m <L <P) of bits representing the blocks processed by the aforementioned UC encoding unit or each of the aforementioned UCk coding units, as well as a decoded version of the processed blocks of each subset SEk. The decoded processed blocks of a considered subset, denoted SED1, SED2, ..., SEDk, ..., SEDP are likely to be reused by the coding unit UC represented in FIG. 3A or each encoding units UCk shown in Figure 3C, according to a synchronization mechanism which will be detailed later in the description.
En référence à la figure 3B, l'étape de production de L sous-flux est mise en œuvre par un module logiciel MGSF ou MGSFk de génération de flux qui est adapté à produire des flux de données, telles que des bits par exemple.  With reference to FIG. 3B, the sub-stream production step L is implemented by a flow generating software module MGSF or MGSFk which is adapted to produce data streams, such as bits for example.
En référence à la figure 2A, la cinquième étape de codage C5 consiste à construire un flux global F à partir des L sous-flux F1 , F2, ..., Fm, ..., FL précités. Selon un mode de réalisation, les sous-flux F1 , F2, ..., Fm, ..., FL sont simplement juxtaposés, avec une information additionnelle destinée à indiquer au décodeur l'emplacement de chaque sous-flux Fm dans le flux global F. Ce dernier est ensuite transmis par un réseau de communication (non représenté), à un terminal distant. Celui-ci comporte le décodeur DO représenté à la figure 5A. Selon un autre mode de réalisation particulièrement avantageux car ne nécessitant pas un décodage puis un réencodage de l'image, le codeur CO, avant de transmettre le flux F au décodeur DO, ordonne préalablement les L sous-flux F1 , F2, ..., Fm, ..., FL selon un ordre prédéterminé qui correspond à l'ordre dans lequel le décodeur DO est apte à décoder les sous-flux.  With reference to FIG. 2A, the fifth encoding step C5 consists in constructing a global flux F from the aforementioned L subflows F1, F2,..., Fm,... FL. According to one embodiment, the substreams F1, F2,..., Fm,..., FL are simply juxtaposed, with additional information intended to indicate to the decoder the location of each sub-flow Fm in the stream. global F. The latter is then transmitted by a communication network (not shown) to a remote terminal. This includes the decoder DO shown in FIG. 5A. According to another particularly advantageous embodiment because it does not require decoding and then re-encoding the image, the coder CO, before transmitting the stream F to the decoder DO, previously orders the L substreams F1, F2, ... , Fm, ..., FL according to a predetermined order which corresponds to the order in which the decoder DO is able to decode the sub-streams.
Ainsi, comme cela sera décrit en détail plus loin dans la description, le décodeur selon l'invention est en mesure d'isoler les sous-flux F1 , F2, ..., Fm, ..., FL au sein du flux global F et de les affecter à une ou plusieurs unités de décodage composant le décodeur. On notera qu'une telle décomposition des sous-flux en flux global est indépendante du choix de l'utilisation d'une seule unité de codage ou bien de plusieurs unités de codage fonctionnant en parallèle, et qu'il est possible avec cette approche d'avoir uniquement le codeur ou uniquement le décodeur qui comporte des unités fonctionnant en parallèle.  Thus, as will be described in detail later in the description, the decoder according to the invention is able to isolate the substreams F1, F2, ..., Fm, ..., FL within the overall flow F and assign them to one or more decoding units composing the decoder. It will be noted that such a decomposition of the subflows into a global stream is independent of the choice of the use of a single coding unit or of several coding units operating in parallel, and that it is possible with this approach to only have the encoder or only the decoder which includes units operating in parallel.
Une telle construction du flux global F est mise en œuvre dans un module CF de construction de flux, tel que représenté sur la figure 3A et la figure 3C.  Such a construction of the global flow F is implemented in a flow generating module CF, as shown in FIG. 3A and FIG. 3C.
On va maintenant décrire, en référence à la figure 2B, les différentes sous-étapes spécifiques de l'invention, telles que mises en œuvre lors de l'étape C3 de codage précitée, dans une unité de codage UC ou UCk. Au cours d'une étape C31 , l'unité de codage UC ou UCk sélectionne comme bloc courant le premier bloc à coder d'une ligne SEk courante représentée à la figure 4A ou 4B, telle que par exemple la première ligne SE1 . Reference will now be made to FIG. 2B, the different specific sub-steps of the invention, as implemented during the aforementioned coding step C3, in a UC or UCk coding unit. During a step C31, the encoding unit UC or UCk selects as the current block the first block to be encoded of a current line SEk shown in FIG. 4A or 4B, such as for example the first line SE1.
Au cours d'une étape C32, l'unité UC ou UCk teste si le bloc courant est le premier bloc (situé en haut et à gauche) de l'image IE qui a été découpée en blocs à l'étape C1 précitée.  During a step C32, the unit UC or UCk tests whether the current block is the first block (located at the top left) of the image IE which has been cut into blocks in the aforementioned step C1.
Si tel est le cas, au cours d'une étape C33, le module de codage entropique MCE ou MCEk procède à une initialisation de ses variables d'état. Selon l'exemple représenté, qui utilise le codage arithmétique décrit précédemment, il s'agit d'une initialisation d'un intervalle représentatif de la probabilité d'apparition d'un symbole contenu dans l'ensemble prédéterminé de symboles. De façon connue en tant que telle, cet intervalle est initialisé avec deux bornes L et H, respectivement inférieure et supérieure. La valeur de la borne inférieure L est fixée à 0, tandis que la valeur de la borne supérieure est fixée à 1 , ce qui correspond à la probabilité d'apparition d'un premier symbole parmi tous les symboles de l'ensemble prédéterminé de symboles. La taille R de cet intervalle est donc définie à ce stade par R=H - L=1 . L'intervalle initialisé est en outre partitionné classiquement en une pluralité de sous intervalles prédéterminés qui sont représentatifs respectivement des probabilités d'apparition des symboles de l'ensemble prédéterminé de symboles.  If this is the case, during a step C33, the entropic coding module MCE or MCEk initializes its state variables. According to the example shown, which uses the arithmetic coding described above, it is an initialization of an interval representative of the probability of appearance of a symbol contained in the predetermined set of symbols. In known manner as such, this interval is initialized with two terminals L and H, respectively lower and upper. The value of the lower bound L is set to 0, while the value of the upper bound is set to 1, which corresponds to the probability of occurrence of a first symbol among all the symbols of the predetermined set of symbols. . The size R of this interval is therefore defined at this stage by R = H - L = 1. The initialized interval is further conventionally partitioned into a plurality of predetermined sub-intervals which are respectively representative of the appearance probabilities of the symbols of the predetermined set of symbols.
En variante, si le codage entropique utilisé est le codage LZW, une table de traduction de chaînes de symboles est initialisée, de sorte qu'elle contienne une et une seule fois tous les symboles possibles.  Alternatively, if the entropy encoding used is LZW encoding, a symbol string translation table is initialized, so that it contains all possible symbols once and only once.
Si à la suite de l'étape C32 précitée, le bloc courant n'est pas le premier bloc de l'image IE, il est procédé, au cours d'une étape C40 qui sera décrite ultérieurement dans la suite de la description, à la détermination de la disponibilité des blocs précédemment codés et décodés nécessaires.  If following the aforementioned step C32, the current block is not the first block of the image IE, it is proceeded during a step C40 which will be described later in the following description, to determining the availability of the previously coded and decoded blocks needed.
Au cours d'une étape C34, il est procédé au codage du premier bloc courant MB1 de la première ligne SE1 représentée sur la figure 4A ou 4B. Une telle étape C34 comprend une pluralité de sous-étapes C341 à C348 qui vont être décrites ci-dessous. Au cours d'une première sous-étape C341 représentée à la figure 2B, il est procédé au codage prédictif du bloc courant MB1 par des techniques connues de prédiction intra et/ou inter, au cours duquel le bloc MB1 est prédit par rapport à au moins un bloc précédemment codé et décodé. During a step C34, the first current block MB1 of the first line SE1 shown in FIG. 4A or 4B is coded. Such a step C34 comprises a plurality of sub-steps C341 to C348 which will be described below. During a first substep C341 represented in FIG. 2B, the predictive coding of the current block MB1 is carried out by known intra and / or inter prediction techniques, during which the block MB1 is predicted with respect to least one block previously coded and decoded.
II va de soi que d'autres modes de prédiction intra tels que proposés dans la norme H.264 sont possibles.  It goes without saying that other intra prediction modes as proposed in the H.264 standard are possible.
Le bloc courant MB1 peut être également soumis à un codage prédictif en mode inter, au cours duquel le bloc courant est prédit par rapport à un bloc issu d'une image précédemment codée et décodée. D'autres types de prédiction sont bien entendu envisageables. Parmi les prédictions possibles pour un bloc courant, la prédiction optimale est choisie selon un critère débit distorsion bien connu de l'homme du métier.  The current block MB1 may also be subjected to prediction coding in inter mode, during which the current block is predicted with respect to a block resulting from a previously coded and decoded picture. Other types of prediction are of course conceivable. Among the possible predictions for a current block, the optimal prediction is chosen according to a distortion flow criterion well known to those skilled in the art.
Ladite étape de codage prédictif précitée permet de construire un bloc prédit MBp-ι qui est une approximation du bloc courant MB-,. Les informations relatives à ce codage prédictif seront ultérieurement inscrites dans le flux F transmis au décodeur DO. De telles informations comprennent notamment le type de prédiction (inter ou intra), et le cas échéant, le mode de prédiction intra, le type de partitionnement d'un bloc ou macrobloc si ce dernier a été subdivisé, l'indice d'image de référence et le vecteur de déplacement utilisés dans le mode de prédiction inter. Ces informations sont compressées par le codeur CO.  Said aforementioned predictive coding step makes it possible to construct a predicted block MBp-ι which is an approximation of the current block MB- ,. The information relating to this predictive coding will subsequently be written in the stream F transmitted to the decoder DO. Such information includes in particular the type of prediction (inter or intra), and if appropriate, the intra prediction mode, the type of partitioning of a block or macroblock if the latter has been subdivided, the image index of reference and displacement vector used in the inter prediction mode. This information is compressed by the CO encoder.
Au cours d'une sous-étape suivante C342, il est procédé à la soustraction du bloc prédit MBpi du bloc courant MBi pour produire un bloc résidu MBr-i.  During a subsequent substep C342, the predicted block MBpi of the current block MBi is subtracted to produce a residue block MBr-i.
Au cours d'une sous-étape suivante C343, il est procédé à la transformation du bloc résidu ΜΒη selon une opération classique de transformation directe telle que par exemple une transformation en cosinus discrètes de type DCT, pour produire un bloc transformé MBt-i .  During a subsequent substep C343, the residue block ΜΒη is transformed according to a conventional direct transformation operation such as, for example, a discrete cosine transformation of the DCT type, to produce a transformed block MBt-i.
Au cours d'une sous-étape suivante C344, il est procédé à la quantification du bloc transformé MBti selon une opération classique de quantification, telle que par exemple une quantification scalaire. Un bloc de coefficients quantifiés MBqi est alors obtenu. Au cours d'une sous-étape suivante C345, il est procédé au codage entropique du bloc de coefficients quantifiés MBq-, . Dans le mode préféré de réalisation, il s'agit d'un codage entropique CABAC. Une telle étape consiste à : During a subsequent substep C344, the transformed block MBti is quantized according to a conventional quantization operation, such as, for example, a scalar quantization. A block of quantized coefficients MBqi is then obtained. During a subsequent sub-step C345, the entropic coding of the quantized coefficient block MBq-, is carried out. In the preferred embodiment, it is a CABAC entropic coding. Such a step consists of:
a) lire le ou les symboles de l'ensemble prédéterminé de symboles qui sont associés audit bloc courant,  a) reading the symbol or symbols of the predetermined set of symbols which are associated with said current block,
b) associer des informations numériques, telles que des bits, au(x) symbole(s) lu(s).  b) associating digital information, such as bits, with the read symbol (s).
Dans la variante précitée selon laquelle le codage utilisé est un codage LZW, une information numérique correspondant au code du symbole dans la table de traduction courante est associée au symbole à coder, et une mise à jour de la table de traduction est effectuée, selon une méthode connue en soi.  In the aforementioned variant according to which the coding used is an LZW coding, digital information corresponding to the code of the symbol in the current translation table is associated with the symbol to be coded, and an update of the translation table is carried out, according to a method known per se.
Au cours d'une sous-étape suivante C346, il est procédé à la déquantification du bloc MBq selon une opération classique de déquantification, qui est l'opération inverse de la quantification effectuée à l'étape C344. Un bloc de coefficients déquantifiés MBDq est alors obtenu.  During a subsequent substep C346, the block MBq is dequantized according to a conventional dequantization operation, which is the inverse operation of the quantization performed in step C344. A block of dequantized coefficients MBDq is then obtained.
Au cours d'une sous-étape suivante C347, il est procédé à la transformation inverse du bloc de coefficients déquantifiés MBDqi qui est l'opération inverse de la transformation directe effectuée à l'étape C343 ci- dessus. Un bloc résidu décodé MBDr-ι est alors obtenu.  During a subsequent substep C347, the inverse transformation of the dequantized coefficient block MBDqi is carried out which is the inverse operation of the direct transformation carried out in step C343 above. A decoded residue block MBDr-ι is then obtained.
Au cours d'une sous-étape suivante C348, il est procédé à la construction du bloc décodé MBDi en ajoutant ou bloc prédit MBpi le bloc résidu décodé MBDr-i . Il est à noter que ce dernier bloc est le même que le bloc décodé obtenu à l'issue du procédé de décodage de l'image IE qui sera décrit plus loin dans la description. Le bloc décodé MBDi est ainsi rendu disponible pour être utilisé par l'unité de codage UCk ou toute autre unité de codage faisant partie du nombre prédéterminé R d'unités de codage.  During a subsequent substep C348, the decoded block MBDi is constructed by adding or prediction block MBpi the decoded residue block MBDr-i. It should be noted that this last block is the same as the decoded block obtained at the end of the decoding process of the IE image which will be described later in the description. The decoded block MBDi is thus made available for use by the coding unit UCk or any other coding unit forming part of the predetermined number R of coding units.
A l'issue de l'étape de codage C34 précitée, le module de codage entropique MCE ou MCEk tel que représenté à la figure 3B contient toutes les probabilités telles que progressivement remises à jour au fur et à mesure du codage du premier bloc. Ces probabilités correspondent aux différents éléments de syntaxes possibles et aux différents contextes de codage associés. A la suite de l'étape de codage C34 précitée, il est testé, au cours d'une étape C35, si le bloc courant est le jème bloc de cette même ligne, où j est une valeur prédéterminée connue du codeur CO qui est au moins égale à 1 . At the end of the aforementioned coding step C34, the entropic coding module MCE or MCEk as represented in FIG. 3B contains all the probabilities such as progressively being updated as the first block is coded. These probabilities correspond to the different elements of possible syntaxes and to the different coding contexts associated. Following the aforementioned coding step C34, it is tested, during a step C35, if the current block is the jth block of this same line, where j is a known predetermined value of the CO encoder which is at less than 1.
Si tel est le cas, au cours d'une étape C36 représentée à la figure 2B, l'ensemble des probabilités calculé pour le jème bloc est stocké dans la mémoire tampon MT du codeur CO telle que représentée à la figure 3A ou 3B et aux figures 4A et 4B, la taille de ladite mémoire étant adaptée à stocker le nombre de probabilités calculé.  If this is the case, during a step C36 represented in FIG. 2B, the set of probabilities calculated for the jth block is stored in the buffer memory MT of the coder CO as represented in FIG. 3A or 3B and FIGS. FIGS. 4A and 4B, the size of said memory being adapted to store the number of calculated probabilities.
Au cours d'une étape C37 représentée à la figure 2B, l'unité de codage UC ou UCk teste si le bloc courant de la ligne SEk qui vient d'être codé est le dernier bloc de l'image IE. Une telle étape est également mise en œuvre si au cours de l'étape C35, le bloc courant n'est pas le jème bloc de la ligne SE1 .  During a step C37 represented in FIG. 2B, the coding unit UC or UCk tests whether the current block of the line SEk that has just been encoded is the last block of the image IE. Such a step is also implemented if during step C35, the current block is not the jth block of the line SE1.
Si le bloc courant est le dernier bloc de l'image IE, au cours d'une étape C38, il est mis fin au procédé de codage.  If the current block is the last block of the image IE, during a step C38, the coding process is terminated.
Si tel n'est pas le cas, il est procédé, au cours de l'étape C39, à la sélection du bloc suivant MB, à coder conformément à l'ordre de parcours représenté par la flèche PS sur la figure 4A ou 4B.  If this is not the case, it is proceeded, in step C39, to the selection of the next block MB, to be encoded according to the order of travel represented by the arrow PS in Figure 4A or 4B.
Au cours d'une étape C40 représentée à la figure 2B, il est procédé à la détermination de la disponibilité de blocs précédemment codés et décodés qui sont nécessaires pour coder le bloc courant MB,.  During a step C40 shown in FIG. 2B, the availability of previously coded and decoded blocks which are necessary to code the current block MB, is determined.
S'il s'agit de la première ligne SE1 , une telle étape consiste à vérifier la disponibilité d'au moins un bloc situé à gauche du bloc courant à coder MB,. Toutefois, compte tenu de l'ordre de parcours PS choisi dans le mode de réalisation représenté sur la figure 4A ou 4B, les blocs sont codés les un après les autres sur une ligne SEk considérée. En conséquence, le bloc codé et décodé de gauche est toujours disponible (à l'exception du premier bloc d'une ligne). Dans l'exemple représenté sur la figure 4A ou 4B, il s'agit du bloc situé immédiatement à gauche du bloc courant à coder.  If it is the first line SE1, such a step consists in checking the availability of at least one block to the left of the current block to be coded MB ,. However, given the PS travel order chosen in the embodiment shown in Figure 4A or 4B, the blocks are encoded one after the other on a line SEk considered. As a result, the coded and decoded block on the left is always available (except for the first block of a line). In the example shown in FIG. 4A or 4B, it is the block located immediately to the left of the current block to be coded.
S'il s'agit d'une ligne SEk différente de la première ligne, ladite étape de détermination consiste en outre à vérifier si un nombre prédéterminé N' de blocs situés sur la ligne précédente SEk-1 , par exemple les deux blocs situés respectivement au-dessus et au-dessus à droite du bloc courant, sont disponibles pour le codage du bloc courant, c'est-à-dire s'ils ont déjà été codés puis décodés par l'unité de codage UC ou UCk-1 . If it is a line SEk different from the first line, said determining step further comprises checking whether a predetermined number N 'of blocks located on the previous line SEk-1, for example the two blocks located respectively above and to the right of the current block, are available for the coding of the current block, that is to say if they have already been coded and then decoded by the UC or UCk-1 coding unit.
Cette étape de test étant susceptible de ralentir le procédé de codage, de façon alternative conformément à l'invention, dans le cas où le codage des lignes est de type parallèle, une horloge CLK représentée sur la figure 3C est adaptée pour synchroniser l'avancée du codage des blocs de façon à garantir la disponibilité des deux blocs situés respectivement au-dessus et au-dessus à droite du bloc courant, sans qu'il soit nécessaire de vérifier la disponibilité de ces deux blocs. Ainsi, une unité de codage UCk commence toujours à coder le premier bloc avec un décalage d'un nombre prédéterminé N' (avec par exemple N'=2) de blocs codés et décodés de la ligne précédente SEk-1 qui sont utilisés pour le codage du bloc courant. D'un point de vue logiciel, l'implémentation d'une telle horloge permet d'accélérer notablement le temps de traitement des blocs de l'image IE dans le codeur CO.  This test step being able to slow down the coding method, alternatively according to the invention, in the case where the coding of the lines is of parallel type, a clock CLK shown in FIG. 3C is adapted to synchronize the advanced block coding so as to guarantee the availability of the two blocks located respectively above and above right of the current block, without it being necessary to check the availability of these two blocks. Thus, a coding unit UCk always starts coding the first block with an offset of a predetermined number N '(with for example N' = 2) of coded and decoded blocks of the preceding line SEk-1 which are used for the coding of the current block. From a software point of view, the implementation of such a clock makes it possible to significantly accelerate the processing time of the blocks of the image IE in the coder CO.
Au cours d'une étape C41 représentée à la figure 2B, il est testé si le bloc courant est le premier bloc de la ligne SEk considérée.  During a step C41 shown in Figure 2B, it is tested if the current block is the first block of the SEk line considered.
Si tel est le cas, au cours d'une étape C42, il est procédé à la lecture dans la mémoire tampon MT uniquement des probabilités d'apparition de symboles calculées lors du codage du jème bloc de la ligne précédente SEk-1 .  If this is the case, during a step C42, only the probabilities of appearance of symbols calculated during the coding of the jth block of the preceding line SEk-1 are read in the buffer memory MT.
Selon une première variante représentée à la figure 4A, le jème bloc est le premier bloc de la ligne précédente SEk-1 (j=1 ). Une telle lecture consiste à remplacer les probabilités du codeur CABAC par celles présentes dans la mémoire tampon MT. S'agissant des premiers blocs respectifs des deuxième, troisième et quatrième lignes SE2, SE3 et SE4, cette étape de lecture est matérialisée sur la figure 4A par les flèches représentées en traits fins.  According to a first variant represented in FIG. 4A, the jth block is the first block of the preceding line SEk-1 (j = 1). Such a reading consists in replacing the probabilities of the CABAC encoder by those present in the buffer memory MT. With regard to the first respective blocks of the second, third and fourth lines SE2, SE3 and SE4, this reading step is shown in FIG. 4A by the arrows represented in fine lines.
Selon une deuxième variante de l'étape C43 précitée qui est illustrée à la figure 4B, le jème bloc est le deuxième bloc de la ligne précédente SEk-1 (j=2). Une telle lecture consiste à remplacer les probabilités du codeur CABAC par celles présentes dans la mémoire tampon MT. S'agissant des premiers blocs respectifs des deuxième, troisième et quatrième lignes SE2, SE3 et SE4, cette étape de lecture est matérialisée sur la figure 4B par les flèches représentées en traits fins pointillés. A la suite de l'étape C42, le bloc courant est codé puis décodé par itération des étapes C34 à C38 décrites plus haut. According to a second variant of the above-mentioned step C43 which is illustrated in FIG. 4B, the jth block is the second block of the previous line SEk-1 (j = 2). Such a reading consists in replacing the probabilities of the CABAC encoder by those present in the buffer memory MT. With regard to the first respective blocks of the second, third and fourth lines SE2, SE3 and SE4, this reading step is shown in FIG. 4B by the arrows represented in dashed fine lines. Following step C42, the current block is coded and then decoded by iteration of the steps C34 to C38 described above.
Si à la suite de l'étape C41 précitée, le bloc courant n'est pas le premier bloc de la ligne SEk considérée, il n'est avantageusement pas procédé à la lecture des probabilités issues du bloc précédemment codé et décodé qui se trouve sur la même ligne SEk, c'est-à-dire le bloc codé et décodé situé immédiatement à gauche du bloc courant, dans l'exemple représenté. En effet, compte tenu du parcours de lecture séquentiel PS des blocs situés sur la même ligne, comme représenté sur la figure 4A ou 4B, les probabilités d'apparition de symboles présentes dans le codeur CABAC au moment du commencement du codage du bloc courant sont exactement celles qui sont présentes après codage/décodage du bloc précédent sur cette même ligne.  If following the aforementioned step C41, the current block is not the first block of the line SEk considered, it is advantageously not proceeded to the reading of the probabilities from the previously coded and decoded block which is on the same line SEk, that is to say the encoded and decoded block located immediately to the left of the current block, in the example shown. In fact, given the sequential reading path PS of the blocks located on the same line, as represented in FIG. 4A or 4B, the probabilities of appearance of symbols present in the CABAC coder at the time of the beginning of the coding of the current block are exactly those which are present after coding / decoding of the previous block on this same line.
En conséquence, au cours d'une étape C43 représentée à la figure 2B, il est procédé à l'apprentissage des probabilités d'apparition de symbole pour le codage entropique dudit bloc courant, lesquelles correspondant uniquement à celles qui ont été calculées pour ledit bloc précédent sur la même ligne, comme représenté par les doubles flèches en traits pleins sur la figure 4A ou 4B.  Consequently, during a step C43 represented in FIG. 2B, the symbol occurrence probabilities for the entropic coding of said current block are learned, which only correspond to those calculated for said block. previous in the same line, as represented by the double arrows in full lines in Figure 4A or 4B.
A la suite de l'étape C43, le bloc courant est codé puis décodé par itération des étapes C34 à C38 décrites plus haut.  Following step C43, the current block is coded and then decoded by iteration of the steps C34 to C38 described above.
II est ensuite testé, au cours d'une étape C44, si le bloc courant est le dernier bloc de la ligne SEk considérée.  It is then tested, during a step C44, if the current block is the last block of the line SEk considered.
Si ce n'est pas le cas, à la suite de l'étape C44, l'étape C39 de sélection du bloc suivant MB, à coder est à nouveau mise en œuvre.  If this is not the case, following step C44, step C39 of selecting the next block MB to be coded is again implemented.
Si le bloc courant est le dernier bloc de la ligne SEk considérée, au cours d'une étape C45, le dispositif de codage CO de la figure 3A ou 3C effectue une vidange comme évoqué plus haut dans la description. A cet effet, l'unité de codage UCk transmet au module de génération de sous-flux MGSFk correspondant la totalité des bits qui ont été associés au(x) symbole(s) lu(s) lors du codage de chaque bloc de ladite ligne SEk considérée, de façon à ce que le module MGSFk écrive, dans le sous-flux de données Fm contenant un train binaire représentatif des blocs codés de ladite ligne SEk considérée, ladite totalité de bits. Une telle vidange est symbolisée sur les figures 4A et 4B par un triangle à la fin de chaque ligne SEk. Au cours d'une étape C46 représentée à la figure 2B, l'unité de codage UC ou UCk effectue une étape identique à l'étape C33 précitée, c'est-à-dire initialise à nouveau l'intervalle représentatif de la probabilité d'apparition d'un symbole contenu dans l'ensemble prédéterminé de symboles. Une telle réinitialisation est matérialisée sur les figures 4A et 4B par un point noir en début de chaque ligne SEk. If the current block is the last block of the line SEk considered, during a step C45, the coding device CO of Figure 3A or 3C performs a drain as mentioned above in the description. For this purpose, the coding unit UCk transmits to the corresponding sub-stream generation module MGSFk all the bits that have been associated with the symbol (s) read during the coding of each block of said line. SEk considered, so that the MGSFk module writes, in the sub-data stream Fm containing a bitstream representative of the coded blocks of said line SEk considered, said totality of bits. Such emptying is symbolized in FIGS. 4A and 4B by a triangle at the end of each line SEk. During a step C46 represented in FIG. 2B, the coding unit UC or UCk performs a step identical to the aforementioned step C33, that is to say, it initializes again the interval representative of the probability of appearance of a symbol contained in the predetermined set of symbols. Such a reset is shown in Figures 4A and 4B by a black dot at the beginning of each line SEk.
L'intérêt d'effectuer les étapes C45 et C46 à ce niveau du codage est que lors du codage du bloc suivant traité par l'unité de codage UC ou une unité de codage UCk, le codeur CO est dans un état initialisé. Ainsi, comme cela sera décrit plus loin dans la description, il devient possible pour une unité de décodage travaillant en parallèle de décoder directement le flux compressé F à partir de ce point, puisqu'il lui suffit d'être dans l'état initialisé.  The advantage of performing steps C45 and C46 at this level of the coding is that during the coding of the next block processed by the coding unit UC or a coding unit UCk, the coder CO is in an initialized state. Thus, as will be described later in the description, it becomes possible for a decoding unit working in parallel to directly decode the compressed stream F from that point, since it suffices to be in the initialized state.
Description détaillée d'un mode de réalisation de la partie décodage Detailed description of an embodiment of the decoding part
Un mode de réalisation du procédé de décodage selon l'invention va maintenant être décrit, dans lequel le procédé de décodage est implémenté de manière logicielle ou matérielle par modifications d'un décodeur initialement conforme à la norme H.264/MPEG-4 AVC.  An embodiment of the decoding method according to the invention will now be described, in which the decoding method is implemented in a software or hardware way by modifying a decoder initially compliant with the H.264 / MPEG-4 AVC standard.
Le procédé de décodage selon l'invention est représenté sous la forme d'un algorithme comportant des étapes D1 à D4, représentées à la figure 5A.  The decoding method according to the invention is represented in the form of an algorithm comprising steps D1 to D4, represented in FIG. 5A.
Selon le mode de réalisation de l'invention, le procédé de décodage selon l'invention est implémenté dans un dispositif de décodage DO représenté à la figure 6A.  According to the embodiment of the invention, the decoding method according to the invention is implemented in a decoding device DO shown in FIG. 6A.
En référence à la figure 5A, la première étape de décodage D1 est l'identification dans ledit flux F des L sous-flux F1 , F2, ..., Fm, ..., FL contenant respectivement les P sous-ensembles SE1 , SE2, ...,SEk, ..., SEP de blocs ou macro-blocs MB codés précédemment, comme représenté sur la figure 4A ou 4B. A cet effet, chaque sous-flux Fm dans le flux F est associé à un indicateur destiné à permettre au décodeur DO de déterminer l'emplacement de chaque sous-flux Fm dans le flux F. En variante, à l'issue de l'étape de codage C3 précitée, le codeur CO ordonne les sous-flux F1 , F2, ..., Fm, ..., FL dans le flux F, selon l'ordre attendu par le décodeur DO, ce qui évite l'insertion dans le flux F des indicateurs de sous-flux. Une telle disposition permet ainsi de réduire le coût en débit du flux de données F. With reference to FIG. 5A, the first decoding step D1 is the identification in said stream F of the L substreams F1, F2,..., Fm,..., FL respectively containing the P subsets SE1, SE2, ..., SEk, ..., SEP of previously coded blocks or macroblocks MB, as shown in FIG. 4A or 4B. For this purpose, each sub-flow Fm in the stream F is associated with an indicator intended to allow the decoder DO to determine the location of each sub-stream Fm in the stream F. Alternatively, at the end of the coding step C3 above, the coder CO orders the substreams F1, F2, ..., Fm, ..., FL in the stream F, in the order expected by the decoder DO, which avoids the insertion in the stream F subflow indicators. Such an arrangement thus makes it possible to reduce the flow rate cost of the data stream F.
Dans l'exemple représenté sur la figure 4A ou 4B, lesdits blocs MB ont une forme carrée et ont tous la même taille. En fonction de la taille de l'image qui n'est pas forcément un multiple de la taille des blocs, les derniers blocs à gauche et les derniers blocs en bas peuvent ne pas être carrés. Dans un mode alternatif de réalisation, les blocs peuvent être par exemple de taille rectangulaire et/ou non alignés les uns avec les autres.  In the example shown in FIG. 4A or 4B, the said MB blocks have a square shape and all have the same size. Depending on the size of the image that is not necessarily a multiple of the size of the blocks, the last blocks on the left and the last blocks on the bottom may not be square. In an alternative embodiment, the blocks may be for example of rectangular size and / or not aligned with each other.
Chaque bloc ou macrobloc peut par ailleurs être lui-même divisé en sous blocs qui sont eux-mêmes subdivisibles.  Each block or macroblock can also be itself divided into sub-blocks that are themselves subdividable.
Une telle identification est effectuée par un module EXDO d'extraction de flux tel que représenté à la figure 6A.  Such identification is performed by an EXDO flow extraction module as shown in FIG. 6A.
Dans l'exemple représenté sur la figure 4A ou 4B, le nombre prédéterminé P est égal à 6 mais seuls quatre sous-ensembles SE1 , SE2, SE3, SE4 sont représentés en trait pointillé, dans un souci de clarté des figures.  In the example shown in FIG. 4A or 4B, the predetermined number P is equal to 6 but only four subsets SE1, SE2, SE3, SE4 are shown in dashed line, for the sake of clarity of the figures.
En référence à la figure 5A, la deuxième étape de décodage D2 est le décodage de chacun desdits sous-ensembles de blocs SE1 , SE2, SE3 et SE4, les blocs d'un sous-ensemble considéré étant codés selon un ordre de parcours séquentiel PS prédéterminé. Dans l'exemple représenté sur la figure 4A ou 4B, les blocs d'un sous-ensemble SEk courant (1 <k<P) sont décodés les uns après les autres, de la gauche vers la droite, comme indiqué par la flèche PS. A l'issue de l'étape D2, les sous-ensembles de blocs décodés SED1 , SED2, SED3, ..., SEDk, ..., SEDP sont obtenus.  With reference to FIG. 5A, the second decoding step D2 is the decoding of each of said subsets of blocks SE1, SE2, SE3 and SE4, the blocks of a subset considered being coded according to a sequential scanning order PS predetermined. In the example shown in FIG. 4A or 4B, the blocks of a current subset SEk (1 <k <P) are decoded one after the other, from left to right, as indicated by the arrow PS. . At the end of step D2, the subsets of decoded blocks SED1, SED2, SED3,..., SEDk,..., SEDP are obtained.
Un tel décodage peut être de type séquentiel et, par conséquent, être effectué à l'aide d'une seule unité de décodage.  Such a decoding can be of sequential type and, consequently, be carried out using a single decoding unit.
Toutefois, afin de pouvoir bénéficier d'une architecture de décodage multiplateforme, le décodage des sous-ensembles de blocs est de type parallèle et est mis en œuvre par un nombre R d'unités de décodage UDk (1 <k<R), avec par exemple R=4 comme représenté sur la figure 6A. Une telle disposition permet ainsi une accélération substantielle du procédé de décodage. De façon connue en tant que telle, le décodeur DO comprend une mémoire tampon MT qui est adaptée pour contenir les probabilités d'apparition de symboles telles que progressivement remises à jour au fur et à mesure du décodage d'un bloc courant. However, in order to benefit from a multiplatform decoding architecture, the decoding of the subsets of blocks is of parallel type and is implemented by a number R of decoding units UDk (1 <k <R), with for example R = 4 as shown in Figure 6A. Such an arrangement thus allows a substantial acceleration of the decoding method. In a manner known per se, the decoder DO comprises a buffer MT which is adapted to contain the probabilities of appearance of symbols such as progressively updated as the decoding of a current block.
Comme représenté plus en détail sur la figure 6B, chacune des unités de décodage UDk comprend :  As shown in more detail in FIG. 6B, each of the UDk decoding units comprises:
• un module de décodage entropique dudit bloc courant par apprentissage d'au moins une probabilité d'apparition de symbole calculée pour au moins un bloc précédemment décodé, notée MDEk,  An entropy decoding module of said current block by learning at least one computed symbol occurrence probability for at least one previously decoded block, denoted MDEk,
• un module de décodage prédictif d'un bloc courant par rapport audit bloc précédemment décodé, notée MDPk.  A decoding module predictive of a current block with respect to said previously decoded block, denoted MDPk.
Le module de décodage prédictif SUDPk est apte à effectuer un décodage prédictif du bloc courant, selon les techniques de prédiction classiques, telles que par exemple en mode Intra et/ou Inter.  The predictive decoding module SUDPk is able to perform a predictive decoding of the current block, according to conventional prediction techniques, such as for example in Intra and / or Inter mode.
Le module de décodage entropique MDEk est quant à lui de type CABAC, mais modifié selon la présente invention comme cela sera décrit plus loin dans la description.  The entropy decoding module MDEk is CABAC type, but modified according to the present invention as will be described later in the description.
En variante, le module de décodage entropique MDEk pourrait être un décodeur de Huffman connu en tant que tel.  Alternatively, the entropy decoding module MDEk could be a Huffman decoder known as such.
Dans l'exemple représenté sur la figure 4A ou 4B, la première unité UD1 décode les blocs de la première ligne SE1 , de gauche à droite. Lorsqu'elle parvient au dernier bloc de la première ligne SE1 , elle passe au premier bloc de la (n+1 )eme ligne, ici la 5ieme ligne, etc. La deuxième unité UC2 décode les blocs de la deuxième ligne SE2, de gauche à droite. Lorsqu'elle parvient au dernier bloc de la deuxième ligne SE2, elle passe au premier bloc de la (n+2)eme ligne, ici la 6ieme ligne, etc. Ce parcours se répète jusqu'à l'unité UD4, qui décode les blocs de la quatrième ligne SE4, de gauche à droite. Lorsqu'elle parvient au dernier bloc de la première ligne, elle passe au premier bloc de la (n+4)eme ligne, ici la 8ieme ligne, et ainsi de suite jusqu'à ce que le dernier bloc du dernier sous-flux identifié soit décodé. In the example shown in FIG. 4A or 4B, the first unit UD1 decodes the blocks of the first line SE1, from left to right. When it reaches the last block of the first line SE1, it passes to the first block of the (n + 1) th line, by the 5 th row, etc. The second unit UC2 decodes the blocks of the second line SE2, from left to right. When it reaches the last block of the second line SE2, it passes to the first block of the (n + 2) th line, by the 6 th row, etc. This path is repeated until the unit UD4, which decodes the blocks of the fourth line SE4, from left to right. When it reaches the last block of the first line, it passes the first block of the (n + 4) th line, here the 8 th line, and so on until the last block of the last substream identified is decoded.
D'autres types de parcours que celui qui vient d'être décrit ci-dessus sont bien sûr possibles. Par exemple, chaque unité de décodage pourrait traiter non pas des lignes imbriquées, comme expliqué ci-dessus, mais des colonnes imbriquées. Il est également possible de parcourir les lignes ou colonnes dans un sens ou dans l'autre. Other types of course than the one just described above are of course possible. For example, each decoding unit might not handle nested lines, as explained above, but columns nested. It is also possible to browse the rows or columns in one direction or the other.
En référence à la figure 5A, la troisième étape de décodage D3 est la reconstruction d'une image décodée ID à partir de chaque sous-ensemble décodé SED1 , SED2, ..., SEDk, ..., SEDP obtenu à l'étape de décodage D2. Plus précisément, les blocs décodés de chaque sous-ensemble décodé SED1 , SED2, ..., SEDk, ..., SEDP sont transmis à une unité URI de reconstruction d'image telle que représentée à la figure 6A. Au cours de cette étape D3, l'unité URI écrit les blocs décodés dans une image décodée au fur et à mesure que ces blocs deviennent disponibles.  With reference to FIG. 5A, the third decoding step D3 is the reconstruction of a decoded picture ID from each decoded subset SED1, SED2,..., SEDk,..., SEDP obtained at the step decoding D2. More precisely, the decoded blocks of each decoded subset SED1, SED2,..., SEDk,..., SEDP are transmitted to an image reconstruction URI unit as represented in FIG. 6A. During this step D3, the URI unit writes the decoded blocks in a decoded image as these blocks become available.
Au cours d'une quatrième étape de décodage D4 représentée à la figure 5A, une image ID entièrement décodée est délivrée par l'unité URI représentée figure 6A.  During a fourth decoding step D4 shown in FIG. 5A, a fully decoded ID image is provided by the URI unit shown in FIG. 6A.
On va maintenant décrire, en référence à la figure 5B, les différentes sous-étapes spécifiques de l'invention, telles que mises en œuvre lors de l'étape D2 de décodage en parallèle précitée, dans une unité de décodage UDk.  We will now describe, with reference to FIG. 5B, the different specific sub-steps of the invention, as implemented during the above-mentioned parallel decoding step D2, in a decoding unit UDk.
Au cours d'une étape D21 , l'unité de décodage UDk sélectionne comme bloc courant le premier bloc à décoder de la ligne SEk courante représentée à la figure 4A ou 4B.  During a step D21, the decoding unit UDk selects as the current block the first block to be decoded from the current line SEk shown in FIG. 4A or 4B.
Au cours d'une étape D22, l'unité de décodage UDk teste si le bloc courant est le premier bloc de l'image décodée, en l'espèce le premier bloc du sous-flux F1 .  During a step D22, the decoding unit UDk tests whether the current block is the first block of the decoded picture, in this case the first block of the substream F1.
Si tel est le cas, au cours d'une étape D23, le module de décodage entropique MDE ou MDEk procède à une initialisation de ses variables d'état. Selon l'exemple représenté, il s'agit d'une initialisation d'un intervalle représentatif de la probabilité d'apparition d'un symbole contenu dans l'ensemble prédéterminé de symboles.  If this is the case, during a step D23, the entropy decoding module MDE or MDEk initializes its state variables. According to the example shown, it is an initialization of an interval representative of the probability of appearance of a symbol contained in the predetermined set of symbols.
En variante, si le décodage entropique utilisé est le décodage LZW, une table de traduction de chaînes de symboles est initialisée, de sorte qu'elle contienne une et une seule fois tous les symboles possibles. L'étape D23 étant identique à l'étape de codage C33 précitée, elle ne sera pas décrite plus avant. Si à la suite de l'étape D22 précitée, le bloc courant n'est pas le premier bloc de l'image décodée ID, il est procédé, au cours d'une étape D30 qui sera décrite ultérieurement dans la suite de la description, à la détermination de la disponibilité des blocs précédemment décodés nécessaires. Alternatively, if the entropy decoding used is LZW decoding, a symbol string translation table is initialized, so that it contains once and only once all the possible symbols. Since step D23 is identical to the aforementioned coding step C33, it will not be described further. If following the aforementioned step D22, the current block is not the first block of the decoded picture ID, it is proceeded, during a step D30 which will be described later in the following description, determining the availability of the previously decoded blocks needed.
Au cours d'une étape D24, il est procédé au décodage du premier bloc courant MB1 de la première ligne SE1 représentée sur la figure 4A ou 4B. Une telle étape D24 comprend une pluralité de sous-étapes D241 à D246 qui vont être décrites ci-dessous.  During a step D24, the first current block MB1 of the first line SE1 shown in FIG. 4A or 4B is decoded. Such a step D24 comprises a plurality of substeps D241 to D246 which will be described below.
Au cours d'une première sous-étape D241 , il est procédé au décodage entropique des éléments de syntaxe liés au bloc courant. Une telle étape consiste principalement à :  During a first substep D241, entropic decoding of the syntax elements related to the current block is performed. Such a step consists mainly of:
a) lire les bits contenus dans le sous-flux associé à ladite première ligne SE1 ,  a) read the bits contained in the sub-stream associated with said first line SE1,
b) reconstruire les symboles à partir des bits lus.  b) reconstruct the symbols from the read bits.
Dans la variante précitée selon laquelle le décodage utilisé est un décodage LZW, une information numérique correspondant au code du symbole dans la table de traduction courante est lue, le symbole est reconstruit à partir du code lu et une mise à jour de la table de traduction est effectuée, selon une méthode connue en soi.  In the aforementioned variant according to which the decoding used is an LZW decoding, digital information corresponding to the code of the symbol in the current translation table is read, the symbol is reconstructed from the code read and an update of the translation table. is performed, according to a method known per se.
Plus précisément, les éléments de syntaxe liés au bloc courant sont décodés par le module MDE1 de décodage entropique CABAC tel que représentée à la figure 6B. Ce dernier décode le sous-flux de bits F1 du fichier compressé pour produire les éléments de syntaxe, et, en même temps, remet à jour ses probabilités de façon à ce que, au moment où celui-ci décode un symbole, les probabilités d'apparition de ce symbole soient identiques à celles obtenues lors du codage de ce même symbole lors de l'étape de codage entropique précitée C345.  More precisely, the syntax elements related to the current block are decoded by the entrapment decoding module MDE1 CABAC as represented in FIG. 6B. The latter decodes the sub-stream of F1 bits of the compressed file to produce the syntax elements, and, at the same time, updates its probabilities so that, at the moment when the latter decodes a symbol, the probabilities of appearance of this symbol are identical to those obtained during the coding of the same symbol during the aforementioned entropy coding step C345.
Au cours d'une sous-étape suivante D242, il est procédé au décodage prédictif du bloc courant MB1 par des techniques connues de prédiction intra et/ou inter, au cours duquel le bloc MB1 est prédit par rapport à au moins un bloc précédemment décodé. Il va de soi que d'autres modes de prédiction intra tels que proposé dans la norme H.264 sont possibles. During a following substep D242, predictive decoding of the current block MB1 is carried out by known intra and / or inter prediction techniques, during which the block MB1 is predicted with respect to at least one previously decoded block. . It goes without saying that other intra prediction modes as proposed in the H.264 standard are possible.
Au cours de cette étape, le décodage prédictif est effectué à l'aide des éléments de syntaxe décodés à l'étape précédente et comprenant notamment le type de prédiction (inter ou intra), et le cas échéant, le mode de prédiction intra, le type de partitionnement d'un bloc ou macrobloc si ce dernier a été subdivisé, l'indice d'image de référence et le vecteur de déplacement utilisés dans le mode de prédiction inter.  During this step, the predictive decoding is performed using the syntax elements decoded in the previous step and including in particular the type of prediction (inter or intra), and if appropriate, the intra prediction mode, the type of partitioning of a block or macroblock if the latter has been subdivided, the reference image index and the displacement vector used in the inter prediction mode.
Ladite étape de décodage prédictif précitée permet de construire un bloc prédit MBp! .  Said aforementioned predictive decoding step makes it possible to construct a predicted MBp block! .
Au cours d'une sous-étape suivante D243, il est procédé à la construction d'un bloc résidu quantifié MBqi à l'aide des éléments de syntaxe décodés précédemment.  During a subsequent substep D243, a quantized residual block MBqi is constructed using previously decoded syntax elements.
Au cours d'une sous-étape suivante D244, il est procédé à la déquantification du bloc résidu quantifié MBq selon une opération classique de déquantification qui est l'opération inverse de la quantification effectuée à l'étape C344 précitée, pour produire un bloc déquantifié décodé MBDt-i.  During a subsequent substep D244, dequantization of the quantized residue block MBq is carried out according to a conventional dequantization operation which is the inverse operation of the quantization performed in the aforementioned step C344, to produce a dequantized block decoded MBDt-i.
Au cours d'une sous-étape suivante D245, il est procédé à la transformation inverse du bloc déquantifiés MBDti qui est l'opération inverse de la transformation directe effectuée à l'étape C343 ci-dessus. Un bloc résidu décodé MBDr-ι est alors obtenu.  During a subsequent substep D245, the inverse transformation of the dequantized block MBDti is carried out which is the reverse operation of the direct transformation carried out in step C343 above. A decoded residue block MBDr-ι is then obtained.
Au cours d'une sous-étape suivante D246, il est procédé à la construction du bloc décodé MBDi en ajoutant ou bloc prédit MBpi le bloc résidu décodé MBDr-i. Le bloc décodé MBD est ainsi rendu disponible pour être utilisé par l'unité de décodage UD1 ou toute autre unité de décodage faisant partie du nombre prédéterminé N d'unités de décodage.  In the course of a subsequent substep D246, the decoded block MBDi is constructed by adding or predicting MBpi the decoded residue block MBDr-i. The decoded block MBD is thus made available for use by the decoding unit UD1 or any other decoding unit belonging to the predetermined number N of decoding units.
A l'issue de l'étape de décodage D246 précitée, le module de décodage entropique MDE1 tel que représenté à la figure 6B contient toutes les probabilités telles que progressivement remises à jour au fur et à mesure du décodage du premier bloc. Ces probabilités correspondent aux différents éléments de syntaxes possibles et aux différents contextes de décodage associés. A la suite de l'étape de décodage D24 précitée, il est testé, au cours d'une étape D25, si le bloc courant est le jème bloc de cette même ligne, où j est une valeur prédéterminée connue du décodeur DO qui est au moins égale à 1 . At the end of the aforementioned decoding step D246, the entropy decoding module MDE1 as represented in FIG. 6B contains all the probabilities such as progressively being updated as the first block is decoded. These probabilities correspond to the different possible syntax elements and the different decoding contexts associated with them. Following the aforementioned decoding step D24, it is tested, during a step D25, if the current block is the jth block of this same line, where j is a predetermined known value of the decoder DO which is at less than 1.
Si tel est le cas, au cours d'une étape D26, l'ensemble des probabilités calculé pour le jème bloc est stocké dans la mémoire tampon MT du décodeur DO telle que représentée à la figure 6A et à la figure 4A ou 4B, la taille de ladite mémoire étant adaptée à stocker le nombre de probabilités calculé.  If this is the case, during a step D26, the set of probabilities calculated for the jth block is stored in the buffer memory MT of the decoder DO as represented in FIG. 6A and in FIG. 4A or 4B, FIG. size of said memory being adapted to store the calculated number of probabilities.
Au cours d'une étape D27, l'unité UDk teste si le bloc courant qui vient d'être décodé est le dernier bloc du dernier sous-flux.  During a step D27, the unit UDk tests whether the current block that has just been decoded is the last block of the last sub-stream.
Si tel est le cas, au cours d'une étape D28, il est mis fin au procédé de décodage.  If this is the case, during a step D28, the decoding process is terminated.
Si tel n'est pas le cas, il est procédé, au cours de l'étape D29 à la sélection du bloc suivant MB, à décoder conformément à l'ordre de parcours représenté par la flèche PS sur la figure 4A ou 4B.  If this is not the case, step D29 is used to select the next block MB to be decoded according to the order of travel represented by the arrow PS in FIG. 4A or 4B.
Si au cours de l'étape D25 précitée, le bloc courant n'est pas le jème bloc de la ligne SEDk considérée, il est procédé à l'étape D27 ci-dessus.  If during the aforementioned step D25, the current block is not the jth block of the line SEDk considered, it is proceeded to step D27 above.
Au cours d'une étape D30 qui fait suite à l'étape D29 précitée, il est procédé à la détermination de la disponibilité de blocs précédemment décodés qui sont nécessaires pour décoder le bloc courant MB,. Compte tenu du fait qu'il s'agit d'un décodage en parallèle des blocs par des unités de décodage UDk différentes, il se peut que ces blocs n'aient pas été décodés par l'unité de décodage affectée au décodage de ces blocs et qu'ils ne soient donc pas encore disponibles. Ladite étape de détermination consiste à vérifier si un nombre prédéterminé N' de blocs situés sur la ligne précédente SEk-1 , par exemple les deux blocs situés respectivement au-dessus et au-dessus à droite du bloc courant, sont disponibles pour le décodage du bloc courant, c'est-à-dire s'ils ont déjà été décodés par l'unité de décodage UDk-1 affectée au décodage de ces derniers. Ladite étape de détermination consiste également à vérifier la disponibilité d'au moins un bloc situé à gauche du bloc courant à décoder MB,. Toutefois, compte tenu de l'ordre de parcours PS choisi dans le mode de réalisation représenté sur la figure 4A ou 4B, les blocs sont décodés les un après les autres sur une ligne SEk considérée. En conséquence, le bloc décodé de gauche est toujours disponible (à l'exception du premier bloc d'une ligne). Dans l'exemple représenté sur la figure 4A ou 4B, il s'agit du bloc situé immédiatement à gauche du bloc courant à décoder. A cet effet, seule est testée la disponibilité des deux blocs situés respectivement au-dessus et au- dessus à droite du bloc courant. During a step D30 which follows the aforementioned step D29, the availability of previously decoded blocks which are necessary for decoding the current block MB, is determined. Given that it is a parallel decoding of the blocks by different UDk decoding units, it is possible that these blocks have not been decoded by the decoding unit assigned to the decoding of these blocks. and so they are not yet available. Said determination step consists in checking whether a predetermined number N 'of blocks located on the previous line SEk-1, for example the two blocks situated respectively above and to the right of the current block, are available for the decoding of the current block, that is to say if they have already been decoded by decoding unit UDk-1 assigned to the decoding of the latter. Said determination step also consists in checking the availability of at least one block to the left of the current block to be decoded MB ,. However, given the PS travel order chosen in the embodiment shown in Figure 4A or 4B, the blocks are decoded one after the other on a line SEk considered. As a result, the block Decoded left is always available (except the first block of a line). In the example shown in FIG. 4A or 4B, it is the block located immediately to the left of the current block to be decoded. For this purpose, only the availability of the two blocks located respectively above and above the right of the current block is tested.
Cette étape de test étant susceptible de ralentir le procédé de décodage, de façon alternative conformément à l'invention, une horloge CLK représentée sur la figure 6A est adaptée pour synchroniser l'avancée du décodage des blocs de façon à garantir la disponibilité des deux blocs situés respectivement au-dessus et au-dessus à droite du bloc courant, sans qu'il soit nécessaire de vérifier la disponibilité de ces deux blocs. Ainsi, comme représenté à la figure 4A ou 4B, une unité de décodage UDk commence toujours à décoder le premier bloc avec un décalage d'un nombre prédéterminé N' (ici N'=2) de blocs décodés de la ligne précédente SEk-1 qui sont utilisés pour le décodage du bloc courant. D'un point de vue logiciel, l'implémentation d'une telle horloge permet d'accélérer notablement le temps de traitement des blocs de chaque sous-ensemble SEk dans le décodeur DO.  Since this test step is likely to slow down the decoding method, alternatively according to the invention, a clock CLK shown in FIG. 6A is adapted to synchronize the advance of the decoding of the blocks so as to guarantee the availability of the two blocks. located respectively above and above right of the current block, without it being necessary to check the availability of these two blocks. Thus, as represented in FIG. 4A or 4B, a decoding unit UDk always begins to decode the first block with an offset of a predetermined number N '(here N' = 2) of decoded blocks of the preceding line SEk-1 which are used for decoding the current block. From a software point of view, the implementation of such a clock makes it possible to significantly accelerate the processing time of the blocks of each subset SEk in the decoder DO.
Au cours d'une étape D31 , il est testé si le bloc courant est le premier bloc de la ligne SEk considérée.  During a step D31, it is tested if the current block is the first block of the SEk line considered.
Si tel est le cas, au cours d'une étape D32, il est procédé à la lecture dans la mémoire tampon MT uniquement des probabilités d'apparition de symboles calculées lors du décodage du jème bloc de la ligne précédente SEk- 1 .  If this is the case, during a step D32, only the probabilities of appearance of symbols calculated during the decoding of the jth block of the preceding line SEk-1 are read in the buffer memory MT.
Selon une première variante représentée à la figure 4A, le jème bloc est le premier bloc de la ligne précédente SEk-1 (j=1 ) Une telle lecture consiste à remplacer les probabilités du décodeur CABAC par celles présentes dans la mémoire tampon MT. S'agissant des premiers blocs respectifs des deuxième, troisième et quatrième lignes SE2, SE3 et SE4, cette étape de lecture est matérialisée sur la figure 4A par les flèches représentées en traits fins.  According to a first variant represented in FIG. 4A, the jth block is the first block of the preceding line SEk-1 (j = 1). Such a reading consists in replacing the probabilities of the CABAC decoder by those present in the buffer memory MT. With regard to the first respective blocks of the second, third and fourth lines SE2, SE3 and SE4, this reading step is shown in FIG. 4A by the arrows represented in fine lines.
Selon une deuxième variante de l'étape D32 précitée qui est illustrée à la figure 4B, le jème bloc est le deuxième bloc de la ligne précédente SEk-1 (j=2). Une telle lecture consiste à remplacer les probabilités du décodeur CABAC par celles présentes dans la mémoire tampon MT. S'agissant des premiers blocs respectifs des deuxième, troisième et quatrième lignes SE2, SE3 et SE4, cette étape de lecture est matérialisée sur la figure 4B par les flèches représentées en traits fins pointillés. According to a second variant of the aforementioned step D32 which is illustrated in FIG. 4B, the jth block is the second block of the preceding line SEk-1 (j = 2). Such a reading consists in replacing the probabilities of the CABAC decoder by those present in the buffer memory MT. With regard to first respective blocks of the second, third and fourth lines SE2, SE3 and SE4, this reading step is shown in Figure 4B by the arrows shown in dashed fine lines.
A la suite de l'étape D32, le bloc courant est décodé par itération des étapes D24 à D28 décrites plus haut.  Following step D32, the current block is decoded by iteration of the steps D24 to D28 described above.
Si à la suite de l'étape D31 précitée, le bloc courant n'est pas le premier bloc de la ligne SEk considérée, il n'est avantageusement pas procédé à la lecture des probabilités issues du bloc précédemment décodé qui se trouve sur la même ligne SEk, c'est-à-dire le bloc décodé situé immédiatement à gauche du bloc courant, dans l'exemple représenté. En effet, compte tenu du parcours de lecture séquentiel PS des blocs situés sur la même ligne, comme représenté sur la figure 4A ou 4B, les probabilités d'apparition de symboles présentes dans le décodeur CABAC au moment du commencement du décodage du bloc courant sont exactement celle qui sont présentes après décodage du bloc précédent sur cette même ligne.  If following the aforementioned step D31, the current block is not the first block of the line SEk considered, it is advantageously not proceeded to the reading of the probabilities from the previously decoded block which is on the same line SEk, that is to say the decoded block located immediately to the left of the current block, in the example shown. In fact, given the sequential reading path PS of the blocks located on the same line, as represented in FIG. 4A or 4B, the probabilities of appearance of symbols present in the CABAC decoder at the moment of the beginning of the decoding of the current block are exactly the ones that are present after decoding the previous block on that same line.
En conséquence, au cours d'une étape D33, il est procédé à l'apprentissage des probabilités d'apparition de symbole pour le décodage entropique dudit bloc courant, lesquelles probabilités correspondant uniquement à celles qui ont été calculées pour ledit bloc précédent sur la même ligne, comme représenté par les doubles flèches en traits pleins sur la figure 4A ou 4B.  Consequently, during a step D33, the symbol occurrence probabilities are learned for the entropy decoding of said current block, which probabilities correspond only to those calculated for said previous block on the same block. line, as represented by the double arrows in solid lines in Figure 4A or 4B.
A la suite de l'étape D33, le bloc courant est décodé par itération des étapes D24 à D28 décrites plus haut.  Following step D33, the current block is decoded by iterating the steps D24 to D28 described above.
Il est ensuite testé, au cours d'une étape D34, si le bloc courant est le dernier bloc de la ligne SEk considérée.  It is then tested, during a step D34, if the current block is the last block of the line SEk considered.
Si ce n'est pas le cas, à la suite de l'étape D34, l'étape D29 de sélection du bloc suivant MB, à coder est à nouveau mise en œuvre.  If this is not the case, following step D34, step D29 for selecting the next block MB to be coded is again implemented.
Si le bloc courant est le dernier bloc de la ligne SEk considérée, au cours d'une étape D35, l'unité de décodage UDk effectue une étape identique à l'étape D23 précitée, c'est-à-dire initialise à nouveau l'intervalle représentatif de la probabilité d'apparition d'un symbole contenu dans l'ensemble prédéterminé de symboles. Une telle réinitialisation est matérialisée sur les figures 4A et 4B par un point noir en début de chaque ligne SEk. Ainsi, le décodeur DO se trouve dans un état initialisé à chaque début de ligne, ce qui permet une grande souplesse du point de vue du choix du niveau de parallélisme de décodage et une optimisation du temps de traitement au décodage. If the current block is the last block of the line SEk considered, during a step D35, the decoding unit UDk performs a step identical to the aforementioned step D23, that is to say initializes again the an interval representative of the probability of appearance of a symbol contained in the predetermined set of symbols. Such a reset is shown in Figures 4A and 4B by a black dot at the beginning of each line SEk. Thus, the decoder DO is in a state initialized at each beginning of the line, which allows a great flexibility from the point of view of the choice of the level of decoding parallelism and an optimization of the processing time during decoding.
Dans l'exemple de schéma de codage/décodage représenté sur la figure 7A, le codeur CO comprend une seule unité de codage UC, comme représenté sur la figure 3A, tandis que le décodeur DO comprend six unités de décodage.  In the exemplary coding / decoding scheme shown in FIG. 7A, the coder CO comprises a single coding unit UC, as shown in FIG. 3A, while the decoder DO comprises six decoding units.
L'unité de codage UC code séquentiellement les lignes SE1 , SE2, SE3, SE4, SE5 et SE6. Dans l'exemple représenté, les lignes SE1 à SE4 sont entièrement codées, la ligne SE5 est en cours de codage et la ligne SE6 n'a pas encore été codée. Compte tenu de la séquentialité du codage, l'unité de codage UC est adaptée à délivrer un flux F qui contient les sous-flux F1 , F2, F3, F4 ordonnés à la suite les uns des autres, dans l'ordre de codage des lignes SE1 , SE2, SE3 et SE4. A cet effet, les sous-flux F1 , F2, F3 et F4 sont symbolisés avec les mêmes hachures que celles qui symbolisent respectivement les lignes SE1 , SE2, SE3, SE4 codées. Grâce aux étapes de vidange en fin de codage desdites lignes codées et à la réinitialisation de l'intervalle de probabilités au démarrage du codage ou du décodage de la ligne suivante à coder/décoder, le décodeur DO, à chaque fois qu'il lit un sous-flux pour le décoder, est dans un état initialisé et peut donc, de façon optimale, décoder en parallèle les quatre sous-flux F1 , F2, F3, F4 avec des unités de décodage UD1 , UD2, UD3 et UD4 qui peuvent par exemple être installées sur quatre plateformes différentes.  The encoding unit UC sequentially encodes the lines SE1, SE2, SE3, SE4, SE5 and SE6. In the example shown, the lines SE1 to SE4 are fully coded, the line SE5 is being coded and the line SE6 has not yet been coded. Given the sequentiality of the coding, the coding unit UC is adapted to deliver a stream F which contains the substreams F1, F2, F3, F4 ordered one after the other, in the coding order of the lines SE1, SE2, SE3 and SE4. For this purpose, the substreams F1, F2, F3 and F4 are symbolized with the same hatching as those which respectively symbolize the lines SE1, SE2, SE3, SE4 encoded. Thanks to the steps of emptying at the end of coding of said coded lines and the resetting of the interval of probabilities at the start of coding or decoding of the next line to be coded / decoded, the decoder DO, whenever it reads a sub-stream to decode it, is in an initialized state and can therefore optimally decode in parallel the four sub-streams F1, F2, F3, F4 with decoding units UD1, UD2, UD3 and UD4 which can by example be installed on four different platforms.
Dans l'exemple de schéma de codage/décodage représenté sur la figure 7B, le codeur CO comprend deux unités de codage UC1 et UC2, comme représenté sur la figure 3C, tandis que le décodeur DO comprend six unités de décodage.  In the exemplary coding / decoding scheme shown in FIG. 7B, the coder CO comprises two coding units UC1 and UC2, as shown in FIG. 3C, while the decoder DO comprises six decoding units.
L'unité de codage UC1 code séquentiellement les lignes de rang impair SE1 , SE3 et SE5, tandis que l'unité de codage UC2 code séquentiellement les lignes de rang pair SE2, SE4 et SE6. A cet effet, les lignes SE1 , SE3 et SE5 présentent un fond blanc, tandis que les lignes SE2, SE4 et SE6 présentent un fond en pointillé. Dans l'exemple représenté, les lignes SE1 à SE4 sont entièrement codées, la ligne SE5 est en cours de codage et la ligne SE6 n'a pas encore été codée. Compte tenu du fait que le codage effectué est de type parallèle de niveau 2, l'unité de codage UC1 est adaptée à délivrer un sous-flux F2n+i décomposé en deux parties F1 et F3 obtenues suite au codage respectivement des lignes SE1 et SE3, tandis que l'unité de codage UC2 est adaptée à délivrer un sous-flux F2n décomposé en deux parties F2 et F4 obtenues suite au codage respectivement des lignes SE2 et SE4. Le codeur CO est donc adapté à transmettre au décodeur DO un flux F qui contient la juxtaposition des deux sous-flux F2n+i et F2n et donc un ordonnancement des sous-flux F1 , F3, F2, F4 qui diffère de celui représenté figure 7A. A cet effet, les sous-flux F1 , F2, F3 et F4 sont symbolisés avec les mêmes hachures que celles qui symbolisent respectivement les lignes SE1 , SE2, SE3, SE4 codées, les sous-flux F1 et F3 présentant un fond blanc (codage des lignes de rang impair) et les sous-flux F2 et F4 présentant un fond en pointillé (codage des lignes de rang pair). The encoding unit UC1 sequentially codes the odd-rank lines SE1, SE3 and SE5, while the encoding unit UC2 sequentially encodes the even-numbered lines SE2, SE4 and SE6. For this purpose, lines SE1, SE3 and SE5 have a white background, while lines SE2, SE4 and SE6 have a dotted background. In the example shown, the lines SE1 to SE4 are fully encoded, the SE5 line is being coded and the SE6 line has not yet been coded. Given the fact that the coding performed is of parallel type of level 2, the coding unit UC1 is adapted to deliver a sub-flux F 2n + i broken down into two parts F1 and F3 obtained following the coding respectively of the lines SE1 and SE3 , while the coding unit UC2 is adapted to deliver a sub-flux F 2n decomposed into two parts F2 and F4 obtained following the coding respectively lines SE2 and SE4. The encoder CO is therefore adapted to transmit to the decoder DO a stream F which contains the juxtaposition of the two substreams F 2n + 1 and F 2n and therefore a scheduling of the substreams F1, F3, F2, F4 which differs from that shown in FIG. 7A. For this purpose, the substreams F1, F2, F3 and F4 are symbolized with the same hatching as those which respectively symbolize the lines SE1, SE2, SE3, SE4 coded, the substreams F1 and F3 having a white background (coding lines of odd rank) and the substreams F2 and F4 having a dotted background (coding of lines of even rank).
Par rapport aux avantages mentionnés en liaison avec la figure 7A, un tel schéma de codage/décodage présente en outre l'avantage de pouvoir disposer d'un décodeur dont le niveau de parallélisme de décodage est complètement indépendant du niveau de parallélisme du codage, ce qui permet d'optimiser encore davantage le fonctionnement d'un codeur/décodeur.  With respect to the advantages mentioned in connection with FIG. 7A, such a coding / decoding scheme also has the advantage of being able to have a decoder whose level of decoding parallelism is completely independent of the level of parallelism of the coding. which makes it possible to further optimize the operation of an encoder / decoder.

Claims

REVENDICATIONS
1 . Procédé de codage d'au moins une image comprenant les étapes de : 1. A method of coding at least one image comprising the steps of:
- découpage (C1 ) de l'image en une pluralité de blocs (MB) aptes à contenir des symboles appartenant à un ensemble prédéterminé de symboles,  - cutting (C1) the image into a plurality of blocks (MB) able to contain symbols belonging to a predetermined set of symbols,
- regroupement (C2) de blocs en un nombre prédéterminé (P) de sous-ensembles de blocs (SE1 , SE2, ..., SEk, ..., SEP),  grouping (C2) blocks into a predetermined number (P) of block subsets (SE1, SE2, ..., SEk, ..., SEP),
- codage (C3), au moyen d'un module de codage entropique, de chacun desdits sous-ensembles de blocs, par association d'informations numériques aux symboles de chaque bloc d'un sous-ensemble considéré, ladite étape de codage comprenant, pour le premier bloc de l'image, une sous- étape (C33) d'initialisation de variables d'état dudit module de codage entropique,  coding (C3), by means of an entropy coding module, of each of said subsets of blocks, by association of digital information with the symbols of each block of a subset considered, said encoding step comprising, for the first block of the image, a substep (C33) for initializing state variables of said entropy coding module,
- génération (C4) d'au moins un sous-flux de données (F1 ) représentatif d'au moins un (SE1 ) desdits sous-ensembles de blocs codés, ledit procédé de codage étant caractérisé en ce que :  generating (C4) at least one data sub-stream (F1) representative of at least one (SE1) of said coded block subsets, said coding method being characterized in that:
- dans le cas où le bloc courant est le premier bloc à coder d'un sous-ensemble considéré, détermination (C42) de probabilités d'apparition de symbole pour ledit premier bloc courant, lesdites probabilités étant celles qui ont été déterminées pour un bloc prédéterminé codé et décodé d'au moins un autre sous-ensemble,  in the case where the current block is the first block to be encoded of a subset considered, determining (C42) symbol appearance probabilities for said first current block, said probabilities being those which have been determined for a block predetermined coded and decoded at least one other subset,
- dans le cas où le bloc courant est le dernier bloc codé du sous- ensemble considéré:  in the case where the current block is the last coded block of the subset considered:
• écriture (C45), dans le sous-flux représentatif dudit au moins sous-ensemble considéré, de la totalité des informations numériques qui ont été associées aux symboles lors du codage des blocs dudit sous-ensemble considéré,  Writing (C45), in the representative sub-stream of said at least one subset considered, of all the digital information that has been associated with the symbols during the coding of the blocks of said subset considered,
• mise en œuvre (C46) de ladite sous-étape d'initialisation. Implementation (C46) of said initialization substep.
2. Procédé de codage selon la revendication 1 , au cours duquel les sous-ensembles de blocs (SE1 , SE2, ..., SEk, ..., SEP) sont codés séquentiellement ou bien en parallèle. 2. Coding method according to claim 1, in which the subsets of blocks (SE1, SE2, ..., SEk, ..., SEP) are encoded sequentially or in parallel.
3. Procédé selon la revendication 2, au cours duquel lorsqu'au moins deux sous-ensembles de blocs (SE1 , SE3) sont codés parallèlement à au moins un autre sous-ensemble de blocs (SE2), lesdits au moins deux sous- ensembles de blocs codés sont contenus dans le même sous-flux de données 3. Method according to claim 2, in which when at least two subsets of blocks (SE1, SE3) are coded parallel to at least one other subset of blocks (SE2), said at least two subsets. coded blocks are contained in the same data sub-stream
4. Procédé de codage selon l'une quelconque des revendications 1 à 3, au cours duquel lorsque lesdits sous-ensembles de blocs codés sont destinés à être décodés en parallèle selon un ordre prédéterminé, les sous-flux de données délivrés après codage respectivement de chacun desdits sous- ensembles de blocs sont préalablement ordonnés selon ledit ordre prédéterminé avant d'être transmis en vue de leur décodage. Coding method according to any one of claims 1 to 3, wherein when said subsets of coded blocks are to be decoded in parallel in a predetermined order, the sub-data streams delivered after coding respectively of each of said subsets of blocks are previously ordered according to said predetermined order before being transmitted for decoding.
5. Dispositif de codage (CO) d'au moins une image comprenant : 5. Encoding device (CO) of at least one image comprising:
- des moyens (PCO) de découpage de l'image en une pluralité de blocs (MB) aptes à contenir des symboles appartenant à un ensemble prédéterminé de symboles,  means (PCO) for cutting the image into a plurality of blocks (MB) capable of containing symbols belonging to a predetermined set of symbols,
- des moyens (GRCO) de regroupement desdits blocs en un nombre prédéterminé (P) de sous-ensembles de blocs,  means (GRCO) for grouping said blocks into a predetermined number (P) of block subsets,
- des moyens (UC ; UC1 , UC2, ..., UCk, ..., UCP) de codage de chacun desdits sous-ensembles de blocs, lesdits moyens de codage comprenant un module de codage entropique (MCE ; MCEk) apte à associer des informations numériques aux symboles de chaque bloc d'un sous- ensemble considéré, lesdits moyens de codage comprenant, pour le premier bloc de l'image, des sous-moyens d'initialisation de variables d'état dudit module de codage entropique,  means (UC1, UC2,..., UCk,..., UCP) encoding each of said block subsets, said coding means comprising an entropy coding module (MCE; MCEk) adapted to associating digital information with the symbols of each block of a subset considered, said coding means comprising, for the first block of the image, sub-means for initializing state variables of said entropy coding module,
- des moyens (MGSF ; MGSFk) de génération d'au moins un sous-flux de données (F1 ) représentatif d'au moins un desdits sous-ensembles de blocs codés, ledit dispositif de codage étant caractérisé en ce qu'il comprend : means (MGSF; MGSFk) for generating at least one data sub-stream (F1) representative of at least one of said coded block subsets, said coding device being characterized in that it comprises:
- des moyens de détermination de probabilités d'apparition de symbole pour un bloc courant qui, dans le cas où le bloc courant est le premier bloc à coder d'un sous-ensemble considéré, déterminent les probabilités d'apparition de symbole pour ledit premier bloc comme étant celles qui ont été déterminées pour un bloc prédéterminé codé et décodé d'au moins un autre sous-ensemble,  means for determining symbol appearance probabilities for a current block which, in the case where the current block is the first block to be coded for a considered subset, determine the symbol appearance probabilities for said first block block as those which have been determined for a predetermined coded and decoded block of at least one other subset,
- des moyens d'écriture qui, dans le cas où le bloc courant est le dernier bloc codé dudit sous-ensemble considéré, sont activés pour écrire, dans le sous-flux représentatif dudit sous-ensemble considéré, la totalité des informations numériques qui ont été associées aux symboles lors du codage des blocs dudit sous-ensemble considéré,  writing means which, in the case where the current block is the last coded block of said subset considered, are activated to write, in the representative sub-stream of said subset considered, all the digital information which has have been associated with the symbols during the coding of the blocks of said subset considered,
lesdits sous-moyens d'initialisation étant en outre activés pour réinitialiser les variables d'état dudit module de codage entropique. said initialization sub-means being further enabled to reset the state variables of said entropy coding module.
6. Programme d'ordinateur comportant des instructions pour mettre en œuvre le procédé de codage selon l'une quelconque des revendications 1 à 4, lorsqu'il est exécuté sur un ordinateur. A computer program comprising instructions for implementing the encoding method according to any one of claims 1 to 4, when executed on a computer.
7. Support d'enregistrement lisible par un ordinateur sur lequel est enregistré un programme d'ordinateur comprenant des instructions pour l'exécution des étapes du procédé de codage selon l'une quelconque des revendications 1 à 4, lorsque ledit programme est exécuté par un ordinateur. A computer-readable recording medium on which a computer program is recorded including instructions for executing the steps of the encoding method according to any one of claims 1 to 4, when said program is executed by a computer.
8. Procédé de décodage d'un flux (F) représentatif d'au moins une image codée, comprenant les étapes de : 8. A method for decoding a stream (F) representative of at least one coded picture, comprising the steps of:
- identification (D1 ) dans ledit flux d'un nombre prédéterminé de sous-flux de données (F1 , F2, ...,Fm, ..., FL) correspondant respectivement à au moins un sous-ensemble de blocs à décoder, lesdits blocs étant aptes à contenir des symboles appartenant à un ensemble prédéterminé de symboles,  identification (D1) in said stream of a predetermined number of data substreams (F1, F2, ..., Fm, ..., FL) respectively corresponding to at least one subset of blocks to be decoded, said blocks being able to contain symbols belonging to a predetermined set of symbols,
- décodage (D2) desdits sous-ensembles de blocs identifiés au moyen d'un module de décodage entropique, par lecture, dans au moins un desdits sous-flux identifiés, d'informations numériques associées aux symboles de chaque bloc du sous-ensemble correspondant audit au moins un sous-flux identifié, ladite étape de décodage comprenant, pour le premier bloc à décoder de l'image, une sous-étape (D23) d'initialisation de variables d'état dudit module de décodage entropique, decoding (D2) said identified subsets of blocks by means of an entropy decoding module, by reading, in at least one of said identified substreams, digital information associated with the symbols each block of the subset corresponding to said at least one identified substream, said decoding step comprising, for the first block to be decoded from the image, a substep (D23) for initializing state variables of said entropy decoding module,
ledit procédé de décodage étant caractérisé en ce que : said decoding method being characterized in that:
- dans le cas où le bloc courant est le premier bloc à décoder d'un sous-ensemble considéré, détermination (D32) de probabilités d'apparition de symbole pour le premier bloc dudit sous-ensemble considéré, lesdites probabilités étant celles qui ont été déterminées pour un bloc prédéterminé décodé d'au moins un autre sous-ensemble,  in the case where the current block is the first block to be decoded from a subset considered, determination (D32) of symbol appearance probabilities for the first block of said subset considered, said probabilities being those which have been determined for a predetermined decoded block of at least one other subset,
- dans le cas où le bloc courant est le dernier bloc décodé du sous-ensemble considéré, mise en œuvre (D35) de ladite sous-étape d'initialisation.  in the case where the current block is the last decoded block of the subset considered, implementation (D35) of said initialization substep.
9. Procédé de décodage selon la revendication 8, au cours duquel les sous-ensembles de blocs sont décodés séquentiellement ou bien en parallèle. 9. decoding method according to claim 8, wherein the subsets of blocks are decoded sequentially or in parallel.
10. Procédé selon la revendication 9, au cours duquel lorsqu'au moins deux sous-ensembles de blocs sont décodés parallèlement à au moins un autre sous-ensemble de blocs, un des sous-flux de données identifiés est représentatif desdits au moins deux sous-ensembles de blocs. The method of claim 9, wherein when at least two subsets of blocks are decoded in parallel with at least one other subset of blocks, one of the identified data substreams is representative of the at least two subsets of blocks. - blocks sets.
1 1 . Procédé de décodage selon la revendication 9 ou la revendication 10, au cours duquel lorsque lesdits sous-ensembles de blocs codés sont destinés à être décodés en parallèle selon un ordre prédéterminé, les sous-flux de données correspondant respectivement auxdits sous-ensembles de blocs codés sont ordonnés préalablement selon ledit ordre prédéterminé dans ledit flux à décoder. 1 1. A decoding method according to claim 9 or claim 10, wherein when said coded block subsets are to be decoded in parallel in a predetermined order, the data sub-streams respectively corresponding to said coded block subsets. are ordered beforehand according to said predetermined order in said flow to be decoded.
12. Dispositif (DO) de décodage d'un flux (F) représentatif d'au moins une image codée, comprenant : 12. Device (DO) for decoding a stream (F) representative of at least one coded picture, comprising:
- des moyens (EXDO) d'identification dans ledit flux d'un nombre prédéterminé de sous-flux de données (F1 , F2, ...,Fm, ..., FL) correspondant respectivement à au moins un sous-ensemble de blocs à décoder, lesdits blocs étant aptes à contenir des symboles appartenant à un ensemble prédéterminé de symboles, means (EXDO) for identifying in said stream a predetermined number of corresponding sub-data streams (F1, F2,..., Fm,..., FL) respectively to at least a subset of blocks to be decoded, said blocks being able to contain symbols belonging to a predetermined set of symbols,
- des moyens (UD ; UD1 , UD2, ...,UDk, ... UDP) de décodage desdits sous-ensembles de blocs identifiés, lesdits moyens de décodage comprenant un module de décodage entropique (MDE ; MDE1 , MDE2, ..., MDEk, ...,MDEP) apte à lire, dans au moins un desdits sous-flux identifiés, des informations numériques associées aux symboles de chaque bloc du sous- ensemble correspondant audit au moins un sous-flux identifié, lesdits moyens de décodage comprenant, pour le premier bloc à décoder de l'image, des sous- moyens d'initialisation de variables d'état dudit module de décodage entropique,  means (UD, UD1, UD2,..., UDk,... UDP) for decoding said identified subsets of blocks, said decoding means comprising an entropy decoding module (MDE; MDE1, MDE2, .. ., MDEk, ..., MDEP) able to read, in at least one of said identified substreams, digital information associated with the symbols of each block of the subset corresponding to said at least one identified substream, said means of decoding comprising, for the first block to be decoded from the image, sub-means for initializing state variables of said entropy decoding module,
ledit dispositif de décodage étant caractérisé en ce qu'il comprend des moyens de détermination de probabilités d'apparition de symbole pour un bloc courant qui, dans le cas où le bloc courant est le premier bloc à décoder d'un sous- ensemble considéré, déterminent les probabilités d'apparition de symbole pour ledit premier bloc comme étant celles qui ont été déterminées pour un bloc prédéterminé décodé d'au moins un autre sous-ensemble, said decoding device being characterized in that it comprises means for determining symbol occurrence probabilities for a current block which, in the case where the current block is the first block to be decoded of a considered subset, determine the symbol occurrence probabilities for said first block as those determined for a decoded predetermined block of at least one other subset,
et en ce que dans le cas où le bloc courant est le dernier bloc décodé du sous- ensemble considéré, lesdits sous-moyens d'initialisation sont activés pour réinitialiser les variables d'état dudit module de décodage entropique. and in that in the case where the current block is the last decoded block of the subset considered, said initialization sub-means are activated to reset the state variables of said entropy decoding module.
13. Programme d'ordinateur comportant des instructions pour mettre en œuvre le procédé de décodage selon l'une quelconque des revendications 8 à 1 1 , lorsqu'il est exécuté sur un ordinateur. Computer program comprising instructions for implementing the decoding method according to any one of claims 8 to 11 when executed on a computer.
14. Support d'enregistrement lisible par un ordinateur sur lequel est enregistré un programme d'ordinateur comprenant des instructions pour l'exécution des étapes du procédé de décodage selon l'une quelconque des revendications 8 à 1 1 , lorsque ledit programme est exécuté par un ordinateur. 14. Computer-readable recording medium on which is recorded a computer program comprising instructions for executing the steps of the decoding method according to any one of claims 8 to 11, when said program is executed by a computer.
EP12734974.4A 2011-06-24 2012-06-20 Method for encoding and decoding images, encoding and decoding device, and corresponding computer programs Ceased EP2724536A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP20155879.8A EP3700207A1 (en) 2011-06-24 2012-06-20 Method and device for encoding and decoding images

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1155606A FR2977111A1 (en) 2011-06-24 2011-06-24 METHOD FOR ENCODING AND DECODING IMAGES, CORRESPONDING ENCODING AND DECODING DEVICE AND COMPUTER PROGRAMS
PCT/FR2012/051391 WO2012175870A1 (en) 2011-06-24 2012-06-20 Method for encoding and decoding images, encoding and decoding device, and corresponding computer programs

Related Child Applications (1)

Application Number Title Priority Date Filing Date
EP20155879.8A Division EP3700207A1 (en) 2011-06-24 2012-06-20 Method and device for encoding and decoding images

Publications (1)

Publication Number Publication Date
EP2724536A1 true EP2724536A1 (en) 2014-04-30

Family

ID=46508090

Family Applications (2)

Application Number Title Priority Date Filing Date
EP12734974.4A Ceased EP2724536A1 (en) 2011-06-24 2012-06-20 Method for encoding and decoding images, encoding and decoding device, and corresponding computer programs
EP20155879.8A Pending EP3700207A1 (en) 2011-06-24 2012-06-20 Method and device for encoding and decoding images

Family Applications After (1)

Application Number Title Priority Date Filing Date
EP20155879.8A Pending EP3700207A1 (en) 2011-06-24 2012-06-20 Method and device for encoding and decoding images

Country Status (10)

Country Link
US (12) US9319692B2 (en)
EP (2) EP2724536A1 (en)
JP (5) JP2014520470A (en)
KR (14) KR102003549B1 (en)
CN (8) CN105120277A (en)
BR (1) BR112013032956B1 (en)
FR (1) FR2977111A1 (en)
HK (6) HK1216058A1 (en)
RU (5) RU2646345C1 (en)
WO (1) WO2012175870A1 (en)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2972588A1 (en) 2011-03-07 2012-09-14 France Telecom METHOD FOR ENCODING AND DECODING IMAGES, CORRESPONDING ENCODING AND DECODING DEVICE AND COMPUTER PROGRAMS
FR2977111A1 (en) * 2011-06-24 2012-12-28 France Telecom METHOD FOR ENCODING AND DECODING IMAGES, CORRESPONDING ENCODING AND DECODING DEVICE AND COMPUTER PROGRAMS
US8879858B1 (en) * 2013-10-01 2014-11-04 Gopro, Inc. Multi-channel bit packing engine
KR101847899B1 (en) * 2014-02-12 2018-04-12 주식회사 칩스앤미디어 Method and apparatus for processing video
FR3029333A1 (en) * 2014-11-27 2016-06-03 Orange METHOD FOR ENCODING AND DECODING IMAGES, CORRESPONDING ENCODING AND DECODING DEVICE AND COMPUTER PROGRAMS
US10574993B2 (en) 2015-05-29 2020-02-25 Qualcomm Incorporated Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design
FR3046321B1 (en) * 2015-12-29 2018-01-26 B<>Com DIGITAL IMAGE ENCODING METHOD, DECODING METHOD, DEVICES, USER TERMINAL, AND ASSOCIATED COMPUTER PROGRAMS
US10230948B2 (en) 2016-02-03 2019-03-12 Mediatek Inc. Video transmitting system with on-the-fly encoding and on-the-fly delivering and associated video receiving system
EP3244610A1 (en) * 2016-05-12 2017-11-15 Thomson Licensing Method and device for context-adaptive binary arithmetic coding a sequence of binary symbols representing a syntax element related to video data
CN108664958A (en) * 2017-04-02 2018-10-16 田雪松 Data decoding method and data deciphering device
FR3068557A1 (en) * 2017-07-05 2019-01-04 Orange METHOD FOR ENCODING AND DECODING IMAGES, CORRESPONDING ENCODING AND DECODING DEVICE AND COMPUTER PROGRAMS
WO2019111013A1 (en) * 2017-12-06 2019-06-13 V-Nova International Ltd Method and apparatus for decoding a received set of encoded data
US10827192B2 (en) 2018-11-02 2020-11-03 Fungible, Inc. Work allocation for JPEG accelerator
US10827191B2 (en) * 2018-11-02 2020-11-03 Fungible, Inc. Parallel coding of syntax elements for JPEG accelerator
US10848775B2 (en) 2018-11-02 2020-11-24 Fungible, Inc. Memory layout for JPEG accelerator
US10931958B2 (en) 2018-11-02 2021-02-23 Fungible, Inc. JPEG accelerator using last-non-zero (LNZ) syntax element
FR3092719A1 (en) * 2019-02-07 2020-08-14 Orange Methods and devices for encoding and decoding a data stream representative of at least one image.
US20220277491A1 (en) * 2019-05-31 2022-09-01 Electronics And Telecommunications Research Institute Method and device for machine learning-based image compression using global context
KR102595278B1 (en) 2020-12-29 2023-10-27 부산대학교 산학협력단 Apparatus and method for storing image data for surface defect detection scanner

Family Cites Families (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1038278A (en) 1907-03-21 1912-09-10 Union Switch & Signal Co Semaphore-signal.
US1036231A (en) 1911-05-15 1912-08-20 William S Hazelton Wire-fence builder.
US1003399A (en) 1911-05-17 1911-09-12 Jerry C Burns Tie-remover.
JP3871348B2 (en) 1993-03-05 2007-01-24 ソニー株式会社 Image signal decoding apparatus and image signal decoding method
JPH08116534A (en) 1994-10-18 1996-05-07 Seiko Epson Corp Image data coder, its method, image data encoder and its method
JP3225793B2 (en) 1995-06-16 2001-11-05 東洋インキ製造株式会社 Highly hydrophilic paint
DE69940703D1 (en) * 1998-03-05 2009-05-20 Panasonic Corp Image encoding method, image coding / decoding method, image encoder, or image recording / reproducing apparatus
JP3391251B2 (en) 1998-03-25 2003-03-31 三菱電機株式会社 Adaptive probability estimation method, adaptive encoding method, and adaptive decoding method
US6480537B1 (en) * 1999-02-25 2002-11-12 Telcordia Technologies, Inc. Active techniques for video transmission and playback
GB2348064A (en) 1999-03-16 2000-09-20 Mitsubishi Electric Inf Tech Motion vector field encoding
US7221483B2 (en) 2000-09-05 2007-05-22 Ricoh Company, Ltd. Image encoding method and apparatus, image decoding method and apparatus, image processing apparatus, image formation apparatus, and computer-executable programs
EP1445956A4 (en) * 2001-11-16 2009-09-02 Ntt Docomo Inc Image encoding method, image decoding method, image encoder, image decoder, program, computer data signal and image transmission system
US7813431B2 (en) * 2002-05-20 2010-10-12 Broadcom Corporation System, method, and apparatus for decoding flexibility ordered macroblocks
US6795584B2 (en) * 2002-10-03 2004-09-21 Nokia Corporation Context-based adaptive variable length coding for adaptive block transforms
WO2004075556A1 (en) 2003-02-19 2004-09-02 Ishikawajima-Harima Heavy Industries Co., Ltd. Image compression device, image compression method, image compression program, compression/encoding method, compression/encoding device, compression/encoding program, decoding method, decoding device, and decoding program
US8824553B2 (en) 2003-05-12 2014-09-02 Google Inc. Video compression method
JP2005033336A (en) 2003-07-08 2005-02-03 Ntt Docomo Inc Apparatus and method for coding moving image, and moving image coding program
US6900748B2 (en) * 2003-07-17 2005-05-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Method and apparatus for binarization and arithmetic coding of a data value
CN1214649C (en) 2003-09-18 2005-08-10 中国科学院计算技术研究所 Entropy encoding method for encoding video predictive residual error coefficient
US7379608B2 (en) 2003-12-04 2008-05-27 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. Arithmetic coding for transforming video and picture data units
JP4241417B2 (en) * 2004-02-04 2009-03-18 日本ビクター株式会社 Arithmetic decoding device and arithmetic decoding program
US7463781B2 (en) 2004-04-14 2008-12-09 Lsi Corporation Low overhead context intializations for arithmetic video codecs
DE602005009439D1 (en) 2004-07-06 2008-10-16 Proton World Int Nv Stream encryption of the contents of a memory, which is located outside of a processor
US20060048038A1 (en) * 2004-08-27 2006-03-02 Yedidia Jonathan S Compressing signals using serially-concatenated accumulate codes
JP2006101406A (en) * 2004-09-30 2006-04-13 Toshiba Corp Information processing apparatus and program used for the processing apparatus
US7929776B2 (en) 2005-03-10 2011-04-19 Qualcomm, Incorporated Method and apparatus for error recovery using intra-slice resynchronization points
JP2006279574A (en) 2005-03-29 2006-10-12 Sanyo Electric Co Ltd Decoder and decoding method
CN1703089A (en) * 2005-06-09 2005-11-30 清华大学 A two-value arithmetic coding method of digital signal
US8750908B2 (en) 2005-06-16 2014-06-10 Qualcomm Incorporated Quick paging channel with reduced probability of missed page
RU2371881C1 (en) 2005-07-08 2009-10-27 ЭлДжи ЭЛЕКТРОНИКС ИНК. Method of modelling video signal coding information for information compression/decompression
US7869660B2 (en) * 2005-10-31 2011-01-11 Intel Corporation Parallel entropy encoding of dependent image blocks
JP2006141037A (en) * 2005-11-14 2006-06-01 Ntt Docomo Inc Apparatus, method and program for encoding moving image
JP2007142637A (en) * 2005-11-16 2007-06-07 Matsushita Electric Ind Co Ltd Image information encoder
JP2007166192A (en) 2005-12-13 2007-06-28 Toshiba Corp Information processing device, control method, and program
US7924925B2 (en) * 2006-02-24 2011-04-12 Freescale Semiconductor, Inc. Flexible macroblock ordering with reduced data traffic and power consumption
US8401082B2 (en) 2006-03-27 2013-03-19 Qualcomm Incorporated Methods and systems for refinement coefficient coding in video compression
JP2007300455A (en) 2006-05-01 2007-11-15 Victor Co Of Japan Ltd Arithmetic encoding apparatus, and context table initialization method in arithmetic encoding apparatus
US7949054B2 (en) 2006-06-01 2011-05-24 Microsoft Corporation Flexible data organization for images
CN101491097B (en) 2006-07-13 2011-12-14 高通股份有限公司 Video coding with fine granularity scalability using cycle-aligned fragments
US8000388B2 (en) 2006-07-17 2011-08-16 Sony Corporation Parallel processing apparatus for video compression
US7912302B2 (en) 2006-09-21 2011-03-22 Analog Devices, Inc. Multiprocessor decoder system and method
CN101198051B (en) 2006-12-07 2011-10-05 深圳艾科创新微电子有限公司 Method and device for implementing entropy decoder based on H.264
CN101553988B (en) * 2006-12-14 2012-10-17 日本电气株式会社 Video encoding method, video encoding device, and video encoding program
US20080225947A1 (en) 2007-03-13 2008-09-18 Matthias Narroschke Quantization for hybrid video coding
JP5162939B2 (en) * 2007-03-30 2013-03-13 ソニー株式会社 Information processing apparatus and method, and program
TWI341657B (en) * 2007-04-03 2011-05-01 Nat Univ Tsing Hua Cabac decoding method
US8205140B2 (en) 2007-05-10 2012-06-19 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for the use of network coding in a wireless communication network
CN100493198C (en) * 2007-05-31 2009-05-27 北京中星微电子有限公司 Probability model storing method in arithmetic coding
US8571104B2 (en) * 2007-06-15 2013-10-29 Qualcomm, Incorporated Adaptive coefficient scanning in video coding
US8619853B2 (en) 2007-06-15 2013-12-31 Qualcomm Incorporated Separable directional transforms
US9648325B2 (en) * 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
JP2009027306A (en) 2007-07-18 2009-02-05 Epson Toyocom Corp Surface acoustic wave device
JP5100311B2 (en) * 2007-10-29 2012-12-19 キヤノン株式会社 Moving image data transmission method, communication apparatus, and program
US8542727B2 (en) 2007-12-31 2013-09-24 Intel Corporation Systems and apparatuses for performing CABAC parallel encoding and decoding
US9008171B2 (en) 2008-01-08 2015-04-14 Qualcomm Incorporated Two pass quantization for CABAC coders
JP4915350B2 (en) * 2008-01-16 2012-04-11 日本電気株式会社 Entropy encoder, video encoding device, video encoding method, and video encoding program
US7551341B1 (en) 2008-01-28 2009-06-23 Dolby Laboratories Licensing Corporation Serial modulation display having binary light modulation stage
WO2009104417A1 (en) * 2008-02-22 2009-08-27 パナソニック株式会社 Image pickup device
US8542748B2 (en) 2008-03-28 2013-09-24 Sharp Laboratories Of America, Inc. Methods and systems for parallel video encoding and decoding
JP4875024B2 (en) 2008-05-09 2012-02-15 株式会社東芝 Image information transmission device
WO2009150808A1 (en) * 2008-06-10 2009-12-17 パナソニック株式会社 Image decoding device and image encoding device
KR101456495B1 (en) 2008-08-28 2014-10-31 삼성전자주식회사 Apparatus and method for lossless coding and decoding
US7932843B2 (en) 2008-10-17 2011-04-26 Texas Instruments Incorporated Parallel CABAC decoding for video decompression
US9467699B2 (en) 2008-12-03 2016-10-11 Hfi Innovation Inc. Method for performing parallel coding with ordered entropy slices, and associated apparatus
CN101836454B (en) * 2008-12-03 2012-08-22 联发科技股份有限公司 Method for performing parallel cabac processing with ordered entropy slices, and associated apparatus
WO2010067505A1 (en) * 2008-12-08 2010-06-17 パナソニック株式会社 Image decoding apparatus and image decoding method
JP2010278519A (en) * 2009-05-26 2010-12-09 Panasonic Corp Motion vector detector
JP5385736B2 (en) * 2009-09-17 2014-01-08 Nttエレクトロニクス株式会社 Stream control apparatus, stream control method, and stream control program
EP2486659B1 (en) * 2009-10-05 2020-11-25 Orange Methods for encoding and decoding images, corresponding encoding and decoding devices and computer programs
KR100954141B1 (en) 2009-10-12 2010-04-20 주식회사 이알에이와이어리스 Unified communication repeater with cancelling interference signal and cascade relay system using thereof
EP2312854A1 (en) * 2009-10-15 2011-04-20 Siemens Aktiengesellschaft Method for coding symbols from a digital image sequence
FR2951896A1 (en) 2009-10-23 2011-04-29 France Telecom DATA SUB-FLOW ENCAPSULATION METHOD, DESENCAPSULATION METHOD AND CORRESPONDING COMPUTER PROGRAMS
CN102754437B (en) * 2009-10-29 2015-03-18 松下电器(美国)知识产权公司 Image encoding method and image encoding device, as well as integrated circuit
JP5108857B2 (en) 2009-11-05 2012-12-26 株式会社エヌ・ティ・ティ・ドコモ Display control apparatus and program
US9369736B2 (en) 2010-04-05 2016-06-14 Samsung Electronics Co., Ltd. Low complexity entropy-encoding/decoding method and apparatus
JP5914962B2 (en) 2010-04-09 2016-05-11 ソニー株式会社 Image processing apparatus and method, program, and recording medium
US8319672B2 (en) 2010-04-09 2012-11-27 Korea Electronics Technology Institute Decoding device for context-based adaptive binary arithmetic coding (CABAC) technique
US20120014433A1 (en) * 2010-07-15 2012-01-19 Qualcomm Incorporated Entropy coding of bins across bin groups using variable length codewords
US9300938B2 (en) 2010-07-22 2016-03-29 Dolby Laboratories Licensing Corporation Systems, apparatus and methods for mapping between video ranges of image data and display
US8520740B2 (en) 2010-09-02 2013-08-27 International Business Machines Corporation Arithmetic decoding acceleration
WO2012031628A1 (en) 2010-09-09 2012-03-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Entropy encoding and decoding scheme
US10349070B2 (en) * 2010-09-30 2019-07-09 Texas Instruments Incorporated Simplified binary arithmetic coding engine
US20120163448A1 (en) 2010-12-22 2012-06-28 Qualcomm Incorporated Coding the position of a last significant coefficient of a video block in video coding
US9300976B2 (en) 2011-01-14 2016-03-29 Cisco Technology, Inc. Video encoder/decoder, method and computer program product that process tiles of video data
FR2972588A1 (en) 2011-03-07 2012-09-14 France Telecom METHOD FOR ENCODING AND DECODING IMAGES, CORRESPONDING ENCODING AND DECODING DEVICE AND COMPUTER PROGRAMS
CN102685503B (en) * 2011-03-10 2014-06-25 华为技术有限公司 Encoding method of conversion coefficients, decoding method of conversion coefficients and device
TWI487295B (en) 2011-05-17 2015-06-01 Univ Nat Cheng Kung Method for high throughput parallel avc/h.264 context-based adaptive binary arithmetic decoder
US8891863B2 (en) 2011-06-13 2014-11-18 Dolby Laboratories Licensing Corporation High dynamic range, backwards-compatible, digital cinema
FR2977111A1 (en) 2011-06-24 2012-12-28 France Telecom METHOD FOR ENCODING AND DECODING IMAGES, CORRESPONDING ENCODING AND DECODING DEVICE AND COMPUTER PROGRAMS
US8767824B2 (en) * 2011-07-11 2014-07-01 Sharp Kabushiki Kaisha Video decoder parallelization for tiles
PL3425805T3 (en) 2011-07-15 2023-05-08 Ge Video Compression, Llc Sample array coding for low-delay
US20130021350A1 (en) * 2011-07-19 2013-01-24 Advanced Micro Devices, Inc. Apparatus and method for decoding using coefficient compression
RU2679551C2 (en) * 2012-01-20 2019-02-11 ДжиИ Видео Компрешн, ЭлЭлСи Coding concept allowing parallel processing, transport demultiplexer and video bitstream
CN104641647B (en) 2012-04-13 2018-05-04 Ge视频压缩有限责任公司 Low latency image writes code
US9191671B2 (en) * 2012-04-19 2015-11-17 Vid Scale, Inc. System and method for error-resilient video coding

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
None *
See also references of WO2012175870A1 *

Also Published As

Publication number Publication date
KR102095329B1 (en) 2020-03-31
BR112013032956A2 (en) 2017-01-24
KR20160086984A (en) 2016-07-20
RU2018103979A (en) 2019-08-02
KR20200135580A (en) 2020-12-02
CN103959787A (en) 2014-07-30
RU2018103979A3 (en) 2020-05-28
US9380308B2 (en) 2016-06-28
US20170223353A1 (en) 2017-08-03
HK1244374A1 (en) 2018-08-03
JP2017073806A (en) 2017-04-13
US9848196B2 (en) 2017-12-19
US20140254665A1 (en) 2014-09-11
US20150195537A1 (en) 2015-07-09
CN107094255A (en) 2017-08-25
JP7280233B2 (en) 2023-05-23
KR102437249B1 (en) 2022-08-26
US9319694B2 (en) 2016-04-19
US20160234512A1 (en) 2016-08-11
US10362311B2 (en) 2019-07-23
FR2977111A1 (en) 2012-12-28
JP6875333B2 (en) 2021-05-19
KR101851477B1 (en) 2018-04-23
US20230353740A1 (en) 2023-11-02
JP2014520470A (en) 2014-08-21
KR20160086987A (en) 2016-07-20
US10694186B2 (en) 2020-06-23
RU2613740C2 (en) 2017-03-21
CN107094254A (en) 2017-08-25
US20160150250A1 (en) 2016-05-26
KR102344519B1 (en) 2021-12-29
US20200322609A1 (en) 2020-10-08
CN107094256B (en) 2020-02-07
JP2018201220A (en) 2018-12-20
KR101907043B1 (en) 2018-10-11
KR20220122797A (en) 2022-09-02
KR20180004318A (en) 2018-01-10
RU2646345C1 (en) 2018-03-02
CN107094252B (en) 2020-03-13
KR20160086986A (en) 2016-07-20
BR112013032956B1 (en) 2022-05-03
BR112013032956A8 (en) 2017-07-11
HK1244375A1 (en) 2018-08-03
EP3700207A1 (en) 2020-08-26
KR20140056229A (en) 2014-05-09
KR102185377B1 (en) 2020-12-01
WO2012175870A1 (en) 2012-12-27
RU2727171C2 (en) 2020-07-21
US9661335B2 (en) 2017-05-23
US20190297323A1 (en) 2019-09-26
JP2023100970A (en) 2023-07-19
KR20200035182A (en) 2020-04-01
CN103959787B (en) 2017-06-20
KR20220000420A (en) 2022-01-03
US9319692B2 (en) 2016-04-19
US10033999B2 (en) 2018-07-24
US20150016524A1 (en) 2015-01-15
US20160142720A1 (en) 2016-05-19
RU2739497C1 (en) 2020-12-24
KR20210041123A (en) 2021-04-14
KR20190087671A (en) 2019-07-24
HK1216058A1 (en) 2016-10-07
KR20230067712A (en) 2023-05-16
HK1244376A1 (en) 2018-08-03
KR101708982B1 (en) 2017-02-21
HK1244377A1 (en) 2018-08-03
KR20180113634A (en) 2018-10-16
US20150195538A1 (en) 2015-07-09
CN105120277A (en) 2015-12-02
KR102003549B1 (en) 2019-07-25
US9654783B2 (en) 2017-05-16
US20180302632A1 (en) 2018-10-18
CN107094253B (en) 2020-11-10
CN107094255B (en) 2020-01-31
CN107071446B (en) 2020-08-11
HK1244373A1 (en) 2018-08-03
RU2757543C1 (en) 2021-10-18
JP2021044831A (en) 2021-03-18
CN107094252A (en) 2017-08-25
KR102240333B1 (en) 2021-04-13
KR20150046352A (en) 2015-04-29
CN107094254B (en) 2019-12-13
CN107071446A (en) 2017-08-18
US9319693B2 (en) 2016-04-19
CN107094253A (en) 2017-08-25
CN107094256A (en) 2017-08-25
RU2014102226A (en) 2015-08-10

Similar Documents

Publication Publication Date Title
WO2012175870A1 (en) Method for encoding and decoding images, encoding and decoding device, and corresponding computer programs
EP2684366A1 (en) Method of coding and decoding images, coding and decoding device and computer programs corresponding thereto
EP2991350B1 (en) Method for decoding images
EP2991351A1 (en) Procedure for decoding of images
EP2932714B1 (en) Method of coding and decoding images, device for coding and decoding and computer programs corresponding thereto
EP3409016A1 (en) Method for encoding and decoding data, device for encoding and decoding data, and corresponding computer programs
WO2018065687A1 (en) Method for encoding an image and associated decoding method, devices, terminal equipment and computer programs
WO2013007920A1 (en) Method of coding and decoding images, device for coding and decoding and computer programs corresponding thereto
WO2013144474A1 (en) Method and device for coding and decoding images

Legal Events

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

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20140123

AK Designated contracting states

Kind code of ref document: A1

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

DAX Request for extension of the european patent (deleted)
RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: DOLBY INTERNATIONAL AB

REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1197511

Country of ref document: HK

RIN1 Information on inventor provided before grant (corrected)

Inventor name: HENRY, FELIX

Inventor name: PATEUX, STEPHANE

Inventor name: CLARE, GORDON

17Q First examination report despatched

Effective date: 20170413

REG Reference to a national code

Ref country code: DE

Ref legal event code: R003

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

Free format text: STATUS: THE APPLICATION HAS BEEN REFUSED

18R Application refused

Effective date: 20191108