Coding and decoding methods, corresponding devices and computer programs.

By implementing block-level syntax elements to identify and encode entire blocks of identical samples or syntax elements with a single flag, the method addresses inefficiencies in existing digital signal compression, enhancing compression efficiency and reducing redundancy.

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

Patent Information

Application Number
FR2024006403
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 digital signal compression methods face inefficiencies when dealing with large numbers of signal samples having the same value, leading to increased overhead and reduced compression performance due to suboptimal entropy coding techniques.

Method used

A novel encoding method introduces block-level syntax elements to identify if all samples or syntax elements within a block have the same value, using distinct coding indicators to encode entire blocks of identical values with a single flag, thereby improving compression efficiency.

Benefits of technology

The method enhances compression performance by efficiently encoding groups of identical samples or syntax elements, reducing redundancy and improving throughput in digital signal encoding and decoding processes.

✦ 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 a signal comprising at least one block of samples to be encoded, implementing the following steps, for encoding (10) at least one of said blocks, represented by a set of syntax elements, called current block: if at least two syntax elements of said set have different values: assignment (111) of a first value to a first coding indicator associated with said current block, encoding (112) of the value of said at least two syntax elements of said set according to a coding technique, otherwise: assignment (113) of a second value, distinct from said first value, to said first coding indicator, encoding (114) of the value of a first syntax element of said set according to said coding technique, encoding (12) of the value of said first coding indicator associated with said current block.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 by proposing a new syntax.

[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] If the entropic 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 very high probability of encoding a zero value for the current syntax element.

[0014] However, for structural reasons, an entropic encoder limits the values ​​of its extreme probabilities to [0 + 8, 1 - e] where e is small (for example, 8 = 0.01). When a value is almost certain (probability close to 1), this introduces an overhead in terms of throughput.

[0015] There is therefore a need for a solution to improve the compression of a signal, particularly when a large number of samples of the signal have the same value.

[0016] 3. Description of the invention

[0017] The invention proposes a solution in the form of a method for encoding a signal comprising at least one block of samples to be encoded, implementing the following steps for encoding at least one of said blocks, represented by a set of syntax elements, called the current block: • if at least two syntax elements of said set have different values: • Assigning a first value to a first coding indicator associated with the current block (for example Fx=0), • encoding the value of said at least two syntax elements of said set according to an coding technique, • Otherwise : • assignment of a second value, distinct from said first value, to said first coding indicator (for example Fx=l), • encoding the value of the first syntax element of said set according to said encoding technique, • encoding of the value of said first coding indicator (Fx) associated with said current block.

[0018] The invention thus proposes a new solution for encoding at least one block of samples, based on a new block-level syntax element, called the first encoding indicator, which signals whether all the samples in the block, or all the syntax elements representative of these samples, carry the same value or at least two different values.

[0019] In particular, if at least two samples of the block, or at least two corresponding syntax elements, have distinct values, the encoder encodes the corresponding samples or syntax elements. For example, the value of all samples in the block, or of all corresponding syntax elements, is encoded. Conversely, if all samples in the block, or corresponding syntax elements, have the same value, the encoder encodes a single value from these distinct samples or syntax elements. In order for the decoder to know whether a single value or multiple values ​​have been encoded for this block, the value of the first encoding flag associated with the block is encoded in the compressed stream.

[0020] A coding method according to the invention thus offers a solution contributing to improving signal compression by encoding groups of samples or syntax elements having the same value with a specific method and by introducing new syntax elements.

[0021] In a particular embodiment, the method also implements the following steps for encoding said current block: • if all the syntax elements of said set have the same zero value: • Assigning a first value to a second coding indicator associated with the current block (for example Zb=l), • if at least one syntax element of said set has a non-zero value: • assignment of a second value, distinct from said first value, to said second coding indicator (for example Zb=0), • encoding of the value of said second coding indicator (Zb) associated with said current block.

[0022] A new block-level syntax element, called a second coding indicator, can thus be introduced, allowing signaling whether all samples in the block (or all syntax elements representing these samples) have a null value, or whether at least one sample in the block (or one syntax element) has a non-zero value.

[0023] In order for the decoder to know whether a single null value or at least one non-zero value has been encoded for this block, the value of the second encoding indicator associated with the block is also encoded in the compressed stream.

