Coding and decoding methods, corresponding devices and computer programs.

By employing M-ary/binary transformation and probability-based encoding modes, the method optimizes entropy coding for syntax elements, reducing bit usage and enhancing compression efficiency.

FR3163513A1Pending Publication Date: 2025-12-19ORANGE SA
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
FR2024006400
Authority / Receiving Office
FR · FR
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-06-17
Publication Date
2025-12-19

AI Technical Summary

Technical Problem

Existing entropy coding methods struggle with suboptimal encoding of syntax elements in regions where sample values are difficult to predict, leading to inefficient use of bits.

Method used

A method that involves M-ary/binary transformation of syntax elements, adjusting encoding probabilities based on the probability of associated binary elements, and applying different encoding modes depending on the closeness of these probabilities to extremes, to optimize bit usage.

Benefits of technology

This approach reduces the number of bits required for encoding by adapting encoding strategies when probability extremes are detected, improving compression efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

Title: Coding and decoding methods, corresponding computer devices and program. The invention relates to a method for encoding an input signal implementing: obtaining (11) syntax elements representative of said input signal, encoding (12) the value of at least one current syntax element: M-ary / binary transformation (121) of said current syntax element, for at least one of said binary elements associated with said current syntax element: obtaining (1221) information relating to the encoding probability of said current binary element, entropic encoding (1222) of the value of said current binary element, if said information relating to the encoding probability of said current binary element is close to an extremum: application (1232) of a first or second entropic encoding mode to at least one subsequent binary element associated with said current syntax element, according to the encoded value of said current binary element.Figure for the abbreviation: figure 1.
Need to check novelty before this filing date? Find Prior Art

Description

Title of the invention: Coding and decoding methods, corresponding devices and computer program.

[0001] 1. Scope of the invention

[0002] The field of the invention is that of the encoding and decoding of a digital signal, for example an audio and / or video signal. The invention relates in particular to the compression of such a signal implementing entropic encoding / decoding.

[0003] 2. Prior art

[0004] Digital signals are generally subject to source coding aimed at compressing them in order to limit the resources required for their transmission and / or storage. There are many coding standards, such as, for still images, the JPEG family standards, and for moving images, or video, the ITU / MPEG standards (H.264 / AVC, H.265 / HEVC, H.266 / VVC, etc.) as well as their extensions (MVC, SVC, 3D-HEVC, etc.).

[0005] Classically, two main steps are implemented for the encoding of a digital signal that one seeks to compress.

[0006] A first step, called "syntaxization," consists of describing the signal samples as a whole (for example, pixels having luminance or red (R), green (G), or blue (B) color components) using a set of descriptors called "syntax elements," each of which can take several values. Such syntax elements, as well as their use in describing the input signal samples, are defined in standards such as HEVC or VVC. For example, a syntax element of type block_size can describe the size of the blocks dividing an image (for example, a value of 0 for a 4x4 block size, a value of 1 for an 8x8 block size, etc.).(e.g., value 6 for a block size of 256x256), another syntax element of type `split_block` can indicate whether a block is divided into sub-blocks (e.g., value 0 if no sub-block division, value 1 otherwise), another syntax element of type `pred_mod` can describe the type of prediction used (e.g., value 0 for an intra-block prediction or value 1 for an inter-block prediction), and so on. At the end of this step, the input signal is described by a finite sequence of syntax element values. This step is not always lossless, and the transmitted values ​​of the syntax elements do not always allow for the complete reconstruction of the input signal. The amount of information lost varies depending on the desired throughput savings.

[0007] A second entropy coding step consists of transforming the sequence of syntax elements into a binary sequence that forms the coded signal, which can be stored and / or transmitted. During this step, an entropy coding technique is implemented, for example, Huffman coding or arithmetic coding, such as CAB AC coding as described in the document "CAB AC: Context-Based Adaptive Binary Arithmetic Coding in the H.264 / AVC Video Compression Standard" (Detlev Marpe, Heiko Schwarz, and Thomas Wiegand). Typically, the goal of this entropy coding step is to encode syntax elements with the fewest possible bits, exploiting the probability characteristics of the syntax elements: a frequent value of a syntax element is encoded with few bits, and a less frequent value with more bits. Thus, a value of a syntax element is encoded according to a probability characteristic.

[0008] As indicated above, syntax elements can take integer values ​​(e.g., the syntax element `block_size`) or binary values ​​(e.g., the syntax element `split_block`). Therefore, several entropy coding techniques exist, among which we can distinguish between N-ary and binary methods. N-ary methods can handle non-binary integer values, for example, the following sequence: 12, 3, -5, 0, 2... Binary methods only handle streams consisting of 0s and 1s. For printed circuit board implementation reasons, it is preferable to use a binary method. In order to encode N-ary values ​​with a binary encoder, it has been proposed, in particular, to perform a "binarization" of the syntax element values ​​before implementing entropy coding. Such a binarization consists of converting an N-ary value of a syntax element into a series of 0s and 1s.For example, direct binary coding is possible, but other methods exist: Exp-Golomb codes, unary code, etc... Once a syntax element has been binarized, each binary element (called a "bin") it contains can be coded according to the associated binary probability.

[0009] The entropy coding step (with or without binarization) is generally lossless, meaning that upon decoding, the original values ​​of the syntax elements can be fully reconstructed. It should be noted that the quality of an entropy code depends on the quality of the probability characteristic used.

[0010] Symmetrically, two main steps are implemented for the decoding of a coded signal as described above.

[0011] A first step, called "parsing" or entropic decoding, consists of Reconstruct the sequence of syntax elements from the received binary sequence. During this step, an entropic decoding technique is implemented, performing the inverse step of entropic coding. Thus, the stream of 0s and 1s is read, and entropic decoding (Huffman, arithmetic, etc.) delivers the decoded values ​​of the syntax elements.

[0012] A second "synthesis" step consists of reading the sequence of previously decoded syntax elements, and using the construction rules defined by the synthesis method (for example defined in the HEVC or VVC standard), constructing the decoded values ​​of the signal samples.

[0013] As indicated above, the quality of an entropy coder depends on the quality of the probability characteristic used: the closer this is to the actual distribution of the signal (which is generally unknown), the more efficient the entropy coding is.

[0014] However, in a region where most samples are similar (for example, a set of constant or zero values), the occurrence of a different sample (for example, a non-zero value) is difficult to predict. It follows that the encoding of this difficult-to-predict sample, or of the syntax element that represents the amplitude of this sample, is likely to be suboptimal, for example, by using more bits than necessary.

[0015] There is therefore a need for a solution enabling efficient encoding of a syntax element in an entropic encoder.

[0016] 3. Description of the invention

[0017] The invention proposes a solution in the form of a method for encoding an input signal implementing the following steps: • obtaining syntax elements representative of said input signal, • encoding the value of at least one of said syntax elements, called the current syntax element, from coded values ​​of at least two binary elements associated with said current syntax element, implementing the following steps: • M-ary / binary transformation of said current syntax element, delivering said at least two binary elements, • for at least one of said binary elements associated with said current syntax element, called current binary element: • obtaining information (Pb_c) relating to the encoding probability of said current binary element, • entropic coding of the value of said current binary element taking into account said information relating to the coding probability (Pb_c), • if said information relating to the probability of encoding said current binary element is close to an extremum: application of a first entropic coding mode or a second entropic coding mode to at least one subsequent binary element associated with said syntax element current, according to the coded value of said current binary element.

[0018] The invention proposes a new solution for the implementation of the entropy coding step presented in relation to the prior art.

[0019] It should be noted that the proposed solution is based on an M-ary / binary transformation, also called binarization, of the syntax elements. In this way, the entropy encoder takes binary elements as input. Indeed, the use of a binary encoder offers several advantages, notably that of a simplified hardware implementation. For example, such a binarization technique implements direct binary coding, Exp-Golomb coding, or unary coding. There is no limitation as to the binarization technique used.

[0020] For example, the information relating to the probability of encoding the current binary element can be: a probability, an index in a predetermined probability table, or any other information representative of the probability with which the current binary element will be entropically encoded.

[0021] In particular, a coding method according to the invention offers a solution that contributes to improving compression when encoding binary elements associated with a syntax element, when information relating to the encoding probability of one of said binary elements is close to an extremum. The information relating to the encoding probability is close to an extremum if it is within the interval [0, 0 + E] or [1 - E, 1] where is small (for example, e < 0.1). According to a first example, s = 0.001. According to a second example, E = 0.01. According to a third example, Σ = 0.1. Other ranges can of course be defined.

[0022] In a particular embodiment, the value 8 can be transmitted to the decoder, for example, as a header of the encoded signal. More generally, information can be transmitted to the decoder, either in the encoded signal or in a separate signal, allowing it to define what is considered a probability close to an extremum. Such information might, for example, belong to a group comprising a list of probabilities, an interval, a criterion, the value 8, etc. In this way, the evaluation criteria are the same on both the encoder and decoder sides.

[0023] In particular, a separate coding mode can be applied to the binary elements following the current binary element in the coding order, according to the coded value of the current binary element.

[0024] Thus, if the coded value of the current binary element is an expected value (for example, the probability of encoding a value of 0 is very high, and the coded value is indeed 0), then a first encoding mode is implemented for the encoding the following binary elements associated with the same syntax element as the current binary element.

[0025] In particular, the first coding mode and second coding mode implement a different technique for determining information relating to the coding probability of said at least one subsequent binary element.

[0026] In a particular embodiment, the first coding method implements an entropic coding of said at least one following binary element according to which the information relating to the coding probability of said at least one following binary element is determined in a classical way, for example as described in the HEVC standard.

[0027] On the other hand, if the coded value of the current binary element is not an expected value (for example the probability of coding a value of 0 is very high, and the coded value is 1), then a second coding mode is implemented for coding the following binary elements associated with the same syntax element as the current binary element.

[0028] In a particular embodiment, the second coding method implements entropic coding of said at least one subsequent binary element, taking into account information relating to a predetermined coding probability. For example, the predetermined coding probability is between 0.4 and 0.6. In particular, the predetermined coding probability is equal to 0.5.

[0029] In a particular embodiment, information relating to a predetermined encoding probability can be transmitted to the decoder, for example in the header of the encoded signal. In this way, the decoder can deduce the predetermined decoding probability, corresponding to the predetermined encoding probability.

[0030] In a particular embodiment, a new M-ary / binary transformation of said current syntax element being encoded is implemented, and the second encoding mode implements an entropic encoding of the new binary element(s).

[0031] The use of a second coding method according to the invention makes it possible in particular to avoid suboptimal coding of a syntax element, for example by allocating more bits than necessary to the coding of a binary element associated with the syntax element.

