Image decoding method, image decoding system and computer readable medium for image decoding
By dividing images into blocks and subsets for entropy coding, the method addresses inefficiencies in video coding, enhancing compression and parallel processing capabilities.
Patent Information
- Application Number
- JP2025159957
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2011-06-24
- Filing Date
- 2025-09-26
- Publication Date
- 2025-12-16
AI Technical Summary
Current video coding technologies face inefficiencies due to lack of local consistency in symbol probability learning during entropy coding, leading to suboptimal compression performance and sequential decoding that limits parallel processing.
Divide images into blocks and subsets, using symbol occurrence probabilities from other subsets for entropy coding, allowing parallel decoding and flexible parallelism levels.
Improves image compression performance and accelerates processing by enabling parallel decoding without reinitializing entropy modules, compatible with existing standards like H.264/MPEG-4 AVC.
Smart Images

Figure 2025183422000001_ABST
Abstract
Description
[Technical Field]
[0001] The present invention relates generally to the field of image processing, and more precisely to the encoding and decoding of digital images and sequences of digital images.
[0002] Therefore, the present invention can be applied specifically to video coding implemented in current video coding devices (MPEG, H.264, etc.) or upcoming video coding devices (ITU-T / VCEG (H.265) or ISO / MPEG (HVC)). [Background technology]
[0003] Current video coding devices (MPEG, H264, etc.) use a block-based representation of video sequences. Images are divided into macroblocks, each of which is itself divided into blocks, and each block or macroblock is coded by intra- or inter-picture prediction. Thus, certain 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, using motion compensation known to those skilled in the art. Furthermore, for each block, a residual block may be coded, which corresponds to the original block minus the prediction. The coefficients of this block are quantized, possibly after transformation, and then coded by an entropy coding device.
[0004] Intra- and inter-prediction require that a particular block, previously coded and decoded, be available for use by the decoder or encoder to predict the current block. A schematic illustration of such predictive coding is shown in FIG. 1, where image I N is divided into blocks, and the current block of this image is MB iis being predictively coded with respect to a predetermined number of three previously coded and decoded blocks MBr1, MBr2 and MBr3, such as those indicated by the hatched arrows. These three blocks are specifically the current block MBr1, MBr2 and MBr3. i The block immediately to the left of MBr1 and the current block MB i It consists of the block MBr2 immediately above it and the block MBr3 immediately above and to the right of it.
[0005] Of particular interest here is the entropy coder, which codes information in the order of arrival. Typically, a "raster scan" type scan is performed by the reference PRS, starting from the top left block of the image and traversing the blocks row by row, as shown in Figure 1. For each block, the various items of information needed to represent the block (block type, mode of prediction, residual coefficients, etc.) are sent sequentially to the entropy coder.
[0006] An efficient arithmetic coding device of moderate complexity called "CABAC" ("Context Adaptive Binary Arithmetic Coder") is known, which was introduced in the AVC compression standard (already known under the names ISO-MPEG4 part 10 and ITU-T H.264).
[0007] The entropy coder implements various concepts such as: - Arithmetic coding: Coders such as those originally described by J. Rissanen and GG Langdon Jr., "Universal modeling and coding", iEEE Trans. inform. Theory, vol. IT-27, pp. 12-23, January 1981, use the probability of occurrence of a symbol to encode it. - Context adaptation, which involves adapting the probability of occurrence of the symbols to be coded. On the one hand, learning is performed on the fly. On the other hand, a specific context is used for coding depending on the state of previously coded information. To each context corresponds a specific probability of occurrence of the symbols. For example, a context corresponds to the type of coded symbols (representation of residual coefficients, signaling of coding modes, etc.) according to a given configuration or neighborhood state (e.g., the number of "intra" modes selected in the neighborhood, etc.). - Binarization: A shaping of the sequence of bits of the symbol to be coded is carried out. These various bits are then sent successively to a binary entropy coding device.
[0008] The entropy coding device thus implements, for each context used, a system for learning on the fly probabilities with respect to the symbols previously coded for the context under consideration, this learning being based on the coding order of these symbols. In general, the image is traversed in a "raster scan" type order as explained above.
[0009] Current Block MB i During the encoding of a given symbol b, which can be equal to 0 or 1, the probability of occurrence of this symbol p i The learning of is updated as follows:
[0010]
number
[0011] where α is a predetermined value, for example, 0.95, and p i-1 is the symbol occurrence probability calculated upon the last occurrence of this symbol.
[0012] A schematic illustration of such entropy coding is shown in Figure 1, where image I N Current Block MB iis subjected to entropy coding. Block MB i When the entropy coding of starts, the symbol occurrence probabilities used are those obtained after the coding of the previously coded and decoded block, which is the current block MB , by the aforementioned row-by-row traversal of the block of the "raster scan" type. i This learning based on dependencies between blocks is represented in Figure 1 by thin arrows for specific blocks only for the sake of clarity.
[0013] The difficulty with this type of entropy coding lies in the fact that the probabilities used when coding a symbol located at the beginning of a row correspond primarily to those observed for the symbol located at the end of the previous row, relative to the traversal of the "raster scan" of the block. However, due to possible spatial variations in symbol probabilities (for example, for symbols related to items of motion information, the motion located in the right part of the image may differ from that observed in the left part, and therefore also in the subsequent local probabilities), a lack of local consistency of probabilities may be observed, which may result in a loss of efficiency during coding.
[0014] To limit this phenomenon, it has been proposed to change the order of block traversal in order to ensure better local consistency, but encoding and decoding remain sequential.
[0015] In this respect, this type of entropy coder has another drawback: the encoding and decoding of symbols is in fact based on the states of probability learned for them, and the decoding of symbols can only be performed in the same order as used during encoding. Therefore, decoding must generally be performed sequentially, which therefore prevents the decoding of several symbols in parallel (e.g., to take advantage of multi-core architectures).
[0016] 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, further points out that a CABAC entropy coder has the special feature of allocating a non-integer number of bits to each symbol in the current alphabet being coded, which is advantageous for symbol occurrence probabilities greater than 0.5. Specifically, a CABAC coder waits until it has read several symbols, and then allocates a predetermined number of bits to this set of symbols that the coder writes to the compressed stream transmitted to the decoder. This procedure therefore makes it possible to "reciprocate" the bits of some symbols and to code symbols with a fractional number of bits that more closely reflect the information actually conveyed by the symbols. The other bits associated with the read symbol are not transmitted in the compressed stream, but remain in a waiting state, waiting to be assigned to one or more new symbols read by the CABAC encoder, making these other bits reciprocal again. At a given moment, the entropy encoder begins "emptying" these untransmitted bits in a known manner. Stated otherwise, the encoder extracts the bits not yet transmitted at that given moment and writes them into the compressed stream destined for the decoder. Such emptying is performed, for example, at the moment the last symbol to be encoded is read, to ensure that the compressed stream actually contains all bits, thereby enabling the decoder to decode all of the symbols in the alphabet. In a more general manner, the moment at which emptying is performed is determined as a function of the specific capabilities and capabilities of a given encoder / decoder.
[0017] A document dated April 15, 2011, available at the following Internet address: http: / / research.microsoft.com / en-us / um / people / jinl / paper 2002 / msri jpeg.htm, describes a method for encoding still images in accordance with the JPEG 2000 compression standard. According to this method, still image data is subjected to a discrete wavelet transform followed by quantization, thereby obtaining quantized wavelet coefficients, each of which is associated with a quantization index. The obtained quantization indexes are coded using an entropy coding device. The quantized coefficients are previously grouped into rectangular blocks, called code blocks, typically sized 64x64 or 32x32. Each code block is then independently coded by entropy coding. Therefore, when starting to code a current coding block, the entropy coding device does not use the symbol occurrence probabilities calculated during the coding of the previous code block. Therefore, the entropy coding device is in an initialized state at the start of each coding of a code block. Such a method offers the advantage of decoding data for a code block without the need to decode adjacent code blocks. Thus, for example, a portion of client software may request a portion of server software to provide compressed code blocks needed by the client only to decode an identified subportion of an image. Such a method also offers the advantage of enabling parallel encoding and / or decoding of code blocks. Thus, the smaller the code block size, the higher the level of parallelism. For example, if the level of parallelism is fixed at 2, two code blocks will be encoded and / or decoded in parallel. Theoretically, the value of the level of parallelism is equal to the number of code blocks to be encoded for the image. However, due to the fact that such encoding does not utilize the probabilities arising from the immediate environment of the current code block, the compression performance achieved with this method is not optimal. Summary of the Invention [Problem to be solved by the invention]
[0018] One of the objects of the present invention is to remedy the drawbacks of the prior art mentioned above. [Means for solving the problem]
[0019] To this end, the subject of the present invention is - dividing the image into a number of blocks each capable of containing symbols belonging to a predetermined set of symbols; - grouping the blocks into subsets of a predetermined number of blocks; - encoding each of the subset of blocks by associating digital information with a symbol of each block of the subset under consideration using an entropy coding module, said encoding step comprising, for the first block of the image, a substep of initializing the state variables of the entropy coding module; - generating at least one data sub-stream representing at least one of the coded subsets of blocks.
[0020] This method according to the invention comprises: - if the current block is the first block to be coded of the subset under consideration, a determination of the symbol occurrence probabilities for the current block is initiated, which probabilities have been determined for given coded and decoded blocks of at least one other subset; - if the current block is the last coded block of the subset under consideration, It is noteworthy to undertake the steps of: writing the entirety of the digital information associated with the symbols during the encoding of the blocks of the subset under consideration into a substream representing the subset under consideration; and performing the substep of initialization.
[0021] The above writing step immediately performs the emptying of not yet transmitted digital information (bits) as described above once the last block of the subset of blocks has been coded.
[0022] By combining the aforementioned steps of writing and reinitializing the entropy coding module, it is possible to generate a coded data stream containing various substreams of data, each corresponding to at least one coded subset of blocks, which are adapted to be decoded in parallel according to different levels of parallelism, regardless of the type of coding, whether serial or parallel, applied to the subset of blocks. This allows for great flexibility in selecting the level of parallelism for decoding as a function of the expected coding / decoding performance. Since the decoding device is always in an initialized state when starting to decode a subset of blocks, the level of parallelism for decoding can be variable and even different from the level of parallelism for encoding.
[0023] According to a first example, the state variables of the entropy coding module are the two boundaries of an interval representing the probability of occurrence of a certain symbol from a given set of symbols.
[0024] According to a second example, the state variables of the entropy coding module are well known to those skilled in the art and are described in http: / / en.wikipedia.org / wiki / Lempel%E2%80%93Ziv%E2%80%93Weich on June 21, 2011. It is a sequence of symbols contained in the transformation table of the LZW (Lempel-Ziv-Weich) entropy coder described at the internet address
[0025] The main advantage of using the symbol occurrence probabilities determined for the first block of the other subset during entropy coding of the first current block of the considered subset of blocks is to save buffer memory in the coding device by storing only updates of said symbol occurrence probabilities in the coding device without taking into account the symbol occurrence probabilities learned by other successive blocks of said other subset.
[0026] The main advantage of using, during entropy coding of the first current block of the subset of blocks considered, the symbol occurrence probabilities determined for blocks of another subset other than the first block, e.g. the second block, is that a better image compression performance results from obtaining a more accurate and therefore better learning of the symbol occurrence probabilities.
[0027] In certain embodiments, subsets of blocks are coded sequentially or in parallel.
[0028] The fact that subsets of blocks are coded sequentially has the advantage that the coding method according to the invention is compliant with the H.264 / MPEG-4 AVC standard.
[0029] The fact that subsets of blocks are coded in parallel has the advantage that it accelerates the processing time of the coding device and benefits from a multi-platform architecture for coding images.
[0030] In another particular embodiment, when at least two subsets of blocks are coded in parallel with at least one other subset of blocks, the at least two coded subsets of blocks are included in the same data sub-stream.
[0031] Such a measure allows savings in particular in the signaling of the data substreams. Indeed, it is necessary to indicate the point in the compressed file where a substream begins so that the decoding unit can decode it as quickly as possible. When several subsets of blocks are contained in the same data substream, a single indicator is needed, thereby reducing the size of the compressed file.
[0032] In yet another particular embodiment, when encoded subsets of blocks are intended to be decoded in parallel in a predetermined order, the data sub-streams delivered respectively after the encoding of each of the subsets of blocks are first ordered according to the predetermined order before being transmitted for the purpose of their decoding.
[0033] Such an arrangement allows the coded data stream to be adapted for a particular type of decoding without the need to code and then re-decode the image.
[0034] Correlatively, the present invention provides: - means for dividing the image into a number of blocks each capable of containing symbols belonging to a predetermined set of symbols; - means for grouping these blocks into subsets of a predetermined number of blocks; - coding means for coding each of the subset of blocks, said means comprising an entropy coding module capable of associating digital information with a symbol of each block of the subset under consideration, and sub-means for initializing the state variables of the entropy coding module with respect to the first block of the image; - means for generating at least one data sub-stream representing at least one of the coded subsets of blocks.
[0035] Such an encoding device: - means for determining, for a current block, the symbol occurrence probabilities, which, if the current block is the first block to be coded of the subset under consideration, determine the symbol occurrence probabilities for the current first block as determined for predetermined coded and decoded blocks of at least one other subset; - writing means which are activated to write the entirety of the digital information associated with the symbols during the encoding of the blocks of the subset under consideration into the substream representing the subset under consideration if the current block is the last encoded block of the subset under consideration, wherein the initialization sub-means further comprise writing means which are activated to reinitialize the state variables of the entropy encoding module.
[0036] In a corresponding manner, the present invention provides - identifying in the stream a predetermined number of data substreams each corresponding to at least a subset of blocks to be decoded, the blocks being capable of containing symbols belonging to a predetermined set of symbols; - decoding an identified subset of blocks in at least one of the identified substreams by reading, with an entropy decoding module, digital information associated with a symbol of each block of the subset corresponding to said at least one identified substream, the method comprising the substep of initializing state variables of the entropy decoding module for a first block of the image to be decoded.
[0037] Such a decoding method is - if the current block is the first block to be decoded of the subset under consideration, a determination of a symbol occurrence probability for the first block of the subset under consideration is initiated, this probability having been determined for a given decoded block of at least one other subset; It is worth noting that the implementation of the initialization sub-step is undertaken if the current block is the last decoded block of the subset under consideration.
[0038] In particular embodiments, subsets of blocks are decoded sequentially or in parallel.
[0039] In another particular embodiment, one of the identified data substreams represents at least two subsets of blocks when the at least two subsets of blocks are decoded in parallel with at least one other subset of blocks.
[0040] In yet another particular embodiment, when coded subsets of blocks are intended to be decoded in parallel in a predetermined order, the data sub-streams corresponding to the coded subsets of blocks are pre-ordered in the predetermined order of the streams to be decoded.
[0041] Correlatively, the present invention provides: - means for identifying in the stream a predetermined number of data substreams each corresponding to at least one subset of blocks to be decoded, the blocks being capable of containing symbols belonging to a predetermined set of symbols; - means for decoding a subset of identified blocks, the entropy decoding module being capable of reading, in at least one of the identified substreams, digital information associated with the symbols of each block of the subset corresponding to said at least one identified substream, and means comprising sub-means for initializing state variables of the entropy decoding module with respect to the first block to be decoded of the image.
[0042] Such a decoding device is notable in that it comprises means for determining a symbol occurrence probability for a current block, which, if the current block is the first block to be decoded of the subset under consideration, determines a symbol occurrence probability for the current first block as determined for a predetermined decoded block of at least one other subset, and, if the current block is the last decoded block of the subset under consideration, an initialization sub-means is activated to reinitialize the state variables of the entropy decoding module.
[0043] The invention also aims at a computer program comprising instructions for carrying out the steps of the encoding or decoding method described above when executed on a computer.
[0044] Such programs may use any programming language and may be in the form of source code, object code, or an intermediate form between source and object code such as partially compiled form, or any other desired form.
[0045] A further subject of the invention is also a computer-readable recording medium containing instructions for a computer program such as the one mentioned above.
[0046] The recording medium may be any entity or device capable of storing a program. For example, such a medium may comprise a storage means such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or a magnetic recording means, for example a diskette (floppy disk) or a hard disk.
[0047] Furthermore, such a recording medium may be a transmissible medium such as an electrical or optical signal that can be transmitted via electrical or optical cable, wirelessly or by other means. The program according to the invention may in particular be downloaded from a network of the Internet type.
[0048] Alternatively, such a recording medium may be an integrated circuit in which the program is embedded, the circuitry being adapted for performing, or to be used in the performance of, the method.
[0049] The encoding device, the decoding method, the decoding device and the computer program described above exhibit at least the same advantages as those offered by the encoding method according to the invention.
[0050] Other characteristics and advantages will become apparent from a reading of the two preferred embodiments described with reference to the drawings. [Brief explanation of the drawings]
[0051] [Figure 1] FIG. 1 illustrates prior art image coding. [Figure 2A] 1 represents the main steps of the encoding method according to the invention; [Figure 2B] 2B is a diagram illustrating in detail the encoding performed in the encoding method of FIG. 2A. FIG. [Figure 3A] 1 is a diagram illustrating a first embodiment of an encoding device according to the invention; [Figure 3B] FIG. 3B is a diagram illustrating a coding unit of the coding device of FIG. 3A. [Figure 3C] FIG. 2 represents a second embodiment of an encoding device according to the invention. [Figure 4A] FIG. 1 is a diagram illustrating image encoding / decoding according to a first preferred embodiment; [Figure 4B] FIG. 10 is a diagram illustrating image encoding / decoding according to a second preferred embodiment. [Figure 5A] FIG. 2 represents the main steps of the decoding method according to the invention; [Figure 5B] FIG. 5B is a diagram illustrating in detail the decoding performed in the decoding method of FIG. 5A. [Figure 6A] 1 illustrates an embodiment of a decoding device according to the present invention; [Figure 6B]FIG. 6B is a diagram illustrating a decoding unit of the decoding device of FIG. 6A. [Figure 7A] FIG. 1 is a diagram illustrating image encoding / decoding with sequential encoding and parallel decoding. [Figure 7B] FIG. 1 illustrates image encoding / decoding using different levels of parallelism to perform parallel encoding / decoding. DETAILED DESCRIPTION OF THE INVENTION
[0052] Detailed Description of the First Embodiment of the Encoding Portion An embodiment of the present invention will now be described, in which the encoding method according to the present invention is used to encode a sequence of images that closely resembles a binary stream obtained by encoding according to the H.264 / MPEG-4 AVC standard. In this embodiment, the encoding method according to the present invention is implemented in a software or hardware manner, for example by modifying an encoding device that is initially compliant with the H.264 / MPEG-4 AVC standard. The encoding method according to the present invention is represented in the form of an algorithm in Fig. 2A, comprising steps C1 to C5.
[0053] According to this embodiment of the invention, the encoding method according to the invention is carried out in an encoding device CO, two embodiments of which are represented in FIGS. 3A and 3C respectively.
[0054] With reference to Fig. 2A, the first encoding step C1 is a step of dividing the sequence of images IE to be encoded into a number of blocks or macroblocks MB, as represented in Fig. 4A or 4B. Said macroblocks may contain one or more symbols, said symbols forming part of a predetermined set of symbols. In the illustrated example, said blocks MB have a square shape and are all of the same size. As a function of the image size, which is not necessarily a multiple of the block size, the last block on the left and the last block below may not be square. In alternative embodiments, the blocks may be, for example, rectangular in size and / or may not be aligned with each other.
[0055] Moreover, each block or macroblock itself can be divided into sub-blocks which can themselves be subdivided.
[0056] Such a division is performed, for example, by a division module PCO represented in FIG. 3A using a division algorithm known per se.
[0057] 2A, the second encoding step C2 consists in grouping these blocks into a predetermined number P of consecutive subsets SE1, SE2, ..., SEk, ..., SEP of blocks intended to be coded sequentially or in parallel. In the example shown in Figures 4A and 4B, P=6, but for clarity of the illustration, only four subsets SE1, SE2, SE3, SE4 are shown. These four subsets of blocks are each represented by a dashed line and each consist of the first four rows of blocks of the image IE.
[0058] Such grouping is performed by the calculation module GRCO represented in FIG. 3A, using an algorithm known per se.
[0059] 2A, the third encoding step C3 consists in encoding each of said subsets SE1 to SE6 of blocks, the blocks of the subset under consideration being encoded according to a predetermined order of traversal PS, for example sequential. In the example shown in Figures 4A and 4B, the blocks of the current subset SEk (1 < k < P) are encoded in order from left to right as indicated by the arrow PS.
[0060] According to a first variant, such encoding is sequential and is performed by a single encoding unit UC such as the one represented in Fig. 3 A. The encoding device CO comprises, in a manner known per se, a buffer memory MT adapted to contain symbol occurrence probabilities such as are progressively re-updated in parallel with the encoding of the current block.
[0061] As shown in more detail in FIG. 3B, the coding unit UC is a module denoted MCP for predictively coding a current block with respect to at least one previously coded and decoded block; a module denoted MCE for entropy coding the current block using at least one symbol occurrence probability calculated for the previously coded and decoded block.
[0062] The predictive coding module MCP is a software module capable of performing predictive coding of the current block by conventional prediction techniques, for example in intra mode and / or inter mode.
[0063] On its part, the entropy coding module MCE is of the CABAC type, but modified according to the invention, as will be explained further in the description.
[0064] As a variant, the entropy coding module MCE may be a Huffman coding device known per se.
[0065] In the example shown in Figures 4A and 4B, unit UC encodes the blocks of row SE1 from left to right. When unit UC reaches the last block of the first row SE1, it proceeds to the first block of the second row SE2. When unit UC reaches the last block of the second row SE2, it proceeds to the first block of the third row SE3. When unit UC reaches the last block of the third row SE3, it proceeds to the first block of the fourth row SE4, and so on, and so forth, until the last block of image IE is encoded.
[0066] Other types of traversals than those just described above are of course possible. It is therefore possible to divide the image IE into several sub-images and to apply this type of division to each sub-image independently. The coding unit can process not only consecutive rows as described above, but also consecutive columns. Also, the rows or columns can be traversed in either direction.
[0067] According to a second variant, such coding is of parallel type and is distinguished from the first variant of sequential coding simply by the fact that it is realized by a predetermined number R (R=2 in the example represented in FIG. 3C) of coding units UCk, where 1≦k≦R. Such parallel coding is known to result in a substantial acceleration of the coding method.
[0068] Each of the coding units UCk is identical to the coding unit UC represented in Fig. 3B. In a corresponding manner, the coding units UCk comprise a predictive coding module MCPk and an entropy coding module MCEk.
[0069] 4A and 4B, the first unit UC1 encodes blocks of rows with odd orders, for example, while the second unit UC2 encodes blocks of rows with even orders, for example. More precisely, the first unit UC1 encodes blocks of the first row SE1 from left to right. When the first unit UC1 reaches the last block of the first row SE1, it proceeds to the first block of the (2n+1)th row, i.e., the third row SE3, etc. In parallel with the processing by the first unit UC1, the second unit UC2 encodes blocks of the second row SE2 from left to right. When the second unit UC2 reaches the last block of the second row SE2, it proceeds to the first block of the (2n)th row, which is the fourth row SE4 in this case. The above two traversals are repeated until the last block of the image IE is encoded.
[0070] 2A, a fourth encoding step C4 is a step for generating L sub-streams F1, F2, ..., Fm, ..., FL (1≦m≦L≦P) of bits representing the processed blocks compressed by said encoding unit UC or by each of said encoding units UCk, as well as decoded versions of the processed blocks of each subset SEk. The decoded processed blocks of the subset under consideration, denoted SED1, SED2, ..., SEDk, ..., SEDP, may be reused by each of the encoding units UC represented in FIG. 3A or UCk represented in FIG. 3C, according to a synchronization mechanism that will be further detailed in the description.
[0071] With reference to FIG. 3B, the step of generating the L sub-streams is performed by a stream generation software module MGSF or MGSFk adapted to generate a data stream, for example bits.
[0072] 2A, the fifth encoding step C5 consists in constructing an overall stream F on the basis of the aforementioned L substreams F1, F2, ..., Fm, ..., FL. According to one embodiment, the substreams F1, F2, ..., Fm, ..., FL are simply juxtaposed using an additional item of information intended to indicate to the decoding device the position of each substream Fm in the overall stream F. This additional item of information is then transmitted by a communication network (not represented) to a remote terminal. The remote terminal comprises a decoding device DO represented in FIG. 5A. According to another embodiment, which is particularly advantageous since it avoids the need to decode and re-encode the images, the coding device CO, before transmitting the stream F to the decoding device DO, previously orders the L substreams F1, F2, ..., Fm, ..., FL in a predetermined order corresponding to the order in which the decoding device DO will be able to decode the substreams.
[0073] Thus, as will be explained in more detail in the description, the decoding device according to the invention is able to separate sub-streams F1, F2, ..., Fm, ..., FL within an overall stream F and assign them to one or more decoding units constituting the decoding device. It will be noted that this decomposition of the sub-streams of an overall stream is independent of the choice of using a single coding unit or several coding units working in parallel, and that using this approach it is also possible to have a coding device or a decoding device alone with units working in parallel.
[0074] Such construction of the overall stream F is performed in a stream construction module CF such as the one depicted in Figures 3A and 3C.
[0075] Various specific sub-steps of the invention, such as those implemented in a coding unit UC or UCk during the aforementioned coding step C3, will now be described with reference to FIG. 2B.
[0076] In the course of a step C31, the coding unit UC or UCk selects as the current block the first block to be coded of the current row SEk, such as for example the first row SE1 represented in FIG. 4A or 4B.
[0077] During step C32, unit UC or UCk tests whether the current block is the first block (located at the top left) of the image IE divided into blocks in the previous step C1.
[0078] If it is the first block, then in the course of step C33, the entropy coding module MCE or MCEk starts to initialize its state variables. According to the illustrated example using the aforementioned arithmetic coding, this involves the initialization of an interval representing the probability of occurrence of a symbol contained in a given set of symbols. This interval is initialized in a manner known per se with two boundaries: a lower bound L and an upper bound H. The value of the lower bound L is fixed to 0, and the value of the upper bound is fixed to 1, thereby corresponding to the probability of occurrence of the first symbol among all the symbols of the given set of symbols. The size R of this interval is therefore defined at this junction as R=HL=1. The initialized interval is usually further divided into several predetermined subintervals, each of which represents the probability of occurrence of a symbol of the given set of symbols.
[0079] As a variant, if the entropy coding used is LZW coding, the conversion table for strings of symbols is initialized to contain every possible symbol exactly once.
[0080] If, after the aforementioned step C32, the current block is not the first block of the image 1E, a determination of the availability of the necessary previously encoded and decoded blocks is undertaken in the course of step C40, which will be explained later.
[0081] In the course of step C34, the coding of the first current block MB1 of the first row SE1 represented in Figure 4A or 4B is undertaken. Such step C34 comprises several sub-steps C341 to C348 which are described below.
[0082] During the first substep C341 represented in FIG. 2B, predictive coding of the current block MB1 is undertaken using known techniques of intra-prediction and / or inter-prediction, during which block MB1 is predicted with respect to at least one previously coded and decoded block.
[0083] Other modes of intra prediction, such as those proposed in the H.264 standard, are of course also possible.
[0084] The current block MB1 may also be predictively coded in inter mode, in which it is predicted with respect to blocks resulting from previously coded and decoded images. Other types of prediction are of course also possible. Among the possible predictions for the current block, the best prediction is selected according to a bit rate distortion criterion well known to those skilled in the art.
[0085] The aforementioned predictive coding step makes it possible to construct a predicted block MBp1 which is an approximation of the current block MB1. This information related to the predictive coding will subsequently be written into the stream F transmitted to the decoding device DO. Such information includes in particular the type of prediction (inter or intra prediction), and, if appropriate, the mode of intra prediction, the type of division of the block or macroblock if the macroblock is subdivided, the index of the reference image and the displacement vector used in the inter prediction mode. This information is compressed by the coding device CO.
[0086] In the course of a subsequent substep C342, subtraction of the predicted block MBp1 from the current block MB1 is undertaken to generate a residual block MBr1.
[0087] In the course of a subsequent substep C343, a transformation of the residual block MBr1 is undertaken by a conventional direct transformation operation, for example a discrete cosine transformation of the DCT type, in order to generate a transformed block MBt1.
[0088] In the course of a subsequent substep C344, quantization of the transformed block MBt1 is undertaken by a conventional quantization operation, for example scalar quantization, and then a block of quantized coefficients MBq1 is obtained.
[0089] In the course of a subsequent sub-step C345, entropy coding of the block of quantized coefficients MBq1 is undertaken. In the preferred embodiment, this involves CABAC entropy coding. Such a step comprises: a) reading one or more symbols of a predetermined set of symbols associated with the current block; b) Associating digital information such as bits with the read symbol.
[0090] In the aforementioned variant in which LZW coding is used, a digital item of information corresponding to the code of the symbol in the current conversion table is associated with the symbol to be coded, and the updating of the conversion table is carried out by a procedure known per se.
[0091] In the course of the following substep C346, a dequantization of the block MBq1 is undertaken by a conventional dequantization operation, which is the inverse operation of the quantization performed in step C344. A block of dequantized coefficients MBDq1 is then obtained.
[0092] In the course of a subsequent sub-step C347, an inverse transformation of the block of dequantized coefficients MBDq1 is undertaken, which is the inverse operation of the direct transformation performed in the above step C343. A decoded residual block MBDr1 is then obtained.
[0093] In the course of a subsequent substep C348, construction of the decoded block MBD1 is undertaken by adding the decoded residual block MBDr1 to the predicted block MBp1. It should be noted that the decoded residual block MBDr1 is identical to the decoded block obtained at the end of the method for decoding an image IE, as will be explained further in the description. In this way, the decoded block MBD1 is made available to the coding unit UCk or to any other coding unit forming part of the predetermined number R of coding units.
[0094] At the completion of the aforementioned encoding step C34, the entropy coding module MCE or MCEk such as that represented in Fig. 3B contains all the probabilities, such as the probabilities progressively re-updated in parallel with the encoding of the first block, corresponding to the different elements of the possible syntax and the different associated coding contexts.
[0095] After the aforementioned encoding step C34, during a step C35, a test is performed to determine whether the current block is the jth block of this same row, j being a predetermined value known to the encoding device CO and being at least 1.
[0096] If it is the jth block, then in the course of step C36 represented in FIG. 2B, the set of probabilities calculated for the jth block is stored in a buffer memory MT of a coding device CO such as that represented in FIG. 3A or 3B and in FIGS. 4A and 4B, the size of said memory being adapted to store the calculated number of probabilities.
[0097] In the course of step C37 shown in Fig. 2B, the coding unit UC or UCk tests whether the current block of the row SEk just coded is the last block of the image Ie. This step is also performed if, in the course of step C35, the current block is not the j-th block of the row SE1.
[0098] If the current block is the last block of the image IE, the coding method ends in the course of step C38.
[0099] If the current block is not the last block of the image IE, then in the course of step C39, the next block MB to be coded is selected according to the order of traversal represented by the arrow PS of FIG. 4A or 4B. i The selection is undertaken.
[0100] In the course of step C40 shown in FIG. 2B, the current block MB iA determination is undertaken of the availability of previously encoded and decoded blocks required to encode .
[0101] If this is the first row SE1, then such a step is performed to determine the current block MB to be coded. i The purpose of the method is to verify the availability of at least one block located to the upper left of the row SEk under consideration. However, the blocks are coded sequentially across the row SEk under consideration, taking into account the order of the traversal PS selected in the embodiment shown in Figure 4A or 4B. Therefore, a coded and decoded block to the left (with the exception of the first block in the row) is always available. In the example shown in Figure 4A or 4B, this is the block located immediately to the left of the current block to be coded.
[0102] If this is a row SEk different from the first row, the decision step further consists in verifying whether a predetermined number N' of blocks located in the previous row SEk-1, for example two blocks located respectively above and to the right of the current block, are available for encoding the current block, i.e. whether they have already been encoded and decoded by the coding unit UC or UCk-1.
[0103] Since this test step tends to slow down the encoding method, in an alternative approach according to the invention, when the row encoding is of parallel type, the clock CLK represented in Fig. 3C is adapted to synchronize the progress of the encoding of the blocks so as to guarantee the availability of the two blocks respectively located above and to the right of the current block without the need to verify them. Thus, the encoding unit UCk always starts encoding the first block using a shift of a predetermined number N' (for example N' = 2) of encoded and decoded blocks of the previous row SEk-1 used for encoding the current block. From a software point of view, such a clock implementation can significantly accelerate the time for processing the blocks of the image IE in the encoding device CO.
[0104] During step C41 represented in FIG. 2B, a test is performed to determine whether the current block is the first block of the row SEk under consideration.
[0105] If it is the first block, then in the course of step C42, a reading is undertaken in the buffer memory MT of only the symbol occurrence probabilities calculated during the coding of the jth block of the previous row SEk-1.
[0106] According to the first variant shown in Fig. 4A, the jth block is the first block of the previous row SEk-1 (j=1). Such reading consists in replacing the probabilities of the CABAC encoder with the probabilities in the buffer memory MT. This reading step is indicated in Fig. 4A by thin arrows, with this replacement being carried out for the first block of each of the second row SE2, the third row SE3 and the fourth row SE4.
[0107] According to a second variant of the aforementioned step C43 shown in Fig. 4B, the jth block is the second block of the previous row SEk-1 (j=2). Such reading consists in replacing the probabilities of the CABAC encoder by the probabilities in the buffer memory MT. This reading step is indicated in Fig. 4B by thin dashed arrows, with this replacement being performed for the first block of each of the second row SE2, the third row SE3 and the fourth row SE4.
[0108] After step C42, the current block is encoded and decoded by repeating steps C34 to C38 described above.
[0109] If, after the aforementioned step C41, the current block is not the first block of the row SEk under consideration, advantageously no attempt is made to read the probabilities arising from previously coded and decoded blocks located in the same row SEk, i.e., in the illustrated example, the coded and decoded blocks located immediately to the left of the current block. Indeed, considering a sequential traversal PS for reading blocks located in the same row as illustrated in Figure 4A or 4B, the symbol occurrence probabilities present in the CABAC coding device at the very moment when starting to code the current block are exactly those that existed after the decoding / coding of the previous block of this same row.
[0110] Therefore, during step C43 shown in FIG. 2B, learning of symbol occurrence probabilities for entropy coding of the current block is undertaken, these symbol occurrence probabilities corresponding only to those calculated for the previous block in the same row, as represented by the double solid arrow in FIG. 4A or 4B.
[0111] After step C43, the current block is encoded and decoded by repeating steps C34 to C38 described above.
[0112] Then, during step C44, a test is performed to determine whether the current block is the last block of the row SEk under consideration.
[0113] If it is not the last block, proceed to step C44 to select the next block MB to be coded. i Step C39 of selecting is performed again.
[0114] If the current block is the last block of the row SEk under consideration, then in the course of step C45 the encoding device CO of Figure 3A or 3C carries out the nulling as explained above. For this purpose, the encoding unit UCk transmits the totality of the bits associated with the symbols read during the encoding of each block of said row SEk under consideration to the corresponding substream generation module MGSFk in such a way that the module MGSFK writes the totality of said bits into a data substream Fm containing a sequence of binary numbers representing the coded block of said row SEk under consideration. Such nulling is symbolized in Figures 4A and 4B by a triangle at the end of each row SEk.
[0115] In the course of step C46 represented in Figure 2B, the coding unit UC or UCk performs a step identical to the above-mentioned step C33, namely a step of reinitializing the intervals representing the probability of occurrence of the symbols contained in a given set of symbols, which is depicted in Figures 4A and 4B by a black dot at the beginning of each row SEk.
[0116] The advantage of performing steps C45 and C46 at this level of encoding is that the encoding device CO is in an initialized state during the encoding of the next block processed by the encoding unit UC or by the encoding unit UCk, so that a decoding unit working in parallel, as will be explained further in the description, is able to decode the compressed stream F directly from this point on (since an initialized state is sufficient). Detailed Description of an Embodiment of the Decoding Portion
[0117] Next, an embodiment of the decoding method according to the invention will be described, which method can be implemented in a software or hardware manner by modifying a decoding device that is initially compliant with the H.264 / MIPEG-4 AVC standard.
[0118] The decoding method according to the invention is presented in the form of an algorithm comprising steps D1 to D4 represented in FIG. 5A.
[0119] According to an embodiment of the invention, the decoding method according to the invention is implemented in a decoding device DO represented in FIG. 6A.
[0120] 5A, the first decoding step D1 consists in identifying in said stream F L sub-streams F1, F2, ..., Fm, ..., FL, each containing P subsets SE1, SE2, ..., SEk, ..., SEP of previously coded blocks or macroblocks MB, as represented in FIG. 4A or 4B. For this purpose, each sub-stream Fm of the stream F is associated with an index intended to enable the decoding device DO to determine the position of each sub-stream Fm in the stream F. As a variant, at the completion of the aforementioned coding step C3, the coding device CO orders the sub-streams F1, F2, ..., Fm, ..., FL of the stream F in the order expected by the decoding device DO, thereby avoiding the insertion of sub-stream indexes in the stream F. This measure therefore makes it possible to reduce costs in terms of the bit rate of the data stream F.
[0121] In the example shown in Figure 4A or 4B, the blocks MB have a square shape and are all the same size. Depending on the image size, which is not necessarily a multiple of the block size, the last block on the left and the last block below may not be square. In alternative embodiments, the blocks may be, for example, rectangular in size and / or may not be aligned with each other.
[0122] Moreover, each block or macroblock itself can be divided into sub-blocks which can themselves be subdivided.
[0123] Such identification is performed in a stream extraction module EXDO such as the one depicted in FIG. 6A.
[0124] In the example shown in FIGS. 4A and 4B, the predetermined number P is 6, but for clarity of the illustration, only four subsets SE1, SE2, SE3, SE4 are shown with dashed lines.
[0125] Referring to Fig. 5A, a second decoding step D2 consists in decoding each of the subsets SE1, SE2, SE3, SE4 of blocks, the blocks of the subset under consideration being decoded, for example, according to a predetermined order of the traversal PS. In the example shown in Fig. 4A or 4B, the blocks of the current subset SEk (1 ≤ k ≤ P) are decoded in order from left to right, as indicated by the arrow PS. Upon completion of step D2, a decoded subset of blocks SED1, SED2, SED3, ..., SEDk, ..., SEDP is obtained.
[0126] Such decoding may be sequential and therefore may be performed using a single decoding unit.
[0127] However, in order to be able to benefit from a multi-platform decoding architecture, the decoding of a subset of blocks is parallel and is performed in R decoding units UDk, with 1≦k≦R, for example R=4 as represented in Fig. 6A. Such a measure therefore allows a substantial acceleration of the decoding method. The decoding device DO comprises, in a manner known per se, a buffer memory MT adapted to contain symbol occurrence probabilities such as are progressively re-updated in parallel with the decoding of the current block.
[0128] As shown in more detail in FIG. 6B, each of the decoding units UDk a module denoted MDEk for entropy decoding of said current block by learning at least one symbol occurrence probability calculated for at least one previously decoded block; a module denoted MDPk for predictively coding a current block with respect to said previously decoded blocks.
[0129] The predictive decoding module MDPk can perform predictive decoding of the current block by conventional prediction techniques, for example in intra mode and / or inter mode.
[0130] The entropy decoding module MDEk on its part is of the CABAC type but modified according to the invention, as will be explained further in the description.
[0131] As a variant, the entropy decoding module MDEk can be a Huffman decoding device known per se.
[0132] In the example shown in FIG. 4A or 4B, the first unit UD1 decodes the blocks of the first row SE1 from left to right. When the first unit UD1 reaches the last block of the first row SE1, it proceeds to the first block of the (n+1)th row, here the fifth row, etc. The second unit UD2 decodes the blocks of the second row SE2 from left to right. When the second unit UC2 reaches the last block of the second row SE2, it proceeds to the first block of the (n+2)th row, here the sixth row, etc. This traversal is repeated up to unit UD4, which decodes the blocks of the fourth row SE4 from left to right. When the fourth unit UD4 reaches the last block of the first row, it proceeds to the first block of the (n+4)th row, here the eighth row, and so on, endlessly, until the last block of the last identified sub-stream is decoded.
[0133] Other types of traversals than those just described above are of course possible. For example, each decoding unit can process nested columns as well as nested rows, as described above. Also, rows or columns can be traversed in either direction.
[0134] With reference to Fig. 5A, the third decoding step D3 is the reconstruction of the decoded image ID on the basis of each decoded subset SED1, SED2, ..., SEDk, ..., SEDP obtained in the decoding step D2. More precisely, the decoded blocks of each decoded subset SED1, SED2, ..., SEDk, ..., SEDP are transmitted to an image reconstruction unit URI such as the one represented in Fig. 6A. In the course of this step D3, the unit URI writes the decoded blocks into the decoded image as they become available.
[0135] In the course of a fourth decoding step D4, represented in FIG. 5A, the fully decoded image ID is delivered by means of the unit URI, represented in FIG. 6A.
[0136] Various specific sub-steps of the invention, such as those implemented in the decoding units UDk during the aforementioned parallel decoding step D2, will now be described with reference to FIG. 5B.
[0137] In the course of step D21, the decoding unit UDk selects as the current block the first block to be decoded of the current row SEk represented in FIG. 4A or 4B.
[0138] In the course of a step D22, the decoding unit UDk tests whether the current block is the first block of the decoded image, which in this example is the first block of the sub-stream F1.
[0139] If it is the first block of the decoded image, then in the course of step D23, the entropy decoding module MDE or MDEk starts to initialize its state variables. According to the illustrated example, this involves the initialization of intervals representing the probability of occurrence of the symbols contained in a given set of symbols.
[0140] As a variant, if the entropy decoding used is LZW decoding, the conversion table of the string of symbols is initialized to contain every possible symbol exactly once.Step D23 is identical to the encoding step C33 described above and will not be described subsequently.
[0141] If, after the aforementioned step D22, the current block is not the first block of the decoded image LD, a determination of the availability of the required previously decoded block is undertaken in the course of a step D30 which will be explained later.
[0142] In the course of a step D24, decoding of the first current block MB1 of the first row SE1 represented in Figure 4A or 4B is undertaken. Such a step D24 comprises several sub-steps D241 to D246 which are described below.
[0143] During a first substep D241, entropy decoding of the syntax elements associated with the current block is undertaken. Such steps mainly consist of: a) reading each bit associated with said first row SE1 contained in a sub-stream; b) Reconstructing the symbol based on each bit read.
[0144] In the aforementioned variant in which LZW decoding is used, the digital item of information corresponding to the code of the symbol in the current conversion table is read, and the symbol is reconstructed based on the read code by a procedure known per se, and the update of the conversion table is carried out.
[0145] More precisely, the syntax elements related to the current block are decoded by a CABAC entropy decoding module MDE1 such as the one represented in Fig. 6B, which decodes each bit sub-stream F1 of the compressed file to generate the syntax elements, while re-updating the probability of occurrence of a symbol just when it is being decoded in such a way that the probability of occurrence of this symbol is identical to the probability of occurrence obtained during the encoding of the same symbol during the aforementioned entropy coding step C345.
[0146] In the course of a subsequent substep D242, predictive decoding of the current block MB1 is undertaken by known techniques of intra-prediction and / or inter-prediction, in the course of which block MB1 is predicted with respect to at least one previously decoded block.
[0147] Other modes of intra prediction, such as those proposed in the H.264 standard, are of course also possible.
[0148] During this step, predictive decoding is performed using the syntax elements decoded in the previous step, including in particular the type of prediction (inter or intra prediction), and, if appropriate, the mode of intra prediction, the type of block or macroblock division if the macroblock is subdivided, the index of the reference image, and the displacement vector used in the inter prediction mode.
[0149] The predictive decoding step described above makes it possible to construct a predicted block MBp1.
[0150] In the course of a subsequent substep D243, construction of a quantized residual block MBq1 is undertaken using the previously decoded syntax elements.
[0151] In the subsequent sub-step D244, inverse quantization of the quantized residual block MBq1 is undertaken using a conventional inverse quantization operation, which is the inverse operation of the aforementioned quantization performed in step C344, to generate a decoded inverse quantized block MBDt1.
[0152] In the course of a subsequent substep D245, an inverse transformation of the dequantized block MBDt1 is undertaken, which is the inverse operation of the direct transformation performed in the above step C343. A decoded residual block MBDr1 is then obtained.
[0153] In the course of a subsequent substep D246, construction of the decoded block MBD1 is undertaken by adding the decoded residual block MBDr1 to the predicted block MBp1, so that the decoded block MBD1 is available for use by the decoding unit UD1 or any other decoding unit forming part of the predetermined number N of other decoding units.
[0154] At the completion of the aforementioned decoding step D246, the entropy decoding module MDE1, such as that represented in Fig. 6B, contains all the probabilities, such as the probabilities progressively re-updated in parallel with the coding of the first block, corresponding to the various elements of the possible syntax and the various associated decoding contexts.
[0155] After the aforementioned decoding step D24, during a step D25, a test is performed to determine whether the current block is the jth block of this same row, j being a predetermined value known to the decoding device DO and being at least 1.
[0156] If it is the jth block, then in the course of step D26, the set of probabilities calculated for the jth block is stored in a buffer memory MT of a decoding device DO such as that represented in Figure 6A and Figures 4A and 4B, the size of said memory being adapted to store the calculated number of probabilities.
[0157] In the course of step D27, unit UDk tests whether the current block just decoded is the last block of the last substream.
[0158] If so, the decoding method ends in the course of step D28.
[0159] If it is not the last block of the last substream, then in the course of step D29, the next block MB to be decoded is selected according to the order of traversal represented by the arrow PS in FIG. 4A or 4B. i The selection is undertaken.
[0160] If, during the above step D25, the current block is not the j-th block of the row SEDk under consideration, then the above step D27 is undertaken.
[0161] In the process of step D30 following the above step D29, the current block MB i , then a determination is undertaken of the availability of previously decoded blocks necessary for decoding MB. Given the fact that this involves parallel decoding of blocks by different decoding units UDk, it is possible that these blocks have not been decoded by the decoding units assigned to the decoding of these blocks and therefore may not yet be available. Said determination step consists in verifying whether a predetermined number N' of blocks located in the previous row SEk-1, for example the two blocks respectively located above and to the right of the current block, are available for decoding the current block, i.e. have already been decoded by the decoding unit UDk-1 assigned for their decoding. iThe second step is to verify the availability of at least one block located to the upper left of the current block to be decoded. However, the blocks are decoded sequentially across the row SEk under consideration, taking into account the order of the traversal PS selected in the embodiment depicted in FIG. 4A or 4B. Therefore, a decoded block to the left (with the exception of the first block in the row) is always available. In the example depicted in FIG. 4A or 4B, this involves the block located immediately to the left of the current block to be decoded. For this purpose, only the availability of two blocks located respectively above and to the upper right of the current block is tested.
[0162] Since this test step tends to slow down the decoding method, in an alternative approach according to the invention, the clock CLK represented in Figure 6A is adapted to synchronize the progress of the decoding of a block so as to guarantee, without the need to verify, the availability of the two blocks located respectively above and to the right of the current block. Thus, as represented in Figure 4A or 4B, the decoding unit UDk always starts decoding the first block using a shift of a predetermined number N' (here N'=2) of decoded blocks of the previous row SEk-1 used for decoding the current block. From a software point of view, such a clock implementation can significantly accelerate the time for processing the blocks of each subset SEk in the decoding device DO.
[0163] During step D31, a test is performed to determine whether the current block is the first block of the row SEk under consideration.
[0164] If it is the first block, then in the course of a step D32, the reading of only the symbol occurrence probabilities calculated during the decoding of the jth block of the previous row SEk-1 in the buffer memory MT is undertaken.
[0165] According to the first variant shown in Fig. 4A, the jth block is the first block of the previous row SEk-1 (j=1). Such reading consists in replacing the probabilities of the CABAC decoder with the probabilities stored in the buffer memory MT. This reading step is indicated in Fig. 4A by thin arrows, with this replacement being performed for the first block of each of the second row SE2, the third row SE3 and the fourth row SE4.
[0166] According to a second variant of the aforementioned step D32 shown in Fig. 4B, the jth block is the second block of the previous row SEk-1 (j=2). Such reading consists in replacing the probabilities of the CABAC decoder by the probabilities stored in the buffer memory MT. This reading step is indicated in Fig. 4B by thin dashed arrows, with this replacement being performed for the first block of each of the second row SE2, the third row SE3, and the fourth row SE4.
[0167] After step D32, the current block is decoded by repeating steps D24 to D28 described above.
[0168] If, after the aforementioned step D31, the current block is not the first block of the row SEk under consideration, advantageously no attempt is made to read the probabilities arising from the previously decoded block located in the same row SEk, i.e., in the illustrated example, the decoded block located immediately to the left of the current block. Indeed, considering a sequential traversal PS for reading blocks located in the same row as represented in Figure 4A or 4B, the symbol occurrence probabilities present in the CABAC decoder at the very moment when starting to decode the current block are exactly those that existed after the decoding of the previous block of this same row.
[0169] Therefore, in step D33, learning of symbol occurrence probabilities for entropy decoding of the current block is undertaken, said probabilities corresponding only to those calculated for the previous block in the same row, as represented by the double solid arrow in Figure 4A or Figure 4B.
[0170] After step D33, the current block is decoded by repeating steps D24 to D28 described above.
[0171] Then, during step D34, a test is performed to determine whether the current block is the last block of the row SEk under consideration.
[0172] If it is not the last block, proceed to step D34 to select the next block MB to be coded. i Step D29 of selecting is again performed.
[0173] If the current block is the last block of the row SEk under consideration, then in the course of a step D35, the decoding unit UDk performs a step identical to the above-mentioned step D23, namely a step of reinitializing the intervals representing the probability of occurrence of the symbols contained in a given set of symbols, such reinitialization being indicated in Figures 4A and 4B by a black dot at the beginning of each row SEk.
[0174] The fact that the decoding device DO is in an initialized state at the start of each row therefore gives great flexibility in terms of choosing the level of parallelism of the decoding and optimizing the processing time for the decoding.
[0175] In the exemplary encoding / decoding diagram depicted in FIG. 7A, the encoding device CO comprises a single encoding unit UC and the decoding device DO comprises six decoding units, as depicted in FIG. 3A.
[0176] The encoding unit UC sequentially encodes rows SE1, SE2, SE3, SE4, SE5, and SE6. In the illustrated example, rows SE1 to SE4 have been completely encoded, row SE5 is in the process of being encoded, and row SE6 has not yet been encoded. Taking into account the sequential nature of the encoding, the encoding unit UC is adapted to deliver the stream F, which contains the ordered substreams F1, F2, F3, and F4, in the order of encoding of rows SE1, SE2, SE3, and SE4. For this purpose, the substreams F1, F2, F3, and F4 are symbolized using the same hatching as that symbolizing the encoded rows SE1, SE2, SE3, and SE4, respectively. Due to the nulling step at the end of the encoding of the coded row and the reinitialization of the probability intervals at the start of the encoding or decoding of the next row to be coded / decoded, the decoding device DO is in an initialized state every time it reads to decode a sub-stream, and therefore the four sub-streams F1, F2, F3, F4 can be decoded in parallel in an optimal manner using decoding units UD1, UD2, UD3 and UD4 which are installed on four separate platforms, for example.
[0177] In the exemplary encoding / decoding diagram shown in FIG. 7B, the encoding device CO comprises two encoding units UC1 and UC2, and the decoding device DO comprises six decoding units, as shown in FIG. 3C.
[0178] The coding unit UC1 sequentially codes the odd-ordered rows SE1, SE3 and SE5, and the coding unit UC2 sequentially codes the even-ordered rows SE2, SE4 and SE6. For this purpose, rows SE1, SE3 and SE5 show a white background, while rows SE2, SE4 and SE6 show a dotted background. In the illustrated example, rows SE1 to SE4 have been completely coded, row SE5 is in the process of coding, and row SE6 has not yet been coded. Taking into account the fact that the coding performed is of level 2 parallel type, the coding unit UC1 sequentially codes the two-part decomposed sub-stream F1 and F3 obtained after coding rows SE1 and SE3, respectively. 2n+1and the coding unit UC2 is adapted to deliver a sub-stream F decomposed into two parts F2 and F4 obtained after encoding the rows SE2 and SE4, respectively. 2n The coding device CO is therefore adapted to deliver two sub-streams F 2n+1 and F 2n 7A due to the juxtaposition of the substreams F1, F3, F2, F4. For this purpose, the substreams F1, F2, F3 and F4 are symbolized using the same hatching as that symbolizing the coded rows SE1, SE2, SE3, SE4, respectively, with the substreams F1 and F3 showing a white background (coding of odd-ordered rows) and the substreams F2 and F4 showing a dotted background (coding of even-ordered rows).
[0179] With regard to the advantages mentioned in conjunction with FIG. 7A, such an encoding / decoding diagram further illustrates the advantage that a decoding device can be employed in which the level of parallelism of the decoding is completely independent of the level of parallelism of the encoding, thereby making it even possible to optimize the operation of the encoding device / decoding device. [Explanation of symbols]
[0180] IE Image CO encoder PCO Split Module GRCO Computational Module UC Coding Unit MT buffer memory CF Stream Construction Module UCk Coding Unit MCP predictive coding module MCPk predictive coding module MCE Entropy Coding Module MCEk Entropy Coding Module MGSF Stream Generation Software Module MGSFk stream generation software module
Claims
1. receiving a bitstream representing at least one coded image; identifying, from the bitstream, a plurality of predetermined groups of blocks representing at least one coded image; processing a first group of blocks, entropy decoding a first row of consecutive blocks in the first group of blocks; processing a second group of blocks, entropy decoding a second row of consecutive blocks in the second group of blocks; a second row of the consecutive blocks immediately follows a first row of the consecutive blocks in raster order of an image decoded from the at least one coded image; and a second row of the consecutive blocks does not immediately follow a first row of the consecutive blocks in the bitstream. Image decoding method.
2. 10. The computer-implemented method of claim 1, receiving the bitstream representing the at least one coded image from a coding system comprising one or more coding units for coding each of the groups of blocks; and providing a plurality of groups of the blocks to one or more decoding units; the number of the one or more decoding units is different from the number of the one or more encoding units; Image decoding method.
3. 10. The computer-implemented method of claim 1, predictively decoding each of the plurality of blocks relative to at least one previously decoded block. Image decoding method.
4. 10. The computer-implemented method of claim 1, updating probability data in a memory unit based on entropy decoded data obtained by entropy decoding at least the first group of blocks; Image decoding method.
5. one or more processors, and When executed by the one or more processors, receiving a bitstream representing at least one coded image; identifying, from the bitstream, a plurality of predetermined groups of blocks representing at least one coded image; processing a first group of blocks, entropy decoding a first row of consecutive blocks in the first group of blocks; processing a second group of blocks, entropy decoding a second row of consecutive blocks in the second group of blocks; a second row of the consecutive blocks immediately follows a first row of the consecutive blocks in raster order of an image decoded from the at least one coded image; and the second row of the consecutive blocks does not immediately follow the first row of the consecutive blocks in the bitstream; one or more storage devices storing instructions that cause the one or more processors to perform operations including system.
6. 6. The system of claim 5, The operation further comprises: receiving the bitstream representing the at least one coded image from a coding system comprising one or more coding units for coding each of the groups of blocks; providing the groups of blocks to one or more decoding units; and the number of the one or more decoding units is different from the number of the one or more encoding units. system.
7. 6. The system of claim 5, The operation is predictively decoding each of the plurality of blocks relative to at least one previously decoded block. system.
8. 6. The system of claim 5, The operation is updating probability data in a memory unit based on entropy decoded data obtained by entropy decoding at least the first group of blocks; system.
9. When executed by one or more computers, receiving a bitstream representing at least one coded image; identifying, from the bitstream, a plurality of predetermined groups of blocks representing at least one coded image; processing a first group of blocks, entropy decoding a first row of consecutive blocks in the first group of blocks; processing a second group of blocks, entropy decoding a second row of consecutive blocks in the second group of blocks; a second row of the consecutive blocks immediately follows a first row of the consecutive blocks in raster order of an image decoded from the at least one coded image; and the second row of the consecutive blocks does not immediately follow the first row of the consecutive blocks in the bitstream; A non-transitory computer-readable medium storing software including instructions that cause the one or more computers to perform operations including:
10. 10. The computer-readable medium of claim 9, The operation is receiving the bitstream representing the at least one coded image from a coding system comprising one or more coding units for coding each of the groups of blocks; and providing the groups of blocks to one or more decoding units; and the number of the one or more decoding units is different from the number of the one or more encoding units. Computer-readable medium.
11. 10. The computer-readable medium of claim 9, The operation is predictively decoding each of the plurality of blocks relative to at least one previously decoded block. Computer-readable medium.
12. 10. The computer-readable medium of claim 9, The operation is updating probability data in a memory unit based on entropy decoded data obtained by entropy decoding at least the first group of blocks; Computer-readable medium.