Method and apparatus for encoding and decoding images
By optimizing predictor weights and incorporating illumination compensation, the method addresses inefficiencies in existing image and video coding schemes, enhancing compression efficiency and image quality.
Patent Information
- Application Number
- JP2020551820
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2018-04-13
- Filing Date
- 2019-03-19
- Publication Date
- 2025-09-08
- Estimated Expiration
- 2039-03-19
AI Technical Summary
Existing image and video coding schemes struggle to effectively exploit spatial and temporal redundancy due to limitations in prediction and transformation methods, leading to suboptimal compression efficiency and quality.
The proposed method involves determining a predictor as a weighted sum of motion-compensated reference blocks from multiple reference images, with weights optimized to minimize the error between reconstructed samples adjacent to the image block and the reference blocks, and incorporating illumination compensation to account for local illumination changes.
This approach enhances compression efficiency by improving prediction accuracy and reducing errors, resulting in better image quality and reduced bandwidth requirements.
Smart Images

Figure 0007735052000004 
Figure 0007735052000005 
Figure 0007735052000006
Abstract
Description
[Technical Field]
[0001] Technical Field The present embodiments relate generally to methods and apparatus for encoding and decoding images, and more particularly to methods and apparatus for encoding and decoding images using illumination compensation and bi-prediction. [Background technology]
[0002] Background technology To achieve high compression efficiency, image and video coding schemes typically utilize prediction and transformation to exploit spatial and temporal redundancy in video content. Typically, intra- or inter-prediction is used to exploit intra- or inter-frame correlations. The difference between the original and predicted image blocks, often represented as a prediction error, prediction residual, or predictor, is then transformed, quantized, and entropy coded. During coding, the original image blocks are typically divided / separated into subblocks, sometimes using quadtree partitioning. To recover the video, the compressed data is decoded by the inverse process corresponding to prediction, transformation, quantization, and entropy coding. Summary of the Invention
[0003] overview A method for encoding an image block is disclosed, the method comprising: - determining a predictor as a weighted sum of sample values of a motion compensated first reference block in a first reference image and a motion compensated second reference block in a second reference image; - coding a residual block determined from the image block and the predictor; Including, The weights of the weighted sum are determined by minimizing the error between the reconstructed samples adjacent to the image block and the samples adjacent to the first and second reference blocks.
[0004] A machine-readable medium is disclosed having stored therein machine-executable instructions that, when executed, perform a method for encoding an image block, the method comprising: - determining a predictor as a weighted sum of sample values of a motion compensated first reference block in a first reference image and sample values of a motion compensated second reference block in a second reference image; - coding a residual block determined from the image block and the predictor; Including, The weights of the weighted sum are determined by minimizing the error between the reconstructed samples adjacent to the image block and the samples adjacent to the first and second reference blocks.
[0005] A coding device for coding an image block is disclosed, the coding device comprising: - means for determining a predictor as a weighted sum of sample values of a motion compensated first reference block in a first reference image and a motion compensated second reference block in a second reference image; - means for coding a residual block determined from an image block and a predictor; Equipped with The weights of the weighted sum are determined by minimizing the error between the reconstructed samples adjacent to the image block and the samples adjacent to the first and second reference blocks.
[0006] An encoding device is disclosed, the encoding device comprising: a communication interface configured to access at least image blocks; - determining a predictor as a weighted sum of sample values of a motion compensated first reference block in a first reference image and a motion compensated second reference block in a second reference image; -Encode the accessed image block and the residual block determined from the predictor and at least one processor configured to: The weights of the weighted sum are determined by minimizing the error between the restored samples adjacent to the image block and the samples adjacent to the first and second reference blocks.
[0007] A bitstream is also disclosed. This bitstream is formatted to include encoded data representing blocks of an image, and this encoded data is encoded according to an encoding method according to one of the foregoing embodiments. A persistent processor-readable medium stores this bitstream.
[0008] Advantageously, the restored samples adjacent to the image block and the restored samples adjacent to the first and second reference blocks form an L-shape.
[0009] In one embodiment, the weighted sum is further shifted to the right, and this shift S is determined such that the weight becomes an integer value with an accuracy close to 1 / (l<<S).
[0010] In one embodiment, determining the weights and / or the shift includes selecting the weights and the shift from a set of defined values.
[0011] In one embodiment, determining the weights and / or the shift includes minimizing the sum of squared errors and selecting the weights and the shift from a set of defined values that are the closest values to those obtained by this sum of squared errors minimization.
[0012] In one embodiment, determining the weights and / or the shift includes calculating the error obtained with a set of defined weight and shift values and selecting the weights and the shift corresponding to the minimum error.
[0013] A method for decoding an image block is - determining a predictor as a weighted sum of sample values of a motion-compensated first reference block in a first reference image and a motion-compensated second reference block in a second reference image; - decoding the image block from the predictor and the residual block; Including, The weights of the weighted sum are determined by minimizing the error between the reconstructed samples adjacent to the image block and the samples adjacent to the first and second reference blocks.
[0014] A machine-readable medium is disclosed that stores machine-executable instructions that, when executed, perform a method for decoding an image block, the method comprising: - determining a predictor as a weighted sum of sample values of a motion compensated first reference block in a first reference image and a motion compensated second reference block in a second reference image; - decoding the image block from the predictor and the residual block; Including, The weights of the weighted sum are determined by minimizing the error between the reconstructed samples adjacent to the image block and the samples adjacent to the first and second reference blocks.
[0015] A decoding device for decoding an image block is disclosed, the decoding device comprising: - means for determining a predictor as a weighted sum of sample values of a motion compensated first reference block in a first reference image and a motion compensated second reference block in a second reference image; means for decoding an image block from a predictor and a residual block; Equipped with The weights of the weighted sum are determined by minimizing the error between the reconstructed samples adjacent to the image block and the samples adjacent to the first and second reference blocks.
[0016] A decoding device is also disclosed, the decoding device comprising: a communication interface configured to access at least the stream; - Determine a predictor as a weighted sum of sample values of a motion-compensated first reference block in a first reference image and a motion-compensated second reference block in a second reference image, - Decode an image block from the predictor and a residual block, and include at least one processor configured to decode the residual from an accessed stream, The weights of the weighted sum are determined by minimizing the error between the restored samples adjacent to the image block and the samples adjacent to the first and second reference blocks.
[0017] Advantageously, the restored samples adjacent to the image block and the restored samples adjacent to the first and second reference blocks form an L-shape.
[0018] In one embodiment, the weighted sum is further shifted to the right, and this shift S is determined such that the weight becomes an integer value with an accuracy close to 1 / (1<<S).
[0019] In one embodiment, determining the weights and / or the shift includes selecting the weights and the shift from a set of defined values.
[0020] In one embodiment, determining the weights and / or the shift includes minimizing the sum of squared errors and selecting the weights and the shift from a set of defined values that are the closest values to those obtained by this sum of squared errors minimization.
[0021] In one embodiment, determining the weights and / or the shift includes calculating the error obtained with a set of defined weight and shift values and selecting the weights and the shift corresponding to the minimum error.
Brief Description of the Drawings
[0022] Brief Description of the Drawings [Figure 1]1 illustrates an exemplary architecture of a transmitter configured to encode images in a bitstream according to certain non-limiting embodiments. [Figure 2] 7 illustrates an exemplary video encoder configured to perform the encoding method described with reference to FIGS. 5 and 6. [Figure 3] 1 shows a flow diagram of a method for deriving a predictor using bi-prediction and illumination compensation according to the prior art. [Figure 4] 1 shows an example of an L-shape used to derive illumination compensation parameters according to the prior art. [Figure 5] 1 illustrates a flow diagram of a method for encoding an image block in a bitstream according to a particular, non-limiting embodiment. [Figure 6] 1 shows a flow diagram for deriving a predictor using bi-prediction and illumination compensation according to certain non-limiting embodiments. [Figure 7] 1 illustrates an exemplary architecture of a receiver configured to decode an image from a bitstream to obtain a decoded image, according to a specific, non-limiting embodiment. [Figure 8] 10 shows a block diagram of an exemplary video decoder configured to perform the decoding methods described with reference to the methods of FIGS. 6 and 9. [Figure 9] 1 shows a flow diagram of a method for decoding an image from a bitstream according to a particular non-limiting embodiment; DETAILED DESCRIPTION OF THE INVENTION
[0023] Detailed Description It should be understood that the figures and descriptions have been simplified to illustrate elements relevant to a clear understanding of the embodiments of the present invention and, for clarity, have excluded many other elements found in a typical encoding and / or decoding device. Terms such as first and second may be used herein to describe various elements, but it should be understood that these elements should not be limited by these terms. These terms are used solely to distinguish one element from another.
[0024] Various methods are described below, each of which includes one or more steps or actions for achieving the described method. Unless a specific order of steps or actions is required for the method to operate properly, the order and / or use of specific steps and / or actions may be modified or combined.
[0025] References to "one embodiment" or "one embodiment" of the present principles, as well as other variations thereof, mean that a particular feature, structure, characteristic, etc. described in connection with this embodiment is included in at least one embodiment. Thus, the appearances of "in one embodiment" or "in one embodiment," or "in one implementation," as well as any other variations thereof, in various places throughout the specification are not necessarily all referring to the same embodiment.
[0026] For example, in the case of "A / B," "A and / or B," and "at least one of A and B," it should be understood that use of any of the following: " / ," "and / or," "at least one of," and "one or more of A, B, and C" encompasses the selection of only the first listed alternative (A), or the selection of only the second listed alternative (B), or the selection of both alternatives (A and B). As a further example, in the case of "A, B, and / or C" and "at least one of A, B, and C," such language encompasses the selection of only the first listed alternative (A), or the selection of only the second listed alternative (B), or the selection of only the third listed alternative (C), or the selection of only the first and second listed alternatives (A and B), or the selection of only the first and third listed alternatives (A and C), or the selection of only the second and third listed alternatives (B and C), or the selection of all three alternatives (A, B, and C). This may be expanded to include as many items as are listed, as would be readily apparent to one skilled in this and related arts.
[0027] An image is an array of luma samples in monochrome format, or one array of luma samples and two corresponding arrays of chroma samples in 4:2:0, 4:2:2, and 4:4:4 color formats (or three arrays for three-color samples, such as RGB). In general, a "block" refers to a specific area within the sample array (e.g., luma Y), and a "unit" includes connected blocks of all color components (luma Y and possibly chroma Cb and chroma Cr). A slice is a basic coding unit of integers, such as an HEVC coding tree unit or an H.264 macroblock unit. A slice may consist of the entire image as well as a portion of it. Each slice may contain one or more slice segments. A tile is a basic coding unit of integers, grouped into a square or rectangular region within a slice or image.
[0028] In the following, the terms "reconstructed" and "decoded" may be used interchangeably. Typically, but not necessarily, "reconstructed" is used on the encoder side, and "decoded" is used on the decoder side. Note that the terms "decoded" or "reconstructed" may mean that a bitstream is partially "decoded" or "reconstructed," e.g., the signal obtained after deblocking filtering but before SAO filtering, and the reconstructed samples may differ from the final decoded output used for display. Also, the terms "image," "picture," and "frame" may be used interchangeably.
[0029] Various embodiments are described with respect to the HEVC standard. However, the embodiments are not limited to HEVC and may be applied to other standards, recommendations, and extensions thereof, including, for example, HEVC or HEVC extensions, such as Format Range (RExt), Scalability (SHVC), Multi-View (MV-HEVC) extensions, and future video coding standards, such as standards developed by the Joint Video Experts Team (JVET). Various embodiments are described with respect to encoding / decoding of image blocks. These embodiments may be applied to encoding / decoding entire images or entire sequences of images.
[0030] FIG. 1 illustrates an exemplary architecture of a transmitter 1000 configured to encode images in a bitstream according to a particular, non-limiting embodiment.
[0031] The transmitter 1000 includes one or more processors 1005, which may include, for example, a CPU, a GPU, and / or a DSP (Digital Signal Processor), along with internal memory 1030 (e.g., RAM, ROM, and / or EPROM). The transmitter 1000 includes one or more communication interfaces 1010 (e.g., keyboard, mouse, touchpad, webcam), each configured to display output information and / or allow a user to input commands and / or data, and a power supply 1020, which may be external to the transmitter 1000. The transmitter 1000 may also include one or more network interfaces (not shown). The encoder module 1040 represents a module that may be included in a device to perform encoding functions. Furthermore, the encoder module 1040 may be implemented as a separate element of the transmitter 1000 or may be incorporated within the processor 1005 as a combination of hardware and software known to those skilled in the art.
[0032] The image may be obtained from a source, which, according to various embodiments, may be, but is not limited to: - Local memory, for example, video memory, RAM, flash memory, hard disk, storage device interfaces, for example interfaces to mass storage devices, ROMs, optical disks, or magnetic support devices; a communication interface, such as a wired interface (e.g., a bus interface, a wide area network interface, a local area network interface) or a wireless interface (e.g., an IEEE 802.11 interface or a Bluetooth interface), and - Image capture circuitry (for example sensors such as CCD (i.e. charge coupled device) or CMOS (i.e. complementary metal oxide semiconductor)).
[0033] According to various embodiments, the bitstream may be transmitted to a destination. By way of example, the bitstream may be stored in a remote or local memory, such as a video memory, RAM, or hard disk. In one variant, the bitstream may be transmitted to a storage interface, such as an interface with a mass storage device, ROM, flash memory, optical disk, or magnetic support device, and / or transmitted over a communications interface, such as a point-to-point link, a communications bus, a point-to-multipoint link, or an interface to a broadcast network. According to exemplary, non-limiting embodiments, the transmitter 1000 further includes a computer program stored in the memory 1030. The computer program includes instructions that, when executed by the transmitter 1000, specifically by the processor 1005, enable the transmitter 1000 to perform the encoding method described with reference to FIGS. 5 and 6. According to one variant, the computer program is stored outside the transmitter 1000 on an external storage medium such as a persistent digital data carrier, for example, a hard disk drive, a CD-ROM, a DVD, a read-only and / or DVD drive, and / or a DVD read / write drive, all of which are known in the art. The transmitter 1000 is therefore equipped with a mechanism for reading the computer program. Furthermore, the transmitter 1000 can also access one or more Universal Serial Bus (USB) type storage devices (e.g., "memory sticks") via a corresponding USB port (not shown).
[0034] According to an exemplary, non-limiting embodiment, the transmitter 1000 may be, but is not limited to: -mobile devices, -communication devices, -gaming devices, -Tablet (or tablet computer), -Laptop, -still image camera, -Video cameras, - coding chips or coding devices / equipment, -still image server, and -Video servers (e.g. broadcast servers, video-on-demand servers or web servers).
[0035] Figure 2 shows an exemplary video encoder 100, for example an HEVC type encoder, configured to perform the encoding method described with reference to Figures 5 and 6. The encoder 100 is an example of a transmitter 1000 or a part of such a transmitter 1000.
[0036] For encoding, an image is typically divided into basic coding units, such as coding tree units (CTUs) in HEVC or macroblock units in H.264. A set of contiguous basic coding units is optionally grouped into a slice. A basic coding unit includes basic coding blocks for all color components. In HEVC, the smallest coding tree block (CTB) size, 16x16, corresponds to the macroblock size used in previous video coding standards. While the terms CTU and CTB are used herein to describe encoding / decoding methods and devices, it will be understood that such methods and devices should not be limited by these specific terms, which may be expressed by other terms (e.g., macroblocks) in other standards, such as H.264.
[0037] In HEVC coding, an image is divided into square CTUs, typically with configurable sizes such as 64x64, 128x128, or 256x256. A CTU is the root of a quadtree decomposition into four square coding units (CUs) of the same size, i.e., whose width and height are half the size of the parent block. A quadtree is a tree that can divide a parent node into four child nodes, and each child node may be the parent node of another division into four child nodes. In HEVC, a coding block (CB) is divided into one or more prediction blocks (PBs), which form the root of the quadtree decomposition into transform blocks (TBs). Corresponding to coding blocks, prediction blocks, and transform blocks, a coding unit (CU) contains a tree-structured set of prediction units (PUs) and transform units (TUs), where a PU contains prediction information for all color components and a TU contains residual coding syntax structures for each color component. The sizes of the CB, PB, and TB for the luma component apply to the corresponding CU, PU, and TU.
[0038] In more recent coding systems, a CTU is the root of a coding tree division into coding units (CUs). A coding tree is a tree in which a parent node (usually corresponding to a CU) can be divided into child nodes (e.g., two, three, or four child nodes), each of which may be the parent node of another division into child nodes. In addition to the quadtree division mode, new division modes (binary tree symmetric division mode, binary tree asymmetric division mode, and ternary tree division mode) are also defined to increase the total number of possible division modes. A coding tree has a unique root node, e.g., a CTU. The leaves of the coding tree are the terminal nodes of the tree. Each node of the coding tree represents a CU, which may be further divided into smaller CUs, also called subCUs or, more commonly, subblocks. Once the division of the CTU into CUs is determined, the CUs corresponding to each leaf of the coding tree are coded. The division of the CTU into CUs and the coding parameters used to code each CU (corresponding to the leaf of the coding tree) may be determined at the encoder side via a rate-distortion optimization procedure. There is no splitting of the CB into a PB and a TB, i.e., a CU is made up of a single PU and a single TU.
[0039] In the following, the term "block" or "image block" can be used to refer to any one of CTU, CU, PU, TU, CB, PB, and TB. Furthermore, the term "block" or "image block" can also be used to refer to macroblocks, partitions, and sub-blocks, as specified in H.264 / AVC or other video coding standards, or more generally to a series of samples of any number of sizes.
[0040] Returning to FIG. 2, in the exemplary encoder 100, an image is encoded by the following encoder elements: The image to be encoded is processed in units of CUs. Each CU is encoded using either intra mode or inter mode. When a CU is encoded in intra mode, intra prediction (160) is performed. In inter mode, motion estimation (175) and compensation (170) are performed. Motion information (i.e., motion vectors and reference indices) can be signaled in two ways: "Advanced Motion Vector Prediction (AMVP)" and "Merge Mode." In AMVP, the video encoder or decoder assembles a candidate list based on motion vectors determined from previously encoded blocks. The video encoder then signals an index to the candidate list to identify the motion vector predictor (MVP) and the motion vector differential (MVD). At the decoder side, the motion vector (MV) is reconstructed as MVP + MVD.
[0041] In merge mode, the video encoder or decoder assembles a candidate list based on already coded blocks, and signals an index for one of the candidates in this candidate list. At the decoder side, motion vectors and reference picture indices are reconstructed based on the signaled candidates.
[0042] The encoder decides whether to use intra or inter mode to code the CU (105) and indicates the intra / inter decision with a prediction mode flag. The residual is calculated by subtracting the predicted block (also known as the predictor) from the original image block (110).
[0043] For example, in intra mode, a CU is predicted from reconstructed neighboring samples within the same slice. In inter mode, a CU is predicted from reconstructed samples of a reference picture stored in the reference picture buffer (180). In inter mode, bi-prediction combines two predictions pred0 and pred1 obtained through motion compensation (170) of two reconstructed reference blocks. Bi-pred=w0*pred0+w1*pred1(1)
[0044] Furthermore, bi-prediction may be combined with block-based illumination compensation (IC). IC allows correcting block prediction samples obtained using motion compensation (MC) by taking into account spatial or temporal local illumination changes. In this case, a flag (IC flag) is coded for the current block to indicate whether IC correction should be applied. This IC flag may not be coded but may be derived from a neighboring reconstructed block, for example, if the current block inherits parameters from one neighboring reconstructed block (merge mode).
[0045] The residual is transformed (125) and quantized (130). The quantized transform coefficients, as well as motion vectors and other syntax elements, are entropy coded (145) to output a bitstream. The encoder may also skip the transform or bypass both the transform and quantization, i.e., the residual is coded directly without applying the transform or quantization processes. In direct PCM coding, no prediction is applied and coding unit samples are coded directly into the bitstream.
[0046] The encoder includes a decoding loop, which decodes the coded block to provide a reference for further prediction. The quantized transform coefficients are dequantized (140) and inverse transformed (150) to decode the residual. An image block is reconstructed by combining the decoded residual with the predicted block (155). An in-loop filter (165) is applied to the reconstructed image to perform, for example, deblocking / sample adaptive offset (SAO) filtering to reduce coding artifacts. The filtered image may be stored in a reference image buffer (180) or used as a reference for other images.
[0047] FIG. 3 shows a flow diagram of a prior art method for deriving predictors using bi-prediction and illumination compensation.
[0048] lighting compensation In inter-mode, IC allows us to correct the block prediction samples obtained using MC by taking into account spatial or temporal local illumination changes. Typically, we use a set S of reconstructed neighboring samples (L-shaped) for the current block, as shown in Figure 4. cur and a set S of adjacent samples (L-shape-ref-i) corresponding to the reference i block (i=0 or 1). ref-i The IC parameters are determined by comparing the values of the reconstructed adjacent samples (also referred to as L-shape in this document) (S306, S308). An example of a set of reconstructed adjacent samples (also referred to as L-shape in this document) is shown in Figure 4. In this example, the L-shape consists of one row of samples above and one column of samples left in the current or reference block. In other examples, the L-shape may consist of only one row of samples above, or only one column of samples left, or two columns of samples left, etc.
[0049] In steps S306 and S308, the IC parameters (a i , bi ) is calculated. Usually, the IC model is linear, i.e., IC(x) = a.x + b, where x is the value of the sample to be compensated. The parameters (ai, bi) are determined by solving a least-squares minimization on an L-shape.
number
[0050] Finally, a i is an integer weight (a i ) and shift (sh i ) and pred by IC parameters (S314 and S316) i is corrected and becomes predIc as follows: i get. PredIc i =(a i *x i >>sh i )+b i (3) where xi is the motion compensated block (pred i ), where '>>' is the right shift operator.
[0051] The IC parameters (a0, b0) and (a1, b1) are derived independently of each other: (a0, b0) is derived from L-shape-ref0 (S306), and (a1, b1) is derived from L-shape-ref1 (S308).
[0052] Bi-prediction The predictors pred0 (or predIc0 if IC is enabled in ref0) and pred1 (or predIc1 if IC is enabled in ref1) are then combined into a single predictor Bi-pred (S318). Conventionally, this combination consists in averaging the two predictions with weights w0 = w1 = 1 / 2. More generally, the two predictors pred0 and pred1 are combined into a single predictor as follows: Bi-pred=(w0*pred0+w1*pred1+off)>>shift (4)
[0053] In one variant, the weights w0 and w1 are different from each other. As an example, w0 may be equal to w and w1 may be equal to (lw), with default weight values w listed in Table 1. An index corresponding to the weight value may be coded in the bitstream for each block.
[0054] [Table 1]
[0055] The weights may also be derived from global illumination compensation, also known as the "weighted prediction" (WP) tool. In this case, the weights are determined by the encoder and are constant across the slice. These may be transmitted in the bitstream. However, the WP tool is redundant with the IC tool, and therefore activating both WP and IC is generally counterproductive.
[0056] In the bitstream, if IC is enabled in the current slice, picture, or sequence, one IC flag may be coded per block to indicate whether IC is enabled for this block. This can also be derived from reconstructed neighboring blocks, such as in merge mode. If IC is enabled in bi-prediction, two equations (3) are calculated independently for each criterion 0 and 1 in steps S314 and S316, respectively. The results are then combined with equation (4) in step S318 as follows: Bi-Pred=(w0*(a0*x0>>sh0+b0)+w1*(a1*x1>>sh1+b1)+off)>>shift (5)
[0057] Cascading several shifts can lead to a lack of precision and increase both the number of operations and memory bandwidth. In the case of generalized bi-prediction, the encoder must examine every weight and select the best one, for example using a rate-distortion cost (RD) criterion. This can significantly slow down the encoder.
[0058] FIG. 5 shows a flow diagram of a method for encoding an image block in a bitstream according to a specific, non-limiting embodiment.
[0059] The method begins at step S500. In step S510, the transmitter 1000, e.g., the encoder 100, accesses a block of an image slice. In step S520, a predictor is determined for the accessed block. The predictor is determined as a weighted sum of sample values of a motion-compensated first reference block (pred0) in a first reference image and a motion-compensated second reference block (pred1) in a second reference image, and the weights of the weighted sum are determined by minimizing the error, i.e., difference, between reconstructed samples adjacent to the image block and samples adjacent to the first and second reference blocks. Obtaining the weighted sum may include adding an offset. A specific embodiment of step S520 is shown in detail in FIG. 6.
[0060] In step S530, the transmitter encodes the accessed block. Encoding a block typically, but not necessarily, involves subtracting a predictor from the block to obtain a residual block, transforming the residual block into a block of transform coefficients, quantizing the block of coefficients with a quantization step size QP to obtain a quantized block of transform coefficients, and entropy encoding the quantized block of transform coefficients in a bitstream. Restoring a block on the encoder side typically, but not necessarily, involves inverse quantizing and inverse transforming the quantized block of transform coefficients to obtain a residual block, and adding a predictor to the residual block to obtain a decoded block. This method ends at step S540.
[0061] FIG. 6 shows a flowchart for deriving a predictor using dual prediction and illumination compensation according to a particular non-limiting embodiment. In step S600, a motion-compensated reference block ref0 is obtained. This is denoted as pred0. In step S602, a motion-compensated reference block ref1 is obtained. This is denoted as pred1. In step S604, the combined IC and the dual prediction weights A0, A1, B, and S are determined. The values A'0, A'1, B', and S are directly determined by the encoder (and decoder) using the L shape of the current block. As an example, A'0, A'1, B', and S are determined using the least squares method to minimize the quadratic error (7).
Number
[0062] The value of the shift S is adjusted so that A0, A1, and B are integers with a desired accuracy P. For example, when P ≈ 1 / (1 - <<S) (equivalent to fixed-point arithmetic with S bits in the fractional part), A0 = E(A'0 * (1 << S)) A1 = E(A'1 * (1 << S)) B = E(B' * (1 << S)) E(x) represents the integer part of x.
[0063] S can be iteratively reduced when the following conditions are true: |A'0-(A0>>S)|≦P |A'1-(A1>>S)|≦P |B'-(B>>S)|≦P
[0064] In one variant, only the default values A0, A1, B, and S are examined (e.g., the weight values in Table 1), and the parameters (A'0, A'1, B', and S) corresponding to the smallest quadratic error (7) are retained. In this latter case, the least squares method is not used. The weight values in Table 1 may be transmitted in the bitstream (e.g., in an SPS) or may be known in advance. SPS stands for Sequence Parameter Set.
[0065] In another variation, the values A0, A1, B, and S are calculated using the least squares method and then adjusted to match one predefined value (e.g., one weight value in Table 1).
[0066] In one exemplary embodiment, one flag (generalized bi-prediction flag) is coded (or decoded at the decoder side) that indicates whether the current block is coded using the method of Figure 6 or whether the current block is coded using the normal method. In one variant, this flag and the IC flag are combined into a single flag. In one variant, this flag and the generalized bi-prediction flag are combined into a single flag.
[0067] In step S606, the final predictor Bi-pred is determined by combining pred0 and pred1 using weighted sums. In an exemplary embodiment, pred0 and pred1 are combined using the combined weights A0, A1, B, and S obtained in step S604. In a particular embodiment, B may be equal to zero. The IC parameters and prediction weights are applied together in a single step (steps S314, S316, and S318 in FIG. 3 are combined into a single step S604 in FIG. 6). Equation (5) is modified as follows: Bi-Pred=(A0*x0+A1*x1)+B)>>S (6) When sh0 = sh1, A0 = w0*a0 A1 = w1*a1 B=(w0*b0+w1*b1+off)<<sh0 S=shift+sh0 When sh0 < sh1, A0=(w0*a0)<<(sh1-sh0) A1 = w1*a1 B=(w0*b0+w1*b1+off)<<sh1 S=shift+sh1 When sh0 > sh1, A0 = w0*a0 A1=(w1*a1)<<(sh0-sh1) B=(w0*b0+w1*b1+off)<<sh0 S=shift+sh0
[0068] FIG. 7 shows an exemplary architecture of a receiver 2000 configured to decode an image from a bitstream to obtain a decoded image according to a particular non-limiting embodiment.
[0069] The receiver 2000 includes one or more processors 2005, which may include, for example, a CPU, a GPU, and / or a DSP (Digital Signal Processor), along with internal memory 2030 (e.g., RAM, ROM, and / or EPROM). The receiver 2000 includes one or more communication interfaces 2010 (e.g., keyboard, mouse, touchpad, webcam), each configured to display output information and / or allow a user to input commands and / or data (e.g., decoded images), and a power supply 2020, which may be external to the receiver 2000. The receiver 2000 may also include one or more network interfaces (not shown). The decoder module 2040 represents a module that may be included in a device to perform decoding functions. Furthermore, the decoder module 2040 may be implemented as a separate element of the receiver 2000 or may be incorporated within the processor 2005 as a combination of hardware and software known to those skilled in the art.
[0070] The bitstream may be obtained from a source, which, according to various embodiments, may be, but is not limited to: - Local memory, for example, video memory, RAM, flash memory, hard disk, storage device interfaces, for example interfaces to mass storage devices, ROMs, optical disks, or magnetic support devices; a communication interface, such as a wired interface (e.g., a bus interface, a wide area network interface, a local area network interface) or a wireless interface (e.g., an IEEE 802.11 interface or a Bluetooth interface), and - Image capture circuitry (e.g., sensors such as CCDs (i.e., charge-coupled devices) or CMOSs (i.e., complementary metal-oxide semiconductors)).
[0071] According to various embodiments, the decoded image may be transmitted to a destination, such as a display device. For example, the decoded image may be stored in a remote or local memory, such as a video memory, RAM, or hard disk. In one variant, the decoded image may be transmitted to a storage interface, such as an interface with a mass storage device, ROM, flash memory, optical disk, or magnetic support device, and / or transmitted over a communications interface, such as a point-to-point link, a communications bus, a point-to-multipoint link, or an interface to a broadcast network.
[0072] According to a specific, non-limiting embodiment, the receiver 2000 further includes a computer program stored in the memory 2030. This computer program, when executed by the receiver 2000, and in particular by the processor 2005, includes instructions that enable the receiver to perform the decoding method described with reference to FIGS. 6 and 9. According to one variant, this computer program is stored outside the receiver 2000 on an external storage medium, such as a persistent digital data carrier, e.g., a HDD, a CD-ROM, a DVD, a read-only and / or DVD drive, and / or a DVD read / write drive, all of which are known in the art. The receiver 2000 is therefore equipped with a mechanism for reading the computer program. Furthermore, the receiver 2000 can also access one or more Universal Serial Bus (USB) type storage devices (e.g., "memory sticks") via a corresponding USB port (not shown).
[0073] According to an exemplary and non-limiting embodiment, the receiver 2000 may be, but is not limited to, the following: -mobile devices, -communication devices, -gaming devices, -Set-top boxes, -television receivers, - Tablets (i.e. tablet computers), -Laptop, -Video players, such as Blu-ray players, DVD players, -display device, and -Decoding chip or decoding device / equipment.
[0074] Figure 8 shows a block diagram of an exemplary video decoder 200, e.g., of the HEVC type, configured to perform the decoding methods described with reference to the methods of Figures 6 and 9. The video decoder 200 is an example of a receiver 2000 or a portion of such a receiver 2000. In the exemplary decoder 200, a decoder element decodes a bitstream, as described below. The video decoder 200 generally performs a decoding pass that is the inverse of the encoding pass, as described in Figure 2, which performs video decoding as part of encoding the video data.
[0075] Specifically, the decoder input includes a video bitstream, which may be generated by the video encoder 100. This bitstream is first entropy decoded (230) to obtain transform coefficients, motion vectors, and other coded information. The transform coefficients are dequantized (240) and inverse transformed (250) to decode the residual. The decoded residual is then combined (255) with a predicted block (also known as a predictor) to obtain a decoded / reconstructed image block. The predicted block may result from intra prediction (260) or motion-compensated prediction (i.e., inter prediction) (270). As previously mentioned, AMVP and merge mode techniques may be used during motion compensation, which may use interpolation filters to calculate interpolated values for sub-integer samples of a reference block. An in-loop filter (265) is applied to the reconstructed image. The in-loop filter may include a deblocking filter and an SAO filter. The filtered image is stored in a reference image buffer (280).
[0076] FIG. 9 shows a flow diagram of a method for decoding an image from a bitstream according to a specific, non-limiting embodiment. The method begins at step S900. In step S910, a receiver 2000, such as decoder 200, accesses the bitstream. In step S920, the receiver determines a predictor as a weighted sum of sample values of a motion-compensated first reference block (pred0) in a first reference image and a motion-compensated second reference block (pred1) in a second reference image, where the weights of the weighted sum are determined by minimizing the error, i.e., difference, between reconstructed samples adjacent to the image block and samples adjacent to the first and second reference blocks. Obtaining the weighted sum may include adding an offset. A specific embodiment of step S920 is detailed in FIG. 6 and is identical to S520 of the encoding method. In step S930, the receiver decodes the image block from the bitstream. Decoding a block typically, but not necessarily, involves entropy decoding a portion of the bitstream representing the block to obtain a block of transform coefficients, dequantizing and inverse transforming the block of transform coefficients to obtain a block of residuals, and adding a predictor to the block of residuals to obtain a decoded block. The method ends in step S840.
[0077] The implementations described herein may be implemented, for example, as a method or process, an apparatus, a software program, a data stream, or a signal. Even if discussed solely in the context of a single type of implementation (e.g., discussed only as a method or apparatus), the discussed functional implementation may be implemented in other forms (e.g., a program). An apparatus may be implemented, for example, in appropriate hardware, software, and firmware. For example, each method may be implemented in an apparatus such as a processor, which generally refers to a processing device including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic device. Processors also include, for example, communication devices such as computers, mobile phones, portable / personal digital assistants ("PDAs"), and other devices that facilitate communication of information between end users.
[0078] Implementations of the various processes and functions described herein may be performed in a variety of different devices or applications, particularly, for example, devices or applications. Examples of such devices include encoders, decoders, post-processors that process output from decoders, pre-processors that input to encoders, video encoders, video decoders, video codecs, web servers, set-top boxes, laptops, personal computers, cell phones, PDAs, and other communications devices. As will become apparent, the devices may be mobile and may be located in moving vehicles.
[0079] Furthermore, the method may be implemented by instructions executed by a processor, and such instructions (and / or data values produced thereby) may be stored on a processor-readable medium, such as, for example, an integrated circuit, a software carrier medium, or other storage device, such as, for example, a hard disk, a compact diskette ("CD"), an optical disk (such as, for example, a DVD, often referred to as a digital versatile disk or digital video disk), a random access memory ("RAM"), or a read-only memory ("ROM"). The instructions may form an application program tangibly embodied on the processor-readable medium. For example, the instructions may be in hardware, firmware, software, or a combination thereof. The instructions may be found, for example, in an operating system, a separate application, or a combination of the two. A processor may therefore be characterized as, for example, both a device configured to execute a process and a device that includes a processor-readable medium (such as a storage device) having instructions for executing a process. Furthermore, a processor-readable medium may store data values produced by an implementation in addition to, or in place of, instructions.
[0080] As will be apparent to those skilled in the art, implementations may generate various signals formatted to carry information that may be stored or transmitted, for example. This information may include, for example, instructions for performing a method or data generated by one of the described implementations. For example, a signal may be formatted to carry, as data, rules for reading and writing the syntax of a described embodiment, or to carry, as data, the actual syntax values written by a described embodiment. For example, such a signal may be formatted as an electromagnetic wave (e.g., using the radio frequency portion of the spectrum) or as a baseband signal. Formatting may include, for example, encoding a data stream and modulating a carrier wave with the encoded data stream. The information carried by the signal may be, for example, analog or digital information. As is known, the signal may be transmitted over a variety of different wired or wireless links. The signal may be stored on a processor-readable medium.
[0081] Several implementations have been described. Nevertheless, it will be understood that various modifications may be made. For example, elements of various implementations may be combined, added, modified, or removed to produce other implementations. Furthermore, those skilled in the art will understand that other structures and processes may be substituted for those disclosed, with the resulting implementation performing at least substantially the same function in at least substantially the same way to achieve at least substantially the same results as the disclosed implementations. Accordingly, these and other implementations are contemplated by this application.
Claims
1. 1. A method for encoding an image block, comprising: obtaining, for the image block, information indicating that a predictor has been derived using bi-prediction and illumination compensation, wherein the illumination compensation includes obtaining a predictor for the current block by applying an illumination compensation model defined by illumination compensation parameters to a motion-compensated reference block, while the bi-prediction includes obtaining a predictor for the current block as a weighted sum of two motion-compensated reference blocks using weighted prediction parameters; determining, for the image block, a motion compensated first reference block in a first reference image and a motion compensated second reference block in a second reference image; determining weights and offset values that can be used to obtain a weighted sum of the motion-compensated first and second reference blocks by minimizing an error between L-shaped reconstructed adjacent samples of the image block and L-shaped reconstructed adjacent samples of the motion-compensated first and second reference blocks, wherein the weights and the offset values represent both an illumination compensation parameter of the illumination compensation when applying the illumination compensation to the image block based on the motion-compensated first and second reference blocks and a weighted prediction parameter when applying the bi-prediction to the image block based on the motion-compensated first and second reference blocks; obtaining the weighted sum using the weights and offset values, and encoding the image block using the weighted sum as a predictor for the image block; A method comprising:
2. 1. A method for decoding an image block, comprising: obtaining, for the image block, information indicating that a predictor has been derived using bi-prediction and illumination compensation, wherein the illumination compensation includes obtaining a predictor for the current block by applying an illumination compensation model defined by illumination compensation parameters to a motion-compensated reference block, and the bi-prediction includes obtaining a predictor for the current block as a weighted sum of two motion-compensated reference blocks using weighted prediction parameters; determining from video data for the image block a motion compensated first reference block in a first reference image and a motion compensated second reference block in a second reference image; obtaining weights and offset values that can be used to obtain a weighted sum of the motion-compensated first and second reference blocks by minimizing an error between L-shaped reconstructed adjacent samples of the image block and L-shaped reconstructed adjacent samples of the motion-compensated first and second reference blocks, wherein the weights and the offset values represent both an illumination compensation parameter of the illumination compensation when applying the illumination compensation to the image block based on the motion-compensated first and second reference blocks and a weighted prediction parameter when applying the bi-prediction to the image block based on the motion-compensated first and second reference blocks; obtaining the weighted sum using the weights and offset values, and decoding the image block using the weighted sum as a predictor for the image block; A method comprising:
3. 1. An apparatus for encoding an image block, comprising: obtaining, for the image block, information indicating that a predictor has been derived using bi-prediction and illumination compensation, wherein the illumination compensation includes obtaining a predictor for the current block by applying an illumination compensation model defined by illumination compensation parameters to one motion-compensated reference block, and the bi-prediction includes obtaining a predictor for the current block as a weighted sum of two motion-compensated reference blocks using weighted prediction parameters; determining a motion compensated first reference block in a first reference image for the image block and a motion compensated second reference block in a second reference image for the image block; determining weights and offset values that can be used to obtain a weighted sum of the motion-compensated first and second reference blocks by minimizing an error between L-shaped reconstructed adjacent samples of the image block and L-shaped reconstructed adjacent samples of the motion-compensated first and second reference blocks, wherein the weights and the offset values represent both an illumination compensation parameter of the illumination compensation when applying the illumination compensation to the image block based on the motion-compensated first and second reference blocks and a weighted prediction parameter when applying the bi-prediction to the image block based on the motion-compensated first and second reference blocks; obtaining the weighted sum using the weights and offset values, and encoding the image block using the weighted sum as a predictor for the image block; An apparatus comprising an electronic circuit adapted to
4. 1. An apparatus for decoding an image block, comprising: obtaining, for the image block, information indicating that a predictor has been derived using bi-prediction and illumination compensation, wherein the illumination compensation includes obtaining a predictor for the current block by applying an illumination compensation model defined by illumination compensation parameters to one motion-compensated reference block, and the bi-prediction includes obtaining a predictor for the current block as a weighted sum of two motion-compensated reference blocks using weighted prediction parameters; determining from the bitstream a motion compensated first reference block in a first reference image for the image block and a motion compensated second reference block in a second reference image for the image block; obtaining weights and offset values that can be used to obtain a weighted sum of the motion-compensated first and second reference blocks by minimizing an error between L-shaped reconstructed adjacent samples of the image block and L-shaped reconstructed adjacent samples of the motion-compensated first and second reference blocks, wherein the weights and the offset values represent both an illumination compensation parameter of the illumination compensation when applying the illumination compensation to the image block based on the motion-compensated first and second reference blocks and a weighted prediction parameter when applying the bi-prediction to the image block based on the motion-compensated first and second reference blocks; obtaining the weighted sum using the weights and offset values, and decoding the image block using the weighted sum as a predictor for the image block; An apparatus comprising an electronic circuit adapted to
5. 10. An information storage medium storing program code instructions for carrying out the method of claim 1.
6. 3. An information storage medium storing program code instructions for carrying out the method of claim 2.
Citation Information
Patent Citations
Systems and methods for generalized multi-hypothesis prediction for video coding
WO2017197146A1