[0032] Indeed, conventionally, if the encoder encodes an area containing many nuisance samples, the probability of encoding a zero value for the syntax elements representative of these nuisance samples will be very high. Since the probability of encoding a current syntax element depends on the probability of encoding previously encoded syntax elements, the encoder will estimate a high probability of encoding a zero value for the current syntax element. As indicated in relation to the prior art, the entropic encoder seeks to encode a frequent value of a syntax element with few bits and a less frequent value with more bits. So if the current syntax element does not carry a zero value when a zero value is very likely, a large number of bits will be needed to encode it.

[0033] According to a particular embodiment of the invention, the entropic encoding of the binary elements associated with a syntax element is considered rather than the entropic encoding of the syntax element directly. A value of a binary element is thus encoded according to a probability characteristic. Therefore, the encoding probability information for binary elements following the current binary element can be modified when the encoding probability of a first value of the current binary element is very high, but a second value, distinct from the first value, is encoded for the current binary element. Thus, the encoding probability of binary elements following the current binary element can be lower than that of the current binary element, thereby limiting the number of bits used to encode subsequent binary elements.

[0034] In other words, when a binary element has an extreme probability, encoding an improbable value can be exploited to reduce the impact of encoding on other binary elements associated with the same syntax element.

[0035] In the example above, a high probability was considered that the current binary element was at a first value, while a second value was encoded for the current binary element. Of course, the second encoding mode can also be implemented if a low probability is considered that the current binary element is at a first value, and that this first value is indeed encoded for the current binary element.

[0036] Thus, the second coding method can be implemented: • if the probability of encoding a value equal to 0 for said current binary element is close to 1, and the encoded value of said current binary element is equal to 1, • if the probability of encoding a value equal to 0 for said current binary element is close to 0, and the encoded value of said current binary element is equal to 0, • if the probability of encoding a value equal to 1 for said current binary element is close to 1, and the encoded value of said current binary element is equal to 0, • if the probability of encoding a value equal to 1 of said current binary element is close to 0, and the coded value of said current binary element is equal to 1.

[0037] It should also be noted that the possible coding probabilities may be limited and depend on the entropic coding technique implemented. For example, a set of 64 coding probabilities can be used for the CAB AC coder.

[0038] It is also noted that the coded signal obtained at the output of the coding process can in particular be stored (in a file, a memory...) and / or transmitted.

[0039] In a particular embodiment, the syntax elements are grouped in at least one latent and said coding method is implemented latent by latent.

[0040] In a particular embodiment, said syntax elements of a latent are grouped into at least one block (where a block of syntax elements can be representative of a block of signal samples) and said coding method is implemented block by block for a latent.

[0041] In a particular embodiment, obtaining syntax elements involves analyzing said input signal by an entity belonging to the group comprising: • a neural network, • a syntaxization module, • a combination of a neural network and a syntaxization module.

[0042] In another embodiment, the invention relates to a corresponding coding device.

[0043] Such a coding device, also called an encoder, is particularly suitable for implementing the coding method described above. It may, of course, include the various features relating to the coding method according to the invention, which may be combined or taken individually. Thus, the features and advantages of the encoder are the same as those of the method described above. Consequently, they are not described in further detail.

[0044] The invention also relates to a method for decoding a coded signal, represented by coded syntax elements, implementing the following steps: • decoding the value of at least one of said syntax elements, called the current syntax element, from decoded values ​​of at least two binary elements associated with said current syntax element, implementing the following steps: • for at least one of said binary elements associated with said current syntax element, called current binary element: • obtaining information (Pb_d) relating to the probability of decoding said current binary element, • entropic decoding of the value of said current binary element taking into account said information relating to the decoding probability (Pb_d), • if said information relating to the probability of decoding said current binary element is close to an extremum: application of a first entropic decoding mode or a second entropic decoding mode to at least one subsequent binary element associated with said current syntax element, depending on the decoded value of said current binary element, • binary / M-ary transformation of the decoded values ​​of said binary elements associated with said current syntax element.

[0045] Such a decoding method is particularly suitable for decoding a signal encoded using the encoding method described above. It may, of course, include the various features relating to the encoding method according to the invention. Thus, the characteristics and advantages of the decoding method and the decoder are the same as those of the encoding method and the encoder described previously.

[0046] In particular, the information regarding the decoding probability of the current binary element on the decoding side is normally identical or correlated with the information regarding the encoding probability of the current binary element on the encoding side, since the entropy encoding step is generally lossless. Therefore, the information regarding the decoding probability is close to an extremum if it lies within the interval [0, 0 ≤ 4 ≤ s] or [1 ≤ s, 1] where e is small (for example, g < 0.1). According to a first example, e = 0.001. According to a second example, s = 0.01. According to a third example, s ≤ 0.1. Other ranges can, of course, be defined.

[0047] In a particular embodiment, the decoding process includes a step of receiving at least one piece of information enabling verification of whether the decoding probability is close to an extremum. This information may be transmitted in the coded signal or in a separate signal. Such information may, for example, belong to the group comprising a list of probabilities, an interval, a criterion, and the value e. It thus makes it possible to define, during decoding, what is considered a probability close to an extremum.

[0048] As with the encoding, the first decoding method, for example, implements classical entropic decoding of said at least one subsequent binary element. The second decoding method, for example, implements entropic decoding of said at least one subsequent binary element, taking into account a predetermined decoding probability. For example, the predetermined decoding probability is between 0.4 and 0.6. In particular, the predetermined decoding probability is equal to 0.5.

[0049] In a particular embodiment, the decoding process includes a step of receiving at least one piece of information relating to a predetermined decoding probability. This information may be transmitted in the coded signal or in a separate signal.

[0050] In particular, the second decoding mode can be implemented if a new M-ary / binary transformation of said current syntax element has been implemented during the encoding of said current syntax element. The second decoding mode then implements an entropic decoding of the new binary element(s).

[0051] In a particular embodiment, the second decoding method is implemented: • if the probability of decoding a value equal to 0 for said current binary element is close to 1, and the decoded value of said current binary element is equal to 1, • if the probability of decoding a value equal to 0 for said current binary element is close to 0, and the decoded value of said current binary element is equal to 0, • if the probability of decoding a value equal to 1 of said current binary element is close to 1, and the decoded value of said current binary element is equal to 0, • if the probability of decoding a value equal to 1 of said current binary element is close to 0, and the decoded value of said current binary element is equal to 1.

[0052] In a particular embodiment, the coded syntax elements are grouped in at least one latent and said decoding process is implemented latent by latent.

[0053] In a particular embodiment, said coded syntax elements of a latent are grouped into at least one block (where a block of syntax elements can be representative of a block of samples of the signal) and said decoding method is implemented block by block for a latent.

[0054] In another embodiment, the invention relates to a corresponding decoding device.

[0055] Such a decoding device, also called a decoder, is particularly suitable for implementing the decoding process described above. It may, of course, include the various features relating to the decoding process according to the invention, which may be combined or taken individually. Thus, the features and advantages of the decoder are the same as those of the process described above. Consequently, they are not described in further detail.

[0056] The invention further relates to one or more computer programs comprising instructions for the implementation of a process as described above when this or these programs are executed by at least one processor.

[0057] The invention also relates to a computer-readable information carrier, comprising instructions for a computer program as mentioned above.

[0058] 4. List of figures

[0059] Other features and advantages of the invention will become more apparent upon reading the following description of a particular embodiment, given by way of simple illustrative and non-limiting example, and the accompanying drawings, among which: - Figure [1] illustrates the main steps implemented by a coding process according to a particular embodiment, - Figure [2] illustrates the main steps implemented by a decoding process according to a particular embodiment, - Figure [Fig. 3] illustrates an example of an implementation of an encoder according to a particular embodiment, - Figure 4 illustrates a coding algorithm implemented in an encoder according to the example in Figure 3. - Figure 5 illustrates an example of taking into account the causal neighborhood of a current sample for its encoding or decoding according to a particular embodiment, - Figure 6 illustrates an example of a decoder implementation according to a particular embodiment, - [Fig.7] illustrates a decoding algorithm implemented in a decoder according to the example in [Fig.6], - Figure [8] shows the simplified structure of an encoder according to one embodiment of the invention, - Fig. 9 presents the simplified structure of a decoder according to one embodiment of the invention.

[0060] 5. Description of an embodiment

[0061] 5.1 Definitions

[0062] For the purposes of this invention, encoding, or "coding," means the operation of representing a set of samples in a compact form, for example, using a digital binary stream. Decoding means the operation of processing a digital binary stream to produce decoded samples.

[0063] By "sample" of the signal, we mean a value taken from the signal. Sampling the signal produces a sequence of discrete values ​​called samples. In the case of an image signal, the sample is called a pixel, which can be, for example, a color pixel traditionally represented by a triplet of values, for example (R,G,B) or (Y,U,V). In general, a sample is represented by a vector of one or more components, or data.

[0064] A sample may belong to a block of samples.

[0065] A sample can be represented by one or more syntax elements, or less so if we consider a block of samples and a syntax element representative of the entire block. For example, a sample can be described by two syntax elements (such as the amplitude and sign of the sample).

[0066] A sample can be part of a latent.

[0067] By "latent," we mean an abstract representation of the signal comprising a plurality of variable scalar data, also called characteristic values, including, for example, samples of the signal or syntactic elements representative of the signal, such as real or integer numbers. These characteristic maps are also known as the "latent representation" or "latent domain representation" of the input signal. These characteristic maps can have a two-dimensional representation as images of scalar values, a one-dimensional representation as vectors, or correspond to a set of scalar values. A latent generally has a traversal order for the characteristic values, for example, lexicographic order.In another example, a latent function can be divided into blocks of defined size, the blocks being traversed in lexicographic order, the characteristic values ​​within each block being themselves traversed in lexicographic order.

[0068] By "neural network," we mean a neural network such as a fully connected network or a convolutional neural network, a combination of the two, etc. The neural network is defined, for example, by a plurality of layers of artificial neurons and by a set of activation, weighting, and addition functions (for example, a layer can compute y = f(Ax+b), where y and b are N-dimensional vectors, x is an M-dimensional vector, A is an MxN matrix, and f is the activation function). A plurality of such networks can be cascaded.

[0069] By "neural network parameter" we mean one of the values ​​that characterizes the neural network, for example a weight associated with one of the neurons (filter or convolution coefficient, weighting, bias, value affecting the functioning of non-linearity, etc.)

