US 12,395,670 B2
Method and apparatus for affine based inter prediction of chroma subblocks
Vasily Alexeevich Rufitskiy, Moscow (RU); Timofey Mikhailovich Solovyev, Munich (DE); Alexey Konstantinovich Filippov, Moscow (RU); and Jianle Chen, San Diego, CA (US)
Assigned to HUAWEI TECHNOLOGIES CO., LTD., Shenzhen (CN)
Filed by HUAWEI TECHNOLOGIES CO., LTD., Guangdong (CN)
Filed on Jan. 31, 2024, as Appl. No. 18/427,975.
Application 18/427,975 is a continuation of application No. 17/407,548, filed on Aug. 20, 2021, granted, now 11,924,457.
Application 17/407,548 is a continuation of application No. PCT/CN2020/076493, filed on Feb. 24, 2020.
Claims priority of provisional application 62/824,302, filed on Mar. 26, 2019.
Claims priority of provisional application 62/823,653, filed on Mar. 25, 2019.
Claims priority of provisional application 62/809,551, filed on Feb. 22, 2019.
Prior Publication US 2024/0187634 A1, Jun. 6, 2024
Int. Cl. H04N 19/513 (2014.01); H04N 19/159 (2014.01); H04N 19/176 (2014.01); H04N 19/186 (2014.01); H04N 19/30 (2014.01)
CPC H04N 19/513 (2014.11) [H04N 19/159 (2014.11); H04N 19/176 (2014.11); H04N 19/186 (2014.11); H04N 19/30 (2014.11)] 22 Claims
OG exemplary drawing
 
1. An image encoding method, comprising:
performing an image encoding process for an image block coded in an inter prediction mode, to output an encoded bitstream, wherein the image block comprises a luma block and a co-located chroma block, and wherein the performing the image encoding process comprises a chroma motion vector derivation process, comprising:
obtaining an averaged luma motion vector mvAvgLX by:
determining chroma scaling factors in horizontal and vertical directions based on chroma format information indicating a chroma format of a current picture which the image block belongs to, wherein the chroma format comprises one of a YUV 4:2:2 format, a YUV 4:2:0 format or a YUV 4:4:4 format;
determining a set (S) of luma subblocks of the luma block based on values of the chroma scaling factors; and
generating the averaged luma motion vector mvAvgLX by averaging motion vectors of the luma subblocks in the set (S), in a case that more than one luma subblocks in the set (S);
deriving a chroma motion vector for a chroma subblock mvCLX[xSbIdx][ySbIdx] of the chroma block based on the averaged luma motion vector mvAvgLX; wherein a process of deriving the chroma motion vector is invoked as follows with the mvAvgLX as input, and the chroma motion vector mvCLX[xSbIdx][ySbIdx] as output:
mvCLX[0]=mvLX[0]*2/SubWidthC
mvCLX[1]=mvLX[1]*2/SubHeightC−, if a reference picture corresponding to refIdxLX for the image block is not a current picture; or
mvCLX[0]=((mvLX[0]>>(3+SubWidthC))*32
mvCLX[1]=((mvLX[1]>>(3+SubHeightC))*32, if the reference picture corresponding to the refIdxLX for the image block is the current picture,
wherein mvLX[0] corresponds to a horizontal component of the mvAvgLX, and mvLX[1] corresponds to a vertical component of the mvAvgLX,
wherein when both SubWidthC and SubHeightC are equal to 1, the set of luma subblocks (S) is a luma subblock indexed by S0=(xSbIdx, ySbIdx);
when at least one of SubWidthC and SubHeightC is not equal to 1, the set of luma subblocks (S) is: a first luma subblock indexed by S0=
((xSbIdx>>(SubWidthC−1)<<(SubWidthC−1)),
(ySbIdx>>(SubHeightC−1)<<(SubHeightC−1))), and a second luma subblock indexed by
S1=((xSbIdx>>(SubWidthC−1)<<(SubWidthC−1))+(SubWidthC−1),(ySbIdx>>(SubHeightC−1)<<(SubHeightC−1))+(SubHeightC−1))
wherein SubWidthC and SubHeightC represent the chroma scaling factors in horizontal and vertical directions, respectively;
xSbIdx and ySbIdx represent a subblock index in the horizontal direction and a subblock index in the vertical direction, respectively, for a luma subblock in the set (S);
“<<” represents a left arithmetic shift;
“>>” represents a right arithmetic shift;
xSbIdx is an integer number ranging from 0 to numSbX−1 and ySbIdx is an integer ranging from 0 to numSbY−1;
numSbX indicates the number of luma subblocks in the luma block along the horizontal direction; and
numSbY indicates the number of luma subblocks in the luma block along the vertical direction.