Methods and apparatus of inheriting block vector shifted cross-component models for video coding

By inheriting block vector shifted cross-component models, the method addresses inefficiencies in chroma prediction in VVC, enhancing coding efficiency and video quality through refined spatial and temporal parameters.

WO2024222798A9PCT designated stage expired Publication Date: 2026-02-12MEDIATEK INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2024/089803
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-04-28
Filing Date
2024-04-25
Publication Date
2026-02-12

AI Technical Summary

Technical Problem

Existing video coding systems face challenges in efficiently predicting chroma samples from luma samples, particularly in versatile video coding (VVC), due to limitations in cross-component prediction models, leading to suboptimal coding efficiency and quality.

Method used

Inheriting block vector shifted cross-component models by determining candidate lists based on the block vector of the current or neighboring blocks, including spatial and temporal parameters, and refining model parameters using historical data to improve chroma prediction accuracy.

Benefits of technology

Enhances coding performance by optimizing cross-component prediction, reducing redundancy, and improving video quality through refined model parameters and inherited candidate lists.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024089803_12022026_PF_FP_ABST
    Figure CN2024089803_12022026_PF_FP_ABST
Patent Text Reader

Abstract

A method and apparatus for coding colour pictures using coding tools including deriving an inherited candidate based on the block vector of the current block or a neighbouring block. According to this method, one or more block vectors associated with the current block or one or more neighbouring blocks of the current block are determined. One or more inherited candidates are determined by using information comprising one or more block vectors. A candidate list comprising said one or more inherited candidates is determined. The second-colour block is encoded or decoded using the candidate list, wherein cross-component prediction data are generated for the second-colour block according to one or more target cross-component models when one or more inherited candidates are selected for the current block.
Need to check novelty before this filing date? Find Prior Art

Description

METHODS AND APPARATUS OF INHERITING BLOCK VECTOR SHIFTED CROSS-COMPONENT MODELS FOR VIDEO CODING

[0001] CROSS REFERENCE TO RELATED APPLICATIONS

[0002] The present invention is a non-Provisional Application of and claims priority to U.S. Provisional Patent Application No. 63 / 498,849, filed on April 28, 2023. The U.S. Provisional Patent Application is hereby incorporated by reference in its entirety.FIELD OF THE INVENTION

[0003] The present invention relates to video coding system. In particular, the present invention relates to deriving an inherited candidate based on the block vector of the current block or a neighbouring block for cross-component prediction related modes in a video coding systemBACKGROUND

[0004] Versatile video coding (VVC) is the latest international video coding standard developed by the Joint Video Experts Team (JVET) of the ITU-T Video Coding Experts Group (VCEG) and the ISO / IEC Moving Picture Experts Group (MPEG) . The standard has been published as an ISO standard: ISO / IEC 23090-3: 2021, Information technology -Coded representation of immersive media -Part 3: Versatile video coding, published Feb. 2021. VVC is developed based on its predecessor HEVC (High Efficiency Video Coding) by adding more coding tools to improve coding efficiency and also to handle various types of video sources including 3-dimensional (3D) video signals.

[0005] Fig. 1A illustrates an exemplary adaptive Inter / Intra video encoding system incorporating loop processing. For Intra Prediction 110, the prediction data is derived based on previously coded video data in the current picture. For Inter Prediction 112, Motion Estimation (ME) is performed at the encoder side and Motion Compensation (MC) is performed based on the result of ME to provide prediction data derived from other picture (s) and motion data. Switch 114 selects Intra Prediction 110 or Inter Prediction 112 and the selected prediction data is supplied to Adder 116 to form prediction errors, also called residues. The prediction error is then processed by Transform (T) 118 followed by Quantization (Q) 120. The transformed and quantized residues are then coded by Entropy Encoder 122 to be included in a video bitstream corresponding to the compressed video data. The bitstream associated with the transform coefficients is then packed with side information such as motion and coding modes associated with Intra prediction and Inter prediction, and other information such as parameters associated with loop filters applied to underlying image area. The side information associated with Intra Prediction 110, Inter prediction 112 and in-loop filter 130, is provided to Entropy Encoder 122 as shown in Fig. 1A. When an Inter-prediction mode is used, a reference picture or pictures have to be reconstructed at the encoder end as well. Consequently, the transformed and quantized residues are processed by Inverse Quantization (IQ) 124 and Inverse Transformation (IT) 126 to recover the residues. The residues are then added back to prediction data 136 at Reconstruction (REC) 128 to reconstruct video data. The reconstructed video data may be stored in Reference Picture Buffer 134 and used for prediction of other frames.

[0006] As shown in Fig. 1A, incoming video data undergoes a series of processing in the encoding system. The reconstructed video data from REC 128 may be subject to various impairments due to a series of processing. Accordingly, in-loop filter 130 is often applied to the reconstructed video data before  the reconstructed video data are stored in the Reference Picture Buffer 134 in order to improve video quality. For example, deblocking filter (DF) , Sample Adaptive Offset (SAO) and Adaptive Loop Filter (ALF) may be used. The loop filter information may need to be incorporated in the bitstream so that a decoder can properly recover the required information. Therefore, loop filter information is also provided to Entropy Encoder 122 for incorporation into the bitstream. In Fig. 1A, Loop filter 130 is applied to the reconstructed video before the reconstructed samples are stored in the reference picture buffer 134. The system in Fig. 1A is intended to illustrate an exemplary structure of a typical video encoder. It may correspond to the High Efficiency Video Coding (HEVC) system, VP8, VP9, H. 264 or VVC.

[0007] The decoder, as shown in Fig. 1B, can use similar or portion of the same functional blocks as the encoder except for Transform 118 and Quantization 120 since the decoder only needs Inverse Quantization 124 and Inverse Transform 126. Instead of Entropy Encoder 122, the decoder uses an Entropy Decoder 140 to decode the video bitstream into quantized transform coefficients and needed coding information (e.g. ILPF information, Intra prediction information and Inter prediction information) . The Intra prediction 150 at the decoder side does not need to perform the mode search. Instead, the decoder only needs to generate Intra prediction according to Intra prediction information received from the Entropy Decoder 140. Furthermore, for Inter prediction, the decoder only needs to perform motion compensation (MC 152) according to Inter prediction information received from the Entropy Decoder 140 without the need for motion estimation.

[0008] According to VVC, an input picture is partitioned into non-overlapped square block regions referred as CTUs (Coding Tree Units) , similar to HEVC. Each CTU can be partitioned into one or multiple smaller size coding units (CUs) . The resulting CU partitions can be in square or rectangular shapes. Also, VVC divides a CTU into prediction units (PUs) as a unit to apply prediction process, such as Inter prediction, Intra prediction, etc.

[0009] The VVC standard incorporates various new coding tools to further improve the coding efficiency over the HEVC standard. Some new tools relevant to the present invention are reviewed as follows.

[0010] Cross-Component Linear Model (CCLM) Prediction

[0011] To reduce the cross-component redundancy, a cross-component linear model (CCLM) prediction mode is used in the VVC, for which the chroma samples are predicted based on the reconstructed luma samples of the same CU by using a linear model as follows:

[0012] predC (i, j) =α·recL′ (i, j) + β               (1)

[0013] where predC (i, j) represents the predicted chroma samples in a CU and recL′ (i, j) represents the downsampled reconstructed luma samples of the same CU.

[0014] The CCLM parameters (α and β) are derived with at most four neighbouring chroma samples and their corresponding down-sampled luma samples. Suppose the current chroma block dimensions are W×H, then W’ and H’ are set as

[0015] 1 W’= W, H’= H when LM_LA mode is applied;

[0016] 2 W’=W + H when LM_Amode is applied;

[0017] 3 H’= H + W when LM_L mode is applied.

[0018] The above neighbouring positions are denoted as S [0, -1] …S [W’-1, -1] and the left neighbouring positions are denoted as S [-1, 0] …S [-1, H’-1] . Then the four samples are selected as

[0019] - S [W’ / 4, -1] , S [3 *W’ / 4, -1] , S [-1, H’ / 4] , S [-1, 3 *H’ / 4] when LM_LA mode is  applied and both above and left neighbouring samples are available;

[0020] - S [W’ / 8, -1] , S [3 *W’ / 8, -1] , S [5 *W’ / 8, -1] , S [7 *W’ / 8, -1] when LM_Amode is applied or only the above neighbouring samples are available;

[0021] - S [-1, H’ / 8] , S [-1, 3 *H’ / 8] , S [-1, 5 *H’ / 8] , S [-1, 7 *H’ / 8] when LM_L mode is applied or only the left neighbouring samples are available.

[0022] The four neighbouring luma samples at the selected positions are down-sampled and compared four times to find two larger values: x0A and x1A, and two smaller values: x0B and x1B. Their corresponding chroma sample values are denoted as y0A, y1A, y0B and y1B. Then xA, xB, yA and yB are derived as: xA= (x0A + x1A +1) >>1; xB= (x0B + x1B +1) >>1; yA= (y0A + y1A +1) >>1; yB= (y0B + y1B +1) >>1                (2)