[0070] By "information relating to a current syntax element (or sample)" is meant a scalar or vector, of integer, floating-point, or numeric type, that is associated with the current syntax element (or sample). Such information relating to the current syntax element (or sample) is used to derive probability information related to the binary elements resulting from the binarization of that element. current syntax element (or sample). This information relating to a current syntax element (or sample) can be directly representative of the probability of the syntax element (or sample), for example, it can be its probability, or its expectation, or its dispersion, or a composition of these values, or be linked by a more general relationship.

[0071] By "coding of a syntax element", respectively of a binary element, we mean the coding of the value of the syntax element, respectively of the value of the binary element.

[0072] By "decoding of a syntax element", respectively of a binary element, we mean the decoding of the coded value of the syntax element, respectively of the coded value of the binary element.

[0073] Furthermore, the terms "encoded value of the syntax element" and "encoded syntax element" are used interchangeably. The terms "encoded value of the binary element" and "encoded binary element" are used interchangeably. The terms "decoded value of the syntax element" and "decoded syntax element" are used interchangeably. The terms "decoded value of the binary element" and "decoded binary element" are used interchangeably.

[0074] Generally speaking, the steps of an encoding or decoding process should not be interpreted as being linked to a notion of temporal succession. In other words, the steps can be carried out in a different order than that illustrated in Figures 1 and 2, or even in parallel.

[0075] 5.2 General Principle

[0076] The general principle of the invention is based on the implementation, in an encoder or entropic decoder, of a method for encoding or decoding at least one binary element associated with a syntax element, chosen according to the coded value of at least one other binary element associated with that syntax element, and information relating to the encoding probability of that other binary element. More precisely, a method for encoding or decoding at least one binary element following a current binary element is selected, according to a traversal order for encoding or decoding the binary elements associated with a current syntax element, depending on the coded value of the current binary element and when information relating to the encoding probability of the current binary element is close to an extremum (i.e., close to 0 or 1).The aim is to adapt the information relating to the probability of encoding or decoding at least one binary element according to the current binary element, and consequently the efficiency of the entropic encoder or decoder.

[0077] Fig. 1 illustrates the main steps of a coding process according to one embodiment of the invention.

[0078] Such a process takes as input a signal S. For example, such an input signal is an audio signal, video signal, an image, etc.

[0079] In a first step 11, a syntaxization of the input signal is implemented, allowing us to obtain syntax elements representative of the input signal. For example, a first syntax element is denoted ES_1, an i-th syntax element is denoted ES_i, and a last syntax element is denoted ES_N, with N an integer greater than or equal to 1, and i an integer such that 1 < i < bi.

[0080] For example, the syntaxization step 11 implements an analysis of the input signal by a neural network, a syntaxization module, or a combination of a neural network and a syntaxization module.

[0081] The value of at least one current syntax element ES_i is then encoded in a second step 12 from encoded values ​​of at least two binary elements associated with the current syntax element ES_i. For example, the values ​​of all the syntax elements ES_1,..., ES_i,..., ES_N are encoded in the encoded signal S_c.

[0082] More specifically, the encoding step 12 of the value of the current syntax element ES_i includes an M-ary / binary transformation (or binarization) step 121 of the current syntax element, delivering at least two binary elements. For example, a first binary element associated with the current syntax element ES_i is denoted EB_i,l, a j-th binary element is denoted EB_i,j, and a last binary element is denoted EB_i,M, with M an integer greater than or equal to 2, and j an integer such that 1 < j < M.

[0083] The encoding step 12 of the value of the current syntax element ES_i also includes at least one encoding step 122 of the value of a current binary element EB_i,j and one encoding step 123 of the value of at least one subsequent binary element EB_i,j+l, from among the binary elements EB_i,l, ..., EB_i,j, ..., EB_i,M, associated with the current syntax element ES_i. Such a subsequent binary element is located after the current binary element according to the encoding order of the binary elements, but is not necessarily a direct neighbor of the current binary element. The encoded value of the current binary element can be used to encode the subsequent binary element.

[0084] For example, the values ​​of all binary elements EB_i,l, ..., EB_i,j, ..., EB_i,M associated with the current syntax element ES_i are encoded to encode the value of the current syntax element ES_i.

[0085] More specifically, the encoding step 122 of the value of the current binary element EB_i,j includes a step of obtaining information 1221 relating to the encoding probability of the current binary element EB_i,j, denoted Pb_c_EB_i,j. The encoding step 122 of the value of the current binary element EB_i,j also includes an entropy encoding step 1222 of the value of the current binary element EB_i,j taking into account the information Pb_c_EB_i,j relating to the encoding probability of the current binary element.

[0086] If the information Pb_c_EB_i,j relating to the probability of encoding the current binary element is close to an extremum, the encoding step 123 of the value of at least one subsequent binary element EB_i,j+l includes a selection step 1231 of a first encoding mode or a second encoding mode to be applied to said at least one subsequent binary element, according to the encoded value of the current binary element EB_i,j.

[0087] The encoding step 123 of the value of at least one binary element following EB_i,j+l also includes an entropy encoding step 1232 of the value of said at least one binary element following EB_i,j+l, according to the encoding mode selected.

[0088] If the information Pb_c_EB_i,j relating to the coding probability of the current binary element is not close to an extremum, the coding step 123 of the value of at least one binary element following EB_i,j+l includes an entropic coding step of the value of said at least one binary element following EB_i,j+l according to the first coding mode.

[0089] At the end of these different steps, we obtain a coded signal S_c, represented by the coded syntax elements ES_1, ..., ES_i, ..., ES_N, intended to be transmitted and / or stored.

[0090] The main steps of a decoding process according to an embodiment of the invention are now described in relation to [Fig.2].

[0091] Such a decoding process takes as input a coded signal S_c, represented by coded syntax elements ES_1, ..., ES_i, ..., ES_N.

[0092] The coded value of at least one current syntax element ES_i is decoded during a decoding step 21, from decoded values ​​of at least two binary elements associated with the current syntax element. For example, the coded values ​​of all the syntax elements ES_1, ..., ES_i, ..., ES_N are decoded to reconstruct the decoded signal S_d.

[0093] More specifically, the decoding step 21 of the encoded value of the current syntax element ES_i comprises at least one decoding step 211 of the value of a current binary element EB_i,j and a decoding step 212 of the value of at least one subsequent binary element EB_i,j+l, from among the binary elements EB_i,l, ..., EB_i,j, ..., EB_i,M associated with the current syntax element ES_i. Such a subsequent binary element is located after the current binary element according to the decoding order of the binary elements, but is not necessarily a direct neighbor of the current binary element. The decoded value of the current binary element can thus be used to decode the subsequent binary element.

[0094] For example, the values ​​of all binary elements EB_i,l, ..., EB_i,j, ..., EB_i,M associated with the current syntax element ES_i are decoded to decode the value of the current syntax element ES_i.

[0095] More specifically, the decoding step 211 of the value of the current binary element EB_i,j includes a step of obtaining 2111 information relating to the probability of decoding the current binary element EB_i,j, denoted Pb_d_EB_i,j. The decoding step 211 of the value of the current binary element EB_i,j also includes an entropic decoding step 2112 of the value of the current binary element EB_i,j taking into account the information Pb_d_EB_i,j relating to the probability of decoding the current binary element EB_i,j.

[0096] If the information Pb_d_EB_i,j relating to the probability of decoding the current binary element is close to an extremum, the decoding step 212 of the value of at least one subsequent binary element EB_i,j+l includes a selection step 2121 of a first decoding mode or a second decoding mode to be applied to said at least one subsequent binary element, according to the decoded value of the current binary element EB_i,j.

[0097] The decoding step 212 of the value of at least one binary element following EB_i,j + 1 also includes an entropic decoding step 1232 of the value of said at least one binary element following EB_i,j+l, according to the decoding mode selected.

[0098] If the information Pb_d_EB_i,j relating to the probability of decoding the current binary element is not close to an extremum, the decoding step 212 of the value of at least one binary element following EB_i,j+l includes an entropic decoding step of the value of said at least one binary element following EB_i,j+l, according to the first decoding mode.

[0099] The decoded values ​​of the binary elements EB_i,l,.., EB_i,j,.., EB_i,M are then "debinarized" during a binary / M-ary transformation step 213, to decode the coded value of the current syntax element ES_i.

[0100] As stated above, the coded values ​​of all syntax elements can be decoded to reconstruct the decoded signal S_d.

[0101] 5.3 Example of implementation

[0102] An example of an implementation of the invention for encoding an original signal, delivering a compressed stream, and then decoding the compressed stream to reconstruct the original signal is described below.

[0103] 5.3.1 Coding

[0104] Fig. 3 illustrates an example of an encoder 3 that transforms an input signal IO, corresponding for example to an original image, into a compressed binary stream B.

[0105] The input signal IO is first processed by a syntaxization module 31 allowing to obtain syntax elements representative of the original image.

[0106] According to the example illustrated in Figure 3, the syntaxization module 31 is considered to implement a latent synthesis unit 311, allowing the generation of at least a latent. For example, the latent synthesis unit 311 generates a series of L latents denoted L_l,.., L_l,L_L, with 1 < 1 < L, representative of the input signal 10.

[0107] In a first embodiment, the latents obtained at the output of the latent synthesis unit 311 carry the values ​​of the ES syntax elements representing the samples of the input signal.

[0108] In a second embodiment, the latents obtained at the output of the latent synthesis unit 311 carry samples of the input signal. In this case, a compression module, not shown, can be implemented to generate ES syntax elements representative of the input signal samples grouped in at least one latent.

[0109] According to a first example, the syntaxization module 31 implements a neural network, which takes as input the input signal corresponding to an original image and performs an inference on this original image to produce at least one latent.

[0110] According to a second example, the syntaxization module 31 implements a conventional system, such as the syntaxization module of an HEVC or VVC encoder, which produces at least one latent carrying the values ​​of the syntax elements (such as block split indicators, motion vectors, intra-prediction mode indicators, etc.).

[0111] According to a third example, the syntaxization module 31 implements a hybrid system between a conventional coder and neural networks.

[0112] According to a fourth example, the syntaxization module 31 implements an implicit representation coder such as the Cool-Chic coder, as described in the paper "COOL-CHIC: Coordinate-based Low Complexity Hierarchical Image Codée" (Théo Ladune et al.), or NeRV, as described in the paper "NeRV: Neural Representations for Videos" (Hao Chen et al.), which performs a learning of a representation of the signal in the form of latents and signal reconstruction neural network parameters, the two together forming the syntax elements.

[0113] Other examples are also conceivable.

