Encoding and decoding methods, corresponding devices and computer program
The introduction of block-level syntax elements for encoding identical or null values in digital signals addresses inefficiencies in existing compression methods, enhancing compression efficiency and resource utilization.
Patent Information
- Application Number
- PCT/EP2025/065156
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-06-17
- Filing Date
- 2025-06-02
- Publication Date
- 2025-12-26
AI Technical Summary
Existing digital signal compression methods, such as those used in JPEG and ITU/MPEG standards, suffer from inefficiencies in reconstructing the original signal due to lossy syntaxization and entropy coding steps, leading to suboptimal throughput and resource utilization.
A novel encoding method introduces a block-level syntax element to signal whether all samples or syntax elements within a block have the same value, using a first coding indicator (Fx) and a second coding indicator (Zb) to encode entire blocks of identical or null values, respectively, enhancing compression efficiency.
This approach improves signal compression by allowing for the encoding of groups of identical or null values with a single indicator, reducing the need for individual encoding of each sample, thereby optimizing resource utilization and throughput.
Smart Images

Figure EP2025065156_26122025_PF_FP_ABST
Abstract
Description
[0001] DESCRIPTION
[0002] Title: Coding and decoding methods, corresponding devices and computer programs.
[0003] 1. Scope of the invention
[0004] 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.
[0005] 2. Prior art
[0006] 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.).
[0007] Typically, two main steps are implemented for the encoding of a digital signal that one seeks to compress.
[0008] The first step, called "syntaxization," consists of describing the signal samples as a whole (for example, pixels with 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 input signal samples, are defined in standards such as HEVC and 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, and so on).(e.g., a value of 6 for a 256x256 block size), another syntax element of type `split_block` can indicate whether a block is split into sub-blocks (e.g., a value of 0 if no sub-blocks are split, a value of 1 otherwise), another syntax element of type `pred_mod` can describe the type of prediction used (e.g., a value of 0 for an intra-block prediction or a value of 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 efficiency.
[0009] A second entropy coding step involves transforming the sequence of syntax elements into a binary sequence that forms the coded signal, which can then be stored and / or transmitted. During this step, an entropy coding technique is implemented, such as Huffman coding or arithmetic coding, like CABAC coding as described in the document "CABAC: Context-Based Adaptive Binary Arithmetic Coding in the H.264 / AVC Video Compression Standard" (Detlev Marpe, Heiko Schwarz, and Thomas Wiegand). Typically, this entropy coding step aims to encode the 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 syntax element's value is encoded according to a probability characteristic.
[0010] As mentioned above, syntax elements can take integer values (e.g., the block_size syntax element) or binary values (e.g., the split_block syntax element). 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 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 "bin") that it contains can be coded according to the associated binary probability.
[0011] The entropic coding step (with or without binarization) is generally lossless, meaning that during decoding, the original values of the syntax elements can be fully reconstructed. It should be noted that the quality of an entropic code depends on the quality of the probability characteristic used.
[0012] Similarly, two main steps are implemented for the decoding of a coded signal as described above.
[0013] The first step, known as "parsing" or entropic decoding, involves reconstructing 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 encoding. Thus, the stream of 0s and 1s is read, and entropic decoding (Huffman, arithmetic, etc.) yields the decoded values of the syntax elements.
[0014] A second "synthesis" step involves reading the sequence of previously decoded syntax elements and, using the construction rules defined by the synthesis method (for example, as defined in the HEVC or VVC standard), constructing the decoded values of the signal samples. If the entropy encoder encodes an area containing many nuisance samples, the probability of encoding a zero value for 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.
[0015] However, for structural reasons, an entropic encoder limits the values of its extreme probabilities to [0 + e, 1 - e] where e is small (for example, e = 0.01). When a value is almost certain (probability close to 1), this introduces an overhead in terms of throughput.
[0016] Therefore, there is a need for a solution to improve signal compression.
[0017] 3. Description of the invention
[0018] 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:
[0019] - if at least two syntax elements of said set have different values:
[0020] • Assigning a first value to a first coding indicator associated with the current block (for example Fx=0),
[0021] • encoding the value of said at least two syntax elements of said set according to an coding technique,
[0022] - Otherwise :
[0023] • assignment of a second value, distinct from said first value, to said first coding indicator (for example Fx=l),
[0024] • encoding the value of the first syntax element of said set according to said encoding technique,
[0025] - encoding of the value of said first coding indicator (Fx) associated with said current block.
[0026] 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 coding indicator, which allows signaling whether all the samples in the block, or all the syntax elements representing these samples, have the same value or at least two different values.
[0027] Specifically, if at least two samples in 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 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. To ensure the decoder knows 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.
[0028] 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.
[0029] In one particular embodiment, the process also implements the following steps for encoding said current block:
[0030] - if all the syntax elements of said set have the same value of zero:
[0031] • Assigning a first value to a second coding indicator associated with the current block (for example Zb=l),
[0032] - if at least one syntax element of said set has a non-zero value:
[0033] • assignment of a second value, distinct from said first value, to said second coding indicator (for example Zb=0),
[0034] - encoding of the value of said second coding indicator (Zb) associated with said current block.
[0035] A new block-level syntax element, called the second coding flag, can thus be introduced to signal whether all samples in the block (or all syntax elements representing these samples) have a zero value, or whether at least one sample in the block (or one syntax element) has a non-zero value.
[0036] 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 flag associated with the block is also encoded in the compressed stream.
[0037] In a particular embodiment, the coding process also implements the coding 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.
[0038] It is therefore possible to include in the compressed stream information relating to the encoding of at least two blocks.
[0039] In particular, such a first high-level indicator enables the encoding of an entire block of identical values using a single indicator. If this mode is not active, the encoder encodes all samples in the block, or all corresponding syntax elements, one by one, even if they are identical. In a particular embodiment, the encoding process also implements the encoding 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 encoding indicator for each block in said set.
[0040] In particular, such a second high-level flag enables the functionality of encoding an entire block of null values with a single flag. If this mode is not active, the encoder encodes all samples in the block, or all corresponding syntax elements, one by one, even if they are null.
[0041] In a particular embodiment, the syntax elements representative of 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] 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 favor 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.
[0043] 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.
[0044] For example, this information is transmitted within 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.
[0045] In a particular embodiment, the syntax elements representative of 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 process is implemented latent by latent and block by block for a latent.
[0046] In another embodiment, the invention relates to a corresponding coding device.
[0047] Such a coding device, also called an encoder, is particularly well-suited for implementing the coding process described above. It may, of course, include the various features of the coding process 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 process described above. Consequently, they are not detailed further. 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:
[0048] - decoding the value of a first coding indicator (Fx) associated with the current block,
[0049] - if the decoded value of said first coding indicator is equal to a first value (for example Fx=0):
[0050] • decoding the value of at least two syntax elements of said set according to a decoding technique,
[0051] - if the decoded value of said first coding indicator is equal to a second value (for example Fx=l), distinct from said first value:
[0052] • decoding the value of the first syntax element of said set according to said decoding technique,
[0053] • 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.
[0054] Such a decoding method is particularly suited to decoding a signal encoded using the encoding method described above. It may, of course, incorporate the various features of the encoding method according to the invention. Thus, the characteristics and advantages of the decoding method and the decoder are the same as those of the encoding method and the encoder described previously.
[0055] As with encoding, in a particular embodiment, the decoding process also implements the following steps for decoding said current block:
[0056] - decoding the value of a second coding indicator (Zb) associated with the current block,
[0057] • if the decoded value of said second coding indicator is equal to a first value (for example Zb=l):
[0058] ♦ Reconstructing the decoded value of all syntax elements in said set of syntax elements with a null value,
[0059] • if the decoded value of said second coding indicator is equal to a second value (for example Zb=0), distinct from said first value:
[0060] ♦ implementation of said step of decoding the value of said first coding indicator.
[0061] In one 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 encoding indicator for each block in said set. In another 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 encoding indicator for each block in said set.
[0062] In a particular embodiment, the syntax elements representative of 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).
[0063] In a particular embodiment, the decoding process comprises constructing the neural network from at least one parameter and / or topology transmitted in the encoded signal. Alternatively, the at least one parameter and / or topology is transmitted in a signal separate from the encoded signal. In this way, the decoder has the necessary information to parameterize a neural network similar to that used by the encoder.
[0064] In a particular embodiment, the syntax elements representative of 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 process is implemented latent by latent and block by block for a latent.
[0065] In another embodiment, the invention relates to a corresponding decoding device.
[0066] Such a decoding device, also called a decoder, is particularly well-suited to implementing the decoding process described above. It may, of course, include the various features relating to the decoding process according to the invention, which may be combined or considered individually. Thus, the features and advantages of the decoder are the same as those of the process described above. Consequently, they are not detailed further.
[0067] 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.
[0068] The invention also relates to a computer-readable information carrier, comprising instructions for a computer program as mentioned above.
[0069] 4. List of figures
[0070] 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 an encoding method according to a particular embodiment; Figure 2 illustrates the main steps implemented by a decoding method according to a particular embodiment; Figure 3 illustrates an example of the implementation of an encoder according to a particular embodiment; Figure 4 illustrates an encoding 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 the implementation of a decoder according to a particular embodiment.Figure 7 illustrates a decoding algorithm implemented in a decoder according to the example in Figure 6; Figure 8 presents the simplified structure of an encoder according to one embodiment of the invention; Figure 9 presents the simplified structure of a decoder according to one embodiment of the invention.
[0071] 5. Description of an embodiment
[0072] 5.1 Definitions
[0073] For the purposes of this invention, encoding, or "coding," refers to the operation of representing a set of samples in a compact form, for example, using a digital binary stream. Decoding refers to the operation of processing a digital binary stream to produce decoded samples.
[0074] 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, such as (R, G, B) or (Y, U, V). Generally, a sample is represented by a vector of one or more components, or data points.
[0075] A sample can belong to a block of samples.
[0076] A sample can be represented by one or more syntax elements, or fewer if we consider a block of samples and a single syntax element representative of the entire block. For example, a sample can be described by two syntax elements (such as the sample size and sign).
[0077] A sample can be part of a latent. 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 commonly referred to as the "latent representation" or "latent domain representation" of the input signal. These characteristic maps can be two-dimensional as images of scalar values, one-dimensional 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 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.
[0078] The term "neural network" refers to a neural network such as a fully connected network, a convolutional neural network, a combination of the two, and so on. A neural network is defined, for example, by a plurality of layers of artificial neurons and a set of activation, weighting, and addition functions (for example, a layer might 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). Multiple such networks can be cascaded.
[0079] By "neural network parameter" we mean one of the values that characterizes the neural network, for example a weight associated with one of the neurons (filter or convolution coefficient, weighting, bias, value affecting the functioning of non-linearity, etc.)
[0080] By "information about a current syntax element (or sample)," we mean a scalar or vector, of integer, floating-point, or numeric type, that is associated with the current syntax element (or sample). Such information about 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 about a current syntax element (or sample) can be directly representative of the probability of the syntax element (or sample)—for example, its probability, its expected value, its dispersion, or a composition of these values—or it can be related by a more general relationship.
[0081] By "encoding of a syntax element", respectively of a binary element, we mean the encoding of the value of the syntax element, respectively of the value of the binary element.
[0082] By "decoding a syntax element," or a binary element, we mean decoding the encoded value of the syntax element, or the encoded value of the binary element, respectively. Furthermore, the terms "encoded value of the syntax element" and "encoded syntax element" are used interchangeably.
[0083] Generally speaking, the steps in 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.
[0084] 5.2 General Principle
[0085] 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.
[0086] Note that the proposed solution applies to any coding technique, and not necessarily to entropic coding.
[0087] Figure 1 illustrates the main steps of a coding process according to one embodiment of the invention.
[0088] Such a process takes as input a signal S. For example, such an input signal is an audio signal, video signal, an image, etc.
[0089] The coding process according to one embodiment implements at least one coding step 10 of at least one block of samples to be coded from the input signal.
[0090] The steps implemented for the coding of a current block B_b are described below.
[0091] The samples x_i of the current block B_b are traversed during a first step 11.
[0092] 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 CABAC type arithmetic coding (as described in HEVC).The sign itself can be coded by a bit.
[0093] 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.
[0094] In a subsequent step 12, the value of the first coding indicator Fx associated with the current block B_b can be coded.
[0095] These steps can be iterated for encoding other sample blocks.
[0096] Of course, such a current block can be represented by a set of syntax elements, for example obtained as output from a syntaxization step.
[0097] In this case, the ES J syntax elements of the syntax element set associated with the current block can be traversed during the first step 11.
[0098] If at least two ES_i syntax elements in the set have different values, 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.
[0099] Otherwise, if all the ES_i syntax elements in the set have the same value, the encoding process implements step 113, which assigns a second value, distinct from the first value, to the first encoding 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 encoded during an encoding step 114, using the encoding technique under consideration.
[0100] Following these various steps, a coded signal S_c is obtained, intended for transmission and / or storage. The main steps of a decoding process according to an embodiment of the invention are now described with reference to Figure 2.
[0101] Such a decoding process takes as input a coded signal S_c.
[0102] The decoding process according to one embodiment implements at least one decoding step 20 of at least one block of samples to be decoded of the coded signal S_c.
[0103] The steps implemented for decoding a current block B_b are described below.
[0104] The value of a first coding indicator (Fx) associated with the current block is decoded in a first step 21. 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 using a decoding technique.
[0105] If the decoded value of the first encoding indicator is equal to a second value, for example Fx=l, this means that all 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.
[0106] These steps can be iterated for decoding other blocks of coded samples.
[0107] The sample blocks can thus be decoded to reconstruct the decoded signal S_d.
[0108] Of course, such a common block can be represented by a set of syntax elements.
[0109] 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 using a decoding technique.
[0110] 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 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 one second syntax element representing the current block is reconstructed during step 213, for example by repeating the decoded value of the first syntax element.
[0111] The syntax elements can thus be decoded to reconstruct the decoded signal S_d.
[0112] 5.3 Example of implementation
[0113] An example of implementation of the invention is described below for encoding an original signal, delivering a compressed stream, and then decoding the compressed stream to reconstruct the original signal.
[0114] 5.3.1 Coding
[0115] Figure 3 illustrates an example of an encoder 3 that transforms an input signal 10, corresponding for example to an original image, into a compressed binary stream B.
[0116] The input signal 10 is first processed by a syntaxization module 31, which generates syntax elements representative of the original image. As illustrated in Figure 3, the syntaxization module 31 is considered to implement a latent synthesis unit 311, capable of generating at least one latent element. For example, the latent synthesis unit 311 generates a series of latent elements L, denoted L_l, ..., LJ, L_L, with 1 < 1 < L, representing the input signal 10.
[0117] 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.
[0118] 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.
[0119] 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.
[0120] 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, motion vectors, intra-prediction mode indicators, etc.).
[0121] According to a third example, the syntaxization module 31 implements a hybrid system between a conventional coder and neural networks.
[0122] 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 Codec" (Theo 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 signal representation in the form of latents and signal reconstruction neural network parameters, the two together forming the syntax elements.
[0123] Other examples are also possible.
[0124] The latent values L_l, ..., LJ, ..., L_L obtained from 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 syntax elements representing these samples or blocks of samples. Note that if the syntaxization module 31 implements a neural network, these can be latent values in the neuronal sense of the term. The latent values L_l, ..., LJ, L_L obtained from 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 latent values.
[0125] In the following, we consider, for example, that the latents are organized into a series of two-dimensional arrays. Each latent LJ, with 1 < 1 < L, is divided into B blocks B_b, with 1 < b < B.
[0126] 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.
[0127] The entropic encoding of the values of the ES syntax elements associated with the latents generates the compressed stream B.
[0128] An example of a coding algorithm implemented by the entropy coding module 32 is described below in relation to figure 4.
[0129] 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.
[0130] 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.
[0131] If the coder decides to slice the original image into blocks, they can encode their block size (BS) as the value of the block_size syntax element. For example, the coder uses a block size of BS=8, meaning that each latent is sliced into 8x8 sample blocks. In this case, an encoding (entropic or direct) of the value 8 for the block_size syntax element can be encoded.
[0132] Alternatively, other "high-level" syntax elements relating to block size, such as block_size_h, block_size_w, can be coded.
[0133] Furthermore, according to the embodiment illustrated in Figure 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 indicator, `flatjalocks`, allows the use of a first coding indicator, `Fx`, for each block in the set. Such a first coding indicator, `Fx`, is a syntax element associated with a block. It allows us to describe 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.
[0134] 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 Figure 4, this coding functionality is enabled. If this functionality is not enabled, it is not possible to code a block in this way, and all the samples in the block must be coded individually, even if they are all identical, or all the values of the syntax elements describing these samples must be coded, even if they are identical.
[0135] 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, the input signal), can also be initialized according to the embodiment illustrated in Figure 4, if block decoding is implemented. This second `zero_blocks` indicator allows the use of a second coding indicator `Zb` for each block in the set. Such a second coding indicator `Zb` is a syntax element associated with a block. It allows us to describe whether all samples in the block (or all syntax elements representing samples in the block) have a value of zero, or whether at least one sample in the block (or at least one syntax element representing samples in the block) has a non-zero value.
[0136] 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 Figure 4, this coding functionality is enabled. If this functionality is not enabled, it is not possible to code a block in this way, and all the samples in the block must be coded one by one, even if they are all corrupted, or all the values of the syntax elements describing these samples must be coded even if they are all zero.
[0137] The next step is a selection step 42 of the first latent LJ = L_l.
[0138] In this step, it is assumed that the latents are ordered and that there is a predetermined path through them. The first latent in this path order is selected as the current latent LJ.
[0139] The next step is a selection step 43 of the first block B_b = B_1. During this step, it is assumed that the blocks are ordered in the current latent (e.g., in lexicographic order) and that there is a predetermined path through them. The first block in this path order is selected as the current block B_b.
[0140] 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 with a single flag is enabled (for example, zero_blocks = 1).
[0141] If the current block B_b contains only nuis samples 441 (or is represented by syntax elements with 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.
[0142] If the current block B_b does not contain only nuisance 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 to the second coding flag Zb associated with the current block B_b (for example, Zb=0), and this second value is encoded (entropically or non-entropically) in the stream B. The next step is then a test step 45 to encode 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 enabled (for example, flat_blocks = 1).
[0143] 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.
[0144] 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.
[0145] 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.
[0146] The following describes the case where the coder works on samples from the current block. Simply replace "sample" with "syntax element" in the following sections if the coder is working on syntax elements representative of at least one sample from the current block. During this step, it is assumed that the samples are ordered within 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.
[0147] The next step is to obtain information Pe_c for the current sample, based on 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.
[0148] Such information Pe_c relating to the current sample can be representative of the sample's probability. For example, the information Pe_c relating to the current sample belongs to the group including:
[0149] - an average of the coded values from at least two previously coded samples,
[0150] - an expected value of the coded values of at least two previously coded samples,
[0151] - a variance in the coded values of at least two previously coded samples,
[0152] - a probability of at least one possible value for the current sample,
[0153] - a combination of at least two of the above elements.
[0154] This Pe_c information can be one-dimensional, multi-dimensional, floating-point or integer.
[0155] For example, as illustrated in Figure 5, the information Pe_c relating to the current sample x_i of value x located in the latent LJ 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.
[0156] In a particular embodiment, the Pe_c information relating to the current sample can be obtained from the output of a neural network.
[0157] Thus, returning to Figure 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), made up for example of the samples of values a,b,c...,f. The information Pe_c relating to the current sample obtained at the 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, respectively, the mean and variance of the current sample.
[0158] In particular, the ARM neural network can be adapted to the characteristics of the current image to be entropically encoded (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 encoding of the current image).
[0159] Alternatively, the ARM network can produce Pe_c information relating to the current sample corresponding to the complete probability of the current sample, i.e. the probability of each value it can take.
[0160] 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.
[0161] If the information Pe_c relating to the current sample is obtained as the output of a neural network, at least one parameter and / or a topology of the neural network can be passed to a decoder, so that the latter can reconstruct such information, denoted Pe_d on the decoder side, with Pe_d = Pe_c. In another, unillustrated embodiment, the information Pe_c relating to the current sample is not obtained as the output of a neural network.
[0162] For example, the Pe_c information for the current sample is obtained from a nonlinear function, a predetermined algorithm, an association table, etc. One example of an algorithm is to generate multidimensional Pe_c information for 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 each sample's values.
[0163] We consider below, as an 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.
[0164] In a subsequent optional step 462, a pretreatment can be applied to the current sample.
[0165] 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: y=x-Mu The next step is a binarization step 463, or M-ary / binary transformation, of the current sample, delivering at least one binary element (or "bin"), associated with the current sample.
[0166] 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.
[0167] For example, we assume that the current sample has been pre-treated.
[0168] Classically, a sample is presented as a signed integer value.
[0169] 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 pre-processed current 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 is equal to 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 pre-processed current sample, is encoded in the compressed stream B. A third binary element gtl (for "greater than 1") indicates whether the absolute value of the pre-processed current 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 gtO, 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 y value. We can thus binarize the y value of the current pre-processed sample y_i, or binarize the (y-4) value 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).
[0170] 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.
[0171] For example, the binary elements gtO, sign, gtl,...,gt3, eg0, egl, eg2,... are indexed directly by an indexing function binidx(EBJJ): binidx(gtO)=O, binidx(sign)=l,..., binidx(eg0)=5, ...
[0172] 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.
[0173] The next step is a selection step 47 of the first binary element (associated with the current sample x_i) as current binary element E B_i,j = EB_i, 1.
[0174] 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.
[0175] We seek here to determine the probability that encoding the current binary element EB_i,j with a given entropic coding method.
[0176] For example, if the entropy coding is a CABAC-type arithmetic coding, 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.
[0177] 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 representing the probability with which the current binary element will be entropically encoded. According to a particular embodiment, in order to determine the information Pb_c relating to the encoding 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 encoded are used.
[0178] 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.
[0179] In this example, we determine the integer closest to the variable Mu (for example, using a Round(Mu) function), and we subtract this integer from the value Mu. This gives us a value Mu - Round(Mu) between -0.5 and +0.5. This Mu - Round(Mu) value is quantized, for example, over 17 possible values denoted muidx {0, 1, 16}, evenly distributed between -0.5 and +0.5. Of course, other quantization steps are possible, for example, uniform quantization over 64 values, or non-uniform quantization.
[0180] 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.
[0181] 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. Therefore, there is 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)):
[0182] Pb_c = probaT[muidx][sigidx][binidx(EB_i,j)]
[0183] This association table can be built before encoding. It can be transmitted or accessed by the encoder and decoder. To build this table, one can, for example, generate a statistical analysis of the binary elements on a large number of input signals (e.g., input images), and deduce the probability from the compiled statistics. Other methods are, of course, possible.
[0184] A simple reading of the three-dimensional table taking into account the triplet (muidx, sigidx, binidx(EBJJ)) gives the information Pb_c relating to the encoding probability of the current binary element.
[0185] The Pb_c information 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:
[0186] - of the current binary element, i.e. which current binary element is being encoded (binidx(EBJJ)),
[0187] - a prediction of the current sample value (muidx), and
[0188] - a prediction error of the current sample value (sigidx).
[0189] In another embodiment, the Pb_c information relating to the encoding probability of the current binary element can be obtained differently.
[0190] For example, the information Pb_c relating to the encoding 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. Such a function f is, for example, a linear function or a piecewise linear function, such as 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.
[0191] Once the information Pb_c relating to the coding probability of the current binary element is obtained, an entropic coding step 472 of the value of the current binary element, taking into account said information Pb_c, is implemented.
[0192] During this step 472, the value of the current binary element E B_i,j is entropically encoded according to the information Pb_c, for example by a CABAC 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 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).
[0193] The next step is a 473 last binary element test step.
[0194] If the current binary element is the last binary element associated with the current sample (EB_i,j = EB_i,M), then the next step is a last-sample test step 48; otherwise, the next step is a selection step 474 for the next binary element (EB_i,j = EB_i,j+1). In this case, the steps described previously can be iterated for this new binary element.
[0195] In one particular embodiment, if 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 is not necessarily a direct neighbor of the current binary element. The encoded value of the current binary element can be used to encode the 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 noted Pmin), or close to a maximum if it is between 0.9 and 1 (in this case it is noted Pmax).
[0196] Thus, the second coding method is implemented, for example:
[0197] - if the probability of encoding a value equal to 0 for the current binary element is Pmax, and the coded value of the current binary element is equal to 1, - if the probability of encoding a value equal to 0 for the current binary element is Pmin, and the coded value of the current binary element is equal to 0,
[0198] - 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,
[0199] - 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.
[0200] For example, the first coding method 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.
[0201] For example, the second encoding mode implements entropic encoding of at least one subsequent binary element, taking into account information about a predetermined encoding probability. Such a predetermined encoding probability is, for example, between 0.4 and 0.6. For example, it is equal to 0.5. Optionally, a new M-ary / binary transformation of the current syntax element being encoded is implemented, and the second encoding mode implements entropic encoding of the new binary element(s).
[0202] Indeed, the possible encoding probabilities, for example 64 in the case of a CABAC-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 CABAC 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 gt0 = 0 is considered highly probable, while the current binary element gt0 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.
[0203] 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 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), we code the rest of the current sample (for example, the remainder of its amplitude) with a reasonable coding (for example, a probability of 0.5).
[0204] 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").
[0205] 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).
[0206] During this step, we can notably test whether the current sample is the last sample of the current block (which means we should move to the next block). If a first coding flag Fx is used for the current block, we can also test whether the value of this first coding flag Fx is equal to 1, which means that we have just coded the first sample of a block that contains only identical values.
[0207] If either of these tests is true, the next step is a check (step 481) to see if the current block is the last block (B_b = B_B). Otherwise, the next step is a selection (step 482) of the next sample within the current block. In this case, the steps described previously can be iterated for this new sample.
[0208] 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 (LJ = LJ). 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.
[0209] The verification step 49 tests whether the current latent is the last latent representing the original signal. If so, the encoding 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. At the end of the encoding process, the resulting bitstream B can be stored and / or transmitted to a decoder.
[0210] 5.3.2 Decoding
[0211] Figure 6 illustrates an example of a decoder 6 which can reconstruct, from the compressed binary stream B, a decoded signal ID, corresponding to the original encoded-decoded image.
[0212] As indicated in relation to Figure 3, the compressed binary stream B can be represented by coded syntax elements associated with the latents L_l, ..., LJ, ..., L_L.
[0213] According to Figure 6, an entropic decoding module 61 is implemented to reconstruct the decoded values of the syntax elements from the compressed binary stream.
[0214] 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.
[0215] According to the example illustrated in figure 6, the synthesis module 62 is considered to implement a synthesizer 621.
[0216] In a first embodiment illustrated in Figure 6, the decoded values of the syntax elements output from the entropy decoding module 61 are grouped into the latents L_l, ..., LJ, ..., 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.
[0217] In a second embodiment, not shown, 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, ..., LJ, ..., L_L.
[0218] In a symmetrical manner to the syntaxization module 31 described in relation to Figure 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.
[0219] Synthesizing the decoded values of the syntax elements allows us to reconstruct the decoded values of the samples forming the decoded ID signal.
[0220] An example of a decoding algorithm implemented by the entropic decoding module 61 is described below in relation to figure 7.
[0221] 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.
[0222] For example, the decoder decodes (either directly or entropically) 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, it means there is no block splitting. In this case, algorithmically, the image is considered a single block.
[0223] If a non-zero value is decoded for the block_size syntax element, it means that block splitting is occurring. Specifically, if the encoder has encoded the block size (BS) as the value for the block_size syntax element, the decoder can decode this value to obtain the block size for implementing block splitting. For example, consider a block size (BS) of 8, which means that each latent value is split into 8x8 sample blocks.
[0224] Alternatively, other syntax elements relating to block size, such as block_size_h, block_size_w, can be decoded.
[0225] Furthermore, according to the embodiment illustrated in Figure 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 mentioned in relation to Figure 4, this first `flat_blocks` indicator allows the use of a first coding indicator, `Fx`, for each block in the set. The decoder can thus activate the decoding functionality for an entire block of samples carrying identical values using a single indicator, by decoding a predetermined value of the first high-level indicator, `flat_blocks` (for example, `flat_blocks = 1`). In the embodiment illustrated in Figure 7, this decoding functionality is activated.If this feature is not enabled, 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.
[0226] Finally, according to the embodiment illustrated in Figure 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 Figure 4, this second zero_blocks indicator allows the use of a second coding indicator, Zb, for each block in said set.
[0227] 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 Tl zero_blocks (for example, zero_blocks = 1). In the embodiment illustrated in Figure 7, this decoding functionality is enabled. If this functionality is not enabled, it is not possible to decode a block in this way, and all the samples in the block must be decoded one by one, even if they are all corrupted, or all the values of the syntax elements describing these samples must be decoded even if they are all zero.
[0228] The next step is a selection step 72 of the first latent LJ = L_1 carrying at least one block carrying at least one coded sample.
[0229] In this step, it is assumed that the latents are ordered and that there is a predetermined path through them. The first latent in this path order is selected as the current latent LJ.
[0230] The next step is a selection step 73 of the first block B_b = B_l.
[0231] In this step, it is assumed that the blocks are ordered in the current latent order (for example, in lexicographic order) and that there is a predetermined path through them. The first block in this path order is selected as the current block B_b.
[0232] 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 to decode an entire block of samples corrupted by a single indicator is enabled (for example, zero_blocks = 1). The decoded value of the second coding indicator Zb is then tested 741.
[0233] 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.
[0234] 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.
[0235] This step is implemented, in particular, if the functionality to decode an entire block of samples with identical values using a single flag is enabled (for example, `flat_blocks = 1`). If the decoded value of the first coding flag `Fx` is equal to a first value (for example, `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 (for example, `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).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 element of syntax ESJ = ES_1 representative of at least one sample of the current block B_b.
[0236] As with the encoder, we describe below the case where the decoder works on samples from the current block. Simply 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.
[0237] 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.
[0238] The next step is to obtain information Pe_d for the current sample, based on the decoded value of at least one previously decoded coded sample. For the first sample, this Pe_d information can be initialized to a predefined value.
[0239] Such Pe_d information for the current sample can be representative of the sample's probability. For example, the Pe_d information for the current sample belongs to the group including:
[0240] - an average of the decoded values from at least two previously decoded samples,
[0241] - an expected value of the decoded values from at least two previously decoded samples,
[0242] - a variance in the decoded values of at least two previously decoded samples,
[0243] - a probability of at least one possible coded value for the current sample,
[0244] - a combination of at least two of the above elements.
[0245] 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 to the information relating to the current sample on the encoding side, since the entropic encoding / decoding steps are generally lossless.
[0246] For example, as illustrated in Figure 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 pre-processing on the encoder side) located in the latent LJ 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.
[0247] In a particular embodiment, the Pe_d information relating to the current sample can be obtained from the output of a neural network.
[0248] Thus, returning to Figure 6, a neural network 63, for example an ARM network (e.g., a fully connected or convolutional type), can provide output information Pe_d about 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 Pe_d information about the current sample obtained as output from the neural network 63 includes, for example, two floating-point variables Mu and Sigma. Alternatively, the ARM network can produce Pe_d information about the current sample corresponding to the complete probability of the current sample, that is, the probability of each value it can take.
[0249] 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.
[0250] In another, unillustrated embodiment, the Pe_d information relating to the current coded sample is not obtained from the output of a neural network. For example, the Pe_d information relating to the current sample is obtained from a nonlinear function, or a predetermined algorithm, or an association table, etc.
[0251] 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.
[0252] For example, we will consider the information Pe_d relating to the current sample as 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 the 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 the variance or dispersion of the decoded values of at least two previously decoded samples). Hereafter, Mu and Sigma are said to represent the mean and variance of the current sample, respectively.
[0253] The next step is a selection step 77 of the first binary element (associated with the current sample) as the current binary element EB_i,j = EB_i,l.
[0254] The next step is to obtain information Pb_d relating to the probability of decoding the current binary element, from the information Pe_d relating to the current sample. Here, we seek to determine the probability of decoding the current binary element EB_i,j with a given entropic decoding method.
[0255] For example, if entropic decoding is a 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 prior art.
[0256] The information Pb_d relating to the probability of decoding the current binary element can be: a probability, an index in a predetermined probability table, or any other information representing the probability with which the current binary element will be entropically decoded. 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.
[0257] We present below 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.
[0258] 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.
[0259] 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.
[0260] A three-dimensional association table probaT, indexed by muidx, sigidx and binidx(EBJJ), gives the probability of decoding the current binary element EB_i,j. Therefore, there is information Pb_d relating to the probability of decoding the current binary element, associated in a predetermined way with each triplet (muidx, sigidx, binidx(EBJJ)):
[0261] Pb_d = probaT[muidx][sigidx][binidx(EB_i,j)]
[0262] As already mentioned, this association table can be built before decoding. It can be transmitted or accessed by the encoder and the decoder.
[0263] A simple reading of the three-dimensional table, taking into account the triplet (muidx, sigidx, binidx(EBJJ)), provides the information Pb_d relating to the probability of decoding the current binary element. 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:
[0264] - of the current binary element, i.e. which current binary element is being decoded (binidx(EB_i,j)),
[0265] - a prediction of the decoded value of the current sample (muidx), and
[0266] - a prediction error of the decoded value of the current sample (sigidx).
[0267] In another embodiment, the Pb_d information relating to the probability of decoding the current binary element can be obtained differently.
[0268] 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.
[0269] Such a function f is for example a linear function or a piecewise linear function, such as 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.
[0270] 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.
[0271] 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 CABAC encoding, or by any other binary entropic decoding technique.
[0272] The next step is a 773 last binary element test step.
[0273] 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 during encoding. Considering the proposed binarization in relation to Figure 4, which delivers 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.
[0274] 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. In a particular embodiment, if the information regarding 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 next binary element associated with the current sample, depending on the decoded value of the current binary element.For example, the probability of decoding 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). Thus, the second encoding mode is implemented, for example:
[0275] - 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,
[0276] - 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,
[0277] - 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,
[0278] - 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.
[0279] 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.
[0280] 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 made a modification, for example, a new binarization, to the current sample being decoded.
[0281] Indeed, the possible decoding probabilities, for example 64 in the case of a CABAC-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 maximum probability Pmax (for example, gtO = 0 is very likely) and the decoded value of the current binary element is 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 previously, all the resulting binary elements are decoded with a probability of 0.5, for example.
[0282] 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 raw 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), we decode the current sample (for example, the remainder of its amplitude) with a reasonable decoding (for example, a probability of 0.5).
[0283] 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").
[0284] 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 to be reconstructed (pre-processed or not).
[0285] Advantageously, the debinarization of the current sample implements an operation inverse to the binarization implemented during encoding. Consider, for example, the binarization proposed in relation to Figure 4, applied to a pre-processed current sample, yielding the binary elements gtO, sign, gtl, gt2, gt3, egO, egl,...,
[0286] During step 78, the value of the current pre-processed sample can be decoded from as follows:
[0287] - 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.
[0288] - If the decoded absolute value of the first binary element gtO is a second value (indicating that the absolute value of the current pre-processed sample is greater than 0, as explained in relation to step 463), for example gtO = 1, then the decoded value of the second binary element (sign) indicates the sign of the current pre-processed sample. - If the decoded absolute value of the third binary element gtl is a first value (indicating that the absolute value of the current pre-processed sample is equal to 1, as explained in relation to step 463), for example gtl = 0, then the decoded absolute value of the current pre-processed sample is equal to 1. In this case, the decoder can consider that only the values of gtO, sign, and gtl have been encoded in the compressed stream B, and it can consider the binary element gtl to be the last binary element to be processed.
[0289] - 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 gt0, sign, gtl, and gt2 have been encoded in the compressed stream B, and it can consider the binary element gt2 to be the last binary element to be processed.
[0290] - 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,
[0291] - 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.
[0292] 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.
[0293] 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.
[0294] The next step is a post-processing step 781 of the pre-processed current sample. Such a step is optional and can be implemented, in particular, if a pre-processing step has been implemented on the encoding side. 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.
[0295] For example, the current pre-treated sample is assigned the value x, by adding the value Mu to y: x=y+Mu.
[0296] The decoder then tests whether the current sample is the last sample during a step 79 (xJ = x_N).
[0297] During this step, we can notably test whether the current sample is the last sample of the current block B_b (which means we should move to the next block B_b+1). If a first encoding indicator Fx is used for the current block, we 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.
[0298] If either of these tests is verified, the next step is a 791 check step to see if the current block is the last block (B_b = B_B).
[0299] If none of these tests are verified, the next step is a 792 selection step of the next sample y_i = yj+l in the current block. In this case, the steps described previously can be iterated for this new sample.
[0300] 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 (LJ = L_L). Otherwise, the next step is the selection step 742 of the next block (B_b = B_b+1) in the current latent LJ. In this case, the steps described previously can be iterated for this new block.
[0301] 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.
[0302] 5.4 Variants
[0303] An example of an implementation of the invention for encoding and decoding a signal has been described above. However, this is merely an illustrative example, and some steps are optional. In particular, the described example 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. Similarly, the implementation example described above relies on the processing of signal samples. Of course, the same steps, especially the entropic encoding / decoding steps, can be implemented on syntax elements representative of the signal.
[0304] 5.5 Encoding and decoding devices
[0305] 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.
[0306] As illustrated in Figure 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.
[0307] At initialization, the code instructions of program 83 are, for example, loaded into RAM memory before being executed by the processor of the processing unit 82.
[0308] 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.
[0309] As illustrated in Figure 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.
[0310] At initialization, the code instructions of program 93 are, for example, loaded into RAM memory before being executed by the processor of the processing unit 92.
[0311] The processor of the processing unit 92 implements steps of the decoding process described above on a coded signal, according to the instructions of the computer program 93, to reconstruct an original signal.
Claims
DEMANDS 1. A method for encoding 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 the current block, • encoding (112) of the value of said at least two syntax elements of said set, - 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, - encoding (12) of the value of said first coding indicator associated with said current block.
2. 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 value of zero: • 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. 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. 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. 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, called the current block: - decoding (21) of 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, - 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, • 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 the current block, • if the decoded value of said second coding indicator is equal to a first value: ♦ Reconstructing the decoded value of all syntax elements in 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: ♦ implementation of said step of decoding the value of said first coding indicator.
9. 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. 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. 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. Decoding method according to claim 11, characterized in that it comprises the construction of said neural network from at least one parameter and / or a topology transmitted in said signal.
13. A signal coding device comprising at least one block of samples to be coded, said coding device comprising at least one processing unit configured to encode at least one of said blocks, represented by a set of syntax elements, called 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, - Otherwise : • assign a second value, distinct from said first value, to said first coding indicator, • encode the value of the first syntax element of said set, - encode the value of said first coding indicator associated with said current block.
14. 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, - 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, • 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.
15. 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