[0023] Finally, the linear model parameters α and β are obtained according to the following equations. β=Yb-α·Xb                    (4)

[0024] Fig. 2 shows an example of the location of the left and above samples and the sample of the current block involved in the LM_LA mode. Fig. 2 shows the relative sample locations of N × N chroma block 210, the corresponding 2N × 2N luma block 220 and their neighbouring samples (shown as filled circles) .

[0025] Besides the above template and left template can be used to calculate the linear model coefficients together, they also can be used alternatively in the other 2 LM modes, called LM_A, and LM_L modes.

[0026] In LM_Amode, only the above template is used to calculate the linear model coefficients. To get more samples, the above template is extended to (W+H) samples. In LM_L mode, only left template are used to calculate the linear model coefficients. To get more samples, the left template is extended to (H+W) samples.

[0027] In LM_LA mode, left and above templates are used to calculate the linear model coefficients.

[0028] The terms of {LM_LA, LM_L, LM_A} and {CCLM_LT, CCLM_L, CCLM_T} are used interchangeably in this disclosure.

[0029] To match the chroma sample locations for 4: 2: 0 video sequences, two types of down-sampling filter are applied to luma samples to achieve 2 to 1 down-sampling ratio in both horizontal and vertical directions. The selection of down-sampling filter is specified by a SPS level flag. The two down-sampling filters are as follows, which are corresponding to “type-0” and “type-2” content, respectively. RecL′ (i, j) = [recL (2i-1, 2j-1) +2·recL (2i, 2j-1) +recL (2i+1, 2j-1) +  recL (2i-1, 2j) +2·recL (2i, 2j) +recL (2i+1, 2j) +4] >> 3    (5) RecL′ (i, j) =recL (2i, 2j-1) +recL (2i-1, 2j) +4·recL (2i, 2j) +recL (2i+1, 2j) +  recL (2i, 2j+1) +4] >> 3    (6)

[0030] Note that only one luma line (general line buffer in intra prediction) is used to make the down-sampled luma samples when the upper reference line is at the CTU boundary.

[0031] This parameter computation is performed as part of the decoding process, and is not just as an encoder search operation. As a result, no syntax is used to convey the α and β values to the decoder.

[0032] Multiple Model CCLM (MMLM)

[0033] In the JEM (J. Chen, E. Alshina, G. J. Sullivan, J. -R. Ohm, and J. Boyce, Algorithm Description of Joint Exploration Test Model 7, document JVET-G1001, ITU-T / ISO / IEC Joint Video Exploration Team (JVET) , Jul. 2017) , multiple model CCLM mode (MMLM) is proposed for using two models for predicting the chroma samples from the luma samples for the whole CU. In MMLM, neighbouring luma samples and neighbouring chroma samples of the current block are classified into two groups, each group is used as a training set to derive a linear model (i.e., a particular α and β are derived for a particular group) . Furthermore, the samples of the current luma block are also classified based on the same rule for the classification of neighbouring luma samples. Three MMLM model modes (MMLM_LA, MMLM_T, and MMLM_L) are allowed for choosing the neighbouring samples from left-side and above-side, above-side only, and left-side only, respectively.

[0034] The term MMLM_LA and MMLM_LT are used interchangeably in this disclosure.

[0035] Fig. 3 shows an example of classifying the neighbouring samples into two groups. Threshold is calculated as the average value of the neighbouring reconstructed luma samples. A neighbouring sample with Rec′L [x, y] <= Threshold is classified into group 1; while a neighbouring sample with Rec′L [x, y] > Threshold is classified into group 2.

[0036] Accordingly, the MMLM uses two models according to the sample level of the neighbouring samples.

[0037] Convolutional Cross-Component Model (CCCM) -Single Model and Multi-Model

[0038] In CCCM, a convolutional model is applied to improve the chroma prediction performance. The convolutional model has 7-tap filter consisting of a 5-tap plus sign shape spatial component, a nonlinear term and a bias term. The input to the spatial 5-tap component of the filter consists of a centre (C) luma sample which is collocated with the chroma sample to be predicted and its above / north (N) , below / south (S) , left / west (W) and right / east (E) neighbours as shown in Fig. 4.

[0039] The nonlinear term (denoted as P) is represented as power of two of the centre luma sample C and scaled to the sample value range of the content: P = (C*C + midVal) >> bitDepth.

[0040] For example, for 10-bit contents, the nonlinear term is calculated as: P = (C*C + 512) >> 10

[0041] The bias term (denoted as B) represents a scalar offset between the input and output (similarly to the offset term in CCLM) and is set to the middle chroma value (512 for 10-bit content) .

[0042] Output of the filter is calculated as a convolution between the filter coefficients ci and the input values and clipped to the range of valid chroma samples: predChromaVal = c0C + c1N + c2S + c3E + c4W + c5P + c6B

[0043] The filter coefficients ci are calculated by minimising MSE between predicted and reconstructed chroma samples in the reference area. Fig. 5 illustrates an example of the reference area which consists of 6 lines of chroma samples above and left of the PU. Reference area extends one PU  width to the right and one PU height below the PU boundaries. Area is adjusted to include only available samples. The extensions to the area (indicated as “paddings” ) are needed to support the “side samples” of the plus-shaped spatial filter in Fig. 4 and are padded when in unavailable areas.

[0044] The MSE minimization is performed by calculating autocorrelation matrix for the luma input and a cross-correlation vector between the luma input and chroma output. Autocorrelation matrix is LDL decomposed and the final filter coefficients are calculated using back-substitution. The process follows roughly the calculation of the ALF filter coefficients in ECM, however LDL decomposition was chosen instead of Cholesky decomposition to avoid using square root operations.

[0045] Also, similarly to CCLM, there is an option of using a single model or multi-model variant of CCCM. The multi-model variant uses two models, one model derived for samples above the average luma reference value and another model for the rest of the samples (following the spirit of the CCLM design) . Multi-model CCCM mode can be selected for PUs which have at least 128 reference samples available.

[0046] Gradient Linear Model (GLM)

[0047] For YUV 4: 2: 0 colour format, a gradient linear model (GLM) method can be used to predict the chroma samples from luma sample gradients. Two modes are supported: a two-parameter GLM mode and a three-parameter GLM mode.

[0048] Compared with the CCLM, instead of down-sampled luma values, the GLM utilizes luma sample gradients to derive the linear model. Specifically, when the GLM is applied, the input to the CCLM process, i.e., the down-sampled luma samples L, are replaced by luma sample gradients G. The other parts of the CCLM (e.g., parameter derivation, prediction sample linear transform) are kept unchanged. C=α·G+β

[0049] In the three-parameter GLM, a chroma sample can be predicted based on both the luma sample gradients and down-sampled luma values with different parameters. The model parameters of the three-parameter GLM are derived from 6 rows and columns adjacent samples by the LDL decomposition based MSE minimization method as used in the CCCM. C=α0·G+α1·L+α2·β

[0050] For signalling, when the CCLM mode is enabled to the current CU, one flag is signalled to indicate whether GLM is enabled for both Cb and Cr components; if the GLM is enabled, another flag is signalled to indicate which of the two GLM modes is selected and one syntax element is further signalled to select one of 4 gradient filters for the gradient calculation.

[0051] If the GLM is enabled for one component, one syntax element is further signalled to select one of 4 gradient filters (610-640 in Fig. 6) for the gradient calculation.

[0052] Spatial Candidate Derivation

[0053] The derivation of spatial merge candidates in VVC is the same as that in HEVC except that the positions of first two merge candidates are swapped. A maximum of four merge candidates (B0, A0, B1 and A1) for current CU 710 are selected among candidates located in the positions depicted in Fig. 7. The order of derivation is B0, A0, B1, A1 and B2. Position B2 is considered only when one or more neighbouring CU of positions B0, A0, B1, A1 are not available (e.g. belonging to another slice or tile) or is intra coded. After candidate at position A1 is added, the addition of the remaining candidates is subject to a redundancy check which ensures that candidates with the same motion information are excluded from the  list so that coding efficiency is improved.

[0054] Temporal Candidates Derivation

[0055] In this step, only one candidate is added to the list. Particularly, in the derivation of this temporal merge candidate for a current CU 810, a scaled motion vector is derived based on the co-located CU 820 belonging to the collocated reference picture as shown in Fig. 8. The reference picture list and the reference index to be used for the derivation of the co-located CU is explicitly signalled in the slice header. The scaled motion vector 830 for the temporal merge candidate is obtained as illustrated by the dotted line in Fig. 8, which is scaled from the motion vector 840 of the co-located CU using the POC (Picture Order Count) distances, tb and td, where tb is defined to be the POC difference between the reference picture of the current picture and the current picture and td is defined to be the POC difference between the reference picture of the co-located picture and the co-located picture. The reference picture index of temporal merge candidate is set equal to zero.

[0056] The position for the temporal candidate is selected between candidates C0 and C1, as depicted in Fig. 9. If CU at position C0 is not available, is intra coded, or is outside of the current row of CTUs, position C1 is used. Otherwise, position C0 is used in the derivation of the temporal merge candidate.