[0024] In a particular embodiment, the coding method also implements the coding of the value of a first high-level indicator (flat_blocks) associated to a set of at least two blocks indicating the use of said first coding indicator for each block of said set.

[0025] Information relating to the coding of at least two blocks can thus be written into the compressed stream.

[0026] In particular, such a first high-level indicator enables the functionality of encoding an entire block of identical values ​​with a single indicator. If this mode is not active, the encoder encodes all the samples in the block, or all the corresponding syntax elements, one by one, even if they are identical.

[0027] In a particular embodiment, the coding method also implements the coding of the value of a second high-level indicator (zero_blocks) associated with a set of at least two blocks indicating the use of said second coding indicator for each block of said set.

[0028] In particular, such a second high-level indicator enables the functionality of encoding an entire block of null values ​​with a single indicator. If this mode is not active, the encoder encodes all the samples in the block, or all the corresponding syntax elements, one by one, even if they are corrupted.

[0029] In a particular embodiment, the syntax elements representing at least one block of samples of said signal are obtained from a neural network, for example an ARM network (for example of the fully connected type or of the convolutional neural network type or a combination of the two).

[0030] This approach allows for high compression performance. Furthermore, neural networks typically produce latent layers to be coded, these latent layers being organized into two-dimensional arrays well-suited to block division. Moreover, during neural network training, it is possible to promote the production of blocks in which all samples have the same value, thus allowing for efficient coding according to a particular embodiment of the invention.

[0031] In a particular embodiment, the coding process includes the transmission of at least one parameter and / or a topology of said neural network to a decoder.

[0032] For example, this information is transmitted in the coded signal. Alternatively, this information is transmitted in a separate signal. In this way, the decoder has the necessary information to configure a neural network similar to the one used by the encoder.

[0033] In a particular embodiment, the syntax elements representing at least one block of samples are grouped into at least one latent, divided into blocks of syntax elements each corresponding to a block of samples, and said process is implemented latent by latent and block by block for a latent.

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

[0035] 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.

[0036] The invention also relates to a method for decoding a signal comprising at least one block of samples to be decoded, implementing the following steps for decoding at least one of said blocks, represented by a set of syntax elements, called the current block: • decoding the value of a first coding indicator (Fx) associated with the current block, • if the decoded value of said first coding indicator is equal to a first value (for example Fx=0): • decoding the value of at least two syntax elements of said set according to a decoding technique, • if the decoded value of said first coding indicator is equal to a second value (for example Fx=l), distinct from said first value: • decoding the value of the first syntax element of said set according to said decoding technique, • Reconstruction of the decoded value of at least a second syntax element of said set of syntax elements by repeating the decoded value of said first syntax element.

[0037] 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 features and advantages of the decoding method and the decoder are the same as those of the encoding method and the encoder described previously.

[0038] As with the encoding, in a particular embodiment, the decoding process also implements the following steps for decoding said current block: • decoding the value of a second coding indicator (Zb) associated with the current block, • if the decoded value of said second coding indicator is equal to a first value (for example Zb=l): • Reconstructing the decoded value of all syntax elements within said set of syntax elements with a null value, • if the decoded value of said second coding indicator is equal to a second value (for example Zb=0), distinct from said first value: • implementation of said step of decoding the value of said first coding indicator.

[0039] In a particular embodiment, the decoding process implements the decoding of the value of a first high-level indicator (flat_blocks) associated with a set of at least two blocks indicating the use of said first coding indicator for each block of said set.

[0040] In a particular embodiment, the decoding process implements the decoding of the value of a second high-level indicator (zero_blocks) associated with a set of at least two blocks indicating the use of said second coding indicator for each block of said set.

[0041] In a particular embodiment, the syntax elements representing at least one block of samples of said signal are obtained from a neural network, for example an ARM network (for example of the fully connected type or of the convolutional neural network type or a combination of the two).

[0042] In a particular embodiment, said decoding method comprises constructing said neural network from at least one parameter transmitted and / or a topology transmitted in said encoded signal. Alternatively, said at least one parameter and / or topology are transmitted in a signal separate from the encoded signal. In this way, the decoder has the information necessary to parameterize a neural network similar to that used by the encoder.

[0043] In a particular embodiment, the syntax elements representing at least one sample block are grouped into at least one latent, divided into blocks of syntax elements each corresponding to a sample block, and said method is implemented latent by latent and block by block for a latent.

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

