Method and device for encoding and decoding a data stream representing at least one image - Patents.com
The method addresses the inefficiencies in compressing artificial content by using a group of constant pixel values to predict pixels in transition regions, resulting in improved compression performance and efficiency.
Patent Information
- Application Number
- JP2021546344
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-02-07
- Filing Date
- 2020-01-30
- Publication Date
- 2025-04-07
- Estimated Expiration
- 2040-01-30
AI Technical Summary
Existing image and video compression techniques struggle to effectively model strong discontinuities and high energy transitions in artificial content, such as screenshots or composite images, leading to inefficiencies in prediction and residual encoding.
A method for encoding and decoding images that involves determining a group of constant pixel values within a block, using these values to predict pixels in transition regions, and selectively applying a second prediction mode based on the distance of predicted values from the group values.
This approach improves compression performance by reducing prediction residuals and encoding efficiency, particularly in areas with strong discontinuities, thereby enhancing the overall quality and efficiency of image and video compression.
Smart Images

Figure 0007657723000004 
Figure 0007657723000005 
Figure 0007657723000006
Abstract
Description
[Technical field]
[0001] The field of the invention is that of coding and decoding images or sequences of images, in particular video streams.
[0002] More specifically, the present invention relates to the compression of an image or a sequence of images using a block representation of the image.
[0003] The invention is particularly applicable to image or video coding, and corresponding decoding, implemented in current or future encoders (JPEG, MPEG, H.264, HEVC, etc. and modifications thereof). [Background technology]
[0004] Digital images and sequences of images take up a lot of space in terms of memory and, when transmitting these images, they need to be compressed in order to avoid congestion problems on the networks used for this transmission.
[0005] Many techniques are already known for compressing video data. Among these, the HEVC compression standard ("High Efficiency Video Coding, Coding Tools and Specification", Matthias Wien, Signals and Communication Technology, 2015) proposes to perform a prediction of the pixels of a current image with respect to other pixels belonging to the same image (intra prediction) or with respect to other pixels belonging to previous or subsequent images (inter prediction).
[0006] More specifically, intra prediction uses spatial redundancy within an image. To do this, the image is divided into blocks of pixels. The blocks of pixels are then predicted using already reconstructed information that corresponds to previously coded / decoded blocks in the current image, according to the scanning order of the blocks in the image.
[0007] Furthermore, in a standard manner, the coding of the current block is performed using a prediction of the current block, called the predictor block, and a prediction residual or "residual block" corresponding to the difference between the current block and the predictor block. The resulting residual block is then transformed, for example using a DCT (Discrete Cosine Transform) type transformation. The coefficients of the transformed residual block are then quantized, coded by entropy coding and transmitted to a decoder, which can reconstruct the current block by adding this residual block to the predictor block.
[0008] Decoding is performed image by image and for each image block by block. For each block, the corresponding element of the stream is read. Inverse quantization and inverse transformation of the coefficients of the residual block is performed. Then, a block prediction is calculated to obtain a predictor block, and the current block is reconstructed by adding the prediction (i.e., the predictor block) to the decoded residual block.
[0009] In US9253508, a DPCM (Differential Pulse Code Modulation) coding technique for coding blocks in intra mode is integrated into the HEVC encoder. Such a technique consists in predicting a set of pixels of an intra block by another set of pixels of the same block previously reconstructed. In US9253508, the set of pixels of the coded intra block corresponds to a row, or a column, or a row and a column, of the block, and the intra prediction used to predict the set of pixels is one of the directional intra predictions defined in the HEVC standard.
[0010] However, such techniques are not optimal. In fact, the prediction of a pixel by previously processed neighboring pixels is well suited to coding natural types of data (photos, videos). However, when the type of content is artificial, for example content corresponding to screenshots or synthetic images, the image has strong discontinuities and high-energy transitions.
[0011] More specifically, for example, a composite image is likely to contain regions with a very small number of pixel values, also referred to below as levels. For example, some regions may have only two levels, one for the background and one for the foreground, e.g., black text on a white background.
[0012] When such transitions exist in regions of an image, the coded pixel value will be very different from the values of its neighboring pixels, and such pixel predictions using previously processed neighboring pixels are poorly able to model such transitions. [Prior art documents] [Patent documents]
[0013] [Patent Document 1] U.S. Patent No. 9,253,508 [Non-patent literature]
[0014] [Non-Patent Document 1] "High Efficiency Video Coding, Coding Tools and Specification", Matthias Wien, Signals and Communication Technology, 2015 Summary of the Invention [Problem to be solved by the invention]
[0015] Therefore, a need exists for new encoding and decoding methods to improve the compression of image or video data. [Means for solving the problem]
[0016] The present invention improves on the state of the art. To this end, the invention relates to a method for decoding a coded data stream representing at least one image divided into blocks, such a decoding method comprising the steps of: - determining a group of pixel values that are constant within a block from previously decoded pixels; -For each pixel in the block, - decoding a prediction residual associated with said pixel; determining a prediction value associated to a pixel according to a first prediction mode, according to which the pixel is predicted from at least one other previously decoded pixel, said other previously decoded pixel belonging to a previously decoded block of the current block or image; - decoding from the data stream an item of information indicating whether the pixel is predicted according to a second prediction mode in which the pixel is predicted using a prediction resulting from said group of pixel values that are constant within the block; if the item of information indicates that the pixel is predicted according to the second prediction mode, selecting values for said group; replacing the predicted value associated with a pixel with the selected value; reconstructing a pixel using a prediction value associated with said pixel and a prediction residual.
[0017] Correlatively, the invention also relates to a method for coding a data stream representative of at least one image divided into blocks, such a coding method comprising the steps of: - determining a group of pixel values that are constant within a block from previously decoded pixels; -For each pixel in the block, determining a prediction value associated to a pixel according to a first prediction mode, according to which the pixel is predicted by a prediction value associated to the pixel determined from at least one other previously decoded pixel, said other previously decoded pixel belonging to said current block or a previously decoded block of the image; determining a prediction mode for a pixel from a first prediction mode and a second prediction mode in which the pixel is predicted using a prediction resulting from said group of pixel values that are constant within the block; - coding in the data stream an item of information indicating whether or not a pixel is predicted according to a second prediction mode; if the item of information indicates that the pixel is predicted according to the second prediction mode, selecting values for said group; replacing the predicted value associated with a pixel with the selected value; calculating a prediction residual associated with a pixel using a prediction value associated with said pixel and the value of said pixel; - coding a prediction residual associated with said pixel in a data stream; reconstructing said pixel using a prediction value associated with said pixel and a coded prediction residual.
[0018] The invention therefore improves the compression performance of a coding mode using local prediction by neighbouring pixels of a pixel to be coded. Advantageously, a group of pixel values is determined which represents the values of neighbouring pixels of the block to be coded. For example, this group comprises a predefined number of pixel values which are most frequent among the neighbouring pixels of the block to be coded. Typically, this group of values may comprise the intensity values of an image layer, for example in the case of a composite image, where the image is represented in layers or comprises regions with separated foreground and background, such as black text on a white background.
[0019] According to a particular embodiment of the invention, the group of values comprises two values representing the two most frequent values in the neighborhood of the block.
[0020] When a pixel is detected that lies in a transition region, its predicted value is changed to one of the values of the group so determined.
[0021] The value of such a group is said to be constant within the current block, since it is determined only once for all pixels of the current block.
[0022] According to a particular embodiment of the invention, the value of the group is selected according to the distance of a predicted value associated to said pixel and determined according to a first prediction mode, with respect to a constant pixel value of the group.
[0023] This particular embodiment of the present invention allows for the expedient selection of predicted values for groups of pixels located in transition regions, without requiring additional information to be transmitted to indicate this selection.
[0024] According to another particular embodiment of the invention, the group comprises a first value and a second value, and if the distance between the predicted value associated with said pixel and the first value is smaller than the distance between the predicted value associated with said pixel and the second value, the selected value of the group is the first value, otherwise the selected value of the group is the second value.
[0025] According to another particular embodiment of the invention, an item of information indicating whether a pixel is predicted according to the second prediction mode is decoded from or coded into the data stream only if the prediction residual of the pixel is different from 0.
[0026] This particular embodiment avoids coding an item of information indicating a prediction according to the second prediction mode if the prediction residual is different from 0. Thus, according to this particular embodiment, in the decoder, the first prediction mode is used by default to predict the current pixel.
[0027] This particular embodiment of the invention avoids unnecessary information being coded by the encoder: in fact, in the encoder, if the prediction according to the first prediction mode results in a zero prediction residual, i.e. an optimal prediction, then the item of information indicating that the second prediction mode is not used for the current pixel is implicit.
[0028] Such a particular embodiment of the invention can be implemented in an encoder by a previous step consisting of calculating a prediction residual from a prediction resulting from a first prediction mode, or by a step consisting of determining whether the original value of the pixel to be coded is far from the predicted value resulting from the first prediction mode.
[0029] According to another particular embodiment of the invention, the determination of the group of pixel values that are constant within a block from previously decoded pixels is performed by calculating a histogram of values of neighboring pixels of the previously reconstructed current block and by selecting at least two pixel values that respectively represent the two most frequent pixel values among the neighboring pixels of the current block.
[0030] According to another particular embodiment of the invention, the threshold value is determined from at least one value of said group of pixel values that are constants within a block from previously decoded pixels. - if the original value of said pixel is greater than said threshold and the threshold is greater than a predicted value associated with the pixel determined according to a first prediction mode, or the second prediction mode is selected if the original value of said pixel is smaller than said threshold value and the threshold value is smaller than the predicted value associated with the pixel determined according to the first prediction mode;
[0031] The invention also relates to a device for decoding a coded data stream representative of at least one image divided into blocks. Such a decoding device comprises, for at least one block of the image, called the current block, - determining a group of pixel values that are constant within a block from previously decoded pixels; -For each pixel in the block, - decoding a prediction residual associated with said pixel; determining a prediction value associated with a pixel from at least one other previously decoded pixel, said other previously decoded pixel belonging to said current block or a previously decoded block of an image; determining from the data stream an item of information indicative of whether a pixel is predicted using a prediction resulting from said group of pixel values that are constant within a block; If the item of information indicates that the pixel is predicted using a prediction that originates from a group of pixel values that are constant within the block, selecting a value for said group; replacing the predicted value associated with a pixel with the selected value; reconstructing the pixel using a prediction value associated with the pixel and a prediction residual.
[0032] According to a particular embodiment of the invention, such a decoding device is comprised in a terminal.
[0033] The invention also relates to a device for coding a data stream representative of at least one image divided into blocks. Such a coding device determines, for at least one block of the image, called the current block, - determining a group of pixel values that are constant within a block from previously decoded pixels; -For each pixel in the block, determining a prediction value associated to a pixel according to a first prediction mode, according to which the pixel is predicted from at least one other previously decoded pixel, said other previously decoded pixel belonging to said current block or a previously decoded block of an image; determining a prediction mode for a pixel from a first prediction mode and a second prediction mode in which the pixel is predicted using a prediction resulting from said group of pixel values that are constant within the block; - coding in the data stream an item of information indicative of whether a pixel is predicted according to a second prediction mode; if the item of information indicates that the pixel is predicted according to the second prediction mode, selecting a value for said group; replacing the predicted value associated with a pixel with the selected value; calculating a prediction residual associated with a pixel using a prediction value associated with the pixel and the value of the pixel; coding a prediction residual associated with said pixel in a data stream; reconstructing the pixel using a prediction value associated with the pixel and a coded prediction residual.
[0034] According to a particular embodiment of the invention, such a coding device is comprised in a terminal or in a server.
[0035] The invention also relates to a data stream representing at least one image divided into blocks. Such a data stream comprises, for at least one block of the image, called a current block, and for each pixel of said current block: an item of information representative of a prediction residual associated with said pixel; an item of information indicating whether the pixel is predicted using a prediction resulting from a constant group of pixel values in the block, the constant group of pixel values in the block being determined from previously decoded pixels.
[0036] The decoding method, respectively the coding method according to the invention can be implemented in various ways, in particular in wired or software form. According to a particular embodiment of the invention, the decoding method, respectively the coding method is implemented by a computer program. The invention also relates to a computer program comprising instructions for implementing the decoding method or the coding method according to any one of the particular embodiments described above, when executed by a processor. Such a program can use any programming language. Any programming language can be downloaded from a communication network and / or recorded on a computer readable medium.
[0037] The program may use any programming language and may be in the form of source code, object code, or any intermediate code between source code and object code, such as a partially compiled form, or any other desired form.
[0038] The invention also relates to a computer-readable storage medium or data medium comprising instructions of a computer program as described above. Said storage medium may be any entity or device capable of storing a program. For example, the medium may comprise a storage means such as a memory. On the other hand, the storage medium may correspond to a transmissible medium such as an electrical or optical signal that may be conveyed by radio or other means, via an electrical or optical cable. The program according to the invention may in particular be downloaded onto an Internet-type network.
[0039] Alternatively, the recording medium may correspond to an integrated circuit in which the program is embedded, the circuit being adapted to perform, or be used for the performance of, the method of interest.
[0040] Other characteristics and advantages of the invention will become more clearly apparent on reading the following description of particular embodiments, given as a simple, illustrative and non-limiting example, and the accompanying drawings, in which: [Brief description of the drawings]
[0041] [Figure 1] FIG. 3 illustrates steps of an encoding method according to a particular embodiment of the invention. [Figure 2A] FIG. 2 illustrates an example of a portion of an encoded data stream in accordance with certain embodiments of the present invention. [Figure 2B] FIG. 4 illustrates an example of a portion of a coded data stream in accordance with another particular embodiment of the present invention. [Figure 3A]FIG. 2 illustrates an example of the positions of neighboring blocks of a current block for determining an intra-prediction mode, according to a particular embodiment of the present invention. [Figure 3B] FIG. 2 illustrates an example of the locations of reference pixels used to predict pixels of a current block according to a particular embodiment of the invention; [Figure 4] FIG. 3 illustrates steps of a decoding method according to a particular embodiment of the invention. [Diagram 5] FIG. 2 illustrates an example of blocks comprising content, such as a screen, each having two layers of content, and their respective neighborhoods in an image, in accordance with certain embodiments of the present invention. [Figure 6] FIG. 2 illustrates an example of a 16×16 block with content, such as a screen with two layers of content, and a transition map indicating the transition states of the pixels in that block, in accordance with certain embodiments of the present invention. [Figure 7] FIG. 2 shows a simplified structure of a coding device adapted to implement a coding method according to any one of the particular embodiments of the present invention. [Figure 8] FIG. 2 shows a simplified structure of a decoding device adapted to implement a decoding method according to any one of the particular embodiments of the present invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0042] 5.1 General principles The invention improves the coding mode of blocks of an image using local prediction of the pixels of the block located at the transition between pixel values of two very different levels.
[0043] The coding mode of a block coded using local prediction makes it possible to use reference pixels belonging to the block coded to predict other pixels of the block coded. This prediction mode reduces the prediction residual by using pixels of blocks that are spatially very close to the pixel coded.
[0044] However, this coding introduces relatively large coding residuals when the original pixel is far away from the prediction. This is usually the case for content such as screenshots or synthetic images. In this type of content, strong discontinuities may occur in the blocks to be coded. In this case, a reference pixel belonging to the background may be used to predict pixels of the same block that belong to the foreground and vice versa. In this case, the item of information available in the reference pixel is not suitable for an accurate prediction. In the following, pixels located on the boundary between background and foreground regions are called transition pixels.
[0045] Advantageously, the invention proposes to derive for the block to be coded an item of information related to each layer of the image, for example an item of information related to the foreground and an item of information related to the background, in which case only two layers are taken into account. Of course, additional layers of content can be taken into account, increasing the number of items of information derived. For example, the derivation of such information consists in determining a group of pixel values that are constant within the block.
[0046] According to a particular embodiment of the invention, this information relating to each layer of the image is derived from the local neighborhood of the block being coded.
[0047] Advantageously, this information is used in combination with a mechanism for detecting transition pixels within the block being coded, thereby reducing the residual energy of such pixels.
[0048] Fig. 5 shows blocks with content (Bi-bl), such as a screen, each having two layers of content, and their respective neighborhoods (Neigh) in the image. As shown in Fig. 5, the local neighborhood of the current block to be coded contains useful information related to the intensity levels of the two layers.
[0049] According to the invention, when transition pixels within a block to be coded are detected, the predicted values of these pixels are corrected using the intensity level of the layer corresponding to the layer to which the pixel is likely to belong.
[0050] According to a particular embodiment of the invention, in order to make an optimal prediction for each pixel of a block and to limit the rate cost, such a mechanism is restricted to pixels that satisfy certain conditions.
[0051] According to the local neighborhood of the predicted pixel, three states of the predicted pixel can be defined. -s1: the pixel belongs to a homogeneous region where local prediction from neighboring pixels is very efficient, for example providing a zero quantized prediction residual. In this case the pixel is not a transition pixel. According to a variant of an embodiment, this situation can be detected implicitly in the decoder. -s2: The pixel belongs to a region where local prediction from neighboring pixels is reasonably efficient, e.g. providing a low prediction residual. For this pixel, prediction of the pixel by the above correction mechanism is possible, but if the residual prediction error is not large enough compared to a threshold determined according to the intensity level of the layer, the correction mechanism is not applied. In this case, the indicator is specially coded to indicate that the correction mechanism is not used. -s3: The pixel belongs to a region where local prediction from neighboring pixels is inefficient, e.g., provides a large prediction residual. Prediction of the pixel by the correction mechanisms described above is allowed for that pixel, and an indicator is specially coded to indicate its use.
[0052] Figure 6 shows, on the left, an example of a 16x16 block with light text on a dark background, and, on the right, a transition map for this block, showing how the above states can be assigned to the pixels of the block.
[0053] 5.2 Embodiment FIG. 1 illustrates the steps of a coding method according to a particular embodiment of the invention. For example, images I1, I2, ..., I Nb is coded in the form of a coded data stream STR according to a particular embodiment of the invention, for example, such a coding method being implemented by a coding device as described below in connection with FIG.
[0054] Nb is the number of images in the sequence to be coded, images I1, I2, ..., I Nb is provided as input to a coding method which outputs a coded data stream STR representative of the sequence of images provided as input.
[0055] In a known manner, images I1, I2, ..., I Nb The coding of the sequence is done picture by picture according to a coding order that is pre-established and known to the encoder. For example, the pictures are arranged in the temporal order I1, I2, ..., I Nb , or another order, e.g., I1, I3, I2, …, I Nb It can be coded as:
[0056] In step E0, images I1, I2, ..., I Nb Image I to be coded from the sequence j is divided into blocks, e.g., of size 32x32, 64x64 pixels or larger. Such blocks may be subdivided into square or rectangular sub-blocks, e.g., 16x16, 8x8, 4x4, 16x8, 8x16.
[0057] In step E1, image I j The first block or sub-block X to be coded b But image I j The first block is selected according to a predetermined scan order of the image, for example the first block in a lexicographical scan order of the image.
[0058] In step E2, the encoder calculates the current block X b Select the coding mode to code the
[0059] According to a particular embodiment described herein, the encoder selects a first coding mode M1 and a second coding mode M2 for the current block X b Select the coding mode to use to code A. Additional coding modes (not described here) can be used.
[0060] According to certain embodiments described in this specification, the first coding mode M1 corresponds to conventional intra-predictive coding of the current block, e.g. as defined according to the HEVC standard, and the second coding mode M2 corresponds to in-loop residual (ILR) or DPCM predictive coding as described below.
[0061] The principles of the present invention can be extended to other types of coding modes for the first coding mode M1, for example, the first coding mode can correspond to any type of coding mode that uses transformation of prediction residuals (inter-picture predictive coding, spatial prediction with template matching coding, etc.).
[0062] In step E2, the encoder may perform a rate / distortion optimization to determine the optimal coding mode for coding the current block. During this rate / distortion optimization, additional coding modes different from the first and second coding modes, for example inter-mode coding modes, may be tested. During this rate / distortion optimization, the encoder may test the coding modes for the current block X according to the various available coding modes to determine the rate and distortion associated with each coding mode. band select the coding mode that provides the best rate / distortion compromise, e.g., according to a D+λ×R function, where R is the rate required to code the current block according to the evaluated coding mode, D is the distortion measured between the decoded block and the original current block, and λ is a Lagrange multiplier, e.g., input by a user or defined in the encoder.
[0063] At step E20, an item of information indicating the coding mode selected for the current block is coded in the data stream STR.
[0064] Current Block X b If the current block X is coded according to the first coding mode M1, the method proceeds to step E21 for coding the block according to M1. b If is coded according to the second coding mode M2, the method proceeds to step E22 for coding the block according to M2.
[0065] A step E21 for coding a block according to a first coding mode M1 according to a particular embodiment of the invention is described below. According to the particular mode described herein, the first coding mode corresponds to a conventional intra prediction such as that defined in the HEVC standard.
[0066] In step E210, a quantization step δ1 is determined. For example, the quantization step δ1 may be set by the user, or may be calculated using a quantization parameter that sets a compromise between compression and quality and entered by the user or defined by the encoder. Such a quantization parameter may thus be the parameter λ used in the rate-distortion cost function D+λ×R, where D represents the distortion introduced by the coding and R represents the rate used for coding. This function is used to make the coding choice. Usually, a method of coding an image that minimizes this function is sought.
[0067] As a variant, the quantization parameter can be a QP corresponding to the quantization parameter conventionally used in the AVC or HEVC standard. Thus, in the HEVC standard, the quantization step δ1 is determined by the formula δ1=levelScale[QP%6]<<(QP / 6), where levelScale[k]={40, 45, 51, 57, 64, 72} for k=0..5.
[0068] In step E211, a prediction of the current block is determined using a conventional intra prediction mode, according to which each predicted pixel is calculated only from decoded pixels obtained from neighboring blocks (reference pixels) located above and to the left of the current block. The way in which pixels are predicted from the reference pixels depends on the prediction mode transmitted to the decoder and is selected by the encoder from a predefined set of modes known to the encoder and the decoder.
[0069] Thus, HEVC has 35 possible prediction modes: 33 modes that interpolate reference pixels in 33 different angular directions, and two other modes: DC mode, where each pixel of the prediction block is generated from the average of the reference pixels, and PLANAR mode, which performs planar and non-directional interpolation. This "conventional intra prediction" is well known and is used in the ITU-T H.264 standard (which has only 9 different modes), as well as in the experimental JEM software available at the Internet address (https: / / jvet.hhi.fraunhofer.de / ), which has 67 different prediction modes. In all cases, conventional intra prediction emphasizes the two aspects mentioned above: prediction of the pixels of the block to be coded from the pixels of neighboring blocks and transmission of the optimal prediction mode to the decoder.
[0070] Thus, in step E211, the encoder selects one of the available prediction modes from a predefined list of prediction modes. One way to select is, for example, to evaluate all prediction modes and to keep the prediction mode that minimizes a cost function, such as classically the rate-distortion cost.
[0071] In step E212, the prediction mode selected for the current block is coded from the neighboring blocks of the current block. b For coding the prediction mode of the current block X b Adjacent block A of b and B. b 1 shows an example of the position of
[0072] In step E212, the intra prediction mode selected for the current block is coded using the intra prediction modes associated with the neighbouring blocks.
[0073] For example, a technique described in the HEVC standard for coding the prediction mode of a current block can be used. In the example of FIG. 3A, such a technique is used to code the prediction mode of a block A located above the current block. b The intra prediction mode m associated with A , and block B, which is located immediately to the left of the current block. b The intra prediction mode m associated with B m A and m B Depending on the value of , a list called MPM (Most Probable Mode) containing 3 intra prediction modes and a list called non-MPM containing 32 other prediction modes are created.
[0074] According to the HEVC standard, a syntax element is transmitted to code the intra-prediction mode of the current block. - a binary indicator showing whether the prediction mode to be coded for the current block is in the MPM list; - if the prediction mode of the current block belongs to the MPM list, the index in the MPM list corresponding to the prediction mode of the current block is coded; - If the prediction mode of the current block does not belong to an MPM list, the index in the non-MPM list corresponding to the prediction mode of the current block is coded.
[0075] In step E213, a prediction residual R for the current block is constructed.
[0076] In step E213, in the standard way, a predicted block P is constructed according to the prediction mode selected in step E211. A prediction residual R is then obtained by calculating the pixel-by-pixel difference between the predicted block P and the original current block.
[0077] In step E214, the prediction residual R is T is converted to
[0078] In step E214, the frequency transformation is carried out to obtain a block R T is applied to the residual block R to generate a transform, which may for example be a DCT type transform. T It is possible for the decoder to select the transformation to be used from among
[0079] In step E215, the transformed residual block R T is quantized using, for example, a quantization step scalar quantization δ1, resulting in a quantized transformed prediction residual block R TQ is generated.
[0080] At step E216, the quantized block R TQ The coefficients of are coded by an entropy encoder. For example, the entropy coding specified in the HEVC standard can be used.
[0081] In a known manner, the current block is a quantized block R TQ The current block is decoded by inverse quantizing the coefficients of the current block, and then applying an inverse transform to the inverse quantized coefficients to obtain a decoded prediction residual. A prediction is then added to the decoded prediction residual to reconstruct the current block and obtain its decoded version. The decoded version of the current block can then be used later to spatially predict other neighboring blocks of the image, or to predict blocks of other images by inter-image prediction.
[0082] A step E22 for coding a block according to a second coding mode M2 according to a particular embodiment of the invention is described below. According to the particular embodiment described herein, the second coding mode corresponds to an ILR predictive coding.
[0083] In the previous step E220, the quantization step δ2 is determined, for example depending on the same quantization parameter as the quantization step δ1 that would be determined in step E210 if the current block was coded according to the first coding mode.
[0084] According to the invention, in this coding mode, the pixels of the current block can be predicted according to a first prediction mode or according to a second prediction mode.
[0085] According to the first prediction mode, the pixels of the current block are predicted by previously reconstructed pixels of the neighboring blocks of the current block and / or previously processed pixels of the current block itself. Preferably, to predict a pixel, a pixel is selected that is as close as possible to the pixel to be predicted. This is why it is called a local predictor.
[0086] According to a second prediction mode, the pixels of the current block are predicted by a level value of a layer selected, for example, by a group of values determined from a neighborhood of the current block.
[0087] In step E221, a group of pixel values that are constant within the block is determined from previously decoded pixels. Several reconstruction levels of the current block are determined, for example two called f and b. These levels are constructed by analyzing the values obtained by the reference pixels of the current block, i.e. pixels from previously processed blocks that neighbor the current block. There are several techniques for determining the levels f and b. It is thus possible to calculate a histogram of the values of the reference pixels and to assign to b the most frequent value and to f the second most frequent value. Another approach is to identify the maxima of the histogram, i.e. maxima surrounded by smaller values. Thus, the highest maxima are assigned to level f and the second highest maxima to level b.
[0088] Furthermore, according to a particular embodiment of the present invention, a threshold value thr is determined, which is typically halfway between f and b;
[0089]
number
[0090] In an alternative embodiment,
[0091]
number
[0092] can also be chosen where dyn is the maximum value of the signal.
[0093] A variation of the above embodiment for determining groups of pixel values that are constant within a block allows for implicit detection of image layers that can also be implemented in the decoder without the need to transmit additional information.
[0094] For example, to limit the complexity of image layer detection, the direct neighborhood of the current block is used, eg, only pixels in the left column and the row above the current block are used.
[0095] According to another variant, more than two values can be determined, for example by considering the following maxima of the histogram:
[0096] The values f and b so determined correspond to values of a group of values used for the second prediction mode.
[0097] The following steps are performed for each pixel in the current block.
[0098] In step E2201, a local predictor PL of the pixel considered is determined, which corresponds to a predictor obtained according to a first prediction mode.
[0099] The local predictor PL can be defined as: b As shown in FIG. 3B, which shows the current pixel to be predicted in the current block, let X be the pixel immediately to the left of X, B be the pixel immediately to the left and above X, and C be the pixel immediately above X. The local predictor PL is defined as follows: PL(X) = min(A,B) if C ≥ max(A,B) max(A,B) if C≦min(A,B) A+BC otherwise where min(A,B) corresponds to a function that returns the minimum value between the values of A and B, and max(A,B) corresponds to a function that returns the maximum value between the values of A and B.
[0100] Other local prediction functions can be used. According to another variant, several local prediction functions are available and the same local prediction function is selected for all pixels of the current block. For example, the texture direction of pixels of previously coded neighboring blocks is analyzed. For example, previously coded pixels in neighboring blocks located above or to the left of the current block are analyzed using a Sobel type operator. - if it is determined that the direction does not appear, the prediction function is the one defined above, - If the direction is determined to be horizontal, the prediction function is PL(X)=A, - If the direction is determined to be vertical, the prediction function is PL(X)=B, - If the orientation is determined to be diagonal, then the prediction function is PL(X)=C.
[0101] Thus, the predicted value PL(X) associated with the current pixel X of the current block is obtained according to the pixel's position in the current block, using already reconstructed pixels outside the block (and therefore available in their decoded values) and / or previously reconstructed pixels in the current block. In all cases, the predictor PL uses previously reconstructed pixels. In FIG. 3B, it can be seen that the pixels of the current block located in the first row and / or first column of the current block use as reference pixels (to build the predicted value PL(X)) already reconstructed pixels outside the block (gray pixels in FIG. 3B) and possibly already reconstructed pixels of the current block. For other pixels of the current block, the reference pixels used to build the predicted value PL(X) are located within the current block.
[0102] In step E2202, a prediction mode is determined from the first prediction mode and the second prediction mode to use for predicting the current pixel.
[0103] According to a specific embodiment of the present invention, when PL(X) < thr < X or PL(X) > thr > X, the second prediction mode is selected. In other words, - when the original value X of the pixel is greater than the threshold thr and the threshold thr is greater than the predicted value PL(X) associated with the pixel determined according to the first prediction mode, or - when the original value X of the pixel is less than the threshold thr and the threshold thr is less than the predicted value PL(X) associated with the pixel determined according to the first prediction mode, the second prediction mode is selected.
[0104] When any of the above conditions is satisfied, the state of the predicted pixel is s = 3, and the encoder proceeds to the next step E2203.
[0105] In step E2203, an indicator t indicating that the predicted pixel is predicted according to the second prediction mode is set to, for example, 1 and encoded in the data stream STR by, for example, entropy coding or transmitted as is in the stream.
[0106] In step E2204, the value of the group of values determined in step E221 is selected to predict the current pixel.
[0107] According to a specific embodiment of the present invention, the value of the group is selected according to the distance from the predicted value associated with the pixel determined according to the first prediction mode to the group pixel value determined in step E221. For example, when the distance between the predicted value PL(X) associated with the pixel by the first prediction mode and the value b of the group is smaller than the distance between the predicted value PL(X) associated with the pixel by the first prediction mode and the value f, the selected value is b; otherwise, the selected value is f.
[0108] For example, the L1 or L2 norm can be used as the distance measurement.
[0109] Therefore, if |PL(X)-b|<|PL(X)-f|, then PL(X)=b, otherwise PL(X)=f.
[0110] The method then proceeds to step E2205.
[0111] If in step E2202 it is determined that the current pixel is not predicted according to the second prediction mode, the current pixel is predicted according to the first prediction mode. Thus, the predicted value PL(X) associated with the current pixel and obtained according to the first prediction mode is not modified. Thus, the current pixel is in state s=1 or s=2.
[0112] In step E2205, a prediction residual R1(X) is calculated for the current pixel as the difference between the original value X of the current pixel and a predicted value PL(X) associated with the current pixel, i.e. R1(X)=X−PL(X), where the predicted value PL(X) could have been obtained either by the first prediction mode or by the second prediction mode.
[0113] The prediction residual R1(X) is then quantized to Q(X) by a quantization step scalar quantizer δ2 with Q(X)=ScalarQuant(R1(X))=ScalarQuant(δ2,X-PL(X)), where the scalar quantization is, for example,
[0114]
number
[0115] where Δ is the quantization step and x is the value to be quantized.
[0116] Q(X) is the quantized residual associated with X. Q(X) is calculated in the spatial domain, i.e., directly from the difference between the predicted value PL(X) of pixel X and the original value of X. Such a quantized residual Q(X) of pixel X is included in the quantized prediction residual block R1. Q and later coded.
[0117] In step E2206, the decoded prediction P1(X) of X is calculated by adding the dequantized value of the quantized residual Q(X) to the prediction PL(X). The decoded prediction P1(X) of X is thus obtained by P1(X)=PL(X)+ScalarDequant(δ2,Q(X)). For example, the closest scalar quantization inverse function is given by ScalarDequant(Δ,x)=Δ×x.
[0118] The decoded prediction value P1(X) therefore makes it possible to predict the pixels that are likely to continue to be processed in the current block.
[0119] Furthermore, a block P1 can be defined that comprises the decoded / reconstructed values P1(X) of the pixels of the current block, such that block P1 is an ILR predictor of the current block (as opposed to a traditional intra predictor).
[0120] According to a particular embodiment of the invention, in step E2207, if the quantized prediction residual Q1(X) is not zero, in other words if the amplitude a of the quantized prediction residual Q1(X) is not zero, then the indicator t is for example set to 0 and coded in the data stream STR. In this case, the current pixel is considered to be in state s=2.
[0121] According to this particular embodiment of the invention, if the quantized prediction residual Q1(X) is zero, i.e. if the amplitude a of the quantized prediction residual Q1(X) is zero, the indicator t is also set to 0, since the current pixel is not predicted by the second prediction mode, but the indicator t is not coded in the data stream STR. This prediction mode is implicitly deduced in the decoder from the decoded value of the amplitude of the quantized prediction residual Q1(X). In this case, the current pixel is considered to be in state s=1. In this case, the method proceeds directly from step E2206 to step E223.
[0122] Of course, in practice, if it is explicitly coded (s=2 or s=3), the indicator t is coded in the data stream after the quantized prediction residual Q1(X) is coded.
[0123] According to another particular embodiment of the invention, the indicator t is set to 0 and is systematically coded in step E2207 for each pixel in the data stream STR, regardless of the value of the amplitude a of the prediction residual Q1(X). Thus, at the decoder, by reading the indicator t, it is explicitly determined by the decoder whether the current pixel is predicted according to the second prediction mode or not, regardless of the value of the quantized prediction residual. In this case, no distinction is made whether the pixel is in state s=1 or state s=2.
[0124] According to a variant, in this particular embodiment of the invention, the indicator t is systematically coded, so that in step E2202, the decision of a prediction mode from the first and second prediction modes to use for predicting the current pixel can be made, for example, by comparing a distance measure between the prediction value provided by the first prediction mode and the original value X of the current pixel and a distance measure between the prediction value provided by the second prediction mode and the original value X of the current pixel.
[0125] The above steps are performed for all pixels of the current block in a scan order that ensures that the pixels used for local prediction are available.
[0126] According to one embodiment variant, the scanning order of the current block is lexicographical, ie from left to right and top to bottom.
[0127] According to another embodiment variant, several scanning orders of the current block, e.g. - lexicographical order, or - Scan the first column from top to bottom, then the column immediately to the right, etc., or - Scanning the diagonals one after the other, can be used.
[0128] According to this further variant, it is possible to simulate the coding costs associated with each of the scanning orders, to select the scanning order that is optimal for the current block in terms of rate / distortion, and then to code an item of information representative of the selected scanning order for the current block.
[0129] At the end of step E2205, the quantized residual block R1 Q This quantized residual block R1 Q needs to be coded to be sent to the decoder. The predictor P1 for the current block has also been determined.
[0130] In step E223, the quantized residual block R1 Q is coded for transmission to the decoder. Any known technique can be used to code the quantized coefficients of the conventional prediction residual, such as the methods described in HEVC.
[0131] In standard methods, each quantized prediction residual Q1(X) of the current block is decomposed into an amplitude value a, if the amplitude a is different from 0, and a sign indicator sgn.
[0132] According to a particular embodiment of the invention described herein, the quantized residual block R1 Q The amplitude and sign values of are coded using an entropy encoder in the data stream STR.
[0133] According to a particular embodiment of the invention, it is possible to determine and code an additional prediction residual R2 from the ILR predictor obtained for the current block. However, coding of the additional prediction residual R2 is optional. Q It is certainly possible to simply code the current block by
[0134] To code the additional prediction residual R2 of the current block, the following procedure is performed.
[0135] In step E224, the predictor P1 and the original current block X are used to form an additional residual R2. b The difference R2 between is calculated: R2 = X b -P1. The following steps correspond to the conventional coding steps of this residual R2:
[0136] In step E225, the residual R2 is T is transformed using a frequency transform to generate
[0137] The transformation may for example be a DCT type transformation. A set of predefined transformations E T2 It is possible to select the transformation to be used from the set E to match the particular statistics of the residual R2. T2 Set E T may differ.
[0138] At step E226, the block of coefficients R2 T is quantized using, for example, a quantization step scalar quantization δ. This results in block R2 TQis generated.
[0139] The quantization step δ can be set by the user, or it can be calculated using a parameter λ that sets a tradeoff between compression and quality and input by the user or the encoder. For example, the quantization step δ can correspond to or be determined similarly to the quantization step δ1.
[0140] Then, in step E227, the quantized block R2 TQ The coefficients of are transmitted in a coded manner. For example, the coding specified in the HEVC standard can be used.
[0141] In a known manner, the current block is a quantized block R2 TQ The current block is decoded by inverse quantizing the coefficients of X, and then applying an inverse transform to the inverse quantized coefficients to obtain a decoded prediction residual. The current block is then reconstructed and its decoded version X rec The prediction P1 is added to the decoded prediction residual to obtain the prediction P2. The decoded version X of the current block is then used to spatially predict other neighboring blocks of the image or to predict blocks of other images by inter-image prediction. rec can be used later.
[0142] In step E23 it is checked whether the current block is the last block of the image to be processed by the coding method, taking into account the predefined scanning order. If the current block is not the last block of the image to be processed, in step E24 a subsequent block of the image to be processed is selected according to the predefined image scanning order and the coding method proceeds to step E2, where the selected block becomes the current block to be processed.
[0143] If all blocks of the image have been coded, the method proceeds to the application of a post-processing method applied to the reconstructed image in step E231. For example, such a post-processing method may be a deblocking filtering and / or a SAO (Sample Adaptive Offset) method, as defined in the HEVC standard.
[0144] The method then proceeds to the coding of the next image of the video, if there is one (step E25).
[0145] 2A and 2B show diagrammatically parts of a data stream resulting from such encoding according to different particular embodiments of the invention.
[0146] FIG. 2A shows an example of a stream of three pixels (X1, X2, X3) of a block of an image coded according to a particular embodiment of the invention, where it has been determined that pixel X1 is considered to be in state s=3, pixel X2 is considered to be in state s=2, and pixel X3 is considered to be in state s=1.
[0147] According to the variant described herein, it can be seen that the coded data for pixel X1 are the amplitude value of the quantized prediction residual a(X1), its sign sgn(X1) and the value of the indicator t, which is set to 1. The coded data for pixel X2 are the amplitude value of the quantized prediction residual a(X2), its sign sgn(X2) and the value of the indicator t, which is set to 0. For X2, the amplitude value of the quantized prediction residual is different to 0 and the indicator t, which is set to 0, is explicitly coded in the stream.
[0148] The data coded for pixel X3 is the amplitude value of the quantized prediction residual a(X3), which is zero. In this case, since the amplitude value of the quantized prediction residual is different from 0, the indicator t set to 0 is not explicitly coded in the stream, but is implicitly inferred in the decoder.
[0149] FIG. 2B shows an example of a stream of three pixels (X1, X2, X3) of a block of an image coded according to another particular embodiment of the present invention, where it has been determined that pixel X1 is considered to be in state s=3, pixel X2 is considered to be in state s=2, and pixel X3 is considered to be in state s=1.
[0150] According to the variant described herein, it can be seen that the coded data for pixel X1 are the amplitude value of the quantized prediction residual a(X1), its sign sgn(X1) and the value of indicator t, which is set to 1. The coded data for pixel X2 are the amplitude value of the quantized prediction residual a(X2), its sign sgn(X2) and the value of indicator t, which is set to 0.
[0151] The data coded for pixel X3 is the amplitude value of the quantized prediction residual a(X3), which is zero, and indicator t is set to 0.
[0152] FIG. 4 illustrates images I1, I2, ..., I Nb 4 illustrates method steps for decoding a stream of coded data STR representing a sequence of
[0153] For example, the data stream STR has been generated via the coding method illustrated in relation to figure 1. The data stream STR is provided as input to a decoding device DEC, as will be explained in relation to figure 8.
[0154] The decoding method decodes the stream images picture by picture, and each image is decoded block by block.
[0155] In step E40, the image I to be decoded is j is subdivided into blocks. Each block undergoes a decoding operation consisting of a series of steps detailed below. The blocks may be of the same size or of different sizes.
[0156] In step E41, image I j The first block or sub-block X to be decoded b But image I j A block is selected as the current block according to a predetermined scan order of the image, for example the first block in the lexicographical scan order of the image.
[0157] In step E42, an item of information indicating the coding mode of the current block is read from the data stream STR. According to a particular embodiment described herein, this item of information indicates whether the current block is coded according to a first coding mode M1 or according to a second coding mode M2. According to a particular embodiment described herein, the first coding mode M1 corresponds to a conventional intra-predictive coding of the current block, for example as defined according to the HEVC standard, and the second coding mode M2 corresponds to an in-loop residual (ILR) predictive coding.
[0158] In other particular embodiments, the item of information read from the stream STR may also indicate the use of other coding modes for coding the current block (not described here).
[0159] The step E43 for decoding the current block when it has been coded according to the first coding mode M1 is described below.
[0160] In step E430, the quantization step δ1 is determined. For example, the quantization step δ1 is determined from the quantization parameter QP transmitted in the data stream STR or as done in the encoder. For example, the quantization parameter QP may be a quantization parameter conventionally used in the AVC or HEVC standard. Thus, in the HEVC standard, the quantization step δ1 is determined by the formula δ1=levelScale[QP%6]<<(QP / 6), where levelScale[k]={40, 45, 51, 57, 64, 72} for k=0..5.
[0161] In step E431, the prediction mode selected for coding the current block is decoded from the neighboring blocks. For this purpose, as done in the encoder, the intra prediction mode selected for the current block is coded using the intra prediction modes associated with the neighboring blocks of the current block.
[0162] The construction of both MPM and non-MPM lists is exactly the same as that done during encoding. According to the HEVC standard, the following types of syntax elements are decoded: - a binary indicator showing whether the prediction mode to be coded for the current block is in the MPM list; - if the prediction mode of the current block belongs to the MPM list, the index in the MPM list that corresponds to the prediction mode of the current block is read; - If the prediction mode of the current block does not belong to an MPM list, the index in the non-MPM list that corresponds to the prediction mode of the current block is read.
[0163] Thus, a binary indicator and a prediction mode index are read for the current block from the data stream STR to decode the intra-prediction mode of the current block.
[0164] In step E432, the decoder constructs a prediction block P of the current block from the decoded prediction mode.
[0165] In step E433, the decoder extracts the quantized block R from the data stream STR, for example using the decoding specified in the HEVC standard. TQ Decode the coefficients of
[0166] In step E434, the decoded block RTQ is dequantized, for example using a quantization step scalar dequantization δ1, so that the dequantized coefficients R TQD blocks are generated.
[0167] In step E435, an inverse frequency transform is performed on the decoded prediction residual block R TQDI To generate the inverse quantization coefficient R TQD The transformation can be, for example, an inverse DCT type transformation. The transformation E is applied to the blocks of TI It is possible to select the transformation used from a predefined set of:
[0168] At step E436, the current block is decomposed into the prediction block P obtained at step E432 and the decoded residual block R obtained at step E435. TQDI From X rec =P+R TQDI The current block X decrypted by rec is reconstructed to produce
[0169] The step E44 for decoding the current block when it is coded according to the second coding mode M2 is described below.
[0170] In step E440, the quantization step δ2 is determined, similarly to what was done in the encoder.
[0171] According to the invention, in this coding mode M2, the pixels of the current block can be predicted according to the first prediction mode or the second prediction mode already presented in relation to FIG.
[0172] In step E441, a group of constant pixel values within the block is determined from previously decoded pixels of the image, as was done in the encoder. It is assumed that the level values f and b have been determined.
[0173] The following steps are performed for each pixel in the current block.
[0174] In step E4411, a prediction value for the current pixel according to the first prediction mode is determined. For this purpose, the same local predictor PL as in the encoder is used. If several local predictors are possible, the local predictor PL is determined in the same way as in the encoder.
[0175] In step E442, the quantized residual R Q is decoded from the data stream STR. Any known technique can be used to decode the quantized coefficients of the conventional prediction residual, such as the method described in HEVC. Then, the amplitude a of the quantized prediction residual Q1'(X) of the current pixel is obtained.
[0176] According to a particular embodiment of the invention, in step E4421, if the amplitude a of the quantized prediction residual Q1'(X) is zero, an indicator t indicating whether the current pixel is predicted according to the second prediction mode is implicitly set to 0. In this case, the current pixel is considered to be in state s=1 and is predicted by the prediction value resulting from the first prediction mode. The quantized prediction residual Q1'(X) is then reconstructed by Q1'(X)=0.
[0177] Otherwise, when the amplitude a of the quantized prediction residual Q1'(X) is not zero, the sign sgn associated with the quantized prediction residual Q1'(X) is read in the data stream STR. The quantized prediction residual Q1'(X) is then reconstructed by Q1'(X)=a×sgn.
[0178] Then, in step E4422, the indicator t of the current pixel is read in the data stream STR. If the value of the read indicator t is 0, the state of the current pixel is s=2. If the value of the read indicator t is 1, the state of the current pixel is s=3.
[0179] According to another particular embodiment of the invention, the indicator t is coded systematically for each pixel of the current block: in this case, in step E4422, the value 0 or 1 of the indicator t is read in the data stream STR and the state of the pixel s is set accordingly.
[0180] If the state of the current pixel is s=3, the current pixel is predicted according to the second prediction mode. In this case, in step E4423, a value of the group of values determined in step E441 is selected and assigned to the prediction value PL(X) associated with the current pixel in order to predict the current pixel as was done in the encoder. For example, if |PL(X)-b|<|PL(X)-f|, then PL(X)=b, otherwise PL(X)=f.
[0181] The method then proceeds to step E443.
[0182] If the state of the current pixel is s=2 or s=1, the current pixel is predicted according to the first prediction mode. In this case, the prediction value PL(X) of the current pixel determined according to the first prediction mode in step E4411 is not changed.
[0183] In step E443, the quantized residual Q1'(X) is dequantized using a quantization step δ2 to generate a dequantized residual QD1(X).
[0184] In step E444, a reconstructed value of the current pixel X' is obtained using the prediction value PL(X) determined in step E4411 or E4423 and the inverse quantized prediction residual QD1(X), where X'=PL(X)+QD1(X).
[0185] The prediction residual Q1(X) of the pixels of the current block is the prediction residual block R1 Q The inverse quantized prediction residual QD1(X) of the pixels of the current block is placed in the inverse quantized prediction residual block R1 QD and the reconstructed values X' of the pixels of the current block are placed in the reconstructed block P1.
[0186] The above steps are performed for all pixels of the current block in a scan order that ensures that the pixels used for local prediction are available.
[0187] For example, the scan order is lexicographical (left to right, then rows top to bottom).
[0188] According to a particular embodiment of the invention, the block P1 comprising the reconstructed values PL(X)+QD1(X) of each pixel of the current block is now decoded as the current block X rec Form.
[0189] According to another particular embodiment of the invention, an additional prediction residual is considered to be coded for the current block. Thus, rec To reconstruct the decoded version of {tilde over (x)}, this additional prediction residual needs to be decoded.
[0190] For example, this other particular embodiment may or may not be activated by default at the encoder and decoder levels. Alternatively, an indicator may be coded in the data stream using block level information to indicate for each block coded according to the ILR coding mode whether additional prediction residuals are coded. Or, further, an indicator may be coded in the data stream together with a picture or a sequence of picture level information to indicate all blocks of a picture or a sequence of pictures coded according to the ILR coding mode if additional prediction residuals are coded.
[0191] Once an additional prediction residual has been coded for the current block, in step E445, the quantized prediction residual R2 TQ The coefficients of are decoded from the data stream STR using means adapted to those implemented in the encoder, for example means implemented in an HEVC decoder.
[0192] In step E446, the quantized coefficient R2 TQ The block is dequantized using, for example, a quantization step scalar dequantization δ1. This results in a dequantized coefficient R2 TQD blocks are generated.
[0193] In step E447, the decoded prediction residual block R2 TQDI To generate TQD An inverse frequency transform is applied to
[0194] The inverse transform may for example be an inverse DCT type transform.
[0195] A set of predefined transformations E T2 It is possible to select the transformation to be used from among the set E T2 Set ET is different.
[0196] In step E448, the current block is decoded by multiplying the prediction block P1 obtained in step E444 by the decoded prediction residual R2 TQDI is reconstructed by adding
[0197] In step E45 it is checked whether the current block is the last block of the image to be processed by the decoding method, taking into account the predefined scanning order. If the current block is not the last block of the image to be processed, in step E46 a subsequent block of the image to be processed is selected according to the predefined scanning order of the image and the decoding method proceeds to step E42, where the selected block becomes the current block to be processed.
[0198] If all the blocks of the image have been coded, the method proceeds to the application of post-processing methods, which are applied, if necessary, to the reconstructed image in step E451. Such post-processing methods may be deblocking filtering and / or SAO methods.
[0199] The method then proceeds to the decoding of the next image of the video, if there is one (step E47).
[0200] FIG. 7 shows a simplified structure of a coding device COD adapted to implement the coding method according to any one of the particular embodiments of the invention.
[0201] According to a particular embodiment of the invention, the steps of the coding method are implemented by computer program instructions. For this purpose, the coding device COD has a standard architecture of a computer and in particular comprises a memory MEM and a processing unit UT, for example comprising a processor PROC and driven by a computer program PG stored in the memory MEM. The computer program PG comprises instructions for implementing the steps of the coding method as described above, when the program is executed by the processor PROC.
[0202] At initialization, the code instructions of the computer program PG are loaded, for example, into a RAM memory (not shown) before being executed by the processor PROC. In particular, the processor PROC of the processing unit UT performs the steps of the coding method described above according to the instructions of the computer program PG.
[0203] FIG. 8 shows a simplified structure of a decoding device DEC adapted to implement the decoding method according to any one of the particular embodiments of the invention.
[0204] According to a particular embodiment of the invention, the decoding device DEC has a standard architecture of a computer and in particular comprises a memory MEM0, a processor PROC0, for example a processing unit UT0 driven by a computer program PG0 stored in the memory MEM0. The computer program PG0 comprises instructions for carrying out the steps of the decoding method as described above, when the program is executed by the processor PROC0.
[0205] At initialization, the code instructions of the computer program PG0 are loaded, for example, into a RAM memory (not shown) before being executed by the processor PROC0. In particular, the processor PROC0 of the processing unit UT0 performs the steps of the above-mentioned decoding method according to the instructions of the computer program PG0. [Explanation of symbols]
[0206] COD Coded Device DEC Decryption Device MEM,MEM0 Memory PROC, PROC0 processor PG,PG0 Computer Program UT,UT0 Processing unit
Claims
1. 1. A method for decoding a coded data stream representing at least one image, said image being divided into blocks, said method for decoding comprising the steps of: - determining (E441) a group of pixel values in said block from previously decoded pixels; for each pixel of said block, (i) a step of decoding a prediction residual associated with said pixel (E442); (ii) determining a prediction value associated with said pixel according to a first prediction mode (E4411), whereby according to said first prediction mode said pixel is predicted from at least one other previously decoded pixel, said other previously decoded pixel belonging to said current block; (iii) decoding from the data stream an item of information indicating whether the pixel is predicted according to a second prediction mode in which the pixel is predicted using a prediction resulting from the group of pixel values in the block (E4422); (iv) if the item of information indicates that the pixel is predicted according to the second prediction mode, (a) selecting a value of the group according to a distance between the predicted value associated with the pixel to the pixel value of the group (E4423); (b) replacing the predicted value associated with said pixel with the selected value (E4423); (v) reconstructing said pixel using said prediction value and said prediction residual associated with said pixel (E444); 23. A method for decoding comprising:
2. 1. A method for coding a data stream representative of at least one image, said image being divided into blocks, said coding method comprising the steps of: - determining (E221) groups of pixel values in said block from previously decoded pixels; for each pixel of said block, (i) determining a prediction value associated with said pixel according to a first prediction mode (E2201), according to which said pixel is predicted from at least one other previously decoded pixel, said other previously decoded pixel belonging to said current block; (ii) determining a prediction mode for the pixel from the first prediction mode and a second prediction mode in which the pixel is predicted using a prediction resulting from the group of pixel values in the block (E2202); (iii) coding in the data stream an item of information indicating whether the pixel is predicted according to the second prediction mode (E2203, E2207); (iv) if the item of information indicates that the pixel is predicted according to the second prediction mode, (a) selecting a value of the group according to a distance between the predicted value associated with the pixel to the pixel value of the group (E2204); (b) replacing the predicted value associated with the pixel with the selected value (E2204); (v) calculating a quantized prediction residual associated with said pixel using said predicted value associated with said pixel and said value of said pixel (E2205); (vi) reconstructing the pixel using the predicted value and the quantized prediction residual associated with the pixel (E2206); (vii) coding the quantized prediction residual associated with said pixel in said data stream (E223); A method for encoding comprising:
3. 2. The method for decoding of claim 1, wherein the group comprises a first value and a second value, and if a distance between the predicted value associated with the pixel and the first value is smaller than a distance between the predicted value associated with the pixel and the second value, the selected value of the group is the first value, otherwise the selected value of the group is the second value.
4. 2. The method for decoding of claim 1, wherein the step of decoding from the data stream the item of information indicating whether the pixel is predicted according to the second prediction mode is performed only if the prediction residual is different from 0.
5. 2. The method for decoding according to claim 1, wherein the determination of a group of pixel values in the block from previously decoded pixels is performed by calculating a histogram of the values of adjacent pixels of the current block previously reconstructed and selecting at least two pixel values that respectively represent the two most frequent pixel values among the adjacent pixels of the current block.
6. 3. The method for encoding of claim 2, wherein the group comprises a first value and a second value, and if a distance between the predicted value associated with the pixel and the first value is smaller than a distance between the predicted value associated with the pixel and the second value, the selected value of the group is the first value, otherwise the selected value of the group is the second value.
7. 3. A method for coding as claimed in claim 2, wherein the step of coding in the data stream the item of information indicating whether the pixel is predicted according to the second prediction mode is performed only if the prediction residual is different from 0.
8. 3. The method for encoding according to claim 2, wherein the determination of the group of pixel values in the block from previously decoded pixels is performed by calculating a histogram of the values of adjacent pixels of the current block previously reconstructed and selecting at least two pixel values that respectively represent the two most frequent pixel values among the adjacent pixels of the current block.
9. a threshold value is determined from at least one value of the group of pixel values in the block from previously decoded pixels, in determining a prediction mode for the pixel; - if the original value of the pixel is greater than the threshold and the threshold is greater than the predicted value associated with the pixel determined according to the first prediction mode, or if the original value of the pixel is less than the threshold and the threshold is less than the predicted value associated with the pixel determined according to the first prediction mode, The method for coding according to claim 2 , wherein the second prediction mode is selected.
10. 1. A device for decoding a coded data stream representing at least one image, said image being divided into blocks, said device for decoding determining for at least one block of said image, called a current block: - determining groups of pixel values in said block from previously decoded pixels; for each pixel of said block, (i) decoding a prediction residual associated with said pixel; (ii) determining a prediction value associated with the pixel from at least one other previously decoded pixel, the other previously decoded pixel belonging to the current block; and (iii) determining, from said data stream, an item of information indicating whether said pixel is predicted using a prediction resulting from said group of pixel values within said block; and (iv) if the item of information indicates that the pixel is predicted using a prediction resulting from the group of pixel values in the block, (a) selecting values of the group according to a distance between the predicted value associated with the pixel to the pixel value of the group; (b) replacing the predicted value associated with the pixel with the selected value; and (v) reconstructing the pixel using the prediction value and the prediction residual associated with the pixel; A device for decoding, comprising: a processor (PROC0) configured to:
11. A device for coding a data stream representative of at least one image, said image being divided into blocks, said coding device determining for at least one block of said image, called a current block: - determining groups of pixel values in said block from previously decoded pixels; for each pixel of said block, (i) determining a prediction value associated with the pixel according to a first prediction mode, according to which the pixel is predicted from at least one other previously decoded pixel, the other previously decoded pixel belonging to the current block; (ii) determining a prediction mode for the pixel from the first prediction mode and a second prediction mode in which the pixel is predicted using a prediction resulting from the group of pixel values in the block; (iii) coding in the data stream an item of information indicative of whether the pixel is predicted according to the second prediction mode; and (iv) if the item of information indicates that the pixel is predicted according to the second prediction mode, (a) selecting values of the group according to a distance between the predicted value associated with the pixel to the pixel value of the group; (b) replacing the predicted value associated with the pixel with the selected value; and (v) calculating a prediction residual associated with the pixel using the predicted value associated with the pixel and the value of the pixel; and (vi) encoding the prediction residual associated with the pixel in the data stream; and (vii) reconstructing the pixel using the predicted value and the coded prediction residual associated with the pixel; A device for encoding comprising a processor (PROC) configured to:
12. A computer program comprising instructions for carrying out the method for decoding according to any one of claims 1 or 3 to 5, when executed by a processor.
13. A computer program comprising instructions for carrying out the method for encoding according to any one of claims 2 or 6 to 9, when executed by a processor.
14. A computer-readable data medium comprising instructions for the computer program of claim 12.
15. A computer-readable data medium comprising instructions for the computer program of claim 13.
Citation Information
Patent Citations
Determining palette indices in palette-based video coding
JP2016521042A
Intra prediction from predictive blocks using displacement vectors
JP2016525303A
Palette-based video coding
JP2017513321A
Differential pulse code modulation intra prediction for high efficiency video coding
US9253508B2