[0057] Non-Adjacent Spatial Candidate

[0058] During the development of the VVC standard, a coding tool referred as Non-Adjacent Motion Vector Prediction (NAMVP) has been proposed in JVET-L0399 (Yu Han, et al., “CE4.4.6: Improvement on Merge / Skip mode” , Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 12th Meeting: Macao, CN, 3–12 Oct. 2018, Document: JVET-L0399) . According to the NAMVP technique, the non-adjacent spatial merge candidates are inserted after the TMVP (i.e., the temporal MVP) in the regular merge candidate list. The pattern of spatial merge candidates is shown in Fig. 10. The distances between non-adjacent spatial candidates and current coding block are based on the width and height of current coding block. In Fig. 10, each small square corresponds to a NAMVP candidate and the candidates are ordered (as shown by the number inside the square) according to the distance. The line buffer restriction is not applied. In other words, the NAMVP candidates far away from a current block may have to be stored that may require a large buffer.

[0059] Direct Block Vector for Chroma Block

[0060] The direct block vector is used for chroma block in dual tree slices. When the chroma dual tree is activated, a flag is signalled to indicate whether a chroma block is coded using IBC mode. If one of the luma blocks 1110 in five locations (i.e., TL, TR, C, BL, and BR) as shown in Fig. 11 is coded with IBC or intraTMP mode, its block vector is scaled and is used as block vector for the chroma block 1120. Template matching is used to perform block vector scaling.

[0061] Intra Template Matching

[0062] Intra template matching prediction (IntraTMP) is a special intra prediction mode that copies the best prediction block from the reconstructed part of the current frame, whose L-shaped template matches the current template. For a predefined search range, the encoder searches for the most similar template to the current template in a reconstructed part of the current frame and uses the corresponding block as a prediction block. The encoder then signals the usage of this mode, and the same prediction operation is performed at the decoder side.

[0063] The prediction signal is generated by matching the L-shaped, Top-only or Left-only causal neighbour of the current block with another block in a predefined search area consisting of:

[0064] R1: current CTU

[0065] R2: top-left CTU

[0066] R3: above CTU

[0067] R4: left CTU

[0068] Sum of absolute differences (SAD) is used as a cost function.

[0069] Within each region, the decoder constructs a candidate list of up to “19” template matching block vectors that are ranked in ascending order according to the template cost (SAD) . The following modes are supported:

[0070] 1 Single predictor: A single predictor is selected from the candidate list.

[0071] 2 Fusion of multiple predictors: multiple predictors are blended multiple to derive the final prediction block. The blending weights are either computed from the template matching cost of each predictor, or with Wiener-filter based weight derivation method.

[0072] 3 Sub-pel precision: When single predictor is used, sub-pel precision can be used with 1 / 2-pel precision, 1 / 4-pel precision and 3 / 4-pel precision, each with 8 possible directions.

[0073] 4 linear filter model: A linear filter can be learned between the reference template and current template. This learned linear filter can then be applied to reference block. This mode can be used for single predictor when sub-pel precision is not used.

[0074] The dimensions of all regions (SearchRange_w, SearchRange_h) are set proportional to the block dimension (BlkW, BlkH) to have a fixed number of SAD comparisons per pixel. That is:

[0075] SearchRange_w = min (64, a*BlkW) , and

[0076] SearchRange_h = min (64, a*BlkH) ,

[0077] where ‘a’ is a constant that controls the gain / complexity trade-off. In practice, ‘a’ is equal to 5.

[0078] In the present invention, schemes of inheriting candidates determined or derived according to a block vector of the current block or a neighbouring block are disclosed.

[0079] BRIEF SUMMARY OF THE INVENTION

[0080] A method and apparatus for coding colour pictures using coding tools including one or more cross component models related modes are disclosed. According to this method, input data associated with a current block comprising a first-colour block and a second-colour block are received, wherein the input data comprise pixel data to be encoded at an encoder side or data associated with the current block to be decoded at a decoder side, and wherein the current block or one or more neighbouring blocks of the current block are coded using a block vector. One or more block vectors associated with the current block or said one or more neighbouring blocks of the current block are determined. One or more inherited candidates are determined by using information comprising said one or more block vectors. A candidate list comprising said one or more inherited candidates is determined. The second-colour block is encoded or decoded using the candidate list, wherein cross-component prediction data are generated for the second-colour block according to one or more target cross-component models when said one or more inherited candidates are selected for the current block.

[0081] In one embodiment, a target inherited candidate is located at a target location determined according to current block location and a target block vector. In one embodiment, locations of said one or more inherited candidates are determined according to the target location shifted by a set of pre-defined shifts. In one embodiment, the target location corresponds to the current block location shifted by a  current block vector. In another embodiment, the target location corresponds to the current block location shifted by a neighbouring block vector.

[0082] In one embodiment, when the current block is coded in IBC (Intra Block Copy) mode or there is one block vector available at the current block, the target block vector is derived based on a current block vector of the current block. In one embodiment, rounding is applied to horizontal part and / or vertical part of the current block vector before the current block vector is used to locate said one or more inherited candidates.

[0083] In another embodiment, a chroma dual tree is used for the current block, the target block vector is derived based on one of collocated luma blocks of the current block in a set of pre-defined locations. In one embodiment, rounding is applied to horizontal part and / or vertical part of a selected block vector of said one of collocated luma blocks before the selected block vector is used to locate said one or more inherited candidates.

[0084] In one embodiment, the target block vector is determined from said one or more neighbouring blocks of the current block. In one embodiment, rounding is applied to horizontal part and / or vertical part of a neighbouring block vector of said one or more neighbouring blocks before the neighbouring block vector is used to locate said one or more inherited candidates.BRIEF DESCRIPTION OF THE DRAWINGS

[0085] Fig. 1A illustrates an exemplary adaptive Inter / Intra video coding system incorporating loop processing.

[0086] Fig. 1B illustrates a corresponding decoder for the encoder in Fig. 1A.

[0087] Fig. 2 shows an example of the location of the left and above samples and the sample of the current block involved in the LM_LA mode.

[0088] Fig. 3 shows an example of classifying the neighbouring samples into two groups.

[0089] Fig. 4 illustrates an example of spatial part of the convolutional filter.

[0090] Fig. 5 illustrates an example of reference area with paddings used to derive the filter coefficients.

[0091] Fig. 6 illustrates the 4 gradient patterns for Gradient Linear Model (GLM) .

[0092] Fig. 7 illustrates the neighbouring blocks used for deriving spatial merge candidates for VVC.

[0093] Fig. 8 illustrates an example of temporal candidate derivation, where a scaled motion vector is derived according to POC (Picture Order Count) distances.

[0094] Fig. 9 illustrate the positions for the temporal candidate selected between candidates C0 and C1.

[0095] Fig. 10 illustrates an exemplary pattern of the non-adjacent spatial merge candidates.

[0096] Fig. 11 illustrates an example of direct block vector for chroma block in dual tree slices.

[0097] Fig. 12 illustrates an example of inheriting temporal neighbouring model parameters.

[0098] Fig. 13 illustrates an example of temporal candidate positions according to an embodiment of the current invention.

[0099] Figs. 14A-B illustrate two search patterns for inheriting non-adjacent spatial neighbouring models.

[0100] Fig. 15 illustrates a flowchart of an exemplary video coding system that incorporates an inherited candidate derived based on the block vector of the current block or a neighbouring block  according to an embodiment of the present invention.DETAILED DESCRIPTION OF THE INVENTION

[0101] It will be readily understood that the components of the present invention, as generally described and illustrated in the figures herein, may be arranged and designed in a wide variety of different configurations. Thus, the following more detailed description of the embodiments of the systems and methods of the present invention, as represented in the figures, is not intended to limit the scope of the invention, as claimed, but is merely representative of selected embodiments of the invention. References throughout this specification to “one embodiment, ” “an embodiment, ” or similar language mean that a particular feature, structure, or characteristic described in connection with the embodiment may be included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment” or “in an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment.

[0102] Furthermore, the described features, structures, or characteristics may be combined in any suitable manner in one or more embodiments. One skilled in the relevant art will recognize, however, that the invention can be practiced without one or more of the specific details, or with other methods, components, etc. In other instances, well-known structures, or operations are not shown or described in detail to avoid obscuring aspects of the invention. The illustrated embodiments of the invention will be best understood by reference to the drawings, wherein like parts are designated by like numerals throughout. The following description is intended only by way of example, and simply illustrates certain selected embodiments of apparatus and methods that are consistent with the invention as claimed herein.

[0103] In order to improve the coding performance of cross-component prediction, various schemes related to inheriting cross-component models are disclosed.

[0104] Inheriting Neighbouring Model Parameters

[0105] When applying cross-component prediction coding tool on the current block to generate prediction signals, the cross-component model (CCM) information (more details in section entitled: “Inheriting CCM Information” ) including model parameters can be inherited from neighbouring blocks. More details of neighbouring blocks are described in sections entitled: “Inheriting Spatial Neighbouring Model Parameters” , “Inheriting Temporal Neighbouring Model Parameters” , “Inheriting Non-Adjacent Spatial Neighbouring Models” and “Inheriting Model Parameters from History Table” .