[0114] The latents L_l,.., L_l,.., L_L obtained at the output of the latent synthesis unit 311 carry values ​​characteristic of the signal, for example, samples of the input signal (possibly blocks of samples), or the values ​​of the syntax elements representative of these samples or blocks of samples. Note that if the syntaxization module 31 implements a neural network, these may be latents in the neuronal sense of the term.

[0115] The latents L_l,.., L_l,.., L_L obtained at the output of the latent synthesis unit 311 can be organized into a series of one- or multi-dimensional lists or arrays. There are no constraints on the structure of the latents.

[0116] In the following, we consider for example that the latents are organized into a series of two-dimensional arrays. Each latent L_l, with 1 < 1 < L, is divided into B blocks B_b, with 1 < b < B.

[0117] The latents are then traversed and the values ​​of the ES syntax elements associated with these latents, obtained at the output of the syntaxization module 31, are entropically coded in an entropic coding module 32 described below.

[0118] The entropic coding of the values ​​of the ES syntax elements associated with the latents generates the compressed stream B.

[0119] An example of a coding algorithm implemented by the entropy coding module 32 is described below in relation to [Fig.4].

[0120] In a first, optional step 41, high-level indicators can be initialized. Such indicators can be written, for example, to the header of the compressed stream (e.g., the header of the encoded image) so as to inform the decoder of information concerning the entire stream (e.g., the entire image). More generally, such indicators carry information concerning all or part of the original signal.

[0121] For example, the encoder can decide whether to divide the input signal into blocks of samples, i.e., whether to divide the original image into blocks of pixels. If there is no division into blocks, an encoding (entropic or direct) of the value 0 for an element of the block_size syntax (as defined, for example, in the HEVC or VVC standards) can be used. In this case, algorithmically, the image is considered a single block.

[0122] If the encoder decides to slice the original image into blocks, it can encode their size BS as the value of the syntax element block_size. For example, the encoder uses a block size BS=8, which means that each latent is sliced ​​into blocks of 8x8 sample values. In this case, an encoding (entropic or direct) of the value 8 for the syntax element block_size can be encoded

[0123] Alternatively, other "high-level" syntax elements relating to block size, such as block_size_h, block_size_w, can be coded.

[0124] Furthermore, according to the embodiment illustrated in [Fig. 4], if block decoding is implemented, a first high-level indicator denoted flat_blocks, associated with a set of at least two blocks (and for example with the entire image or more generally with the input signal), can be initialized. This first flat_blocks indicator allows the use of a first coding indicator Fx for each block of said set. Such a first coding indicator Fx is a syntax element associated with a block. It allows one to describe whether all the samples of the block (or the syntax elements representing the samples of the block) have identical values. or if at least two samples from the block (or at least two syntax elements representative of the block samples) have different values

[0125] The coder can thus activate the coding functionality for an entire block of samples with identical values ​​using a single flag, by assigning a predetermined value to the first high-level flag, flat_blocks (for example, flat_blocks = 1). In the embodiment illustrated in [Fig. 4], this coding functionality is activated. If this functionality is not activated, it is not possible to code a block in this way, and all the samples in the block must be coded one by one, even if they are all identical, or all the values ​​of the syntax elements describing these samples must be coded, even if they are identical.

[0126] A second high-level indicator, denoted zero_blocks, associated with a set of at least two blocks (and for example with the entire image or more generally with the input signal), can also be initialized according to the embodiment illustrated in [Fig. 4], if block decoding is implemented. This second zero_blocks indicator allows the use of a second coding indicator Zb for each block in said set. Such a second coding indicator Zb is a syntax element associated with a block. It allows one to describe whether all the samples in the block (or all the syntax elements representing the samples in the block) have a value of zero or whether at least one sample in the block (or at least one syntax element representing the samples in the block) has a non-zero value.

[0127] The coder can thus activate the coding functionality for an entire block of samples corrupted by a single flag, by assigning a predetermined value to the second high-level flag zero_blocks (for example, zero_blocks = 1). In the embodiment illustrated in [Fig. 4], this coding functionality is activated. If this functionality is not activated, it is not possible to code a block in this way, and it is necessary to code all the samples in the block one by one, even if they are all corrupted, or to code all the values ​​of the syntax elements describing these samples, even if they are all zero.

[0128] The next step is a selection step 42 of the first latent L_1 = L_1.

[0129] During this step, it is assumed that the latents are ordered and that there is a predetermined path among them. The first latent in this path order is selected as the current latent L_l.

[0130] The next step is a selection step 43 of the first block B_b = B_1

[0131] During this step, it is assumed that the blocks are ordered in the latent current (for example, in lexicographical order) and that there is a predetermined path among them. The first block in this path order is selected as the current block B_b.

[0132] The next step is a test step 44 of zero-coding the block. This step is implemented in particular if the functionality of coding an entire block of samples damaged by a single flag is enabled (for example zero_blocks = 1).

[0133] If the current block B_b contains only nuis samples 441 (or is represented by syntax elements bearing null values), then a first value is assigned 4411 to the second coding indicator Zb associated with the current block B_b (for example Zb=1), and this first value is coded (entropically or not) in the stream B. The next step 4412 is then the step of selecting the next block B_b = B_b+1, as long as the last block B_b = B_B has not been reached.

[0134] If the current block B_b does not contain only nuis samples 442 (or is represented by at least one syntax element with a non-zero value), then a second value, distinct from the first value, is assigned 4421 to the second coding flag Zb associated with the current block B_b (for example, Zb=0), and this second value is encoded (entropically or non-entropically) in the stream B. The next step is then a test step 45 of encoding the block to a fixed value X. This step is implemented in particular if the functionality of encoding an entire block of samples with identical values ​​by a single flag is activated (for example, flat_blocks =1).

[0135] If the current block B_b does not contain only identical samples 452 (or is represented by at least two syntax elements bearing different values), then a first value is assigned 4521 to the first coding indicator Fx associated with the current block B_b (for example Fx=0), and this first value is coded (entropically or not) in the stream B.

[0136] If the current block B_b contains only identical samples 451 (or is represented by syntax elements bearing identical values), then a second value, distinct from the first value, is assigned 4511 to the first coding indicator Fx associated with the current block B_b (for example Fx=l), and this second value is coded (entropically or not) in the stream B.

[0137] The next step is then a selection step 46 of the first sample x_i = x_l of the current block B_b, or of a first syntax element ES_i = ES_1 representative of at least one sample of the current block B_b.

[0138] The case where the coder works on samples of the current block is described below. It suffices to replace "sample" with "syntax element" in the following if the coder works on syntax elements representative of at least one sample of the current block.

[0139] During this step, it is assumed that the samples are ordered in the current block B_b (for example in lexicographical order) and that there exists a traversal predetermined among them. The first sample in this order of travel is selected as the current sample.

[0140] The next step is a step of obtaining 461 information Pe_c relating to the current sample, from the coded value of at least one previously coded sample. For the first sample, this information Pe_c can be initialized to a predefined value.

[0141] Such information Pe_c relating to the current sample can be representative of the probability of the sample. For example, the information Pe_c relating to the current sample belongs to the group comprising: • an average of the coded values ​​from at least two previously coded samples, • an expected value of the coded values ​​from at least two previously coded samples, • a variance in the coded values ​​of at least two previously coded samples, • a probability of at least one possible value for the current sample, • a combination of at least two of the above elements.

[0142] This Pe_c information can be one-dimensional, multi-dimensional, floating-point or integer.

[0143] For example, as illustrated in [Fig.5], the information Pe_c relating to the current sample x_i of value x located in the latent L_1 at coordinates (i,j) can be obtained from the coded value of at least one previously coded sample {a, b, c, d, e, f], located to the left and above the current sample of value x.

[0144] In a particular embodiment, the information Pe_c relating to the current sample can be obtained at the output of a neural network.

[0145] Thus, returning to [Fig.3], a neural network 33, for example an ARM network (for example of the fully connected type or of the convolutional network type or a combination of the two), can provide as output information Pe_c relating to the current sample, taking as input the causal neighborhood of the current sample of value x (for example in the same block or the same latent), consisting for example of samples of values ​​a,b,c...,f. The information Pe_c relating to the current sample obtained as output of the neural network 33 includes for example two variables Mu and Sigma, with floating values.In this embodiment, the variables Mu and Sigma are respectively representative of a prediction of the value of the current sample (obtained for example from an average of the values ​​of at least two previously coded samples) and of a prediction error of the value of the current sample (obtained for example from a variance or dispersion of the values ​​of au. minus two previously coded samples). Subsequently, Mu and Sigma are said to be respectively representative of a mean and a variance of the current sample.

[0146] In particular, the ARM neural network can be adapted to the characteristics of the current image to be entropically coded (e.g. the original image, meaning that its parameters are optimized on the current image, with a cost function that can be the total throughput of the current image, after entropic coding of the current image).

[0147] Alternatively, the ARM network can produce Pe_c information relating to the current sample corresponding to the complete probability of the current sample, that is, the probability of each value that it can take.

[0148] In another embodiment, the information Pe_c relating to the current sample x_i is simply the average of a predetermined number of previously processed samples, for example the average of the last ten samples.

[0149] If the information Pe_c relating to the current sample is obtained at the output of a neural network, at least one parameter and / or a topology of the neural network can be transmitted to a decoder, so that the latter can reconstruct such information denoted Pe_d on the decoder side, with Pe_d = Pe_c.

[0150] In another embodiment not illustrated, the Pe_c information relating to the current sample is not obtained at the output of a neural network.

[0151] For example, the Pe_c information relating to the current sample is obtained from a nonlinear function, or a predetermined algorithm, or an association table, etc. An example of an algorithm consists of generating multidimensional Pe_c information relating to the current sample, which includes an estimated probability for a number of samples preceding the current sample in the traversal order. For example, the estimated probabilities can be initialized to a predefined value and then updated continuously by counting the occurrences of the values ​​of each sample.

[0152] We consider below, by way of example, that the information Pe_c relating to the current sample is a two-dimensional floating value, which includes the variables Mu and Sigma respectively representing a mean and a variance of the current sample.

[0153] In a subsequent optional step 462, a pretreatment may be applied to the current sample.

[0154] For example, we can subtract from the value x of the current sample x_i the value Mu which corresponds to the mean of the current sample. We thus obtain a new value y representative of the pre-treated current sample y_i:

[0155] y=x-Mu

[0156] The next step is a 463 binarization step, or M-ary / binary transformation, of the current sample, delivering at least one binary element (or "bin"), associated with the current sample.

[0157] If the current sample has been pre-processed, the binarization step is implemented on the pre-processed value of the current sample, namely y. Otherwise, the binarization step is implemented directly on the value of the current sample, namely x.