[0045] 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 characteristics relating to the decoding process according to The invention, which can be combined or used individually. Thus, the characteristics and advantages of the decoder are the same as those of the method described previously. Therefore, they are not detailed further.

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

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

[0048] 4. List of figures

[0049] 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.

[0050] 5. Description of an embodiment

[0051] 5.1 Definitions

[0052] 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.

[0053] 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). Generally, a sample is represented by a vector of one or more components, or data.

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

[0055] 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).

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

[0057] 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.

[0058] The term "neural network" means 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.

[0059] By "neural network parameter" is meant 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.)

[0060] 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 current syntax element (or sample). This information relating to a current syntax element (or sample) may be directly representative of the probability of the syntax element (or sample), for example, it may be its probability, or its expected value, or its dispersion, or a composition of these values, or it may be related by a more general relationship.

[0061] 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.

[0062] 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.

[0063] 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.

[0064] 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.

[0065] 5.2 General Principle

[0066] The general principle of the invention is based on a specific encoding of sample blocks having the same value, and the signaling of this specific encoding using at least one new syntax element associated with a sample block. The aim is thus to improve the performance in terms of compression of an encoder-decoder pair, or in terms of decompression of a decoder.

[0067] It is noted that the proposed solution applies to any coding technique, and not necessarily to entropic coding.

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

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

[0070] The coding method according to one embodiment implements at least one coding step 10 of at least one block of samples to be coded of the input signal.

[0071] The steps implemented for the coding of a current block B_b are described below.

[0072] The samples x_i of the current block B_b are traversed during a first step IL

[0073] If at least two samples from the current block B_b have different values, the coding process implements an assignment step 111 of a first value to a first coding indicator associated with said current block, for example Fx=0. In this case, the values ​​of the different samples are encoded during an coding step 112, using a coding technique. For example, it is possible to encode the value of each sample with a predetermined Huffman code, adapted to the statistics of the samples. Alternatively, a unary code can be used to describe the amplitude of each sample, and a bit to encode the sign of each sample. Alternatively, it is possible to perform an Exp-Golomb type binarization of the amplitude of each sample (as described in the HEVC coding standard), and to encode the resulting binary elements using CAB AC type arithmetic coding (as described in HEVC).The sign itself can be coded by a bit.

[0074] Otherwise, if all the samples in the current block B_b have the same value, the coding process implements an assignment step 113 of a second value, distinct from the first value, to the first coding indicator associated with the current block, for example Fx=l. In this case, the value of a single sample, for example the first sample, is coded during a coding step 114, using the same coding technique.

[0075] In a subsequent step 12, the value of the first coding indicator Fx associated with the current block B_b can be coded.

[0076] These steps can be iterated for coding the other sample blocks.

[0077] Of course, such a current block can be represented by a set of syntax elements, for example obtained as output from a syntaxization step.

[0078] In this case, the ES_i syntax elements of the set of syntax elements associated with the current block can be traversed during the first step 11.

[0079] If at least two ES_i syntax elements of the set have a different value, the coding process implements step 111 of assigning a first value to a first coding indicator associated with the current block, for example Fx=0. In this case, the value of the different syntax elements is coded during a coding step 112, using a coding technique.

[0080] Otherwise, if all the ES_i syntax elements in the set have the same value, the encoding process implements step 113 of assigning a second value, distinct from the first value, to the first coding indicator associated with the current block, for example Fx=l. In this case, the value of a single syntax element, for example the first syntax element, is coded during a coding step 114, using the coding technique under consideration.

[0081] At the end of these different steps, a coded signal S_c is obtained, intended to be transmitted and / or stored.

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

[0083] Such a decoding process takes as input a coded signal S_c.

[0084] The decoding process according to one embodiment implements at least one decoding step 20 of at least one block of samples to be decoded from the coded signal S_c.

[0085] The steps implemented for decoding a current block B_b are described below.

[0086] The value of a first coding indicator (Fx) associated with the current block is decoded during a first stage 21.

[0087] If the decoded value of the first coding indicator is equal to a first value, for example Fx=0, this means that at least two samples of the current block B_b have different values. In this case, the decoding process implements a decoding 211 of the values ​​of the different samples of the current block according to a decoding technique.

[0088] If the decoded value of the first coding indicator is equal to a second value, for example Fx=l, this means that all the samples in the current block B_b have the same value. In this case, the decoding process implements a decoding 211 of the value of a single sample from the current block, for example the first sample, according to the decoding technique considered. The decoded value of at least a second sample from the current block is reconstructed in a step 213, for example by repeating the decoded value of the first sample.