[0106] The final scaling parameter of the current block is inherited from the neighbouring blocks and / or further refined by dA. Once the final scaling parameter is determined, the offset parameter (e.g., β in CCLM) is derived based on the inherited scaling parameter and / or the average value of neighbouring luma and chroma samples of the current block. For example, if the final scaling parameter is inherited from a selected neighbouring block, and the inherited scaling parameter is α′nei, then the final scaling parameter is (α′nei + dA) . For yet another embodiment, the final scaling parameter is inherited from a historical list. For example, the historical list records the most recent j entries of final scaling parameters from previous CCLM-coded blocks. Then, the final scaling parameter is inherited from one selected entry of the historical list, α′list, and the final scaling parameter is (α′list + dA) . For yet another embodiment, the final scaling parameter is inherited from a historical list or the neighbouring blocks, but does not further refine by dA.

[0107] For yet another embodiment, after inheriting model parameters, the offset parameter can be  further refined by dB. For example, if the final offset parameter is inherited from a selected neighbouring block, and the inherited offset parameter is β′nei, then the final offset parameter is (β′nei + dB) . For still another embodiment, the final offset parameter is inherited from a historical list and further refined by dB.For example, the historical list records the most recent j entries of final offset parameters from previous CCLM-coded blocks. Then, the final offset parameter is inherited from one selected entry of the historical list, β′list, and the final offset parameter is (β′list + dB) . For yet another embodiment, the final offset parameter is inherited from a historical list or the neighbouring blocks, but is not further refined by dB.

[0108] For yet another embodiment, if the inherited neighbour block is coded with CCCM, the filter coefficients (ci) are inherited. The offset parameter (e.g., c6×B or c6 in CCCM) can be re-derived based on the inherited parameter and the average value of neighbouring corresponding position luma and chroma samples of the current block.

[0109] For still another embodiment, if the inherited candidate applies GLM gradient pattern to its luma reconstructed samples, the current block shall also inherit the GLM gradient pattern of the candidate and apply to the current luma reconstructed samples.

[0110] For still another embodiment, if the inherited neighbour block is coded with multiple cross-component models (e.g., MMLM, or CCCM with multi-model) , the classification threshold is also inherited to classify the neighbouring samples of the current block into multiple groups, and the inherited multiple cross-component model parameters are further assigned to each group.

[0111] Inheriting CCM Information

[0112] In one embodiment, the cross-component model (CCM) information of inherited cross-component model can be stored together with the inherited model parameters. As mentioned earlier in this disclosure, the CCM information includes, but not limited to prediction mode (e.g., CCLM, MMLM, CCCM) , model index for indicating which model shape is used in convolutional model, classification threshold for multi-model, down-sampling filter flag, down-sampling filtering index, number of neighbouring lines used to derive model, types of templates used to derive model, post-filtering flag or model parameters.

[0113] In one embodiment, CCLM model can be inherited. In addition to storing model parameters, a prediction mode can be stored in the CCM information for indicating that the inherited model is a CCLM model.

[0114] In another embodiment, CCLM model with non-linear term can be inherited. In addition to storing model parameters, a prediction mode can be stored in the CCM information for indicating that the inherited model is a CCLM model with a non-linear term.

[0115] In one embodiment, CCCM model can be inherited. In addition to storing model parameters, a prediction mode can be stored in the CCM information for indicating that the inherited model is a CCCM model. The luma offset and the chroma offset used for adjusting the input of CCCM model can also be stored in the CCM information.

[0116] In another embodiment, CCCM model with different convolution filter shape can be inherited. In addition to model parameters and prediction mode, a CCCM mode index can also be stored in CCM information for indicating which convolution filter shape is used for the inherited CCCM model. For example, a CCCM model with different convolution filter shape can only contain the spatial terms in the horizontal direction. For another example, a CCCM model with different convolution filter shape can  only contain the spatial terms in vertical direction. For another example, a CCCM model with different convolution filter shape can only contain the spatial terms in diagonal direction. For another example, a CCCM model with different convolution filter shape can only contain the spatial terms in anti-diagonal direction. For another example, a CCCM model with different convolution filter shape can contain the X-shape spatial terms.

[0117] In another embodiment, CCCM model using non-downsampled samples can be inherited. In addition to storing model parameters, a prediction mode can be stored in the CCM information for indicating that the inherited model is a CCCM model using non-downsampled samples.

[0118] In another embodiment, CCCM model with multiple down-sampling filter can be inherited. In addition to storing model parameters, a prediction mode can be stored in the CCM information for indicating that the inherited model is a CCCM model with multiple down-sampling filter, and a model index can be also stored in CCM information for indicating which variant of CCCM model with multiple down-sampling filter is inherited.

[0119] In another embodiment, a mixed CCCM model consist of various terms (e.g., spatial term, gradient term, location term, non-linear term and bias term) can be inherited. The gradient term can be calculated in either the downsampled domain or the non-downsampled domain. The location term can be calculated with respect to the top-left coordinates of the current block or the picture. In addition to storing model parameters, a prediction mode can be stored in the CCM information for indicating that the inherited model is a mixed CCCM model consist of various terms. If there are multiple types of mixed CCCM models, a model index can also be stored in the CCM information for indicating which type of mixed CCCM model is inherited. For example, gradient and location based CCCM (GL-CCCM) proposed in JVET-AB0119 (Ramin G. Youvalari, et al., “Non-EE2: Gradient and location based convolutional cross-component model (GL-CCCM) for intra prediction” , Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO / IEC JTC 1 / SC 29 / WG 11, 28th Meeting, Mainz, DE, 20–28 October 2022, Document: JVET-AB0119) is a mixed CCCM model which consist of one spatial term in centre position, two gradient terms for the horizontal direction and vertical direction, two location terms X and Y for the relative horizontal location and relative vertical location, one non-linear term and one bias term. In addition to storing model parameters, a prediction mode can be stored in the CCM information for indicating that the inherited model is a GL-CCCM model.

[0120] In one embodiment, GLM model can be inherited. In addition to storing model parameters, a prediction mode can be stored in the CCM information for indicating that the inherited model is a GLM model, and a down-sampling filtering index can be also stored in CCM information for indicating which gradient down-sampled filter is used for the inherited GLM model.

[0121] In another embodiment, GLM model with luma term can be inherited. In addition to storing model parameters, a prediction mode can be stored in the CCM information for indicating that the inherited model is a GLM model with luma term, and a down-sampling filtering index can be also stored in CCM information for indicating which gradient down-sampled filter is used for the inherited GLM model with luma term.

[0122] In one embodiment, any kind of cross-component multi-model can be inherited. In addition to storing model parameters and prediction mode, a multi-model on / off flag can be stored in the CCM information for indicating whether the inherited CCM model is a multi-model or not. If the multi-model on / off flag is true, the multi-model classification threshold is also stored in the CCM information.

[0123] In one embodiment, the CCM information can include information to indicate how the inherited model is derived. For example, the CCM information can include the number of neighbouring lines used to derive the cross-component model and / or the types of templates used to derive model. For example, a set of templates can be used to derive a CCCM model. The set of templates include template with different positions, sizes, and shapes. The CCM information can store the index of the template that the inherited CCCM model was derived based on. For example, the inherited CCCM model can be derived based on a top-only template, or a left-only template or a left-and-top template. For another example, the inherited CCCM model can be derived based on a 6-line template or a 2-line template.

[0124] In one embodiment, a post-filter flag can be stored in the CCM information. This information describes how the inherited model is used in the block the inherited model is from. If the post-filter flag is on, this indicates a filter is applied to the prediction of the block the inherited model is from.

[0125] Inheriting Spatial Neighbouring Model Parameters

[0126] For another embodiment, the inherited model parameters can be from a block that is an immediate neighbouring block. The models from blocks at pre-defined positions are added into the candidate list in a pre-defined order. For example, the pre-defined positions can be the positions depicted in Fig. 7, and the pre-defined order can be B0, A0, B1, A1 and B2, or A0, B0, B1, A1 and B2.

[0127] In one embodiment, the pre-defined positions and the pre-defined order can be the same as those of spatial candidates for inter merge mode.

[0128] For still another embodiment, assume the position, width and height of the current block are (x, y) , W and H respectively, the pre-defined positions can include the positions at the immediate above (W >> 1) or ( (W >> 1) –1) position (i.e., the positions immediate above the current block, such as (x +W >> 1, y-1) or (x + (W+1) >> 1, y-1) ) if W is greater than or equal to TH, and the positions at the immediate left (H >> 1) or ( (H >> 1) –1) position (i.e., positions immediate left to the current blocks, such as (x-1, y+H>>1) or (x-1, y+ (H+1) >>1) ) if H is greater than or equal to TH, where W and H are the width and height of the current block, TH is a threshold value which can be 2, 4, 8, 16, 32, or 64.