[0158] For example, it is assumed that the current sample has been pre-treated.

[0159] Classically, a sample is presented as a signed integer value.

[0160] Thus, according to a first example, the binarization step 463 of the pre-processed current sample is as follows: - A first binary element gtO (for "greater than 0") indicates whether the absolute value of the current pre-processed sample is greater than 0. It can take a first value if the absolute value of the current sample is equal to 0, or a second value if the absolute value of the current sample is greater than 0. For example, the value of the binary element gtO is equal to 0 if and only if y equals 0; in this case, only the value of gtO is encoded in the compressed stream B, - if the absolute value of the first binary element gtO is equal to 1, the value of a second binary element sign, which indicates the sign of the current pre-processed sample, is encoded in the compressed stream B, - A third binary element, gtl (for "greater than 1"), indicates whether the absolute value of the current pre-processed sample is greater than 1. The absolute value of the binary element gtl is equal to 0 if and only if y equals 1; in this case, the values ​​of gtO, sign, and gtl are encoded in the compressed stream B. - A fourth binary element, gt2 (for "greater than 2"), indicates whether the absolute value of the current pre-processed sample is greater than 2. The absolute value of the binary element gt2 is equal to 0 if and only if y equals 2; in this case, the values ​​of gtO, sign, gtl, and gt2 are encoded in the compressed stream B. - a fifth binary element gt3 (for "greater than 3") indicates whether the absolute value of the current pre-processed sample is greater than 3. The absolute value of the binary element gt3 is equal to 0 if and only if y equals 3; in this case, the values ​​of gt0, sign, gtl, gt2 and gt3 are encoded in the compressed stream B, - if the absolute value of the fifth binary element gt3 is equal to 1, then y is necessarily greater than 3. The values ​​of gt0, sign, gtl, gt2, and gt3 are encoded in the compressed stream B, followed by a binarization of the y value. We can thus binarize the y value of the current preprocessed sample y_i, or Binarize the value (y-4) in order to reduce the amplitude of the value to be coded, for example by using an Exp-Golomb binarization (as described in the VVC standard for example) which produces a series of binary elements egO, egl, eg2,... (without size limitation).

[0161] In a particular embodiment of the invention, the binary elements obtained at the end of the binarization step of the current sample (possibly pre-processed) are indexed by an indexing function.

[0162] For example, the binary elements gt0, sign, gtl, ..., gt3, eg0, egl, eg2, ... are indexed directly by an indexing function binidx(EB_i,j): binidx(gt0)=0, binidx(sign)=l, ..., binidx(eg0)=5, ...

[0163] According to other examples, the binarization step 463 of the current sample (possibly pre-processed) implements other binarization techniques, such as direct binary coding, unary coding, Exp-Golomb coding, etc.

[0164] The next step is a selection step 47 of the first binary element (associated with the current sample x_i) as the current binary element EB_i,j = EB_i,l.

[0165] The next step is a step of obtaining 471 information Pb_c relating to the coding probability of the current binary element, from the information Pe_c relating to the current sample.

[0166] Here we seek to determine the probability according to which encoding the current binary element EB_i,j with a considered entropic coding method.

[0167] For example, if the entropy coding is an arithmetic coding of type CAB AC, there are 64 possible probabilities for encoding a binary element, denoted by an index, as described in the document "Context-Based Adaptive Binary Arithmetic Coding in the H.264 / AVC Video Compression Standard" cited in relation to the prior art.

[0168] The information Pb_c relating to the encoding probability of the current binary element can be: a probability, an index in a predetermined probability table, or any other information representative of the probability with which the current binary element will be entropically encoded.

[0169] According to a particular embodiment, in order to determine the information Pb_c relating to the coding probability of the current binary element, both the information Pe_c relating to the current sample to which the current binary element is associated (possibly multidimensional) and the current binary element EB_i,j being coded are used.

[0170] An example of determining the information Pb_c relating to the coding probability of the current binary element from the information Pe_c relating to the current sample is presented below.

[0171] According to this example, we determine the integer closest to the variable Mu (for example by using a function Round(Mu)), and we subtract this integer from the value Mu. This yields a Mu-Round(Mu) value between -0.5 and +0.5. This Mu-Round(Mu) value is quantized, for example over 17 possible values ​​denoted muidx {0, 1,16} distributed uniformly between -0.5 and +0.5. Of course, other quantization steps are conceivable, for example a uniform quantization over 64 values, or a non-uniform quantization.

[0172] Similarly, the sigma value is quantified between -5 and +4, for example over 50 possible values ​​denoted sigidx {0,.., 49} distributed uniformly between -5 and +4. Again, other quantization steps are conceivable, for example a uniform quantization over 100 values, or a non-uniform quantization.

[0173] A three-dimensional association table probaT, indexed by muidx, sigidx and binidx(EB_i,j), gives the probability of encoding the current binary element EB_i,j. There is therefore information Pb_c relating to the encoding probability of the current binary element associated in a predetermined way with each triplet (muidx, sigidx, binidx(EB_i,j)):

[0174] Pb_c = probaT[muidx] [sigidx] [binidx(EB_i,j)]

[0175] This association table can be constructed before encoding. It can be transmitted or accessed by the encoder and decoder. To construct this table, one can, for example, generate a statistic of the binary elements on a large number of input signals (e.g., input images), and deduce the probability from the compiled statistic. Other methods are, of course, conceivable.

[0176] A simple reading of the three-dimensional table taking into account the triplet (muidx, sigidx, binidx(EB_i,j)) gives the information Pb_c relating to the coding probability of the current binary element.

[0177] The information Pb_c relating to the encoding probability of the current binary element is thus obtained from a predetermined table associating a probability value with the current binary element as a function of: • of the current binary element, i.e. which current binary element is being encoded (binidx(EB_i,j)), • a prediction of the current sample value (muidx), and • of a prediction error of the current sample value (sigidx).

[0178] In another embodiment, the information Pb_c relating to the coding probability of the current binary element can be obtained differently.

[0179] For example, the information Pb_c relating to the coding probability of the current binary element is obtained by applying a predetermined function to the information Pe_c relating to the current sample, or to a quantized version of the information Pe_c relating to the current sample.

[0180] Such a function f is for example a linear function or a piecewise linear function, such that f(Pe_c, binidx(EB_i,j))=Pb_c. For example, if Pe_c depends on the two variables Mu and Sigma, we have: f(Mu,Sigma, binidx(EB_i,j))=Pb_c.

[0181] Once the information Pb_c relating to the coding probability of the current binary element has been obtained, an entropic coding step 472 of the value of the current binary element, taking into account said information Pb_c, is implemented.

