Method and apparatus for decoding and encoding
By using the block-based illuminance compensation mode in video encoding and decoding, the problem of poor illuminance change processing in the prior art is solved, and more efficient encoding and better decoding quality is achieved.
Patent Information
- Application Number
- CN202411627757.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2018-09-03
- Filing Date
- 2019-05-28
- Publication Date
- 2025-02-28
AI Technical Summary
When existing video encoding technologies deal with illumination changes, it is difficult to effectively compensate illumination, resulting in poor encoding efficiency and decoding quality.
The current block is reconstructed by using a block-based illuminance compensation mode in the video encoding and decoding process, and the illuminance compensation mode is applied according to the value of the syntax element, compensating the illuminance of the motion compensation reference block.
It improves the illuminance compensation effect during video encoding and decoding, improves encoding efficiency and decoding quality, and is suitable for video encoding in inter-frame mode.
Smart Images

Figure CN119545016A_ABST
Abstract
Description
[0001] This application is a divisional application of the invention patent application with the application date of May 28, 2019, application number 201980041359.4, and invention name “Illumination Compensation in Video Coding”. Technical Field
[0002] The present embodiments generally relate to methods and apparatus for video encoding or decoding, and more particularly to methods and apparatus for video encoding or decoding using block-based illumination compensation (IC). Background Art
[0003] In order to achieve high compression efficiency, image and video decoding schemes usually use prediction and transformation to fully utilize the spatial and temporal redundancy in the video content. In general, intra-frame or inter-frame prediction is used to exploit intra-frame or inter-frame correlation, and then the difference between the original image block and the predicted image block (often expressed as a prediction error or prediction residual) is transformed, quantized, and entropy decoded. During encoding, it is usually possible to use quadtree partitioning to partition / split the original image block into sub-blocks. In order to reconstruct the video, the compressed data is decoded by the inverse process corresponding to prediction, transformation, quantization, and entropy decoding. Summary of the invention
[0004] According to one embodiment of the present invention, a method for decoding is disclosed, comprising: obtaining the value of a syntax element indicating that an illumination compensation mode is applied to a current block of a picture; and applying the illumination compensation mode to decode the current block according to the value of the syntax element; wherein, during obtaining the value of the syntax element, the value is decoded from video data or inferred from already decoded information, depending on a condition according to a characteristic of the current block.
[0005] According to one embodiment of the present invention, a method for encoding is disclosed, comprising: determining a value of a syntax element indicating that an illumination compensation mode is applied to a current block of a picture; and applying the illumination compensation mode to encode the current block according to the value of the syntax element; and in response to a condition based on a characteristic of the current block being satisfied, notifying the syntax element with a signal.
[0006] According to one embodiment of the present invention, a device for decoding is disclosed, comprising an electronic circuit, which is configured to: obtain the value of a syntax element indicating that an illumination compensation mode is applied to a current block of a picture; and apply the illumination compensation mode to decode the current block according to the value of the syntax element; wherein, during obtaining the value of the syntax element, the value is decoded from video data or inferred from already decoded information, depending on a condition according to a characteristic of the current block.
[0007] According to one embodiment of the present invention, a device for encoding is disclosed, comprising an electronic circuit, wherein the electronic circuit is configured to: determine a value of a syntax element indicating that an illumination compensation mode is applied to a current block of a picture; and apply the illumination compensation mode to encode the current block according to the value of the syntax element; and in response to a condition based on a characteristic of the current block being satisfied, signal the syntax element.
[0008] According to one general aspect, a method for decoding a current block of a picture is disclosed.
[0009] The method includes:
[0010] Access motion compensation reference blocks;
[0011] decoding at least one illumination compensation parameter for the current block in response to the comparison of the parameter for the current block with the value;
[0012] compensating illumination of a motion compensated reference block in response to the at least one illumination compensation parameter; and
[0013] The current block is reconstructed from the illumination and motion compensated reference block.
[0014] According to another general aspect, an apparatus is disclosed, the apparatus comprising one or more processors configured to execute:
[0015] Access motion compensation reference blocks;
[0016] decoding at least one illumination compensation parameter for a current block of the picture in response to a comparison of the parameter for the current block with the value;
[0017] compensating illumination of a motion compensated reference block in response to the at least one illumination compensation parameter; and
[0018] The current block is reconstructed from the illumination and motion compensated reference block.
[0019] According to another general aspect, there is disclosed an apparatus comprising:
[0020] means for accessing a motion compensated reference block;
[0021] means for decoding at least one illumination compensation parameter for a current block of the picture in response to a comparison of the parameter for the current block with the value;
[0022] means for compensating the illumination of a motion compensated reference block in response to the at least one illumination compensation parameter; and
[0023] Component used to reconstruct the current block from an illumination and motion compensated reference block.
[0024] According to another general aspect, a method for encoding a current block of a picture is disclosed. The method comprises:
[0025] Access motion compensation reference blocks;
[0026] encoding at least one illumination compensation parameter for the current block in response to the comparison of the parameter for the current block with the value;
[0027] compensating illumination of a motion compensated reference block in response to the at least one illumination compensation parameter; and
[0028] The current block is encoded from the illumination and motion compensated reference blocks.
[0029] According to another general aspect, an apparatus is disclosed, the apparatus comprising one or more processors configured to execute:
[0030] Access motion compensation reference blocks;
[0031] encoding at least one illumination compensation parameter for a current block of the picture in response to a comparison of the parameter for the current block with the value;
[0032] compensating illumination of a motion compensated reference block in response to the at least one illumination compensation parameter; and
[0033] The current block is encoded from the illumination and motion compensated reference blocks.
[0034] According to another general aspect, there is disclosed an apparatus comprising:
[0035] means for accessing a motion compensated reference block;
[0036] means for encoding at least one illumination compensation parameter for a current block of the picture in response to a comparison of the parameter of the current block with the value;
[0037] means for compensating the illumination of a motion compensated reference block in response to the at least one illumination compensation parameter; and
[0038] Component used to encode the current block from an illumination and motion compensated reference block.
[0039] One or more of the given embodiments also provide a computer-readable storage medium on which instructions for encoding or decoding video data according to at least a portion of any of the above methods are stored. One or more embodiments also provide a computer-readable storage medium on which a bit stream generated according to the above encoding method is stored. One or more embodiments also provide a method and apparatus for sending or receiving a bit stream generated according to the above encoding method. One or more embodiments also provide a computer program product, which includes instructions for executing at least a portion of any of the above methods. BRIEF DESCRIPTION OF THE DRAWINGS
[0040] Figure 1 illustrates the derivation of illumination compensation parameters by comparing an L-shape in a reference picture with an L-shape of a current block;
[0041] Figure 2 illustrates the derivation of illumination compensation parameters by comparing a set of reconstructed neighboring samples (L-shape-cur) with the predicted samples used to reconstruct these neighboring samples;
[0042] Figure 3 illustrates the derivation of illumination compensation parameters in the case of bidirectional prediction by comparing the L-shape of the reference picture;
[0043] Figure 4A depicts a flowchart of a decoding method according to one embodiment;
[0044] Figure 4B depicts a flow chart of an encoding method according to one embodiment;
[0045] Figure 5A and 5B depicts a flow chart of a portion of a decoding method according to various embodiments;
[0046] Fig. 6A is an example of a diagram illustrating the depth of a layered image;
[0047] Figure 6B is a pictorial example illustrating the depth of a decoding tree;
[0048] Figure 7 depicts a flow chart of a method for decoding mode determination and encoding according to one embodiment;
[0049] Figure 8 A block diagram of an embodiment of a video encoder is illustrated;
[0050] Fig. 9 A block diagram illustrating an embodiment of a video decoder; and
[0051] Fig.10Illustrated is a block diagram of a system in which aspects of the presented embodiments may be implemented. DETAILED DESCRIPTION
[0052] In inter mode, IC allows correcting block prediction samples obtained via motion compensation (MC) by taking into account spatial or temporal local illumination variations.
[0053] IC parameters can be estimated using reconstructed neighboring samples or using samples of two reference blocks for bidirectional prediction. Traditionally, a flag is encoded in the bitstream per coding unit (CU) to indicate whether the current CU uses IC. For example, this flag can be inferred from neighboring (one or more) CUs in merge mode.
[0054] At least one embodiment proposes not to encode this flag based on certain conditions signaled in the sequence, picture or slice header.
[0055] In inter-frame mode, IC allows to correct the block prediction samples obtained via motion compensation (MC) by taking into account spatial or temporal local illumination variations. In general, IC modifies the MC reference sample x using a simple linear model (Equation 1) i , where (a i ,sh i ,b i ) are the IC parameters of the reference-i block associated with the current block (i = 0 or 1, typically for codecs enabling unidirectional or bidirectional prediction):
[0056] Pred i =(a i * x i >> sh i ) + b i (1)
[0057] Several methods can be used to derive IC parameters, such as the three methods disclosed below.
[0058] In the first approach, the IC parameters can be estimated by comparing the set S (L-shape-current, L-shape-cur) of reconstructed neighboring samples with the corresponding set (L-shape-ref-i) of neighboring samples of the reference-i block (i = 0 or 1), as Figure 1 The IC parameters are obtained by minimizing the difference (least squares method) between the samples in L-shape-cur and the samples in L-shape-ref-i corrected with the IC parameters (Equation 2). Typically, the parameters a and b are derived by least squares minimization on the L-shape at the analytical encoder (and at the decoder):
[0059]
[0060] Since (a, b) are integers, the value of the shift (sh) is determined with the desired numerical precision of (a).
[0061] In the second method, IC parameters can be estimated by comparing the set of reconstructed neighboring samples S(L-shape-cur) with the predicted samples used to reconstruct these neighboring samples. If IC is applied, several IC parameters are calculated during the CU reconstruction process and stored in a map for later use by neighboring CUs ( Figure 2 ). Since there are multiple neighbors available, pruning is performed to consider only neighbors and give higher priority to neighbors that use the same reference frame as the current CU for prediction.
[0062] In the third approach, the derivation of IC parameters in the case of bidirectional prediction can be based on the samples (x0, x1) of the two motion compensated blocks reference 0 (ref-0) and reference 1 (ref-1), rather than on the reconstructed sample neighbors. This can be done in two steps. First, determine the IC temporal model of the illumination change between ref-1 (time-1 / poc-1) and ref-0 (time-0 / poc-0). Poc stands for "Picture Order Count ( P icture O rder C For example, this operation can be done by calculating the IC parameters (a, b) between ref-1 and ref-0 as in method 1, except that the set of sample points S used is not L-shape-ref0 and L-shape-cur but the entire block ref-1 and block ref-0. Next, the IC parameters (a0, b0) of the illumination between the compensation block ref-0 and the current block and the IC parameters (a1, b1) of the illumination between the compensation block ref-1 and the current block are derived from this IC time model ( Figure 3 ).
[0063] In a fourth method, the derivation of IC parameters in the case of bidirectional prediction is performed using classical rate-distortion optimization (RDO), where the possible values of (a) are selected from a table of predetermined weights and offsets. The index of the weight (GBi) is encoded at the CU level. In a variant, the offset (b) is always zero. Examples of predetermined values of (a) and (sh) are given in Table 1. This technique is also called "generalized bi-prediction" (GBP), and IC_Enable_Flag and IC_flag are GBP_Enable_Flag and GBP_flag.
[0064] Weight value w Shift -1 / 4 -1 2 1 / 4 1 2 3 / 8 3 3 1 / 2 1 1 5 / 8 5 3 3 / 4 3 2 5 / 4 5 2
[0065] Table 1: Examples of predetermined values of (a)
[0066] When IC is enabled, at least one embodiment limits the increase in decoding cost. This can be indicated by a flag (e.g., IC_Enable_Flag) in the sequence and / or picture / slice header. When IC is enabled (IC_Enable_Flag is true or equal to 1), an IC flag (e.g., IC_flag) is encoded in the bitstream of each CU to indicate whether IC is applicable to the current CU. As an example, when IC_flag is equal to true or equal to 1, IC is applicable to the current CU. Otherwise (IC_flag is equal to false or equal to 0), IC is not applicable to the current CU. Therefore, this increases the decoding cost.
[0067] At least one embodiment limits the increase in decoding cost in the case where illumination changes in a sequence are limited to a small number of pictures, e.g. due to flashes. In fact, IC can be efficient when these pictures are used as references in the reconstruction process, but less efficient (or inefficient) if there are no illumination changes in the pictures.
[0068] In order to reduce the decoding cost of the IC flag, whether IC is enabled for the current slice or the current picture, a bit (or flag) can be signaled in the sequence or slice header. However, if the current picture uses multiple reference pictures and only one of these reference pictures has an illumination change compared to the current picture, then the decoding of the IC flag will be counterproductive. In practice, the IC flag needs to be encoded for a CU that is unidirectionally predicted using other reference pictures whose illumination has not changed compared to the current picture. In the latter case, since the decoded IC flag is almost always false, the decoding cost is unnecessarily increased. On the contrary, if the slice header indicates that IC is disabled, this will reduce the decoding efficiency of CUs that use reference pictures with illumination changes.
[0069] Some conditions for the presence of the IC flag may be added. For example, in case of merge mode, the IC flag is not decoded, but inherited from the neighboring CU. These conditions may also depend on the size of the current CU and the decoding mode used by the neighbors. These conditions may apply to the entire sequence and all slices.
[0070] At least one first embodiment proposes some conditions for signaling the presence of an IC flag at the CU level in a bitstream in a sequence, picture, or slice header. The conditions may vary with the slice (e.g., slice header), picture (e.g., picture header), group of pictures (e.g., picture parameter set - PPS), or sequence (e.g., sequence header or sequence parameter set - SPS).
[0071] In at least one second embodiment, the conditions may be related to reference pictures used for inter prediction. In at least one second embodiment, the presence and / or application of the IC flag depends on another CU parameter, such as: component (e.g., IC is enabled only for luminance and disabled for chrominance), (one or more) reference index values, CU size, CU depth (also referred to as decoding tree depth), picture hierarchical depth or picture temporal indicator also known as temporal ID (e.g., "nuh_temporal_id_plus1" in HEVC). Decoding units of a picture with a hierarchical picture depth of D are decoded in "inter" mode, and its prediction can be established only with reference samples from reconstructed pictures with a hierarchical picture depth DR < D. For example, the hierarchical picture depth may be the temporal id of the picture.
[0072] The first and second embodiments may be applied in combination or separately. Application of the second embodiment without application of the first embodiment may be signaled implicitly or explicitly in the bitstream (e.g., in a sequence, picture, or slice header).
[0073] Figure 4A A flowchart of a decoding method according to an embodiment is depicted.
[0074] The method starts at step S40. The decoding device (i.e., Fig. 9 the depicted device) accesses a motion compensated reference block (S42). The decoding device decodes (S44) from the bitstream at least one illumination compensation parameter, such as an IC_flag, for the current block to be decoded. The at least one illumination compensation parameter is decoded according to one or more conditions. Regarding Figure 5A 、 5B 、6A and 6B disclose several embodiments.
[0075] In an embodiment, at least one illumination compensation parameter is decoded in response to a comparison of the parameters of the current block (e.g., the size of the CU) with a value. In an embodiment, at least one illumination compensation parameter is decoded only if the parameters of the current block verify a condition (e.g., it is greater than, equal to, or less than a given value).
[0076] It is possible to compensate the motion compensated reference block in illumination in response to at least one illumination compensation parameter (S46). In one embodiment, if IC_flag is true, the motion compensated reference block is compensated in illumination. Otherwise (IC_flag is false), the motion compensated reference block is not compensated in illumination.
[0077] The current block is reconstructed (S48) from a motion compensated reference block, which may also be compensated in illumination. For this purpose, the residual block is decoded from the bitstream and added (after inverse quantization and inverse transformation) to the motion and illumination compensated block.
[0078] The method ends at S50.
[0079] Figure 4B A flow chart of an encoding method according to one embodiment is depicted.
[0080] The method starts at step S52. The encoding device (ie, Figure 8 The depicted device) accesses the motion compensation reference block (S54).
[0081] The encoding device encodes (S56) at least one illumination compensation parameter, such as IC_flag, for the current block to be encoded in the bitstream. The at least one illumination compensation parameter is encoded according to one or more conditions. Figure 5A , 5B , 6A and 6B disclose several embodiments.
[0082] In an embodiment, at least one illumination compensation parameter is encoded in response to a comparison of a parameter of the current block (e.g., the size of the CU) with a value. In an embodiment, at least one illumination compensation parameter is encoded only if the parameter of the current block (e.g., the size of the CU) verifies a condition (e.g., the size of the CU is greater than, equal to, or less than a given value).
[0083] It is possible to compensate the motion compensated reference block in illumination in response to at least one illumination compensation parameter (S58). In one embodiment, if IC_flag is true, the motion compensated reference block is compensated in illumination. Otherwise (IC_flag is false), the motion compensated reference block is not compensated in illumination.
[0084] The current block is encoded (S60) from a motion compensated reference block, which may also be compensated in illumination. For this purpose, a residual block is obtained by subtracting the motion and illumination compensation block from the current block. The residual block is quantized and transformed before being entropy decoded in the bitstream.
[0085] The method ends at S62.
[0086] In one embodiment applicable to both the encoder side and the decoder side, the condition is related to the reference picture used for inter prediction. Figure 5A In 600 of FIG. 6 , a set of flags indicates a set of reference indices (ref_idx) that can be used for CUs that enable IC decoding (IC flag is set to true). The mode is decoded for the current CU ( 610 ).
[0087] For example, if the current slice has two reference pictures in list-0 (L0) and two reference pictures in list-1 (L1), four flags (flag_Li_Rj) are coded in the slice header, one for each reference (see Table 2):
[0088] Table 2: Example in which 4 flags "flag_Li_Rj" are decoded.
[0089]
[0090] - "flag_Li_Rj=1" indicates that at least one CU in inter mode using ref_idx=Rj for list Li has IC_flag equal to 1 for decoding. When ref_idx=Rj of list Li,
[0091] IC_flag is decoded (650, 660).
[0092] - "flag_Li_Rj=0" indicates that no CU in inter mode using ref_idx=Rj for list Li has a coded IC_flag value equal to 1. Therefore, if a CU uses ref_idx=Rj for list Li (630), then IC_flag is not coded, i.e., it is not present in the bitstream (640), and the value of IC_flag is inferred to be zero (see Figure 5A 660 in ).
[0093] In a variant, no flag "flag_Li_Rj" is coded, in which case IC_flag is present in the bitstream only if the reference picture index (either in L0 or L1) is the first one in the list, ie, ref_idx=0.
[0094] This method loops over the CUs in a slice.
[0095] In a variant, the value of "flag_Li_Rj" adjusts all CUs coded in inter mode except in merge and / or skip mode (620). For example, if a CU is coded in merge mode and ref_idx=Rj and flag_Li_Rj=0 for list Li, IC_flag is still coded.
[0096] In another variant, the value of "flag_Li_Rj" only adjusts all CUs coded in bidirectional prediction. In the variant, the 4 flags (flag_Ri_Rj) coded in the slice header correspond to the combination of ref_idx values (see Table 3):
[0097] Table 3: Example in which 4 flags "flag_Li_Rj" are decoded.
[0098]
[0099] - "flag_Ri_Rj=1" indicates that IC_flag for coding of at least one CU in inter mode using ref_idx=Ri for list0 and ref_idx=Rj for list1 is equal to 1. When ref_idx=Ri for list0 and ref_idx=Rj for list1, IC_flag is coded (650, 660).
[0100] - "flag_Ri_Rj=0" indicates that no CU in inter mode that uses ref_idx=Ri for list 0 and ref_idx=Rj for list 1 has a coded IC_flag equal to 1. Accordingly, if a CU has ref_idx=Ri for list 0 and ref_idx=Rj for list 1 (630), then IC_flag is not coded (640) and the value of IC_flag is inferred to be zero (see Figure 5A 660 in ).
[0101] This embodiment applies when ref_idx[0] and ref_idx[1] are decoded before IC_flag, as in the JVET reference software (JEM).
[0102] In a variant, if at least one of ref_idx[0] and ref_idx[1] is non-zero, then IC_flag is always zero. In this case, if IC_flag is parsed before ref_idx[0] and ref_idx[1] and if IC_flag is true, then ref_idx[0] and ref_idx[1] are not decoded and are both inferred to be zero.
[0103] In another variant, the syntax elements ref_idx[0] and ref_idx[1] are coded first, but when at least one of ref_idx[0] and ref_idx[1] is non-zero, IC_flag is not coded and is inferred to be equal to zero.
[0104] In another embodiment, the condition is related to the CU size. In the slice or picture (e.g., PPS) header, one or several values representing the minimum (or maximum) CU size (e.g., width, height, width and height, width / CTU size, log2(width), etc.) are decoded and further used during parsing of CU parameters to determine whether IC_flag is present for the current CU (see Figure 5B ).exist Figure 5B On, with Figure 5A Identical modules are identified by the same reference numerals.
[0105] For example, if the condition is CUsize=16, IC_flag is decoded in the bitstream only if the CU size is better (or worse) than CUsize, i.e., present in the bitstream (635). Otherwise, IC_flag is inferred to be equal to zero. When the width of the CU and / or the height of the CU is greater than CUsize, the size of the CU is considered to be greater than CUsize. In a variant, the CU size of the block can be equal to MIN(cuWidth, cuHeight) or MAX(cuWidth, cuHeight). CUsize can be decoded in the SPS, PPS or slice header.
[0106] In fact, for larger CUs, the benefit of IC is greater. Bits are saved by not decoding IC_flag for small CUs. In addition, in the case of layered decoding ( Fig. 6A ), generally lower layer B slices (high values of layered picture depth or temporal id) are coded with very few bits compared to higher layer slices (low values of layered picture depth or temporal id). Fig. 6A In general, the B slices of picture 3 are coded with fewer bits than the B slices of picture 4. Therefore, the coding efficiency can be improved by, for example, adjusting the presence of IC_flag for a CU to the picture layer depth of the slice to which the CU belongs or by adapting the conditions on the CU size to the picture layer depth.
[0107] To this end, in one embodiment, IC_flag is present in the bitstream (i.e., coded and decoded) of CUs belonging to pictures whose picture layer depth is less than a defined value. This defined value can be coded in the bitstream, for example, in a sequence header (SPS) or a picture header (PPS).
[0108] In the variant, when the layer depth of the image ( Fig. 6A ) is less than a certain value (e.g., a defined threshold), IC is enabled in the current slice belonging to this picture (e.g., IC_Enable_Flag is true), and the IC flag exists at the CU level.
[0109] In another variation, when the image's layer depth ( Fig. 6A ) is greater than a certain value (e.g., a defined threshold), IC is enabled in the current slice belonging to this picture (e.g., IC_Enable_Flag is true), and when the CU size is greater than CUsize, IC_flag exists in the bitstream at the CU level.
[0110] In another variant, when IC_Enable_Flag is true, the value of "CUsize" is a function of the hierarchical picture depth s3 (e.g., if s3<3, then CUsize=16, if s3>=3, then CUsize=32). Fig. 6A ) is greater than (or less than) a value T (e.g., a defined threshold), IC is enabled in the current slice belonging to this picture (e.g., IC_Enable_Flag is inferred to be true), and IC_flag is present in the bitstream at the CU level when the CU size is greater than CUsize(T). As an example, CUsize(T) is an increasing function of T. The value of T can be decoded in the SPS or in the PPS.
[0111] In another embodiment, when the current CU has a coding tree depth greater than the value S, the IC flag is not decoded but inferred to be zero. S can be decoded in the SPS, PPS or slice header. The coding tree depth (also called CU depth) refers to the depth of the coding unit in the coding tree to which it belongs, such as Figure 6B shown.
[0112] In the following, we refer to "CU depth" as the number of splits before reaching the current CU leaf.
[0113] about Figure 5A , 5B All embodiments disclosed in 6A and 6B are applicable to both the encoding and decoding sides.
[0114] In another embodiment applied on the encoder side, Figure 7 The determination of the conditional parameters is depicted in . Traditionally, encoder processing can be divided into two main stages:
[0115] 1) Determine the decoding mode of all CUs (see 710, 720):
[0116] Each decoding mode is evaluated by calculating the decoding cost (710). In general, the decoding cost is a function of the distortion and the number of bits used to decode the CU, such as Lagrangian, for example. The decoding mode (715) with the lower decoding cost is finally selected (720) and is then used to encode the current CU (760).
[0117] 2) Entropy decoding and construction of bit stream (see 750, 760, 780):
[0118] The conditional parameters are updated in (745) and encoded in the bitstream (750). For each CU,
[0119] The decoding parameters including the decoding mode selected in (720) are decoded in the bitstream (760).
[0120] If the condition parameter indicates that IC_flag is present, the value of IC_flag is decoded (780).
[0121] The two stages can be implemented sequentially (stage 1 for all CUs in a slice / picture, followed by stage 2 for all CUs in the slice / picture) or nested together (stage 1 and stage 2 nested for each CU). In all cases (nested or not), the statistics of the previous slice / picture will be accumulated and made available to the current slice / picture. First (700), the conditional parameters are reset to default values, i.e., there is no restriction on the IC_flag decoding conditions. For example, this corresponds to setting all flags in Table 2 or Table 3 to be equal to 1.
[0122] In the first stage (determination of the decoding mode), statistics of the conditional parameters are collected. For example, in bidirectional prediction, the number of CUs with IC_flag equal to 1 and ref_idx[L0] and ref_idx[L1] equal to 0 is counted (count_00) (see Table 4).
[0123] Table 4: Example (statistics) where bi-prediction reference indices are counted.
[0124] L0 ref_idx=0 ref_idx=0 ref_idx=1 ref_idx=1 L1 ref_idx=0 ref_idx=1 ref_idx=0 ref_idx=1 Count_00 Count_01 Count_10 Count_11
[0125] At this stage, since the conditional flag has been reset to the default value, IC_flag (730) always exists for CUs decoded in inter-frame mode. In a variant, except for merge and skip cases, IC_flag always exists for CUs decoded in inter-frame mode and step (730) is always true.
[0126] Next, conditional flags are set to values (740) that depend (745) on the collected statistics. For example, if count_ij is zero, then the value of flag_Ri_Rj is set to 0, and if count_ij>0, then the value of flag_Ri_Rj is set to 1.
[0127] In the second stage (bitstream decoding), for each CU, if the conditional flag indicates the presence of IC_flag, then IC_flag is decoded (770), otherwise it is inferred to be zero (not decoded). For example, if ref_idx[L0]=0 and ref_idx[L1]=0 and flag_R0_R0=0, then IC_flag is not decoded. If ref_idx[L0]=0 and ref_idx[L1]=0 and flag_R0_R0=1, then IC_flag is decoded.
[0128] For subsequent slices, the presence of an "IC flag" may be derived (735) using statistics collected for a previous slice (PS) or previous picture in stage 1. Advantageously, the PS may be selected as the closest (having the smallest difference in "poc" value from the "poc" of the current slice) previous slice having a layer depth (or temporal id) less than the layer depth (or temporal id) of the current slice.
[0129] If the number of CUs or samples with IC enabled in PS is less than a threshold, the IC flag of the current slice is disabled in stage 1. In a variant, if the estimated BD ratio gain of IC enabled in PS to IC disabled in PS is less than a threshold, the IC flag of the current slice is disabled in stage 1.
[0130] This document describes various aspects including tools, features, embodiments, models, methods, etc. Many of these aspects are described specifically and at least for the purpose of illustrating individual features, and are often described in a manner that may sound restrictive. However, this is for clarity of description and does not limit the application or scope of those aspects. In fact, all of the different aspects can be combined and interchanged to provide additional aspects. Moreover, these aspects can also be combined and interchanged with aspects described in previous applications.
[0131] The aspects described and contemplated in this document may be implemented in many different forms. Figure 8 , 9 10 provide some embodiments, but other embodiments are contemplated and are Figure 8 , 9The discussion of 10 does not limit the breadth of the embodiments. At least one of these aspects generally relates to video encoding and decoding, and at least one other aspect generally relates to transmitting a generated or encoded bitstream. These and other aspects can be implemented as methods, apparatus, a computer-readable storage medium having stored thereon instructions for encoding or decoding video data according to any of the methods described, and / or a computer-readable storage medium having stored thereon a bitstream generated according to any of the methods described.
[0132] In this application, the terms "reconstructed" and "decoded" are used interchangeably, the terms "pixel" and "sample" are used interchangeably, and the terms "image", "picture" and "frame" are used interchangeably. Usually, but not necessarily, the term "reconstructed" is used on the encoder side, while "decoded" is used on the decoder side.
[0133] Various methods are described herein, and each method includes one or more steps or actions for implementing the described method. Unless a specific order of steps or actions is required for proper operation of the method, the order and / or use of specific steps and / or actions may be modified or combined.
[0134] Various methods and other aspects described in this document can be used to modify modules of the video encoder 100 and decoder 200, such as the illumination compensation module (190, 290), the entropy encoding and / or decoding module (230, 145), such as Figure 8 and Fig. 9 Moreover, the present aspects are not limited to VVC or HEVC, and may be applied, for example, to other standards and recommendations (whether pre-existing or developed in the future), as well as extensions of any such standards and recommendations (including VVC and HEVC). Unless otherwise indicated or technically prohibited, the various aspects described in this document may be used alone or in combination.
[0135] Various numerical values are used in this document. The specific values are for example purposes, and the described aspects are not limited to these specific values.
[0136] Figure 8 An encoder 100 is illustrated. Variations of this encoder 100 are contemplated, but for clarity, the encoder 100 is described below without describing all contemplated variations.
[0137] Before being encoded, the video sequence may be processed by pre-encoding (101), for example, applying a color transform to an input color picture (e.g., conversion from RGB 4:4:4 to YCbCr 4:2:0), or performing a remapping of the input picture components in order to obtain a signal distribution that is more resilient to compression (e.g., using histogram equalization of one of the color components). Metadata may be associated with the pre-processing and appended to the bitstream.
[0138] In encoder 100, pictures are encoded by encoder elements as described below. The picture to be encoded is segmented (102) and processed in units such as CUs. Each unit is encoded using, for example, either intra or inter mode. When the unit is encoded in intra mode, it performs intra prediction (160). In inter mode, motion estimation (175), motion compensation (170), and illumination compensation (190) are performed. The encoder decides (105) which of intra mode or inter mode to use to encode the unit, and indicates the intra / inter decision by, for example, a prediction mode flag. The prediction residual is calculated, for example, by subtracting (110) the predicted block from the original image block.
[0139] The prediction residual is then transformed (125) and quantized (130). The quantized transform coefficients, along with motion vectors and other syntax elements, are entropy coded (145) to output a bitstream. More specifically, Figure 7 Module 145 is described in detail in . The encoder may skip the transform and apply quantization directly to the untransformed residual signal. The encoder may bypass both the transform and the quantization, ie the residual is directly decoded without applying a transform or quantization process.
[0140] The encoder decodes the encoded block to provide a reference for further prediction. The quantized transform coefficients are dequantized (140) and inverse transformed (150) to decode the prediction residual. The image block is reconstructed by combining (155) the decoded prediction residual and the predicted block. A loop filter (165) is applied to the reconstructed picture to perform, for example, deblocking / SAO (sample adaptive offset) filtering to reduce coding artifacts. The filtered image is stored in a reference picture buffer (180).
[0141] Fig. 9 FIG. 2 is a block diagram of a video decoder 200. In the decoder 200, a bitstream is decoded by decoder elements as described below. The video decoder 200 generally performs the same operations as described below. Figure 8 The encoder 100 also typically performs video decoding as part of encoding the video data.
[0142] In particular, the input to the decoder includes a video bitstream, which may be generated by the video encoder 100. The bitstream is first entropy decoded (230) to obtain transform coefficients, motion vectors, and other decoded information. More specifically, Figure 5A A portion of module 230 is described in detail in FIG.
[0143] The picture segmentation information indicates how the picture is segmented. Therefore, the decoder can divide (235) the picture according to the decoded picture segmentation information. The transform coefficients are dequantized (240) and inverse transformed (250) to decode the prediction residual. The decoded prediction residual and the prediction block are combined (255) to reconstruct the image block. The prediction block can be obtained (270) from an intra-frame prediction (260) or a motion and illumination compensated prediction (i.e., inter-frame prediction) (275, 290). Note that the illumination compensation modules 190 (encoder) and 290 (decoder) are exactly the same. A loop filter (265) is applied to the reconstructed image. The filtered image is stored in a reference picture buffer (280).
[0144] The decoded picture may also undergo post-decoding processing (285), such as performing an inverse color transform (e.g., conversion from YCbCr 4:2:0 to RGB 4:4:4) or inverse remapping that is the inverse of the remapping process performed in the pre-encoding process (101). The post-decoding processing may use metadata derived in the pre-encoding process and signaled in the bitstream.
[0145] Fig.10 The block diagram of the example of the system in which various aspects and embodiments are implemented is illustrated. System 1000 can be implemented as a device including various components described below, and is configured to perform one or more aspects described in this document. Examples of such devices include, but are not limited to, various electronic devices, such as personal computers, laptop computers, smart phones, tablet computers, digital multimedia set-top boxes, digital television receivers, personal video recording systems, networked household appliances, and servers. The elements of system 1000 can be implemented in a single integrated circuit, multiple ICs and / or discrete components individually or in combination. For example, in at least one embodiment, the processing and encoder / decoder elements of system 1000 are distributed on multiple ICs and / or discrete components. In various embodiments, system 1000 is coupled to other similar systems or other electronic devices via, for example, a communication bus or by dedicated input and / or output ports. In various embodiments, system 1000 is configured to implement one or more aspects described in this document.
[0146] The system 1000 includes at least one processor 1010, which is configured to execute instructions loaded therein to implement various aspects described in this document, for example. The processor 1010 may include embedded memory, input and output interfaces, and various other circuit systems known in the art. The system 1000 includes at least one memory 1020 (e.g., a volatile memory device, and / or a non-volatile memory device). The system 1000 includes a storage device 1040, which may include non-volatile memory and / or volatile memory, including but not limited to EEPROM, ROM, PROM, RAM, DRAM, SRAM, flash memory, disk drive, and / or optical drive. As a non-limiting example, the storage device 1040 may include an internal storage device, an attached storage device, and / or a network accessible storage device.
[0147] The system 1000 includes an encoder / decoder module 1030, which is configured to process data to provide encoded video or decoded video, for example, and the encoder / decoder module 1030 may include its own processor and memory. The encoder / decoder module 1030 represents a module (one or more) that can be included in a device to perform encoding and / or decoding functions. As is known, a device may include one or both of the encoding and decoding modules. In addition, the encoder / decoder module 1030 can be implemented as a separate element of the system 1000, or can be combined in the processor 1010 as a combination of hardware and software, as known to those skilled in the art.
[0148] Program code to be loaded onto the processor 1010 or the encoder / decoder 1030 to perform various aspects described in this document may be stored in the storage device 1040 and subsequently loaded onto the memory 1020 for execution by the processor 1010. According to various embodiments, during the execution of the processes described in this document, one or more of the processor 1010, the memory 1020, the storage device 1040, and the encoder / decoder module 1030 may store one or more of various items. Such stored items may include, but are not limited to, input video, decoded video or a portion of decoded video, bitstreams, matrices, variables, and intermediate or final results of equations, formulas, operations, and operation logic.
[0149] In several embodiments, memory within the processor 1010 and / or encoder / decoder module 1030 is used to store instructions and provide working memory for processing required during encoding or decoding. However, in other embodiments, memory external to the processing device (e.g., the processing device may be either the processor 1010 or the encoder / decoder module 1030) is used for one or more of these functions. The external memory may be memory 1020 and / or a storage device 1040, such as a dynamic volatile memory and / or a non-volatile flash memory. In several embodiments, an external non-volatile flash memory is used to store the operating system of the television. In at least one embodiment, a fast external dynamic volatile memory (such as RAM) is used as working memory for video encoding and decoding operations, such as for MPEG-2, HEVC, or VVC (universal video coding).
[0150] As shown in block 1130, input to the elements of system 1000 may be provided through various input devices. Such input devices include, but are not limited to, (i) an RF section that receives an RF signal transmitted over the air, for example, by a broadcaster, (ii) a composite input terminal, (iii) a USB input terminal, and / or (iv) an HDMI input terminal.
[0151] In various embodiments, the input device of block 1130 has associated corresponding input processing elements, as known in the art. For example, the RF portion may necessarily be associated with the following elements: (i) selecting a desired frequency (also referred to as selecting a signal, or band limiting a signal within a frequency band), (ii) down-converting the selected signal, (iii) again band-limiting to a narrower frequency band to select a signal band that may be referred to as a channel in some embodiments, (iv) demodulating the down-converted and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select a desired data packet stream. The RF portion of various embodiments includes one or more elements that perform these functions, such as a frequency selector, a signal selector, a band limiter, a channel selector, a filter, a down-converter, a demodulator, an error corrector, and a demultiplexer. The RF portion may include a tuner that performs various of these functions, including, for example, down-converting a received signal to a lower frequency (e.g., an intermediate frequency or near baseband frequency) or baseband. In a set-top box embodiment, the RF part and its associated input processing element receive the RF signal transmitted on wired (for example, cable) medium, and filter to the frequency band of expectation again by filtering, down-conversion and perform frequency selection.Various embodiments rearrange the order of above-mentioned (and other) elements, remove some in these elements, and / or add other elements of similar or different functions.Adding element can include inserting element between existing element, for example, inserting amplifier and analog-to-digital converter.In various embodiments, the RF part comprises antenna.
[0152] In addition, the USB and / or HDMI terminals may include corresponding interface processors for connecting the system 1000 to other electronic devices across the USB and / or HDMI connections. It should be understood that various aspects of input processing (e.g., Reed-Solomon error correction) may be implemented, for example, in a separate input processing IC or in the processor 1010 as desired. Similarly, various aspects of USB or HDMI interface processing may be implemented, for example, in a separate interface IC or in the processor 1010 as desired. The demodulated, error corrected, and demultiplexed streams are provided to various processing elements, including, for example, the processor 1010, and an encoder / decoder 1030 operating in conjunction with memory and storage elements to process the data streams as needed for presentation on an output device.
[0153] The various elements of the system 1000 may be provided within an integrated housing. Within the integrated housing, the various elements may be interconnected and data may be transferred between them using a suitable connection arrangement 1140 (eg, an internal bus known in the art, including an I2C bus, wiring, and printed circuit boards).
[0154] The system 1000 includes a communication interface 1050 that enables communication with other devices via a communication channel 1060. The communication interface 1050 may include, but is not limited to, a transceiver configured to transmit and receive data through the communication channel 1060. The communication interface 1050 may include, but is not limited to, a modem or a network card, and the communication channel 1060 may be implemented, for example, within a wired and / or wireless medium.
[0155] In various embodiments, a Wi-Fi network such as IEEE 802.11 is used to stream data to the system 1000. The Wi-Fi signals of these embodiments are received on a communication channel 1060 and a communication interface 1050 suitable for Wi-Fi communication. The communication channel 1060 of these embodiments is typically connected to an access point or router that provides access to an external network including the Internet to allow streaming applications and other air communications. Other embodiments provide streaming data to the system 1000 using a set-top box that delivers data via an HDMI connection of an input block 1130. Still other embodiments provide streaming data to the system 1000 using an RF connection of an input block 1130.
[0156] The system 1000 can provide output signals to various output devices including a display 1100, a speaker 1110, and other peripherals 1120. In various examples of embodiments, the other peripherals 1120 include one or more of a stand-alone DVR, a disc player, a stereo system, a lighting system, and other devices that provide functions based on the output of the system 1000. In various embodiments, control signals are transmitted between the system 1000 and the display 1100, the speaker 1110, or other peripherals 1120 using signaling such as AV.Link, CEC, or other communication protocols that enable device-to-device control, with or without user intervention. The output devices can be communicatively coupled to the system 1000 via dedicated connections through the respective interfaces 1070, 1080, and 1090. Alternatively, the output devices can be connected to the system 1000 using a communication channel 1060 via a communication interface 1050. In an electronic device (e.g., a television), the display 1100 and the speaker 1110 can be integrated into a single unit with the other components of the system 1000. In various embodiments, the display interface 1070 includes a display driver, such as a timing controller (T Con) chip.
[0157] For example, if the RF portion of input 1130 is part of a separate set-top box, then the display 1100 and speaker 1110 may alternatively be separate from one or more of the other components. In various embodiments where the display 1100 and speaker 1110 are external components, the output signals may be provided via dedicated output connections including, for example, an HDMI port, a USB port, or a COMP output.
[0158] The embodiments may be implemented by computer software implemented by the processor 1010 or by hardware or by a combination of hardware and software. As a non-limiting example, the embodiments may be implemented by one or more integrated circuits. The memory 1020 may be of any type suitable for the technical environment and may be implemented using any appropriate data storage technology, such as, as a non-limiting example, optical memory devices, magnetic memory devices, semiconductor-based memory devices, fixed memory, and removable memory. The processor 1010 may be of any type suitable for the technical environment and, as a non-limiting example, may include one or more of a microprocessor, a general-purpose computer, a special-purpose computer, and a processor based on a multi-core architecture.
[0159] Various embodiments relate to decoding. As used in this application, "decoding" can cover, for example, all or part of the processing performed on a received encoded sequence to produce a final output suitable for display. In various embodiments, such processing includes one or more of the processing typically performed by a decoder, such as entropy decoding, inverse quantization, inverse transformation, and differential decoding. In various embodiments, such processing also, or alternatively, includes processing performed by a decoder of various embodiments described in this application, such as decoding a flag indicating whether illumination compensation is applied to the current block according to a condition, and applying illumination compensation according to the value of the flag.
[0160] As another example, in one embodiment, "decoding" refers only to entropy decoding, in another embodiment, "decoding" refers only to differential decoding, and in another embodiment, "decoding" refers to a combination of entropy decoding and differential decoding. Whether the phrase "decoding process" is intended to refer specifically to a subset of operations or broadly to a broader decoding process will be apparent based on the context of the particular description and is believed to be well understood by those skilled in the art.
[0161] Various embodiments relate to encoding. In a manner similar to the discussion above regarding "decoding", as used in this application, "encoding" can cover, for example, all or part of the processing performed on an input video sequence to produce an encoded bitstream. In various embodiments, such processing includes one or more of the processing typically performed by an encoder, such as segmentation, differential encoding, transforms, quantization, and entropy encoding. In various embodiments, such processing also, or alternatively, includes processing performed by the encoder of the various embodiments described in this application, such as encoding a flag indicating whether illumination compensation is applied to the current block according to a condition, applying illumination compensation according to the value of the flag.
[0162] As another example, in one embodiment, "encoding" refers only to entropy encoding, in another embodiment, "encoding" refers only to differential encoding, and in another embodiment, "encoding" refers to a combination of differential encoding and entropy encoding. Whether the phrase "encoding process" is intended to refer specifically to a subset of operations or broadly to a broader encoding process will be apparent based on the context of the particular description and will be well understood by those skilled in the art.
[0163] Note that the syntax elements used herein, e.g., IC_flag, ref_idx[], flag_Li_Rj, are descriptive terms and as such, they do not exclude the use of other syntax element names.
[0164] When a figure is presented as a flow chart, it should be understood that it also provides a block diagram of the corresponding apparatus. Similarly, when a figure is presented as a block diagram, it should be understood that it also provides a flow chart of the corresponding method / process.
[0165] Various embodiments relate to rate-distortion optimization. In particular, during the coding process, constraints on computational complexity are often given, and a balance or trade-off between rate and distortion is usually considered. Rate-distortion optimization is usually formulated as minimizing a rate-distortion function, which is a weighted sum of rate and distortion. There are a variety of methods for solving the rate-distortion optimization problem. For example, these methods can be based on extensive testing of all coding options, including all considered modes or decoding parameter values, and a complete evaluation of their decoding costs and the associated distortion of the signal reconstructed after decoding. Faster methods can also be used to save coding complexity, in particular, to calculate approximate distortion based on a predicted or predicted residual signal rather than a reconstructed signal. A mixture of these two methods can also be used, such as by using approximate distortion only for some possible coding options and using full distortion for other coding options. Other methods only evaluate a subset of possible coding options. More generally, many methods use any of a variety of techniques to perform optimization, but optimization is not necessarily a complete evaluation of both decoding costs and associated distortions.
[0166] The embodiments and aspects described herein can be implemented, for example, in methods or processes, devices, software programs, data streams or signals. Even if only discussed in the context of a single form of embodiment (e.g., discussed only as a method), the embodiments of the features discussed can also be implemented in other forms (e.g., devices or programs). The device can be implemented, for example, with appropriate hardware, software and firmware. The method can be implemented in, for example, a processor, which generally refers to a processing device, including, for example, a computer, a microprocessor, an integrated circuit or a programmable logic device. The processor also includes a communication device, such as, for example, a computer, a mobile phone, a portable / personal digital assistant ("PDA") and other devices that contribute to information communication between end users.
[0167] References to "one embodiment" or "an embodiment" or "one implementation" or "an implementation" and other variations thereof mean that a particular feature, structure, characteristic, etc. described in connection with the embodiment is included in at least one embodiment. Thus, the appearances of the phrases "in one embodiment" or "in an embodiment" or "in one implementation" or "in an implementation" and any other variations throughout this document are not necessarily all referring to the same embodiment.
[0168] Additionally, this document may refer to "determining" various information. Determining information may include, for example, one or more of: estimating information, calculating information, predicting information, or retrieving information from a memory.
[0169] Additionally, this document may refer to "accessing" various information. Accessing information may include, for example, one or more of: receiving information, retrieving information (e.g., from a memory), storing information, moving information, copying information, calculating information, determining information, predicting information, or estimating information.
[0170] Additionally, this document may refer to "receiving" various information. Like "accessing," receiving is a broad term. Receiving information may include one or more of: for example, accessing information or retrieving information (e.g., from storage). Additionally, in one way or another, during operations such as, for example: storing information, processing information, sending information, moving information, copying information, erasing information, calculating information, determining information, predicting information, or estimating information, "receiving" is generally involved.
[0171] It should be appreciated that use of any of the following “ / ”, “and / or”, and “at least one of”, for example, in the context of “A / B”, “A and / or B”, and “at least one of A and B” is intended to encompass selection of only the first listed option (A), or only the second listed option (B), or both options (A and B). As a further example, in the context of “A, B, and / or C” and “at least one of A, B, and C”, such wording is intended to encompass selection of only the first listed option (A), or only the second listed option (B), or only the third listed option (C), or only the first and second listed options (A and B), or only the first and third listed options (A and C), or only the second and third listed options (B and C), or all three options (A and B and C). This may be extended to multiple items listed, as will be apparent to one of ordinary skill in this and related arts.
[0172] Moreover, as used herein, the word "signal" especially indicates something to the corresponding decoder. For example, in some embodiments, the encoder uses signaling to notify the following specific one: a flag indicating whether illumination compensation is applied to the current block according to a condition, or a flag indicating whether illumination compensation is enabled. In this way, in an embodiment, the same parameters are used on both the encoder side and the decoder side. Therefore, for example, the encoder can transmit (explicitly signaling) specific parameters to the decoder so that the decoder can use the same specific parameters. On the contrary, if the decoder already has specific parameters as well as other parameters, signaling can be used without transmission (implicit signaling) to simply allow the decoder to know and select specific parameters. By avoiding the transmission of any actual function, bit savings are achieved in various embodiments. It should be recognized that signaling can be accomplished in a variety of ways. For example, in various embodiments, one or more syntax elements, flags, etc. are used to signal information to the corresponding decoder. Although the verb form of the word "signaling" is mentioned above, the word "signaling" can also be used as a noun in this article.
[0173] As will be apparent to one of ordinary skill in the art, embodiments may generate various signals formatted to carry information that may be stored or transmitted, for example. The information may include, for example, instructions for executing a method or data generated by one of the described embodiments. For example, a signal may be formatted to carry a bit stream of the described embodiments. Such a signal may be formatted as, for example, an electromagnetic wave (e.g., using a radio frequency portion of a spectrum) or a baseband signal. Formatting may include, for example, encoding a data stream and modulating a carrier 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.
[0174] We have described a number of embodiments. These embodiments provide at least the following broad invention and claims across various claim categories and types, including all combinations:
[0175] • Modify the illumination compensation processing applied in the decoder and / or encoder.
[0176] The illumination compensation process means weighting of the prediction "P" based on a linear function ("a.P+b" or "aP"), and the IC parameter is (a;b) or (a).
[0177] ● Based on the comparison of block parameters and values in the decoder and / or encoder, apply illumination compensation processing to the current block.
[0178] ●The value varies based on the image.
[0179] • Decode the value from the bitstream (eg, PPS, SPS, slice).
[0180] ●The block parameter is at least one of a block component, a reference picture index, a block depth, and a layered picture depth.
[0181] • A flag indicating whether illumination compensation is applied to the current block is decoded (respectively encoded) only if the parameters of the current block verify a given condition.
[0182] - According to any of the embodiments discussed, a flag indicating whether illumination compensation is applied to the current block is decoded (respectively encoded) according to the comparison.
[0183] Apply illumination compensation to the current block according to the components, for example, illumination compensation is applied to the luma component only. If the current block depth is less than a certain value, decode a flag indicating whether illumination compensation is applied to the current block.
[0184] ●When the layered picture depth is greater than a certain value, decode a flag indicating whether illumination compensation is applied to the current block.
[0185] • According to any of the embodiments discussed, a signaling syntax element is inserted that enables the decoder to determine whether to apply illumination compensation to a block.
[0186] - A bitstream or signal comprising one or more of the described syntax elements, or variants thereof.
[0187] • Insertion of syntax elements in the signaling, which enables the decoder to adapt the illumination compensation in a way corresponding to that used by the encoder.
[0188] ● Creating and / or sending and / or receiving and / or decoding a bitstream or signal comprising one or more of the described syntax elements or variations thereof.
[0189] • A TV, set-top box, mobile phone, tablet or other electronic device that performs illumination compensation according to any of the described embodiments.
[0190] • A TV, set-top box, mobile phone, tablet or other electronic device that performs illumination compensation according to any of the described embodiments and displays (eg using a monitor, screen or other type of display) the resulting image.
[0191] • A TV, set-top box, mobile phone, tablet or other electronic device that tunes (eg, using a tuner) a channel to receive a signal comprising an encoded image and performs illumination compensation according to any of the described embodiments.
[0192] • A TV, set-top box, mobile phone, tablet or other electronic device that wirelessly receives (eg using an antenna) a signal comprising an encoded image and performs illumination compensation according to any of the described embodiments.
[0193] A method for decoding a current block of a picture is disclosed, the method comprising:
[0194] Access motion compensation reference blocks;
[0195] decoding at least one illumination compensation parameter for the current block in response to the comparison of the parameter of the current block with a value;
[0196] compensating illumination of the motion compensated reference block in response to the at least one illumination compensation parameter; and
[0197] The current block is reconstructed from the illumination and motion compensated reference block.
[0198] An apparatus is disclosed, the apparatus comprising one or more processors configured to execute:
[0199] Access motion compensation reference blocks;
[0200] decoding at least one illumination compensation parameter for a current block of a picture in response to the comparison of the parameter of the current block with the value;
[0201] compensating illumination of the motion compensated reference block in response to the at least one illumination compensation parameter; and
[0202] The current block is reconstructed from the illumination and motion compensated reference block.
[0203] In an embodiment, the at least one illumination compensation parameter is a flag indicating whether illumination compensation is applied to said current block.
[0204] In an embodiment, the value is decoded from a sequence header, a picture header or a slice header.
[0205] In an embodiment, the block parameter is at least one of a block component, a reference picture index, a block depth and a layered picture depth.
[0206] In an embodiment, decoding at least one illumination compensation parameter for the current block in response to comparing the parameter of the current block with a value comprises decoding a flag indicating whether illumination compensation is applied to the current block only if a reference picture index of the current block is equal to a first value.
[0207] In an embodiment, decoding at least one illumination compensation parameter for the current block in response to comparing the parameter of the current block with a value comprises decoding a flag indicating whether illumination compensation is applied to the current block only if a size of the current block is greater than a second value.
[0208] In an embodiment, decoding at least one illumination compensation parameter for the current block in response to comparing the parameter of the current block with a value comprises decoding a flag indicating whether illumination compensation is applied to the current block only if the current block depth is less than a third value.
[0209] In an embodiment, decoding at least one illumination compensation parameter for the current block in response to comparing the parameter of the current block with a value comprises decoding a flag indicating whether illumination compensation is applied to the current block only if the layered picture depth is less than a fourth value.
[0210] In an embodiment, illuminance compensation parameters are decoded only for a subset of components of the current block.
[0211] A method for encoding a current block of a picture is disclosed, the method comprising:
[0212] Access motion compensation reference blocks;
[0213] encoding at least one illumination compensation parameter for the current block in response to the comparison of the parameter of the current block with a value;
[0214] compensating predicted illumination based on the motion compensated reference block in response to the at least one illumination compensation parameter; and
[0215] The current block is encoded from the illumination and motion compensated reference block.
[0216] An apparatus is disclosed, the apparatus comprising one or more processors configured to execute:
[0217] Access motion compensation reference blocks;
[0218] encoding at least one illumination compensation parameter for a current block of a picture in response to the comparison of the parameter of the current block with the value;
[0219] compensating predicted illumination based on the motion compensated reference block in response to the at least one illumination compensation parameter; and
[0220] The current block is encoded from the illumination and motion compensated reference block.
[0221] In an embodiment, the at least one illumination compensation parameter is a flag indicating whether illumination compensation is applied to said current block.
[0222] In an embodiment, the value is encoded in a sequence header, a picture header or a slice header.
[0223] In an embodiment, the block parameter is at least one of a block component, a reference picture index, a block depth and a layered picture depth.
[0224] In an embodiment, encoding at least one illumination compensation parameter for the current block in response to comparing the parameter of the current block with a value comprises encoding a flag indicating whether illumination compensation is applied to the current block only if a reference picture index of the current block is equal to a first value.
[0225] In an embodiment, encoding at least one illumination compensation parameter for the current block in response to comparing the parameter of the current block with a value comprises encoding a flag indicating whether illumination compensation is applied to the current block only if a size of the current block is greater than a second value.
[0226] In an embodiment, encoding at least one illumination compensation parameter for the current block in response to comparing the parameter of the current block with a value comprises encoding a flag indicating whether illumination compensation is applied to the current block only if the current block depth is less than a third value.
[0227] In an embodiment, encoding at least one illumination compensation parameter for the current block in response to comparing the parameter of the current block with a value comprises encoding a flag indicating whether illumination compensation is applied to the current block only if the layered picture depth is less than a fourth value.
[0228] In an embodiment, illuminance compensation parameters are encoded only for a subset of the components of the current block.
[0229] Various other general and specific inventions and claims are also supported and contemplated throughout this disclosure.
Claims
1. A method for decoding, comprising: obtaining a value of a syntax element indicating that an illumination compensation mode applies to a current block of a picture; as well as Applying the illumination compensation mode to decode the current block according to the value of the syntax element; Therein, during obtaining the value of the syntax element, the value is decoded from video data or inferred from already decoded information, depending on a condition according to a characteristic of the current block.
2. The method according to claim 1, wherein: In response to the current block being in merge mode, a value of the syntax element is inferred by inheriting the syntax element from a block neighboring the current block.
3. The method according to claim 1, wherein: The characteristic of the current block is the size of the current block.
4. The method according to claim 1, wherein: The characteristic of the current block is a feature of at least one block adjacent to the current block.
5. The method according to claim 1, wherein: The condition is decoded from a sequence header, a picture header or a slice header.
6. The method according to claim 1, wherein: The characteristic of the current block is a reference picture used for inter prediction of the current block. 7 . The method of claim 6 , wherein information signaled in a slice header indicates reference pictures that may be used by blocks coded in the illumination compensation mode.
8. The method according to claim 1, wherein: The characteristic of the current block is a hierarchical depth of a slice or picture including the current block.
9. The method according to claim 1, wherein: The characteristic of the current block is a coding tree depth of the current block.
10. A method for encoding, comprising: determining a value of a syntax element indicating that an illumination compensation mode applies to a current block of a picture; as well as Applying the illumination compensation mode to encode the current block according to the value of the syntax element; In response to a condition based on a characteristic of the current block being satisfied, the syntax element is signaled.
11. The method according to claim 10, wherein: In response to the current block being in merge mode, the value of the syntax element is inherited from a block neighboring the current block, and signaling of the syntax element is skipped.
12. The method according to claim 10, wherein: The characteristic of the current block is the size of the current block, or a feature of at least one block adjacent to the current block, or a reference picture used for inter-frame prediction of the current block, or a hierarchical depth of a slice or picture including the current block, or a coding tree depth of the current block.
13. The method according to claim 10, wherein: The condition is decoded from a sequence header, a picture header or a slice header.
14. The method of claim 12, signaling information in a slice header to indicate reference pictures that may be used by blocks coded in the illumination compensation mode.
15. A device for decoding, comprising an electronic circuit configured to: obtaining a value of a syntax element indicating that an illumination compensation mode applies to a current block of a picture; and Applying the illumination compensation mode to decode the current block according to the value of the syntax element; in, During obtaining the value of the syntax element, the value is decoded from video data or inferred from already decoded information, depending on a condition according to characteristics of the current block.
16. The device according to claim 15, wherein: In response to the current block being in merge mode, a value of the syntax element is inferred by inheriting the syntax element from a block neighboring the current block.
17. The apparatus according to claim 15, wherein: The characteristic of the current block is the size of the current block, or a feature of at least one block adjacent to the current block, or a reference picture used for inter-frame prediction of the current block, or a hierarchical depth of a slice or picture including the current block, or a coding tree depth of the current block.
18. The apparatus of claim 15, wherein the condition is decoded from a sequence header, a picture header, or a slice header.
19. The apparatus of claim 17, wherein the information signaled in a slice header indicates a reference picture that can be used by a block coded in the illumination compensation mode.
20. An apparatus for encoding, comprising an electronic circuit configured to: determining a value of a syntax element indicating that an illumination compensation mode applies to a current block of a picture; as well as Applying the illumination compensation mode to encode the current block according to the value of the syntax element; In response to a condition based on a characteristic of the current block being satisfied, the syntax element is signaled.