[0129] For still another embodiment, the maximum number of inherited models from spatial neighbours are smaller than the number of pre-defined positions. For example, if the pre-defined positions are as depicted in Fig. 7, there are 5 pre-defined positions. If pre-defined order is B0, A0, B1, A1 and B2, and the maximum number of inherited models from spatial neighbours is 4, the model from B2 is added into the candidate list only when one of preceding blocks is not available or is not coded in cross-component model.

[0130] Inheriting Temporal Neighbouring Model Parameters

[0131] In one embodiment, if the current slice / picture is a non-intra slice / picture, the inherited model parameters can be from the block in the previous coded slices / pictures.

[0132] For still another embodiment, if the current slice / picture is a non-intra slice / picture, the inherited model parameters can be from the block in the previous coded slices / pictures. For example, as shown in the Fig. 12, the current block position is at (x, y) and the block size is w×h. The inherited model parameters can be from the block at position (x’, y’) , (x’, y’+ h / 2) , (x’+ w / 2, y’) , (x’+ w / 2, y’+h / 2) , (x’+ w, y’) , (x’, y’+ h) , or (x’+ w, y’+ h) of the previous coded slices / picture, where x’= x + Δx and y’= y + Δy. In one embodiment, if the prediction mode of the current block is intra, Δx and Δy are set to 0. If the prediction mode of the current block is inter prediction, Δx and Δy are set to the horizontal and vertical motion vector of the current block. In another embodiment, if the current block is inter bi- prediction, Δx and Δy are set to the horizontal and vertical motion vectors in reference picture list 0. In still another embodiment, if the current block is inter bi-prediction, Δx and Δy are set to the horizontal and vertical motion vectors in reference picture list 1.

[0133] For still another embodiment, if the current block is inter bi-prediction, the inherited model parameters can be from the block in the previous coded slices / pictures in the reference lists. For example, if the horizontal and vertical motion vector in reference picture list 0 is ΔxL0 and ΔyL0, the motion vector can be scaled to other reference pictures in the reference list 0 and 1. If the motion vector is scaled to the ith reference picture in the reference list 0 as (ΔxL0, i0, ΔyL0, i0) . The model can be from the block in the ith reference picture in the reference list 0, and Δx and Δy are set to (ΔxL0, i0, ΔyL0, i0) . For another example, if the horizontal and vertical motion vector in reference picture list 0 is ΔxL0 and ΔyL0 and the motion vector is scaled to the ith reference picture in the reference list 1 as (ΔxL0, i1, ΔyL0, i1) . The model can be from the block in the ith reference picture in the reference list 1, and Δx and Δy are set to (ΔxL0, i1, ΔyL0, i1) .

[0134] In one embodiment, if the current slice / picture is a non-intra slice / picture, the inherited model parameters can be from the block in the previous coded slices / pictures. In one embodiment, the current block position is at (x, y) and the block size is w×h. The two value sets αx and αy are defined as: αx= {αx1, αx2, αx3, …, αxn} , αxi<αxj if i<j, αy= {αy1, αy2, αy3, …, αyn}, αyi<αyj if i<j.

[0135] All values in αx and αy are positive numbers. Let The inherited model parameters can be from the block at positions (xmid+αxi×w, ymid+αyi×h) , (xmid+αxi×w, ymid-αyi×h) , (xmid-αxi×w, ymid+αyi×h) , (xmid-αxi×w, ymid-αyi×h) , (xmid+αxi×w, ymid) , (xmid-αxi×w, ymid) , (xmid, ymid+αyi×h) , (xmid, ymid-αyi×h) of the previous coded slices / picture.

[0136] In one sub-embodiment, αx=αy. For example, αx=αy= {1, 2, 3, 4, 5} . The inherited model parameters can be from the block at positions of the previous coded slices / picture depicted in Fig. 13.In Fig. 13, the current block is indicated by a thick-lined box and the location (x_mid, y_mid) = (x+w / 2, y+h / 2) of the current block is indicated by a black dot in the centre. The positions of the previous coded slices / picture are indicated by “X” , grey diamonds, grey squares, grey triangles and grey circles.

[0137] In another sub-embodiment, αx≠ αy. For example, α_x= {1 / 2, 1, 3 / 2, 2, 5 / 2} and αy= {1, 2, 3, 4, 5} .

[0138] In another embodiment, the current block position is at (x, y) (i.e., the upper left corner of the current block) and the block size is w×h. The inherited model parameters can be from the block at positions (x+αxi×w, y+αyi×h) , (x+αxi×w, y-αyi×h) , (x-αxi×w, y+αyi×h) , (x-αxi×w, y-αyi×h) , (x+αxi×w, y) , (x-αxi×w, y) , (x, y+αyi×h}, (x, y-αyi×h) of the previous coded slices / picture.

[0139] In one sub-embodiment, αx= αy. For example, αx=αy= {1, 2, 3, 4, 5} .

[0140] In another sub-embodiment, αx≠ αy. For example, α_x= {1 / 2, 1, 3 / 2, 2, 5 / 2} and αy= {1, 2, 3, 4, 5} .

[0141] In one embodiment, the models from the positions closer to (xmid, ymid) are added into the final merge candidate list first. In another embodiment, the models from the positions closer to (x, y) are  added into the final merge candidate list first.

[0142] In one embodiment, let δx and δy be two fixed positive numbers. The inherited model parameters can be from the block at positions (xmid+αxi×δx, ymid+αyi×δy) , (xmid+αxi×δx, ymid-αyi×δy) , (xmid-αxi×δx, ymid+αyi×δy) , (xmid-αxi×δx, ymid-αyi×δy) , (xmid+αxi×δx, ymid) , (xmid-αxi×δx, ymid) , (xmid, ymid+αyi×δy) , (xmid, ymid-αyi×δy) of the previous coded slices / picture.

[0143] In another embodiment, the current block position is at (x, y) and the block size is w×h. Let δx and δy be two fixed positive numbers The inherited model parameters can be from the block at positions (x+αxi×δx, y+αyi×δy) , (x+αxi×δx, y-αyi×δy) , (x-αxi×δx, y+αyi×δy) , (x-αxi×δx, y-αyi×δy) , (x+αxi×δx, y) , (x-αxi×δx, y) , (x, y+αyi×δy) , (x, y-αyi×δy) of the previous coded slices / picture.

[0144] In another embodiment, the current block position is at (x, y) and the block size is w×h. The inherited model parameters can be from the block at some pre-defined positions (x′, y′) of the previous coded slices / picture. For one example, the positions are inside the corresponding area of the current encoding block, i.e., x≤x′<x+w and y≤y′<y+h. The inherited model parameters can be from the block at (x, y) , (x+w-1, y) , (x, y+h-1) , (x+w-1, y+h-1) , (x+w / 2, y+h / 2) . For another example, the positions are outside of the corresponding area of the current encoding block, i.e., x′<x or x′≥x+w, and y′<y or y′≥y+h. The inherited model parameters can be from the block at (x-1, y) , (x, y-1) , (x-1, y-1) , (x+w, y) , (x+w-1, y-1) , (x+w, y-1) , (x, y+h) , (x-1, y+h-1) , (x-1, y+h) , (x+w, y+h-1) , (x+w-1, y+h) , (x+w, y+h) .

[0145] In one embodiment, the previous coded picture the inherited parameter model is from (i.e., the collocated picture) is one of the pictures in the reference lists.

[0146] In one embodiment, the collocated picture is signalled in the picture / slice header. The reference list and the reference index are signalled in the picture / slice header. For example, the collocated picture is selected as L0 [0] . For another example, the collocated picture is selected as L1 [0] .

[0147] In one embodiment, the collocated picture is selected as the picture in the reference lists whose POC difference between the respective picture and the current picture is the smallest. For example, if the POC of current picture is 8, the POCs of pictures in reference list 0 are {7, 6, 5, 0} and POCs of pictures in reference list 1 are {7, 6, 5, 4} , then L0 [0] (equivalent to L1 [0] ) is selected since its POC difference is the smallest. In one sub-embodiment, if there are two pictures whose POC difference between the respective picture and the current picture are both the smallest, the picture with the smaller POC is selected. In another sub-embodiment, if there are two pictures whose POC difference between the respective picture and the current picture are both the smallest, the picture with the larger POC is selected. In another sub-embodiment, if there are two pictures whose POC difference between the respective picture and the current picture are both the smallest, the picture with smaller QP difference between the respective picture and the current picture is selected. In still another sub-embodiment, if there are two pictures whose POC difference between the respective picture and the current picture are both the smallest, the picture with the smaller QP is selected. In still another sub-embodiment, if there are two pictures whose POC difference between the respective picture and the current picture are both the smallest, the picture with the larger QP is selected.

[0148] In one embodiment, the collocated picture is selected as the picture in the reference lists whose QP difference between the respective picture and the current picture is the smallest. For example,  if the QP of current picture is 28, and the QPs of the pictures in reference list 0 are {19, 26, 23} and the QPs of the pictures in reference list 1 are {23, 22, 21} . Then L0 [1] is selected. In another sub-embodiment, if there are more than one pictures in the reference lists whose QP difference between the respective picture and the current picture are the smallest, the picture with the smaller QP is selected. In another sub-embodiment, if there are more than one pictures whose QP difference between the respective picture and the current picture are the smallest, the picture with the larger QP is selected. In another sub-embodiment, if there are more than one pictures whose QP difference between the respective picture and the current picture are the smallest, the picture with the smaller POC distance is selected.