[0182] During this step 472, the value of the current binary element EB_i,j is entropically encoded according to the information Pb_c, for example by a CAB AC encoding, or by any other binary entropy coding technique. Another example of a binary entropy coding technique is to group the binary elements according to a predetermined size (for example, 8 consecutive binary elements) and then to apply a dictionary encoding of the LZW type according to the Lempel-Zip-Welch compression algorithm (described in the document "Lempel-Zip Complexity Reference", Giulio Ruffini, Jan. 2017 Starlab Technical Note TN00344 (V1.0).

[0183] The next step is a 473 last binary element test step.

[0184] If the current binary element is the last binary element associated with the current sample (EB_i,j = EB_i,M), then the next step is a last-sample test step 48; otherwise, the next step is a next binary element selection step 474 (EB_i,j = EB_i,j+l). In this case, the steps described previously can be iterated for this new binary element.

[0185] In a particular embodiment, if the information regarding the encoding probability of the current binary element is close to an extremum, the entropy coding step of the next binary element depends on the encoded value of the current binary element. More precisely, the entropy coding step of the next binary element applies a first or second encoding mode to at least one subsequent binary element associated with the current sample, depending on the encoded value of the current binary element. Such a subsequent binary element is located after the current binary element according to the encoding order of the binary elements, but not necessarily in direct proximity to the current binary element. The encoded value of the current binary element can be used to encode the next binary element.For example, the probability of encoding the current binary element is considered to be close to a minimum if it is between 0 and 0.1 (in this case it is denoted Pmin), or close to a maximum if it is between 0.9 and 1 (in this case it is denoted Pmax).

[0186] Thus, the second coding method is implemented, for example: • if the probability of encoding a value equal to 0 for the current binary element is Pmax, and the encoded value of the current binary element is equal to 1, • if the probability of encoding the current binary element Pmin to a value equal to 0, and the encoded value of the current binary element is equal to 0, • if the probability of encoding a value equal to 1 for the current binary element is Pmax, and the encoded value of the current binary element is equal to 0, • if the probability of encoding a value equal to 1 of the current binary element is Pmin, and the encoded value of the current binary element is equal to 1.

[0187] For example, the first coding mode implements entropic coding of at least one subsequent binary element, according to which the information relating to the probability of coding said at least one subsequent binary element is determined in a classical way, for example as described in the HEVC standard.

[0188] For example, the second coding mode implements entropic coding of at least one subsequent binary element, taking into account information relating to a predetermined coding probability. Such a predetermined coding probability is, for example, between 0.4 and 0.6. For example, it is equal to 0.5. Optionally, a new M-ary / binary transformation of the current syntax element being encoded is implemented, and the second coding mode implements entropic coding of the new binary element(s).

[0189] Indeed, the possible encoding probabilities, for example 64 in the case of a CAB AC type entropy coder, are ranked. If these probabilities indicate the probability that the current binary element is 0, for example gtO=0, then the probabilities are typically sampled in the interval ]0.0, 1.0[. This is, for example, described in equation (8) of the aforementioned CAB AC reference. By construction, the probabilities are strictly less than 1 and strictly greater than 0. There is a highest probability among the 64 possible probabilities, denoted Pmax. In this particular embodiment, if the current binary element is encoded according to the probability Pmax (for example, gtO = 0 is very likely) and the current binary element has the value 1, then the second encoding mode is implemented for encoding subsequent binary elements.Thus, for example, all subsequent binary elements associated with the same current sample are coded with a predetermined probability, for example, 0.5. Alternatively, a new binarization can be implemented to code the value of the current element x-1 (or y-1 if the current element has been preprocessed). Indeed, in this example, the current binary element gtO = 0 is considered highly probable, while the current binary element gtO has a value of 1. This means that the absolute value of the current sample x (or y) is greater than 0 (i.e., at least equal to 1). Therefore, a new binarization can be applied to x-1 (or y-1). For example, x-1 (or y-1) is binarized using a . binarization of the type direct binary coding, of a unary coding, of an Exp-Golomb coding, etc. and all new binary elements produced are coded with a probability of 0.5.

[0190] Indeed, when the bin gtO = 0 is coded according to the probability Pmax, it means that a value of 0 is extremely probable, and that we are therefore in a region of the latent function with many nuisance samples. When a non-zero sample arrives, it is a crude transition, and the value of the sample is unpredictable. To avoid a burst of throughput (if the other binary elements of the current sample are coded as 1 when the probability of zero is very high), the rest of the current sample (for example, the rest of its amplitude) is coded with a reasonable coding (for example, a probability of 0.5).

[0191] Of course, the condition stated earlier ("if the binary element gtO is coded according to the probability Pmax but has the value 1") can also be stated in reverse depending on whether we use probabilities that the binary element is 0 or probabilities that the binary element is 1 ("if the binary element gtO is coded according to the probability Pmin but has the value 0").

[0192] If the current binary element is the last binary element associated with the current sample, we test whether the current sample is the last sample during step 48 (x_i = x_N).

[0193] During this step, one can notably test whether the current sample is the last sample of the current block (which means that one must move to the next block). If a first coding indicator Fx is used for the current block, one can also test whether the value of this first coding indicator Fx is equal to 1, which means that one has just coded the first sample of a block which contains only identical values.

[0194] If either of these tests is verified, the next step is a verification step 481 to determine if the current block is the last block (B_b = B_B). Otherwise, the next step is a selection step 482 to select the next sample from the current block. In this case, the steps described previously can be iterated for this new sample.

[0195] The verification step 481 tests whether the current block is the last block in the current latent. If so, the next step is a verification step 49 to check if the current latent is the last latent (L_l = L_l). Otherwise, the next step is a selection step 4412 for the next block in the current latent. In this case, the steps described previously can be iterated for this new block.

[0196] The verification step 49 tests whether the current latent is the last representative latent of the original signal. If so, the coding process is complete. Otherwise, the next step is a selection step 491 of the next latent. In this case, the steps described previously can be iterated for this new latent.

[0197] At the end of the coding process, the resulting binary stream B can be stored and / or transmitted to a decoder.

[0198] 5.3.2 Decoding

[0199] Fig. 6 illustrates an example of a decoder 6 that allows reconstruction, from the compressed binary stream B, of a decoded signal ID, corresponding to the original encoded-decoded image.

[0200] As indicated in relation to [Fig.3], the compressed binary stream B can be represented by coded syntax elements associated with the latents L_l, ..., L_l, ..., L_L.

[0201] According to [Fig.6], an entropic decoding module 61 is implemented to reconstruct the decoded values ​​of the syntax elements from the compressed binary stream.

[0202] The decoded values ​​of the syntax elements are then processed by a synthesis module 62, allowing the decoded values ​​of the samples forming the decoded signal to be reconstructed.

[0203] According to the example illustrated in [Fig.6], the synthesis module 62 is considered to implement a synthesizer 621.

[0204] In a first embodiment illustrated in [Fig. 6], the decoded values ​​of the syntax elements output from the entropy decoding module 61 are grouped in the latents L_l, ..., L_l, ..., L_L. The input latents of the synthesizer 621 therefore carry decoded syntax elements. From the values ​​of the previously decoded syntax elements, decoded values ​​of the signal samples can be constructed.

[0205] In a second embodiment, not illustrated, the decoded values ​​of the syntax elements output from the entropy decoding module 61 can be synthesized in the synthesizer to reconstruct the decoded values ​​of the signal samples. These decoded values ​​of the signal samples can be grouped into the latent values ​​L_l, ..., L_l, ..., L_L.

[0206] In a symmetrical manner to the syntaxization module 31 described in relation to [Fig.3], the synthesis module 62 can implement a neural network, a conventional system, such as the synthesis module of an HEVC or VVC decoder, a hybrid system between a conventional decoder and neural networks, an implicit representation decoder such as the Cool-Chic or NeRV decoder, etc.

[0207] Synthesis of the decoded values ​​of the syntax elements allows the decoded values ​​of the samples forming the decoded ID signal to be reconstructed.

[0208] An example of a decoding algorithm implemented by the entropic decoding module 61 is described below in relation to [Fig.7].

[0209] In an optional first step 71, high-level indicators can be decoded. This step can be implemented if such indicators are present in the compressed bitstream, for example in the header of the compressed stream (e.g., in the header of the encoded image). Such indicators carry information that pertains to the entire image if the original signal is an image. More generally, such indicators carry information that pertains to all or part of the original signal.

[0210] For example, the decoder decodes (direct or entropic decoding) the value of a block_size syntax element that indicates whether the encoder used block splitting and, conversely, whether the decoder should use block splitting. If the value 0 (for example) is decoded, this means that there is no block splitting. In this case, algorithmically, the image is treated as a single block.

[0211] If a non-zero value is decoded for the block_size syntax element, it means that there is block splitting. In particular, if the encoder has encoded the BS size of the blocks as the value of the block_size syntax element, the decoder can decode this value to obtain the block size for implementing block splitting. As an example, consider a block size BS=8, which means that each latent is split into blocks of 8x8 sample values.

[0212] Alternatively, other syntax elements relating to block size, such as block_size_h, block_size_w, can be decoded.

[0213] Furthermore, according to the embodiment illustrated in [Fig. 7], if block decoding is implemented, the first high-level indicator, flat_blocks, associated with a set of at least two blocks, can be decoded. As already indicated in relation to [Fig. 4], this first flat_blocks indicator allows the use of a first coding indicator, Fx, for each block in said set.

[0214] The decoder can thus activate the decoding functionality for an entire block of samples bearing identical values ​​by a single flag, by decoding a predetermined value of the first high-level flag, flat_blocks (for example, flat_blocks = 1). In the embodiment illustrated in [Fig. 7], this decoding functionality is activated. If this functionality is not activated, it is not possible to decode a block in this way, and it is necessary to decode all the samples in the block one by one, even if they are all identical, or to decode all the values ​​of the syntax elements describing these samples, even if they are identical.

[0215] Finally, according to the embodiment illustrated in [Fig. 7], if block decoding is implemented, the second high-level indicator zero_blocks, associated with a set of at least two blocks, can be decoded. As already indicated in relation with [Fig.4], this second zero_blocks indicator allows the use of a second Zb encoding indicator for each block of said set.

[0216] The decoder can thus activate the decoding functionality for an entire block of samples corrupted by a single flag, by decoding a predetermined value of the second high-level flag zero_blocks (for example, zero_blocks = 1). In the embodiment illustrated in [Fig. 7], this decoding functionality is activated. If this functionality is not activated, it is not possible to decode a block in this way, and it is necessary to decode all the samples in the block one by one, even if they are all corrupted, or to decode all the values ​​of the syntax elements describing these samples, even if they are all zero.

[0217] The next step is a selection step 72 of the first latent L_1 = L_1 carrying at least one block carrying at least one coded sample.

[0218] During this step, it is assumed that the latents are ordered and that there is a predetermined path among them. The first latent in this path order is selected as the current latent L_l.

[0219] The next step is a selection step 73 of the first block B_b = B_l.

[0220] During this step, it is assumed that the blocks are ordered in the latent current (for example, in lexicographical order) and that there is a predetermined path among them. The first block in this path order is selected as the current block B_b.

[0221] The next step is a decoding step (entropic or non-entropic) 74 of the value of the second coding indicator Zb. This step is implemented in particular if the functionality of decoding an entire block of samples damaged by a single indicator is activated (for example zero_blocks = 1).

[0222] We then test 741 the decoded value of the second coding indicator Zb.

[0223] If the decoded value of the second encoding indicator Zb is equal to a first value (for example, Zb=1), this means that the current block B_b before encoding contains only null values ​​(all samples in the current block or all representative syntax elements of the current block have a null value). In this case, the decoder reconstructs a block containing only null values. The next step is a selection step 742 of the next block B_b+1, as long as the last block B_B has not been reached.

[0224] If the decoded value of the second coding indicator Zb is equal to a second value (for example, Zb=0), this means that the current block B_b before coding does not contain only zero values ​​(at least one sample of the current block or at least one representative syntax element of the current block has a non-zero value). In this case, the next step is a decoding step (entropic or non-entropic) of the value of the first coding indicator Fx.

[0225] This step is implemented in particular if the functionality for decoding an entire block of samples with identical values ​​using a single flag is enabled (e.g., flat_blocks = 1). If the decoded value of the first coding flag Fx is equal to a first value (e.g., Fx = 0), this means that the current block B_b before coding does not contain only identical values ​​(at least two samples in the current block or at least two representative syntax elements in the current block have different values). Conversely, if the decoded value of the first coding flag Fx is equal to a second value (e.g., Fx = 1), this means that the current block B_b before coding contains only identical values ​​(all samples in the current block or all representative syntax elements in the current block have the same value).

[0226] The next step is a selection step 76 of the first sample y_i = y_l of the current block B_b, or of a first syntax element ES_i = ES_1 representative of at least one sample of the current block B_b.

[0227] As with the encoder, the case where the decoder works on samples from the current block is described below. It suffices to replace "sample" with "syntax element" in the following if the decoder works on syntax elements representative of at least one sample from the current block.

[0228] In this step, it is assumed that the coded samples are ordered in the current block B_b (for example, in lexicographical order) and that there is a predetermined path through them. The first sample in this path order is selected as the current sample.

[0229] The next step is the step of obtaining 761 information Pe_d relating to the current sample, from the decoded value of at least one previously decoded coded sample. For the first sample, this information Pe_d can be initialized to a predefined value.

[0230] Such Pe_d information relating to the current sample can be representative of the sample probability. For example, the Pe_d information relating to the current sample belongs to the group comprising: • an average of the decoded values ​​from at least two previously decoded samples, • an expected value of the decoded values ​​from at least two previously decoded samples, • a variance in the decoded values ​​of at least two previously decoded samples, • a probability of at least one possible coded value for the current sample, • a combination of at least two of the above elements.

[0231] This Pe_d information can be one-dimensional, multi-dimensional, floating-point, or integer. The Pe_d information relating to the current sample on the decoding side is normally identical or correlated with the information relating to the current sample on the encoding side, since the entropic encoding / decoding steps are generally lossless.

[0232] For example, as illustrated in [Fig.5] and already described in relation to the encoder, the information Pe_d relating to the current sample of value x (or y if there has been preprocessing on the encoder side) located in the latent L_1 at coordinates (i,j) can be obtained from the decoded value of at least one previously decoded sample {a, b, c, d, e, f], located to the left and above the current sample of value x.

[0233] In a particular embodiment, the information Pe_d relating to the current sample can be obtained at the output of a neural network.

[0234] Thus, returning to [Fig. 6], a neural network 63, for example an ARM network (e.g., a fully connected or convolutional type), can provide as output information Pe_d relating to the current sample, taking as input the causal neighborhood of the current sample (e.g., within the same block or latent), consisting, for example, of the decoded samples with values ​​a, b, c, ..., f. The information Pe_d relating to the current sample obtained as output from the neural network 63 comprises, for example, two floating-point variables Mu and Sigma. Alternatively, the ARM network can produce information Pe_d relating to the current sample corresponding to the complete probability of the current sample, that is, the probability of each value it can take.

[0235] In particular, the neural network can be reconstructed at the decoder from at least one transmitted parameter and / or a transmitted topology in the coded signal or in a separate signal.

[0236] In another embodiment not shown, the information Pe_d relating to the current coded sample is not obtained from the output of a neural network. For example, the information Pe_d relating to the current sample is obtained from a nonlinear function, or a predetermined algorithm, or an association table, etc.

[0237] In general, the decoder implements, to determine the information Pe_d relating to the current sample, a processing similar to that implemented by the encoder to determine the information Pe_c relating to the current sample.

[0238] For the sake of example, the information Pe_d relating to the current sample is considered below to be a two-dimensional floating-point value, which includes the variables Mu and Sigma, respectively representing a prediction of the decoded value of the current sample (obtained, for example, from an average of the decoded values ​​of at least two previously decoded samples) and an error of predicting the decoded value of the current sample (obtained, for example, from the variance or dispersion of the decoded values ​​of at least two previously decoded samples). Hereafter, Mu and Sigma are said to represent, respectively, the mean and variance of the current sample.

[0239] The next step is a selection step 77 of the first binary element (associated with the current sample) as current binary element EB_i,j = EB_i,l.

[0240] The next step is a step of obtaining 771 information Pb_d relating to the probability of decoding the current binary element, from the information Pe_d relating to the current sample.

[0241] We seek here to determine the probability of decoding the current binary element EB_i,j with a considered entropic decoding method.

[0242] For example, if entropic decoding is CABAC-type arithmetic decoding, there are 64 possible probabilities for decoding a binary element, denoted by an index, as described in the document "Context-Based Adaptive Binary Arithmetic Coding in the H.264 / AVC Video Compression Standard" cited in relation to the prior art.

[0243] The information Pb_d relating to the probability of decoding the current binary element can be: a probability, an index in a predetermined probability table, or any other information representative of the probability with which the current binary element will be entropically decoded.

[0244] According to a particular embodiment, in order to determine the information Pb_d relating to the probability of decoding the current binary element, both the information Pe_d relating to the current sample to which the current binary element is associated (possibly multidimensional) and the current binary element EB_i,j being decoded are used.

[0245] An example of determining the information Pb_d relating to the probability of decoding the current binary element from the information Pe_d relating to the current sample is presented below.

[0246] According to this example, the Mu-Round(Mu) value is quantized between -0.5 and +0.5, for example over 17 possible values, denoted muidx {0, 1,.., 16} distributed uniformly between -0.5 and +0.5. Of course, other quantization steps are conceivable, for example a uniform quantization over 64 values, or a non-uniform quantization.

[0247] Similarly, the sigma value is quantified between -5 and +4, for example over 50 possible values ​​sigidx {0,.., 49} distributed uniformly between -5 and +4. Of course, other quantization steps are conceivable, for example a uniform quantization over 100 values, or a non-uniform quantization.

[0248] A three-dimensional association table probaT, indexed by muidx, sigidx and binidx(EB_i,j), gives the probability of decoding the current binary element EB_i,j. There is therefore information Pb_d relating to the probability of decoding the current binary element associated in a predetermined way with each triplet (muidx, sigidx, binidx(EB_i,j)):

[0249] Pb_d = probaT[muidx] [sigidx] [binidx(EB_i,j)]

[0250] As already mentioned, this association table can be built before decoding. It can be transmitted or accessed by the encoder and the decoder.

[0251] A simple reading of the three-dimensional table taking into account the triplet (muidx, sigidx, binidx(EB_i,j)) gives the information Pb_d relating to the probability of decoding the current binary element.

[0252] The information Pb_d relating to the probability of decoding the current binary element is thus obtained from a predetermined table associating a probability value with the current binary element as a function of: • of the current binary element, i.e. which current binary element is being decoded (binidx(EB_i,j)), • a prediction of the decoded value of the current sample (muidx), and • a prediction error in the decoded value of the current sample (sigidx).

[0253] In another embodiment, the information Pb_d relating to the probability of decoding the current binary element can be obtained differently.

[0254] For example, the information Pb_d relating to the probability of decoding the current binary element is obtained by applying a predetermined function to the information Pe_d relating to the current sample, or to a quantized version of the information Pe_d relating to the current sample.

[0255] Such a function f is for example a linear function or a piecewise linear function, such that f(Pe_d, binidx(EB_i,j))=Pb_d. For example, if Pe_d depends on the two variables Mu and Sigma, we have: f(Mu,Sigma, binidx(EB_i,j))=Pb_d.

[0256] Once the information Pb_d relating to the probability of decoding the current binary element is obtained, an entropic decoding step 772 of the value of the current binary element, taking into account said information Pb_d, is implemented.

[0257] During this step 772, the value of the current binary element EB_i,j is entropically decoded according to the information Pb_d, for example by a CAB AC encoding, or by any other binary entropic decoding technique.

[0258] The next step is a 773 last binary element test step.

[0259] If the current binary element is the last binary element associated with the current sample (EB_i,j = EB_i,M), then the next step is a debinarization step (binary / M-ary transformation) 78. In a particular embodiment, the step The value of the last binary element in test 773 can depend on the values ​​of the previously decoded binary elements, according to the binarization chosen during encoding. If we consider the proposed binarization in relation to [Fig. 4], delivering the binary elements gtO, sign, gtl, gt2, gt3, egO, egl, ..., the decoder can consider that it has reached the last binary element if the decoded value of the binary element gtX is 0, or after the decoding of the last binary element egX if the decoded value of the binary element gt3 is 1.

[0260] If the current binary element is not the last binary element associated with the current sample, the next step is a 774 step of selecting the next binary element (EB_i,j = EB_i,j + l). In this case, the steps described previously can be iterated for this new binary element.

[0261] In a particular embodiment, if the information relating to the decoding probability of the current binary element is close to an extremum, the entropic decoding step 772 of the next binary element depends on the decoded value of the current binary element. More precisely, the entropic decoding step of the next binary element applies a first decoding mode or a second decoding mode to at least one subsequent binary element associated with the current sample, depending on the decoded value of the current binary element. For example, the decoding probability of the current binary element is considered to be close to a minimum if it is between 0 and 0.1 (in which case it is denoted Pmin), or close to a maximum if it is between 0.9 and 1 (in which case it is denoted Pmax). Thus, the second coding mode is implemented, for example: • if the probability of decoding a value equal to 0 of the current binary element is Pmax, and the decoded value of the current binary element is equal to 1, • if the probability of decoding a value equal to 0 of the current binary element Pmin, and the decoded value of the current binary element is equal to 0, • if the probability of decoding a value equal to 1 of the current binary element is Pmax, and the decoded value of the current binary element is equal to 0, • if the probability of decoding a value equal to 1 of the current binary element is Pmin, and the decoded value of the current binary element is equal to 1.

[0262] For example, the first decoding mode implements an entropic decoding of at least one subsequent binary element, taking into account information Pb_d relating to the probability of decoding said at least one subsequent binary element.

[0263] For example, the second decoding mode implements entropic decoding of at least one subsequent binary element, taking into account a predetermined decoding probability. Such a predetermined encoding probability is, for example, between 0.4 and 0.6. For example, it is equal to 0.5. Optionally, the second decoding mode is implemented when the encoder has implemented a modification, for example a new binarization, of the current sample being decoded.

[0264] Indeed, the possible decoding probabilities, for example 64 in the case of a CAB AC type entropic decoder, are ranked. If these probabilities indicate the probability that the current binary element is 0, for example gtO = 0, then the probabilities are typically sampled in the interval ]0.0, 1.0[. If the current binary element is decoded according to the probability Pmax (for example gtO = 0 is very likely) and the decoded value of the current binary element is equal to 1, then the second encoding mode is implemented for decoding subsequent binary elements. Thus, for example, all subsequent binary elements associated with the same current sample are decoded with a predetermined probability, for example 0.5. Alternatively, if a new binarization has been implemented on the encoder side as described above, all the resulting binary elements are decoded with a probability of 0.5, for example.

[0265] Indeed, when the bin gtO is decoded according to the probability Pmax, it means that a value of 0 is extremely probable, and that we are therefore in a region of the latent space with many nuisance samples. When a non-zero sample arrives, it is a crude transition, and the value of the sample is unpredictable. To avoid a burst of throughput (if the other binary elements of the current sample are coded as 1 when the probability of zero is very high), the current sample (for example, the remainder of its amplitude) is decoded with a reasonable decoding (for example, a probability of 0.5).

[0266] Of course, the condition stated earlier ("if the binary element gtO is decoded according to the probability Pmax but has the value 1") can also be stated in reverse depending on whether we use probabilities that the binary element is 0 or probabilities that the binary element is 1 ("if the binary element gtO is decoded according to the probability Pmin but has the value 0").

[0267] If the current binary element is the last binary element associated with the current sample (EB_i,j = EB_i,M), the next debinarization step (binary / M-ary transformation) 78 allows the current sample (pre-processed or not) to be reconstructed.

[0268] Advantageously, the debinarization of the current sample implements an inverse operation of the binarization implemented in the encoding. We consider by For example, the proposed binarization in relation to [Fig. 4], applied to a pre-processed current sample, yielding the binary elements gt0, sign, gtl, gt2, gt3, eg0, egl, ...,

[0269] During step 78, the value of the pre-processed current sample y can be decoded from as follows: • If the decoded value of the first binary element gtO is a first value (indicating that the value of the current pre-processed sample is equal to 0 as explained in relation to step 463), for example gtO = 0, then the decoded value of the current pre-processed sample is equal to 0. In this case, the decoder can consider that only the value of gtO has been encoded in the compressed stream B, and it can consider the binary element gtO to be the last binary element to be processed. • if the decoded absolute value of the first binary element gtO is a second value (indicating that the absolute value of the current pre-processed sample is greater than 0 as explained in relation to step 463), for example gtO = 1, then the decoded value of the second binary element (sign) indicates the sign of the current pre-processed sample, • If the decoded absolute value of the third binary element gtl is a first value (indicating that the absolute value of the current pre-processed sample is equal to 1 as explained in relation to step 463), for example gtl = 0, then the decoded absolute value of the current pre-processed sample is equal to 1. In this case, the decoder can consider that only the values ​​of gt0, sign and gtl have been encoded in the compressed stream B, and it can consider the binary element gtl to be the last binary element to be processed. • If the decoded absolute value of the fourth binary element gt2 is a first value (indicating that the absolute value of the current pre-processed sample is equal to 2 as explained in relation to step 463), for example gt2 = 0, then the decoded absolute value of the current pre-processed sample is equal to 2.In this case, the decoder can consider that only the values ​​of gtO, sign, gtl and gt2 have been encoded in the compressed stream B, and it can consider that the binary element gt2 is the last binary element to be processed, . • If the decoded absolute value of the fifth binary element gt3 is a first value (indicating that the absolute value of the current pre-processed sample is equal to 3 as explained in relation to step 463), for example gt3 = 0, then the decoded absolute value of the current pre-processed sample is equal to 3. In this case, the decoder can consider that only the values ​​of gt0, sign, gtl, gt2, and gt3 have been encoded in the compressed stream B. and it can consider the binary element gt3 to be the last binary element to be processed, • if the decoded absolute value of the fifth binary element gt3 is at a second value (indicating that the absolute value of the current pre-processed sample is greater than 3 as explained in relation to step 463), for example gt3 = 1, then the decoded y value of the current pre-processed sample can be reconstructed using an Exp-Golomb type binary / M-ary transformation technique from the set of binary elements eg0, egl, eg2,... , without size limitation.

[0270] Optionally, the decoder seeks to reconstruct y-4, if this is the value that the encoder has chosen to encode, and the decoding of gt3 indicates that the amplitude of the current sample is less than 4 in absolute value.

[0271] According to other examples, the debinarization step 78 of the current sample (possibly pre-processed) implements other debinarization techniques, from direct binary coding, unary coding, Exp-Golomb coding, etc.

[0272] The next step is a post-processing step 781 of the pre-processed current sample. Such a step is optional, and may in particular be implemented if a pre-processing step has been implemented on the coding side.

[0273] During this step, the decoder adds, for example, to the decoded value of the current sample, an average of the decoded values ​​of at least two previously decoded samples.

[0274] For example, the current pre-treated sample is assigned the value x, by adding the value Mu to y:

[0275] x=y+Mu.

[0276] The decoder then tests whether the current sample is the last sample during a step 79 (x_i = x_N).

[0277] During this step, one can notably test whether the current sample is the last sample of the current block B_b (which means that one must move on to the next block B_b+1). If a first encoding indicator Fx is used for the current block, one can also test whether the decoded value of this first encoding indicator Fx is equal to 1, which means that the decoder has just decoded the value of the first sample of a block that contains only identical values.

[0278] If either of these tests is verified, the next step is a 791 check if the current block is the last block (B_b = B_B).

[0279] If none of these tests are verified, the next step is a 792 selection step of the next sample y_i = y_i+1 in the current block. In this case, the steps described previously can be iterated for this new sample.

[0280] The verification step 791 tests whether the current block is the last block in the current latent. If so, the next step is a verification step 793 to check if the current latent is the last latent (L_l = L_L). Otherwise, the next step is the selection step 742 of the next block (B_b = B_b+1) in the current latent L_l. In this case, the steps described previously can be iterated for this new block.

[0281] The verification step 793 tests whether the current latent is the last representative latent of the encoded signal. If so, the decoding process is complete. Otherwise, the next step is a selection step 794 for the next latent. In this case, the steps described previously can be iterated for this new latent.

[0282] 5.4 Variants

[0283] An example of an implementation of the invention for encoding and decoding a signal has been described above. However, this is an illustrative example, and some steps are optional. In particular, the example described relies on a representation of the signal in the form of latents, which can be decomposed into blocks. The use of latents or block decomposition is optional.

[0284] Similarly, the implementation example described above relies on the processing of signal samples. Of course, the same steps, in particular the entropy encoding / decoding steps, can be implemented on syntax elements representative of the signal.

[0285] Furthermore, in the implementation example described above, the encoding probability information for the current binary element is obtained from the current binary element and at least one piece of information relating to the current syntax element. However, this is merely an illustrative example, and the encoding probability information for the current binary element can be obtained in any other way, for example, as in prior art solutions, particularly in the HEVC standard.

[0286] 5.5 Encoding and decoding devices

[0287] Finally, in relation to Figures 8 and 9, simplified structures of an encoder and a decoder are presented according to at least one embodiment of the invention.

[0288] As illustrated in [Fig.8], an encoder comprises at least one memory 81, at least one processing unit 82, equipped for example with a programmable computing machine or a dedicated computing machine, for example a processor P, and controlled by the computer program 83, implementing the steps of the coding process according to at least one embodiment of the invention.

[0289] At initialization, the code instructions of program 83 are for example loaded into a RAM memory before being executed by the processor of the processing unit 82.

[0290] The processor of the processing unit 82 implements steps of the coding process described above on an original signal, according to the instructions of the computer program 83, to generate a coded signal.

[0291] As illustrated in [Fig.9], a decoder comprises at least one memory 91, at least one processing unit 92, equipped for example with a programmable computing machine or a dedicated computing machine, for example a processor P, and controlled by the computer program 93, implementing the steps of the decoding process according to at least one embodiment of the invention.

[0292] At initialization, the code instructions of program 93 are for example loaded into a RAM memory before being executed by the processor of the processing unit 92.

[0293] The processor of the processing unit 92 implements steps of the decoding process described above on a coded signal, according to the instructions of the computer program 93, to reconstruct an original signal.

Claims

Demands

1. A method for encoding an input signal implementing the following steps: • obtaining (11) syntax elements representative of said input signal, • encoding (12) the value of at least one of said syntax elements, called the current syntax element, from coded values ​​of at least two binary elements associated with said current syntax element, implementing the following steps: • M-ary / binary transformation (121) of said current syntax element, delivering said at least two binary elements, • for at least one of said binary elements associated with said current syntax element, called the current binary element: • obtaining (1221) information relating to the encoding probability of said current binary element, • entropic encoding (1222) of the value of said current binary element taking into account said information relating to the encoding probability,• if said information relating to the encoding probability of said current binary element is close to an extremum: application (1232) of a first entropic coding mode or a second entropic coding mode to at least one subsequent binary element associated with said current syntax element, according to the encoded value of said current binary element.

2. A method for decoding a coded signal represented by coded syntax elements, implementing the following steps: • Decoding (21) the value of at least one of said syntax elements, called the current syntax element, from decoded values ​​of at least two binary elements associated with said current syntax element, implementing the following steps: • For at least one of said binary elements associated with said current syntax element, called the current binary element: • Obtaining (2111) information relating to the probability of decoding said current binary element, • Entropic decoding (2112) of the value of said current binary element taking into account said information relating to the probability of decoding, • If said information relating to the probability of decoding said current binary element is close to an extremum: applying (2122) a first entropic decoding mode or a second entropic decoding mode to at least one subsequent binary element associated with said current syntax element,based on the decoded value of said current binary element, • binary / M-ary transformation (213) of the decoded values ​​of said binary elements associated with said current syntax element.

3. Decoding method according to claim 2, characterized in that said first decoding mode and second decoding mode implement a different technique for determining information relating to the probability of decoding said at least one subsequent binary element.

4. Decoding method according to any one of claims 2 and 3, characterized in that said second decoding method implements an entropic decoding of said at least one subsequent binary element, taking into account a predetermined decoding probability.

5. Decoding method according to claim 4, characterized in that said second decoding mode is implemented if a new M-ary / binary transformation of said current syntax element has been implemented during the encoding of said current syntax element.

6. Decoding method according to any one of claims 4 and 5, characterized in that said predetermined decoding probability is between 0.4 and 0.

6.

7. Decoding method according to any one of claims 4 to 6, characterized in that said predetermined decoding probability is equal to 0.

5.

8. Decoding method according to any one of claims 4 to 7, characterized in that it comprises a step of receiving at least one piece of information relating to said predetermined decoding probability.

9. Decoding method according to any one of claims 2 to 8, characterized in that said information relating to the probability of decoding is close to an extremum if the probability of decoding is between 0 and 0.1 or between 0.9 and 1.

10. A decoding method according to any one of claims 2 to 9, characterized in that it comprises a step of receiving at least one piece of information enabling verification of whether said decoding probability is close to an extremum.

11. A decoding method according to any one of claims 2 to 10, characterized in that said syntax elements are grouped in at least one latent and in that said method is implemented latent by latent.

12. A decoding method according to any one of claims 2 to 11, characterized in that said syntax elements of a latent are grouped into at least one block and said method is implemented block by block for a latent.

13. An input signal encoding device comprising at least one processing unit configured to: • obtain syntax elements representative of said input signal, • encode the value of at least one of said syntax elements, called the current syntax element, from encoded values of at least two binary elements associated with said current syntax element, comprising: • implement an M-ary / binary transformation of said current syntax element, delivering said at least two binary elements, • for at least one of said binary elements associated with said current syntax element, called current binary element: • obtain information relating to the probability of encoding said current binary element, • implement entropic coding of the value of said current binary element, taking into account said information relating to the coding probability, • if said information relating to the probability of encoding said current binary element is close to an extremum: apply a first entropic coding mode or a second entropic coding mode to at least one subsequent binary element associated with said current syntax element, according to the coded value of said current binary element.

14. A device for decoding a coded signal represented by coded syntax elements, comprising at least one processing unit configured to: decode the value of at least one of said syntax elements, called the current syntax element, from decoded values ​​of at least two binary elements associated with said current syntax element, comprising: • for at least one of said binary elements associated with said current syntax element, called current binary element: to obtain information relating to the probability of decoding said current binary element, implement entropic decoding of the value of said current binary element taking into account said information relating to the decoding probability, if said information relating to the decoding probability of said current binary element is close to an extremum: apply a first entropic decoding mode or a second entropic decoding mode to at least one subsequent binary element associated with said current syntax element, depending on the decoded value of said binary element

15. fluent, • implement a binary / M-ary transformation of the decoded values ​​of said binary elements associated with said current syntax element. Computer program comprising instructions for carrying out a method according to any one of claims 1 to 12 when this program is executed by a processor.

Citation Information

Patent Citations

  • Video encoding device, video decoding device, video encoding method, video decoding method, and video encoding or decoding program

    EP2197215A1

  • Methods and apparatus for explicit updates for symbol probabilities of an entropy encoder or decoder

    EP2467941B1