[0089] These steps can be iterated for decoding other coded sample blocks.

[0090] The sample blocks can thus be decoded to reconstruct the decoded signal S_d.

[0091] Of course, such a current block can be represented by a set of syntax elements.

[0092] In this case, if the decoded value of the first encoding indicator is equal to a first value, for example Fx=0, this means that at least two syntax elements representing the current block B_b have different values. In this case, the decoding process implements a decoding of the values ​​of the different syntax elements according to a decoding technique.

[0093] If the decoded value of the first encoding indicator is equal to a second value, for example Fx=l, this means that all syntax elements representing the current block B_b have the same value. In this case, the decoding process implements a decoding 211 of the value of a single syntax element, for example the first syntax element, according to the decoding technique considered. The decoded value of at least a second syntax element representing the current block is reconstructed during step 213, for example by repeating the decoded value of the first syntax element.

[0094] The syntax elements can thus be decoded to reconstruct the decoded signal S_d.

[0095] 5.3 Example of implementation

[0096] 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.

[0097] 5.3.1 Coding

[0098] 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.

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

[0100] According to the example illustrated in Figure 3, the syntaxization module 31 is considered to implement a latent synthesis unit 311, which generates at least one 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, representing the input signal IO.

[0101] 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.

[0102] 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.

[0103] 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.

[0104] According to a second example, the syntaxization module 31 implements a conventional system, like 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, movement vectors, intra-prediction mode indicators, etc.).

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

[0106] 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.

[0107] Other examples are also conceivable.

[0108] 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.

[0109] 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.

[0110] 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.

[0111] 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.

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

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

[0114] In an optional first 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.

[0115] 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.

[0116] 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

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

[0118] 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 specifies the use of a first coding indicator Fx for each block in said set. Such a first coding indicator Fx is a syntax element associated with a block. It describes whether all the samples in the block (or the syntax elements representing the samples in the block) have identical values ​​or whether at least two samples in the block (or at least two syntax elements representing the samples in the block) have different values.

[0119] 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 it is necessary to code all the samples in the block one by one, even if they are all identical, or to code all the values ​​of the syntax elements describing these samples, even if they are identical.

[0120] 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 of said set to be indicated. Such a second coding indicator Zb is a syntax element associated with a block. It allows describing whether all samples of the block (or all syntax elements representative of samples from the block) have a null value or if at least one sample from the block (or at least one syntax element representative of samples from the block) has a non-zero value.

[0121] 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.

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

[0123] 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.

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

[0125] 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.

[0126] 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).

[0127] 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.

[0128] 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 not) 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).

[0129] 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.

[0130] 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.

[0131] 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.

[0132] 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.

[0133] In this step, it is assumed that the 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.

[0134] 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.

[0135] 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.

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

[0137] 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.

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

[0139] 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 respectively represent a prediction of the current sample value (obtained, for example, from the mean of the values ​​of at least two previously coded samples) and a prediction error of the current sample value (obtained, for example, from the variance or dispersion of the values ​​of at least two previously coded samples). Hereafter, Mu and Sigma are said to represent a mean and a variance of the current sample, respectively.

[0140] 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).

[0141] 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 to say the probability of each value which it can take.

[0142] 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.

[0143] 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.

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

[0145] 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.

[0146] 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.

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

[0148] 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-processed current sample y_i:

[0149] y=x-Mu

[0150] 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.

[0151] 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.

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

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

[0154] 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 gtO, sign, gtl, gt2 and gt3 are encoded in the compressed stream B, followed by a binarization of the value y. We can thus binarize the value y of the current preprocessed sample y_i, or binarize the value (y-4) in order to reduce the amplitude of the value to be encoded, 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).

[0155] 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.

[0156] For example, the binary elements gtO, 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, ...

[0157] 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.

[0158] 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.

[0159] 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.

[0160] We seek here to determine the probability according to which encoding the current binary element EB_i,j with a considered entropic coding method.

[0161] 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.

[0162] 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.

[0163] 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.

[0164] 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.

[0165] According to this example, the integer closest to the variable Mu is determined (for example, using a Round(Mu) function), and this integer is subtracted 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 possible, for example, uniform quantization over 64 values, or non-uniform quantization.