[0149] In one embodiment, the collocated picture is selected as the picture in the reference lists whose QP is the smallest. In another embodiment, the collocated picture is selected as the picture in the reference lists whose QP is the largest.

[0150] In one embodiment, the previous coded picture which the inherited parameter model is from (i.e., the collocated picture) is the most recently coded I-picture. The cross-component model information of the most recently coded I-slice / picture is stored in a long-term reference buffer.

[0151] In one embodiment, the collocated picture and the position where the inherited parameter model is from is determined by the motion vector of a neighbouring block. For example, if the current block position is at (x, y) and the block size is w×h. The inherited model parameters can be from the block at position (x’, y’) , (x’, y’+ h / 2) , (x’+ w / 2, y’) , (x’+ w / 2, y’+ h / 2) , (x’+w, y’) , (x’, y’+ h) , or (x’+ w, y’+ h) of the collocated picture, where x’ = x + Δx and y’ = y + Δy. Δx and Δy are set to the horizontal and vertical parts of the L0 motion vector of the neighbouring block respectively, and the collocated picture is the L0 reference picture indicated by the L0 motion vector of the neighbouring block. In still another embodiment, if the neighbouring block is inter bi-prediction, Δx and Δy are set to the horizontal and vertical parts of the L1 motion vector of the neighbouring block respectively, and the collocated picture is the L1 reference picture indicated by the L1 motion vector of the neighbouring block. In one embodiment, the neighbouring block is the left block of the current block. In another embodiment, the neighbouring block is the above block of the current block.

[0152] In one embodiment, the inherited model parameters are derived by using the luma and chroma reconstruction samples of the collocated block. Let the current block position be at (x, y) and the block size is w×h. The collocated block is a block positioned at (x’, y’) in the collocated picture with block size w×h, when the inherited model is from position (x’, y’) . For example, the collocated block can be at (x, y) . For another example, if Δx and Δy are the L0 horizontal and vertical parts of the motion vector of the neighbouring block respectively, and the collocated picture is the L0 reference picture indicated by the L0 motion vector of the neighbouring block, the collocated block can be at (x+Δx, y+Δy) in the collocated picture.

[0153] In one embodiment, the positions in the previous coded slices / pictures, where the inherited parameter model is from, is determined by the motion vector of a neighbouring block. Let Δx and Δy be the horizontal and vertical displacements determined based on the selected motion vector of the neighbouring block, the current block position is at (x, y) and the block size is w×h. The inherited model parameters can be from the block at position (x’, y’) , where x’= x + Δx and y’= y + Δy, or where x’= x + w / 2 +Δx and y’= y + h / 2 +Δy.

[0154] In another embodiment, the inherited model parameters can also be from the block positions in the patterns described in earlier paragraphs. The positions are centred at (x’, y’) , where x’= x + Δx  and y’= y + Δy, or where x’= x + w / 2 +Δx and y’ = y + h / 2 +Δy. That is, denote the pre-defined positions as (x1, y1) , (x2, y2) , (x3, y3) , …, (xN, yN) , the inherited model parameters can be from (x1+Δx, y1+Δy) , (x2+Δx, y2+Δy) , (x3+Δx, y3+Δy) , …, (xN+Δx, yN+Δy) , where Δx and Δy are the horizontal and vertical displacements determined based on the selected motion vector of the neighbouring block.. For example, let the current block size be w×h. The two value sets αx and αy are defined as: αx= {αx1, αx2, αx3, …, αxn} , αxi<αxj if i<j αy= {αy1, αy2, αy3, …, αyn}, αyi<αyj if i<j

[0155] All values in αx and αy are positive numbers. The inherited model parameters can be from the block at positions (x′+αxi×w, y′+αyi×h) , (x′+αxi×w, y′-αyi×h) , (x′-αxi×w, y′+αyi×h) , (x′-αxi×w, y′-αyi×h) , (x′+αxi×w, 0) , (x′-αxi×w, 0) , (0, y′+αyi×h) , (0, y′-αyi×h) , (x′+αxi×w, y′) , (x′-αxi×w, y′) , (x′, y′+αyi×h) , (x′, y′-αyi×h) of the previous coded slices / picture. For another example, let δx and δy be two fixed positive numbers. The inherited model parameters can be from the block at positions (x′+αxi×δx, y′+αyi×δy) , (x′+αxi×δx, y′-αyi×δy) , (x′-αxi×δx, y′+αyi×δy) , (x′-αxi×δx, y′-αyi×δy) , (x′+αxi×δx,0) , (x′-αxi×δx, 0) , (0, y′+αyi×δy) , (0, y′-αyi×δy) , (x′+αxi×δx, y′) , (x′-αxi×δx, y′) , (x′, y′+αyi×δy) , (x′, y′-αyi×δy) of the previous coded slices / picture. For another example, the inherited model parameters can be from the block at some pre-defined positions relative to (x′, y′) of the previous coded slices / picture. The positions can be (x′, y′) , (x′+w-1, y′) , (x′, y′+h-1) , (x′+w-1, y′+h-1) , or (x′+w / 2, y′+h / 2) . For another example, the positions can be (x′-1, y′) , (x′, y′-1) , (x′-1, y′-1) , (x′+w, y′) , (x′+w-1, y′-1) , (x′+w, y′-1) , (x′, y′+h) , (x′-1, y′+h-1) , (x′-1, y′+h) , (x′+w, y′+h-1) , (x′+w-1, y′+h) , or (x′+w, y′+h) .

[0156] In one embodiment, the neighbouring block can be at a pre-defined position. For example, the position can be at the A0 position as depicted in Fig. 7. The pre-defined position can also be at A1, B0, B1, B2 as depicted in Fig. 7. If the block at the pre-defined position is not an inter block, no neighbouring block is selected.

[0157] In another embodiment, when selecting the neighbouring block, there can be a list of pre-defined positions. The positions are placed according to the checking order. For example, the positions can be the spatial position described in the section entitled “Inheriting Spatial Neighbouring Model Parameters” (e.g., in B0, A0, B1, A1 and B2 in Fig. 7) . The selected neighbouring block can be the first position in the list that is an inter block. The L0 motion vector is first selected. If the L0 motion vector is not available, select the L1 motion vector. For another example, the L1 motion vector is first selected. If the L1 motion vector is not available, select the L0 motion vector.

[0158] For another example, the positions in the list are checked in a pre-defined checking order. For each position, the L0 motion vector is first checked, and then the L1 motion vector. For another example, the L1 motion vector is first checked, and then the L0 motion vector. The selected motion vector is the first whose reference picture is the collocated picture. The collocated picture can be determined based on methods described in earlier paragraphs in this section.

[0159] In one embodiment, the horizontal and vertical displacements Δx and Δy are determined based on the selected motion vector of the neighbouring block. For example, if the reference picture of the selected motion vector and the collocated picture are the same picture, Dx equals to the horizontal part  of the selected motion vector and Δy equals to the vertical part of the selected motion vector. If the horizontal part or the vertical part of the selected motion vector is fractional, Δx equals to the horizontal part of the selected motion vector after rounding and Δy equals to the vertical part of the selected motion vector after rounding. The rounding method used can be, but not limited to, the following methods: rounding toward negative infinity, rounding toward positive infinity, rounding toward zero, or rounding to the nearest integer (e.g., rounding away from zero, rounding half up, rounding half down, …) . For another example, if the reference picture of the selected motion vector and the collocated picture are not the same. The reference picture can be one of the pictures in the reference list, while the collocated picture is signalled in the picture / slice header. Let the POC distance between the current picture and the reference picture of the selected motion vector be tb, and the POC distance between the current picture and the collocated picture be td, the selected motion vector be (mv_x, mv_y) . Δx = mv_x * (td / tb) and Δy = mv_y * (td / tb) . If mv_x * (td / tb) or mv_y * (td / tb) is fractional, Δx equals to mv_x * (td / tb) after rounding or the horizontal part of the selected motion vector after rounding and Δy equals to mv_y * (td / tb) after rounding or the vertical part of the selected motion vector after rounding. The rounding method used can be, but not limited to, the following methods: rounding toward negative infinity, rounding toward positive infinity, rounding toward zero, or rounding to the nearest integer (e.g., rounding away from zero, rounding half up, rounding half down, …) .

[0160] Inheriting Non-Adjacent Spatial Neighbouring Models

[0161] For another embodiment, the inherited model parameters can be from blocks that are spatial neighbouring blocks. The models from blocks at pre-defined positions are added into the candidate list in a pre-defined order. For example, the pre-defined positions and the pre-defined order are the same as those of non-adjacent spatial neighbouring candidates for inter merge mode. For example, the positions and the order can be as depicted in Fig. 10. The positions of the numbered squares are the pre-defined positions. The number inside each square indicate the pre-defined order. The distances between each position are proportional the width and height of current coding block. For another embodiment, the distance between the positions that are closer to the current encoding block is smaller than the positions that are further away from the current block. For another embodiment, the distance between the positions that are closer to the current encoding block is larger than the positions that are further away from the current block.

[0162] For still another embodiment, the maximum number of inherited models from non-adjacent spatial neighbours that can be added into the candidate list is smaller than the number of pre-defined positions. For example, if the pre-defined positions are as depicted in Figs. 14A-B, where two patterns (pattern 1410 in Fig. 14A and pattern 1420 in Fig. 14B) are shown. If the maximum number of inherited models from non-adjacent spatial neighbours that can be added into the candidate list is N, the search pattern 2 is used (i.e., the models from positions in patter 2 are added) only when the number of available models from positions in search pattern 1 is smaller than N.

[0163] In one embodiment, let the current block position be (x, y) and the block size be w×h. The two value sets αx and αy are defined as: αx= {αx1, αx2, αx3, …, αxn} , αxi<αxj if i<j αy= {αy1, αy2, αy3, …, αyn}, αyi<αyj if i<j.

[0164] All values in αx and αy are positive numbers. Let x’ = x + Δx and y’ = y + Δy. The inherited model parameters can be from the positions determined by x’ and y’. For example, the inherited model  parameters can be from the block at positions (x′+αxi×w, y′+αyi×h) , (x′+αxi×w, y′-αyi×h) , (x′-αxi×w, y′+αyi×h) , (x′-αxi×w, y′-αyi×h) , (x′+αxi×w, 0) , (x′-αxi×w, 0) , (0, y′+αyi×h) , (0, y′-αyi×h) , (x′+αxi×w, y′) , (x′-αxi×w, y′) , (x′, y′+αyi×h) , (x′, y′-αyi×h) . For another example, let δx and δy be two fixed positive numbers. The inherited model parameters can be from the block at positions (x′+αxi×δx, y′+αyi×δy) , (x′+αxi×δx, y′-αyi×δy) , (x′-αxi×δx, y′+αyi×δy) , (x′-αxi×δx, y′-αyi×δy) , (x′+αxi×δx, 0) , (x′-αxi×δx, 0) , (0, y′+αyi×δy) , (0, y′-αyi×δy) , (x′+αxi×δx, y′) , (x′-αxi×δx, y′) , (x′, y′+αyi×δy) , (x′, y′-αyi×δy)or a combination thereof. For another example, the inherited model parameters can be from the block at some pre-defined positions relative to (x′, y′) of the previous coded slices / picture. The positions can be (x′, y′) , (x′+w-1, y′) , (x′, y′+h-1) , (x′+w-1, y′+h-1) , (x′+w / 2, y′+h / 2) , or a combination thereof. For another example, the positions can be (x′-1, y′) , (x′, y′-1) , (x′-1, y′-1) , (x′+w, y′) , (x′+w-1, y′-1) , (x′+w, y′-1) , (x′, y′+h) , (x′-1, y′+h-1) , (x′-1, y′+h) , (x′+w, y′+h-1) , (x′+w-1, y′+h) , (x′+w, y′+h) or a combination thereof. For another example, the positions can be (x′, y′) , (x′, y′+h / 2) , (x′+w / 2, y′) , (x′+w / 2, y′+h / 2) , (x′+w, y′) , (x′, y′+h) , (x′+w, y′+h) , or a combination thereof. For another example, the inherited model parameters can be from the blocks at (x′+dxi, y′+dyi) , where (dxi, dyi) are pre-defined displacements, i = 1, …, M.

[0165] In one sub-embodiment, if the prediction mode of the current block is IBC or there is block vector available at the current block, Δx and Δy can be set according to the horizontal and vertical block vector of the current block. For example, the current block is coded in IBC or IntraTMP mode. The current block vector can be an IBC block vector or an IntraTMP block vector. For another example, if dual-tree is used, the block vector can be from collocated luma blocks. The collocated luma block can be found by checking the 5 positions as depicted in Fig. 11. For example, Δx and Δy can be equal to the horizontal and vertical block vector of the current block. If the horizontal part or the vertical part of the block vector is fractional, Δx equals to the horizontal part of the block vector after rounding and Δy equals to the vertical part of the block vector after rounding. The rounding method used can be, but not limited to, the following methods: rounding toward negative infinity, rounding toward positive infinity, rounding toward zero, or rounding to the nearest integer (e.g., rounding away from zero, rounding half up, rounding half down, …) .

[0166] In another sub-embodiment, Δx and Δy can be set according to the horizontal and vertical block vector of a neighbouring block. For example, Δx and Δy can be equal to the horizontal and vertical block vector of a neighbouring block. If the horizontal part or the vertical part of the block vector is fractional, Δx equals to the horizontal part of the block vector after rounding and Δy equals to the vertical part of the block vector after rounding. The rounding method used can be, but not limited to, the following methods: rounding toward negative infinity, rounding toward positive infinity, rounding toward zero, or rounding to the nearest integer (e.g., rounding away from zero, rounding half up, rounding half down, …) .

[0167] Inheriting Model Parameters from History Table

[0168] In one embodiment, the inherited model parameters can be from a cross-component model history table. The cross-component models in the history table can be added into the candidate list according to a pre-defined order. In one embodiment, the adding order of historical candidates can be from the beginning of the table to the end of the table. In another embodiment, the adding order of  historical candidates can be from a certain pre-defined position to the end of the table. In another embodiment, the adding order of historical candidates can be from the end of the table to the beginning of the table. In another embodiment, the adding order of historical candidates can be from a certain pre-defined position to the beginning of the table. In another embodiment, the adding order of historical candidates can be in an interleaved manner (e.g., the first added candidate is from the beginning of the table, the second added candidate is from the end of the table and so on) .

[0169] In one embodiment, single cross-component model history table can be maintained for storing the previous cross-component model, and the cross-component model history table can be reset at the start of the current picture, current slice, current tile, every M CTU rows or every N CTUs, where N and M can be any value greater than 0. In another embodiment, the cross-component model history table can be reset at the end of the current picture, current slice, current tile, current CTU row or current CTU.

[0170] The Available Region of Non-Adjacent Spatial Candidates

[0171] To limit the requirement buffer / storage resource, the available range for including non-adjacent spatial candidates should be constrained. In one embodiment, only the cross-component model (CCM) information in the current CTU can be referenced by the non-adjacent spatial candidate. In another embodiment, only the CCM information in the current CTU or left M CTUs can be referenced by the non-adjacent spatial candidate. M can be any integer larger than 0. In another embodiment, only the CCM information in the current CTU row can be referenced by the non-adjacent spatial candidate. In another embodiment, only the to-be referenced position within the current CTU row or above N CTU rows can be referenced. N can be any integer larger than 0. Note, the CCM information mentioned in this disclosure includes but not limited to prediction mode (e.g., CCLM, MMLM, CCCM) , GLM pattern index, model parameters, or classification threshold.

[0172] In another embodiment, the CCM information in the current CTU, the current CTU row, the current CTU row + above N CTU rows, the current CTU + left M CTUs, or the current CTU + above N CTU rows + left M CTUs can be referenced without limits. Furthermore, the CCM information in other regions can only be referenced by a larger pre-defined unit. For example, the CCM information in the current CTU row is stored within a 4x4 grid, and for other CCM information outside the current CTU row is stored within a 16x16 grid. In other words, one 16x16 region only needs to store one CCM information, so the to-be referenced position shall be rounded to the 16x16 grid, or changed to the nearest position of 16x16 grid.

[0173] Inheriting from Fusion Mode

[0174] Fusion mode refers to mode that fuses two predictions to generate the final prediction. In the chroma intra fusion mode, a chroma intra prediction that is not generated using a cross-component prediction (CCP) coding tool (e.g., CCLM, MMLM, CCCM) is fused with another chroma intra prediction generated using a cross-component prediction coding tool. For example, a non-CCLM coded intra prediction and a CCLM coded intra prediction are fused together to obtain the final intra prediction.

[0175] Candidate List Construction

[0176] In one embodiment, the candidate list is constructed by adding candidates in a pre-defined order until the maximum candidate number is reached. The candidates added may include all or some of the aforementioned candidates, but not limited to the aforementioned candidates. For example, the candidate list may include spatial neighbouring candidates, temporal neighbouring candidate, historical candidates, non-adjacent neighbouring candidates, single model candidates generated based on other  inherited models or combined model. For another example, the candidate list can include the same candidates as previous example, but the candidates are added into the list in a different order.

[0177] In another embodiment, if all the pre-defined neighbouring and historical candidates are added but the maximum candidate number is not reached, some default candidates are added into the candidate list until the maximum candidate number is reached.

[0178] In one sub-embodiment, the default candidates include but not limited to the candidates described below. The final scaling parameter α is from the set {0, 1 / 8, -1 / 8, +2 / 8, -2 / 8, +3 / 8, -3 / 8, +4 / 8, -4 / 8} , and the offset parameter β=1 /  (1<< bit_depth) or is derived based on neighbouring luma and chroma samples. For example, if the average value of neighbouring luma and chroma samples are lumaAvg and chromaAvg, then β is derived by β= chromaAvg-α·lumaAvg.