[0166] 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.

[0167] 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)):

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

[0169] 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.

[0170] 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.

[0171] 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).

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

[0173] 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.

[0174] 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.

[0175] 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.

[0176] 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).

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

[0178] 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 test step 48 sample, otherwise, the next step is a 474 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.

[0179] 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).

[0180] 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.

[0181] 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.

[0182] 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 syntax element The current encoding mode is implemented, and the second encoding mode implements entropic encoding of the new binary element(s).

[0183] 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 described, for example, 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 encoded with a predetermined probability, for example, 0.5. Alternatively, a new binarization can be implemented to encode 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 direct binary encoding, a unary encoding, an Exp-Golomb encoding, etc., and all the resulting new binary elements are encoded with a probability of 0.5.

[0184] 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 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).

[0185] 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").

[0186] 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).

[0187] 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 the first sample of a block containing only identical values ​​has just been coded.

[0188] 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.

[0189] 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 to find the next block in the current latent. In this case, the steps described previously can be iterated for this new block.

[0190] 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 for the next latent. In this case, the steps described previously can be iterated for this new latent.

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

[0192] 5.3.2 Decoding

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

[0194] 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.

[0195] 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.

[0196] 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.

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

[0198] 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.

[0199] 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.

[0200] 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.

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

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

[0203] 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.

[0204] 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.

[0205] If a non-zero value is decoded for the block_size syntax element, this 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 blocks. As an example, we consider a block size BS=8, which means that each latent is cut into blocks of samples of size 8x8 values.

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

[0207] 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.

[0208] 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.

[0209] 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 to [Fig. 4], this second zero_blocks indicator allows the use of a second coding indicator Zb for each block in said set.

[0210] 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.

[0211] 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.

[0212] 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.

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

[0214] 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 path predetermined among them. The first block in this traversal order is selected as the current block B_b.

[0215] 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).

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

[0217] 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.

[0218] 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.

[0219] 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 of 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 of the current block have the same value).

[0220] 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.

[0221] 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.

[0222] 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.

[0223] 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.

[0224] 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.

[0225] 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.

[0226] 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.

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

[0228] 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 includes, for example, two variables Mu and Sigma, with floating values. Alternatively, the ARM network can produce Pe_d information relating to the current sample corresponding to the complete probability of the current sample, that is to say the probability of each value that it can take.

[0229] 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.

[0230] 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.

[0231] 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.

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

[0233] 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.

[0234] 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.

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

[0236] 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.

[0237] The Pb_d information 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.

[0238] 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.

[0239] 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.

[0240] 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.

[0241] 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.

[0242] 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)):

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

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

[0245] 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.

[0246] 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).

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

[0248] 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.

[0249] 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.

[0250] 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.

[0251] 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.

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

[0253] 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 last binary element test step 773 may depend on the values ​​of the previously decoded binary elements, according to the binarization chosen at 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 may consider that it has reached the last binary element if the decoded value of the binary element gtX is 0, or after decoding the last binary element egX if the decoded value of the binary element gt3 is 1.

[0254] 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.

[0255] 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 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 method 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.

[0256] 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.

[0257] 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.

[0258] 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.

[0259] 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).

[0260] 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").

[0261] 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.

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

[0263] During step 78, the value of the pre-processed current sample 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 at 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 pre-processed sample If the current absolute value is equal to 1, the decoder can consider that only the values ​​of gtO, sign, and gtl have been encoded in the compressed stream B, and it can consider the binary element gtl as 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 the binary element gt2 as 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.

[0264] 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.

[0265] 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.

[0266] 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.

[0267] 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.

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

[0269] x=y+Mu.

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

[0271] 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.

[0272] 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).

[0273] 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.

[0274] 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.

[0275] 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.

[0276] 5.4 Variants

[0277] 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 is optional. The size of the blocks is not fixed. In a particular embodiment, a single block of samples can be considered.

[0278] 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.

[0279] 5.5 Encoding and decoding devices

[0280] 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.

[0281] 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.

[0282] 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.

[0283] 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.

[0284] 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.

[0285] 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.

[0286] 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

1.