[0179] In another embodiment, a default candidate can be an earlier candidate with a delta scaling parameter refinement. For example, if the scaling parameter of an earlier candidate is α, the scaling parameter of a default candidate is (α+Δα) , where Δα can be from the set {1 / 8, -1 / 8, +2 / 8, -2 / 8, +3 / 8, -3 / 8, +4 / 8, -4 / 8} . The offset parameter of a default candidate will be derived by (α+Δα) and the average value of neighbouring luma and chroma samples of the current block.

[0180] Signalling the Inherited Candidate Index in the List

[0181] An on / off flag can be signalled to indicate if the current block inherits the cross-component model parameters from neighbouring blocks or not. The flag can be signalled per CU / CB, per PU, per TU / TB, or per colour component, or per chroma colour component. A high level syntax can be signalled in SPS, PPS (Picture Parameter Set) , PH (Picture Header) or SH (Slice Header) to indicate if the proposed method is allowed for the current sequence, picture, or slice.

[0182] The maximum allowed candidate number is signalled to indicate the maximum size of the merge candidate list. The number can be signalled per CU / CB, per PU, per TU / TB, per colour component, or per chroma colour component. A high level syntax can be signalled in SPS, PPS, PH or SH to indicate if the proposed method is allowed for the current sequence, picture, or slice. The maximum allowed candidate number of the proposed method can be shared with the maximum allowed candidate number for inter merge mode.

[0183] If the current block inherits the cross-component model parameters from neighbouring blocks, the inherited candidate index is signalled. The index can be signalled (e.g., signalled using truncate unary code, Exp-Golomb code, or fix length code) and shared among both the current Cb and Cr blocks. For another example, the index can be signalled per colour component. For example, one inherited candidate index is signalled for Cb component, and another inherited candidate index is signalled for Cr component. For another example, it can use chroma intra prediction syntax (e.g., IntraPredModeC [xCb] [yCb] ) to store the inherited index.

[0184] The cross component prediction using inherited candidates derived using a block vector of the current block or a neighbouring block as described above can be implemented in an encoder side or a decoder side. For example, any of the proposed candidate derivation methods can be implemented in an Intra / Inter coding module (e.g. Intra Pred. 150 / MC 152 in Fig. 1B) in a decoder or an Intra / Inter coding module is an encoder (e.g. Intra Pred. 110 / Inter Pred. 112 in Fig. 1A) . Any of the proposed candidate  derivation method can also be implemented as circuits coupled to the intra / inter coding module at the decoder or the encoder. However, the decoder or encoder may also use additional processing unit to implement the required cross-component prediction processing. While the Intra Pred. units (e.g. unit 110 / 112 in Fig. 1A and unit 150 / 152 in Fig. 1B) are shown as individual processing units, they may correspond to executable software or firmware codes stored on a media, such as hard disk or flash memory, for a CPU (Central Processing Unit) or programmable devices (e.g. DSP (Digital Signal Processor) or FPGA (Field Programmable Gate Array) ) .

[0185] Fig. 15 illustrates a flowchart of an exemplary video coding system that incorporates an inherited candidate derived based on the block vector of the current block or a neighbouring block according to an embodiment of the present invention. The steps shown in the flowchart may be implemented as program codes executable on one or more processors (e.g., one or more CPUs) at the encoder side. The steps shown in the flowchart may also be implemented based hardware such as one or more electronic devices or processors arranged to perform the steps in the flowchart. According to this method, input data associated with a current block comprising a first-colour block and a second-colour block are received in step 1510, wherein the input data comprise pixel data to be encoded at an encoder side or data associated with the current block to be decoded at a decoder side, and wherein the current block or one or more neighbouring blocks of the current block are coded using a block vector. One or more block vectors associated with the current block or said one or more neighbouring blocks of the current block are determined in step 1520. One or more inherited candidates are determined by using information comprising said one or more block vectors in step 1530. A candidate list comprising said one or more inherited candidates is determined in step 1540. The second-colour block is encoded or decoded using the candidate list in step 1550, wherein cross-component prediction data are generated for the second-colour block according to one or more target cross-component models when said one or more inherited candidates are selected for the current block.

[0186] The flowchart shown is intended to illustrate an example of video coding according to the present invention. A person skilled in the art may modify each step, re-arranges the steps, split a step, or combine steps to practice the present invention without departing from the spirit of the present invention. In the disclosure, specific syntax and semantics have been used to illustrate examples to implement embodiments of the present invention. A skilled person may practice the present invention by substituting the syntax and semantics with equivalent syntax and semantics without departing from the spirit of the present invention.

[0187] The above description is presented to enable a person of ordinary skill in the art to practice the present invention as provided in the context of a particular application and its requirement. Various modifications to the described embodiments will be apparent to those with skill in the art, and the general principles defined herein may be applied to other embodiments. Therefore, the present invention is not intended to be limited to the particular embodiments shown and described, but is to be accorded the widest scope consistent with the principles and novel features herein disclosed. In the above detailed description, various specific details are illustrated in order to provide a thorough understanding of the present invention. Nevertheless, it will be understood by those skilled in the art that the present invention may be practiced.

[0188] Embodiment of the present invention as described above may be implemented in various hardware, software codes, or a combination of both. For example, an embodiment of the present invention  can be one or more circuits integrated into a video compression chip or program code integrated into video compression software to perform the processing described herein. An embodiment of the present invention may also be program code to be executed on a Digital Signal Processor (DSP) to perform the processing described herein. The invention may also involve a number of functions to be performed by a computer processor, a digital signal processor, a microprocessor, or field programmable gate array (FPGA) . These processors can be configured to perform particular tasks according to the invention, by executing machine-readable software code or firmware code that defines the particular methods embodied by the invention. The software code or firmware code may be developed in different programming languages and different formats or styles. The software code may also be compiled for different target platforms. However, different code formats, styles and languages of software codes and other means of configuring code to perform the tasks in accordance with the invention will not depart from the spirit and scope of the invention.

[0189] The invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described examples are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.

Claims

1.A method of coding colour pictures using coding tools including one or more cross component models related modes, the method comprising:receiving input data associated with a current block comprising a first-colour block and a second-colour block, wherein the input data comprise pixel data to be encoded at an encoder side or data associated with the current block to be decoded at a decoder side, and wherein the current block or one or more neighbouring blocks of the current block are coded using a block vector;determining one or more block vectors associated with the current block or said one or more neighbouring blocks of the current block;determining one or more inherited candidates by using information comprising said one or more block vectors;determining a candidate list comprising said one or more inherited candidates; andencoding or decoding the second-colour block using the candidate list, wherein cross-component prediction data are generated for the second-colour block according to one or more target cross-component models when said one or more inherited candidates are selected for the current block.2.The method of Claim 1, wherein a target inherited candidate is located at a target location determined according to current block location and a target block vector.3.The method of Claim 2, wherein locations of said one or more inherited candidates are determined according to the target location shifted by a set of pre-defined shifts.4.The method of Claim 2, wherein the target location corresponds to the current block location shifted by a current block vector.5.The method of Claim 2, wherein the target location corresponds to the current block location shifted by a neighbouring block vector.6.The method of Claim 2, wherein when the current block is coded in IBC (Intra Block Copy) mode or there is one block vector available at the current block, the target block vector is derived based on a current block vector of the current block.7.The method of Claim 6, wherein rounding is applied to horizontal part and / or vertical part of the current block vector before the current block vector is used to locate said one or more inherited candidates.8.The method of Claim 2, wherein a chroma dual tree is used for the current block, the target block vector is derived based on one of collocated luma blocks of the current block in a set of pre-defined locations.9.The method of Claim 8, wherein rounding is applied to horizontal part and / or vertical part of a selected block vector of said one of collocated luma blocks before the selected block vector is used to locate said one or more inherited candidates.10.The method of Claim 2, wherein the target block vector is determined from said one or more neighbouring blocks of the current block.11.The method of Claim 10, wherein rounding is applied to horizontal part and / or vertical part of a neighbouring block vector of said one or more neighbouring blocks before the neighbouring block vector  is used to locate said one or more inherited candidates.12.An apparatus for video coding, the apparatus comprising one or more electronics or processors arranged to:receive input data associated with a current block comprising a first-colour block and a second-colour block, wherein the input data comprise pixel data to be encoded at an encoder side or data associated with the current block to be decoded at a decoder side, and wherein the current block or one or more neighbouring blocks of the current block are coded using a block vector;determine one or more target block vectors based on the current block or said one or more neighbouring blocks of the current block;determine one or more block vectors associated with the current block or said one or more neighbouring blocks of the current block;determine one or more inherited candidates by using information comprising said one or more block vectors;determine a candidate list comprising said one or more inherited candidates; andencode or decode the second-colour block using the candidate list, wherein cross-component prediction data are generated for the second-colour block according to one or more target cross-component models when said one or more inherited candidates are selected for the current block.