2. Demands A method for encoding a signal comprising at least one block of samples to be encoded, said method implementing the following steps for encoding (10) at least one of said blocks, represented by a set of syntax elements, called the current block: • if at least two syntax elements of said set have different values: • assignment (111) of a first value to a first coding indicator associated with current block audit, • encoding (112) the value of said at least two syntax elements of said set according to an encoding technique, • Otherwise : • assignment (113) of a second value, distinct from said first value, to said first coding indicator, • encoding (114) the value of a first syntax element of said set according to said encoding technique, • encoding (12) of the value of said first coding indicator associated with said current block. A coding method according to claim 1, characterized in that said method also implements the following steps for coding (10) said current block: • if all the syntax elements of said set have the same zero value: • Assigning a first value to a second coding indicator associated with the current block, • if at least one syntax element of said set has a non-zero value: • assignment of a second value, distinct from said first value, to said second coding indicator, • encoding of the value of said second coding indicator associated with said current block.

3. A coding method according to any one of claims 1 and 2, characterized in that it implements the coding of the value of a first high-level indicator associated with a set of at least two blocks indicating the use of said first coding indicator for each block of said set.

4. A coding method according to any one of claims 2 and 3, characterized in that it implements the coding of the value of a second high-level indicator associated with a set of at least two blocks indicating the use of said second coding indicator for each block of said set.

5. A coding method according to any one of claims 1 to 4, characterized in that the syntax elements representative of at least one block of samples of said signal are obtained from a neural network.

6. Coding method according to claim 5, characterized in that it comprises the transmission of at least one parameter and / or a topology of said neural network to a decoder.

7. A method for decoding a signal comprising at least one block of samples to be decoded, said method implementing the following steps for decoding at least one of said blocks, represented by a set of syntax elements, referred to as the current block: • decoding (21) the value of a first coding indicator associated with said current block, • if the decoded value of said first coding indicator is equal to a first value: • decoding (211) the value of at least two syntax elements of said set according to a decoding technique, • if the decoded value of said first coding indicator is equal to a second value, distinct from said first value: • decoding (212) the value of a first syntax element of said set according to said decoding technique, • reconstruction (213) of the decoded value of at least a second syntax element of said set of syntax elements by repeating the decoded value of said first syntax element.

8. A decoding method according to claim 7, characterized in that said method also implements the following steps for decoding said current block: • decoding the value of a second coding indicator associated with said current block, • if the decoded value of said second coding indicator is equal to a first value: • reconstructing the decoded value of all the syntax elements of said set of syntax elements with a null value, • if the decoded value of said second coding indicator is equal to a second value, distinct from said first value: • implementing said step of decoding the value of said first coding indicator.

9. A decoding method according to any one of claims 7 and 8, characterized in that it implements the decoding of the value of a first high-level indicator associated with a set of at least two blocks indicating the use of said first coding indicator for each block of said set.

10. A decoding method according to any one of claims 8 and 9, characterized in that it implements the decoding of the value of a second high-level indicator associated with a set of at least two blocks indicating the use of said second coding indicator for each block of said set.

11. A decoding method according to any one of claims 7 to 10, characterized in that the syntax elements representative of at least one block of samples of said signal are obtained from a neural network.

12.

13.

14. A decoding method according to claim 11, characterized in that it comprises constructing said neural network from at least one parameter and / or a topology transmitted in said signal. A signal encoding device comprising at least one block of samples to be encoded, said encoding device comprising at least one processing unit configured to encode at least one of said blocks, represented by a set of syntax elements, referred to as the current block, comprising: • if at least two syntax elements of said set have different values: • assign an initial value to an initial coding indicator associated with the current block, • encode the value of said at least two syntax elements of said set according to an coding technique, • Otherwise : • assign a second value, distinct from said first value, to said first coding indicator, • encode the value of a first syntax element of said set according to said coding technique, • encode the value of said first coding indicator associated with said current block. A signal decoding device comprising at least one block of samples to be decoded, said decoding device comprising at least one processing unit configured to decode at least one of said blocks, represented by a set of syntax elements, called the current block, comprising: • decode the value of a first coding indicator associated with the current block, • if the decoded value of said first coding indicator is equal to a first value: • decode the value of at least two syntax elements of said set using a decoding technique,

15. • if the decoded value of said first coding indicator is equal to a second value, distinct from said first value: • decode the value of the first syntax element of said set according to said decoding technique, • reconstruct the decoded value of at least a second syntax element of said set of syntax elements by repeating the decoded value of said first 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

  • Palette mode encoding and decoding design

    EP3178226B1

  • Video coding with large macroblocks

    US20100086029A1