首页 / 专利库 / 电脑图像 / 运动矢量 / 颜色分量之间的子块运动矢量继承

颜色分量之间的子运动矢量继承

阅读:1091发布:2020-06-04

专利汇可以提供颜色分量之间的子运动矢量继承专利检索,专利查询,专利分析的服务。并且描述了用于基于子 块 的预测的设备、系统和方法。在典型方面,一种用于视频处理的方法包括将当前视频块的第一分量分割成第一组子块并且将当前视频块的第二分量分割成第二组子块。第二分量的子块对应于第一分量的一个或多个子块。该方法还包括基于当前视频块的 颜色 格式,基于第一分量的一个或多个对应子块的 运动矢量 导出第二分量的子块的运动矢量。,下面是颜色分量之间的子运动矢量继承专利的具体信息内容。

1.一种用于视频编码的方法,包括:
将当前视频的第一分量分割成第一组子块;
将所述当前视频块的第二分量分割成第二组子块,其中所述第二分量的子块对应于所述第一分量的一个或多个子块;
基于所述当前视频块的颜色格式,基于所述第一分量的一个或多个对应子块的运动矢量导出所述第二分量的子块的运动矢量。
2.根据权利要求1所述的方法,其中所述第二分量的子块对应于所述第一分量的子块,并且其中所述导出包括:
通过复制所述第一分量的子块的运动矢量来计算中间运动矢量集;以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
3.根据权利要求1或2所述的方法,其中所述颜色格式不是4∶4∶4,并且其中所述第一组子块中的至少一个的大小不同于所述第二组子块中的至少一个的大小。
4.根据权利要求1或2所述的方法,其中所述颜色格式是4∶4∶4,并且其中所述第一组子块中的至少一个的大小与所述第二组子块中的至少一个的大小相同。
5.根据权利要求1所述的方法,其中所述颜色格式不是4∶4∶4,其中所述第一组子块中的至少一个的大小与所述第二组子块中的至少一个的大小相同,其中所述第二分量的子块对应于所述第一分量的多个子块。
6.根据权利要求5所述的方法,其中基于所述第一分量的多个子块的对应运动矢量的平均值导出所述第二分量的子块的运动矢量中的至少一个。
7.根据权利要求6所述的方法,其中所述第二分量的子块对应于所述第一分量的四个子块,所述四个子块分别具有运动矢量MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)和MV3=(MV3x,MV3y),并且其中所述方法还包括:
计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=Shift(MV0x+MV1x+MV2x+MV3x,2)和MV*y=Shift(MVy0+MVy1+MVy2+MVy3,2),其中Shift(x,s)=(x+off)>>s,其中off和s是整数,并且其中>>表示右移操作;以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
8.根据权利要求6所述的方法,其中所述第二分量的子块对应于所述第一分量的四个子块,所述四个子块分别具有运动矢量MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)和MV3=(MV3x,MV3y),并且其中所述方法还包括:
计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=SignShift(MV0x+MV1x+MV2x+MV3x,2)和MV*y=SignShift(MV0y+MV1y+MV2y+MV3y,2),其中
其中off和s是整数,并且其中>>表示移位操作;以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
9.根据权利要求6所述的方法,其中所述第二分量的子块对应于所述第一分量的四个子块,所述四个子块分别具有运动矢量MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)和MV3=(MV3x,MV3y),并且其中所述方法还包括:
计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=Shift(MV′x+MV″x,1)和MV*y=Shift(MV′y+MV″y,1),其中MV′x=Shift(MV0x+MV1x,1),MV′y=Shift(MV0y+MV1y,1),MV″x=Shift(MV2x+MV3x,1),和MV″y=Shift(MV2y+MV3y,1),其中Shift(x,s)=(x+off)>>s,其中off和s是整数,并且其中>>表示右移操作;以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
10.根据权利要求6所述的方法,其中所述第二分量的子块对应于所述第一分量的四个子块,所述四个子块分别具有运动矢量MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)和MV3=(MV3x,MV3y),并且其中所述方法还包括:
计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=Shift(MV′x+MV″x,1)和MV*y=Shift(MV′y+MV″y,1),其中MV′x=Shift(MV0x+MV2x,1),MV′y=Shift(MV0y+MV2y,1),MV″x=Shift(MV1x+MV3x,1),和MV″y=Shift(MV1y+MV3y,1),其中Shift(x,s)=(x+off)>>s,其中off和s是整数,并且其中>>表示右移操作;以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
11.根据权利要求6所述的方法,其中所述第二分量的子块对应于所述第一分量的四个子块,所述四个子块分别具有运动矢量MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)和MV3=(MV3x,MV3y),并且其中所述方法还包括:
计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=SignShift(MV′x+MV″x,1)和MV*y=SignShift(MV′y+MV″y,1),其中MV′x=SignShift(MV0x+MV1x,1),MV′y=SignShift(MV0y+MV1y,1),MV″x=SignShift(MV2x+MV3x,1),和MV″y=SignShift(MV2y+MV3y,1),其中 其中off和s是整数,并且其中
>>表示移位操作;以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
12.根据权利要求6所述的方法,其中所述第二分量的子块对应于所述第一分量的四个子块,所述四个子块分别具有运动矢量MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)和MV3=(MV3x,MV3y),并且其中所述方法还包括:
计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=SignShift(MV′x+MV″x,1)和MV*y=SignShift(MV′y+MV″y,1),其中MV′x=SignShift(MV0x+MV2x,1),MV′y=SignShift(MV0y+MV2y,1),MV″x=SignShift(MV1x+MV3x,1),和MV″y=SignShift(MV1y+MV3y,1),其中 其中off和s是整数,并且其中
>>表示移位操作;以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
13.根据权利要求6所述的方法,其中所述第二分量的子块对应于所述第一分量的两个子块,所述两个子块分别具有运动矢量MV0=(MV0x,MV0y)和MV1=(MV1x,MV1y),并且其中所述方法还包括:
计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=Shift(MV0x+MV1x,1)和MV*y=Shift(MVy0+MVy1,1),其中Shift(x,s)=(x+off)>>s,其中off和s是整数,并且其中>>表示右移操作;以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
14.根据权利要求6所述的方法,其中所述第二分量的子块对应于所述第一分量的两个子块,所述两个子块分别具有运动矢量MV0=(MV0x,MV0y)和MV1=(MV1x,MV1y),并且其中所述方法还包括:
计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=SignShift(MV0x+MV1x,1)和MV*y=SignShift(MVy0+MVy1,1),其中
其中off和s是整数,并且其中
>>表示移位操作;以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
15.根据权利要求5所述的方法,其中所述方法还包括:
基于所述第一分量的多个子块中的选择的子块的运动矢量计算所述中间运动矢量集;
以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
16.根据权利要求15所述的方法,其中所述选择的子块是所述第一分量的多个子块的左上子块。
17.根据权利要求15所述的方法,其中所述选择的子块是所述第一分量的多个子块的中心子块。
18.根据权利要求5所述的方法,其中所述方法还包括:
基于所述第一分量的多个子块的运动矢量的中值计算所述中间运动矢量集;以及将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
19.根据权利要求2至18中任一项所述的方法,其中在高效视频编码(HEVC)标准中指定所述因子的应用。
20.一种视频编码装置,其包括配置成实现根据权利要求1至19中的一项或多项所述的方法的处理器。
21.一种用于视频解码的方法,其包括:
接收包括第一分量和至少第二分量的视频数据块,其中将所述第一分量分割成第一组子块并且将所述第二分量分割成第二组子块,并且其中所述第二分量的子块对应于所述第一分量的一个或多个子块;
基于所述视频数据块的颜色格式,基于所述第一分量的一个或多个对应子块的运动矢量导出所述第二分量的子块的运动矢量;以及
基于导出的运动矢量重建所述视频数据块或解码相同图片中的其他视频数据块。
22.根据权利要求21所述的方法,其中所述第二分量的子块对应于所述第一分量的子块,并且其中所述导出包括:
通过复制所述第一分量的子块的运动矢量来计算中间运动矢量集;以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
23.根据权利要求21或22所述的方法,其中所述颜色格式不是4∶4∶4,并且其中所述第一组子块中的至少一个的大小不同于所述第二组子块中的至少一个的大小。
24.根据权利要求21或22所述的方法,其中所述颜色格式是4∶4∶4,并且其中所述第一组子块中的至少一个的大小与所述第二组子块中的至少一个的大小相同。
25.根据权利要求21所述的方法,其中所述颜色格式不是4∶4∶4,其中所述第一组子块中的至少一个的大小与所述第二组子块中的至少一个的大小相同,其中所述第二分量的子块对应于所述第一分量的多个子块。
26.根据权利要求25所述的方法,其中基于所述第一分量的多个子块的对应运动矢量的平均值导出所述第二分量的子块的运动矢量中的至少一个。
27.根据权利要求26所述的方法,其中所述第二分量的子块对应于所述第一分量的四个子块,所述四个子块分别具有运动矢量MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)和MV3=(MV3x,MV3y),并且其中所述方法还包括:
计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=Shift(MV0x+MV1x+MV2x+MV3x,2)和MV*y=Shift(MVy0+MVy1+MVy2+MVy3,2),其中Shift(x,s)=(x+off)>>s,其中off和s是整数,并且其中>>表示右移操作;以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
28.根据权利要求26所述的方法,其中所述第二分量的子块对应于所述第一分量的四个子块,所述四个子块分别具有运动矢量MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)和MV3=(MV3x,MV3y),并且其中所述方法还包括:
计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=SignShift(MV0x+MV1x+MV2x+MV3x,2)和MV*y=SignShift(MV0y+MV1y+MV2y+MV3y,2),其中
其中off和s是整数,并且其中>>表示移位操作;以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
29.根据权利要求26所述的方法,其中所述第二分量的子块对应于所述第一分量的四个子块,所述四个子块分别具有运动矢量MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)和MV3=(MV3x,MV3y),并且其中所述方法还包括:
计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=Shift(MV′x+MV″x,1)和MV*y=Shift(MV′y+MV″y,1),其中MV′x=Shift(MV0x+MV1x,1),MV′y=Shift(MV0y+MV1y,1),MV″x=Shift(MV2x+MV3x,1),和MV″y=Shift(MV2y+MV3y,1),其中Shift(x,s)=(x+off)>>s,其中off和s是整数,并且其中>>表示右移操作;以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
30.根据权利要求26所述的方法,其中所述第二分量的子块对应于所述第一分量的四个子块,所述四个子块分别具有运动矢量MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)和MV3=(MV3x,MV3y),并且其中所述方法还包括:
计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=Shift(MV′x+MV″x,1)和MV*y=Shift(MV′y+MV″y,1),其中MV′x=Shift(MV0x+MV2x,1),MV′y=Shift(MV0y+MV2y,1),MV″x=Shift(MV1x+MV3x,1),和MV″y=Shift(MV1y+MV3y,1),其中Shift(x,s)=(x+off)>>s,其中off和s是整数,并且其中>>表示右移操作;以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
31.根据权利要求26所述的方法,其中所述第二分量的子块对应于所述第一分量的四个子块,所述四个子块分别具有运动矢量MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)和MV3=(MV3x,MV3y),并且其中所述方法还包括:
计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=SignShift(MV′x+MV″x,1)和MV*y=SignShift(MV′y+MV″y,1),其中MV′x=SignShift(MV0x+MV1x,1),MV′y=SignShift(MV0y+MV1y,1),MV″x=SignShift(MV2x+MV3x,1),和MV″y=SignShift(MV2y+MV3y,1),其中 其中off和s是整数,并且其中
>>表示移位操作;以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
32.根据权利要求26所述的方法,其中所述第二分量的子块对应于所述第一分量的四个子块,所述四个子块分别具有运动矢量MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)和MV3=(MV3x,MV3y),并且其中所述方法还包括:
计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=SignShift(MV′x+MV″x,1)和MV*y=SignShift(MV′y+MV″y,1),其中MV′x=SignShift(MV0x+MV2x,1),MV′y=SignShift(MV0y+MV2y,1),MV″x=SignShift(MV1x+MV3x,1),和MV″y=SignShift(MV1y+MV3y,1),其中 其中off和s是整数,并且其中
>>表示移位操作;以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
33.根据权利要求26所述的方法,其中所述第二分量的子块对应于所述第一分量的两个子块,所述两个子块分别具有运动矢量MV0=(MV0x,MV0y)和MV1=(MV1x,MV1y),并且其中所述方法还包括:
计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=Shift(MV0x+MV1x,1)和MV*y=Shift(MVy0+MVy1,1),其中Shift(x,s)=(x+off)>>s,其中off和s是整数,并且其中>>表示右移操作;以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
34.根据权利要求26所述的方法,其中所述第二分量的子块对应于所述第一分量的两个子块,所述两个子块分别具有运动矢量MV0=(MV0x,MV0y)和MV1=(MV1x,MV1y),并且其中所述方法还包括:
计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=SignShift(MV0x+MV1x,1)和MV*y=SignShift(MVy0+MVy1,1),其中
其中off和s是整数,并且其中>>表示移位操作;以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
35.根据权利要求25所述的方法,其中,所述方法还包括:
基于所述第一分量的多个子块中的选择的子块的运动矢量计算所述中间运动矢量集;
以及
将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
36.根据权利要求35所述的方法,其中所述选择的子块是所述第一分量的多个子块的左上子块。
37.根据权利要求35所述的方法,其中所述选择的子块是所述第一分量的多个子块的中心子块。
38.根据权利要求25所述的方法,其中所述方法还包括:
基于所述第一分量的多个子块的运动矢量的中值计算所述中间运动矢量集;以及将因子应用于所述中间运动矢量集以获得导出的运动矢量,其中所述因子与所述颜色格式相关联。
39.根据权利要求22至38中任一项所述的方法,其中在高效视频编码(HEVC)标准中指定所述因子的应用。
40.一种视频编码装置,其包括配置成实现根据权利要求21至39中的一项或多项所述的方法的处理器。
41.一种存储在非暂时性计算机可读介质上的计算机程序产品,所述计算机程序产品包括用于执行根据权利要求1至19和21至39中的一项或多项所述的方法的程序代码。

说明书全文

颜色分量之间的子运动矢量继承

[0001] 相关申请的交叉引用
[0002] 根据适用的《专利法》和/或《巴黎公约》的规定,本申请及时要求于2018年6月21日提交的国际专利申请No.PCT/CN2018/092118以及于2018年11月10日提交的国际专利申请No.PCT/CN2018/114931的优先权和权益。出于美国法律的所有目的,国际专利申请No.PCT/CN2018/092118和国际专利申请No.PCT/CN2018/114931的全部公开以引用方式并入作为本申请公开的一部分。

技术领域

[0003] 本专利文件一般涉及图像和视频编码技术。

背景技术

[0004] 运动补偿是一种视频处理中的技术,给出先前的和/或将来的,通过考虑相机和/或视频中的对象的运动来预测视频中的帧。运动补偿可以用于视频数据的编码和解码以实现视频压缩。发明内容
[0005] 描述了与用于图像和视频编码的基于子块的预测相关的设备、系统和方法。
[0006] 在一个典型方面,公开的技术可以用于提供一种用于视频编码的方法。该方法包括将当前视频块的第一分量分割成第一组子块并且将当前视频块的第二分量分割成第二组子块。第二分量的子块对应于第一分量的一个或多个子块。该方法还包括基于当前视频块的颜色格式,基于第一颜色分量的一个或多个对应子块的运动矢量导出第二分量的子块的运动矢量。
[0007] 在另一典型方面,公开的技术可以用于提供一种用于视频解码的方法。该方法包括接收包括第一分量和至少第二分量的视频数据块。将第一分量分割成第一组子块并且将第二分量分割成第二组子块。第二分量的子块对应于第一分量的一个或多个子块。该方法包括基于视频数据块的颜色格式,基于第一颜色分量的一个或多个对应子块的运动矢量导出第二分量的子块的运动矢量。该方法还包括基于导出的运动矢量重建视频数据块或解码相同图片中的其他视频数据块。
[0008] 在又一典型方面,上述方法以处理器可执行代码的形式体现并存储在计算机可读程序介质中。
[0009] 在又一典型方面,公开了一种配置或可操作以执行上述方法的设备。该设备可以包括被编程为实现该方法的处理器。
[0010] 在又一典型方面,视频编码器或视频解码器装置可以实施如本文中所述的方法。
[0011] 在附图说明书权利要求中更详细地描述了公开技术的上述和其他方面和特征。

附图说明

[0012] 图1示出了基于子块的预测的示例。
[0013] 图2示出了简化仿射运动模型的示例。
[0014] 图3示出了每个子块的仿射运动矢量场(MVF)的示例。
[0015] 图4示出了使用用于编码单元(CU)的可选时域运动矢量预测(ATMVP)算法的运动预测的示例。
[0016] 图5示出了具有四个子块的一个CU和相邻块的示例。
[0017] 图6示出了双向光流(BIO)算法使用的光流轨迹的示例。
[0018] 图7示出了帧速率上转换(FRUC)算法中的双向匹配的示例。
[0019] 图8示出了FRUC算法中的模板匹配的示例。
[0020] 图9示出了FRUC方法中的单向运动估计(ME)的示例。
[0021] 图10示出了根据本技术导出4:2:0格式的子块的分量的运动矢量(MV)的示例。
[0022] 图11示出了根据本技术导出4:2:0格式的子块的分量的MV的另一示例。
[0023] 图12示出了根据本技术导出子块的分量的MV的又一示例。
[0024] 图13是根据本技术的一个或多个实施例的用于视频编码的示例性方法的流程图
[0025] 图14是根据本技术的一个或多个实施例的用于视频编码的另一示例性方法的流程图。
[0026] 图15是示出可以用于实施本公开技术的各个部分的示例性编码装置的框图
[0027] 图16是示出可以用于实施本公开技术的各个部分的示例性编码装置的框图。
[0028] 图17是示出可以用于实现本公开技术的各个部分的计算机系统或其他控制设备的架构的示例的框图。
[0029] 图18示出了可以用于实施本公开技术的各个部分的移动设备的示例性实施例的框图。

具体实施方式

[0030] 由于对更高分辨率视频的需求的增加,视频编码方法和技术在现代技术中普遍存在。视频编解码器通常包括压缩或解压缩数字视频的电子电路软件,并且不断改进以提供更高的编码效率。视频编解码器将未压缩视频转换成压缩格式,反之亦然。视频质量,用于表示视频的数据量(由比特率确定),编码和解码算法的复杂性,对数据丢失和错误的敏感性,编辑的简易性,随机存取和端到端延迟(延迟)之间存在复杂的关系。压缩格式通常符合标准视频压缩规范,例如,高效视频编码(HEVC)标准(也称为H.265或MPEG-H第2部分),待最终确定的通用视频编码标准或其他当前和/或未来的视频编码标准。
[0031] 首先通过高效视频编码(HEVC)标准将基于子块的预测引入到视频编码标准中。利用基于子块的预测,诸如编码单元(CU)或预测单元(PU)的块被分割成若干非重叠子块。可以为不同的子块分配不同的运动信息,例如参考索引或运动矢量(MV),并且针对每个子块单独地执行运动补偿(MC)。图1示出了基于子块的预测的示例。
[0032] 公开技术的实施例可以应用于现有视频编码标准(例如,HEVC,H.265)和未来标准以改进运行时性能。在本文件中使用章节标题来提高描述的可读性,并且不以任何方式将讨论或实施例(和/或实现方式)仅限制到相应的章节。
[0033] 使用称为联合探索模型(JEM)的参考软件来探索未来的视频编码技术。在JEM中,在若干编码工具中采用基于子块的预测,例如仿射预测、可选时域运动矢量预测(ATMVP)、空域-时域运动矢量预测(STMVP)、双向光流(BIO)、帧速率上转换(FRUC)、局部自适应运动矢量分辨率(LAMVR)、重叠块运动补偿(OBMC)、局部照明补偿(LIC)、以及解码器侧运动矢量细化(DMVR)。
[0034] 在HEVC中,仅将平移运动模型应用于运动补偿预测(MCP)。然而,相机和对象可能具有多种运动,例如,放大/缩小、旋转、透视运动、和/或其他不常规运动。另一方面,JEM应用简化的仿射变换运动补偿预测。图2示出了由两个控制点运动矢量V0和V1描述的块200的仿射运动场的示例。块200的运动矢量场(MVF)可以由以下等式描述:
[0035]
[0036] 图3示出了用于块300的每个子块的仿射MVF的示例。为了导出每个M×N子块的运动矢量,可以根据等式(1)计算每个子块的中心样本的运动矢量,并舍入到运动矢量分数精度(例如,JEM中的1/16)。然后可以应用运动补偿内插滤波器以用导出的运动矢量生成每个子块的预测。在MCP之后,每个子块的高精度运动矢量被舍入并保存为与正常运动矢量相同的精度。
[0037] 在JEM中,有两种仿射运动模式:AF_INTER模式和AF_MERGE模式。对于宽度和高度都大于8的CU,可以应用AF_INTER模式。在比特流中CU级别的仿射标志被发信令(signal)以指示是否使用AF_INTER模式。在AF_INTER模式中,使用相邻的块构造具有运动矢量对{(v0,v1)|v0={vA,vB,vc},v1={vD,vE}}的候选列表。
[0038] 在JEM中,只有当前块的宽度和高度都大于8时,才能使用非Merge仿射模式;只有当前块的面积(即宽度×高度)不小于64时,才能使用Merge仿射模式。
[0039] 图4示出了用于CU 400的可选时域运动矢量预测(ATMVP)运动预测处理的示例。ATMVP方法在两个步骤中预测CU 400内的子CU 401的运动矢量。第一步骤是用时间矢量识别参考图片450中的对应块451。参考图片450也被称为运动源图片。第二步骤是将当前CU 
400分成子CU 401,并从对应于每个子CU的块获得运动矢量以及每个子CU的参考索引。
[0040] 在第一步骤中,参考图片450和对应块由当前CU 400的空间相邻块的运动信息确定。在第二步骤中,通过将时间矢量添加到当前CU的坐标,子CU 451的对应块由运动源图像450中的时间矢量识别。对于每个子CU,其对应块的运动信息(例如,覆盖中心样本的最小运动网格)用于导出子CU的运动信息。在识别出对应的N×N块的运动信息之后,以与HEVC的TMVP相同的方式将其转换成当前子CU的运动矢量和参考索引,其中应用运动缩放和其他程序。
[0041] 在空域-时域运动矢量预测(STMVP)方法中,按照光栅扫描顺序递归地导出子CU的运动矢量。图5示出了具有四个子块的一个CU和相邻块的示例。考虑8×8的CU 500,其包括四个4×4子CU A(501)、B(502)、C(503)和D(504)。当前帧中相邻的4×4块标记为a(511)、b(512)、c(513)和d(514)。
[0042] 子CU A的运动推导通过识别其两个空间邻域开始。第一邻域是子CU A 501上方的N×N块(块c 513)。如果该块c(513)不可用或内部编码,则检查子CU A(501)上方的其他N×N块(从左到右,从块c 513处开始)。第二邻域是子CU A 501左侧的一个块(块b 512)。如果块b(512)不可用或内部编码,则检查子CU A 501左侧的其他块(从上到下,从块b 512处开始)。每个列表从相邻块获得的运动信息被缩放到给定列表的第一参考帧。接下来,按照HEVC中规定的与TMVP推导相同的程序,推导出子块A 501的时域运动矢量预测(TMVP)。提取块D 704处的并置块的运动信息并进行相应的缩放。最后,在检索和缩放运动信息之后,对每个参考列表分别平均所有可用的运动向量。将平均运动矢量指定为当前子CU的运动矢量。
[0043] 双向光流(BIO)方法是在双向预测的逐块运动补偿的顶部进行的逐样本运动细化。在一些实现方式中,样本级的运动细化不使用信令。
[0044] 设I(k)为块运动补偿后到参考k(k=0,1)的亮度值,并且 分别为I(k)梯度的平分量和垂直分量。假设光流是有效的,则运动矢量场(vx,vy)由下式给出:
[0045]
[0046] 将该光流等式与每个样品运动轨迹的埃尔米特插值相结合,得到唯一的三阶多项式,该多项式在末端同时匹配函数值I(k)和其导数 该多项式在t=0时的值是BIO预测:
[0047]
[0048] 图6示出了双向光流(BIO)方法中的示例性光流轨迹。这里,t0和t1表示到参考帧的距离。基于Ref0和Ref1的POC计算距离t0和τ1:τ0=POC(current)-POC(Ref0),τ1=POC(Ref1)-POC(current)。如果两个预测都来自同一个时间方向(都来自过去或都来自未来),则符号是不同的(例如,τ0·τ1<0).)。在该情况下,如果预测不是来自同一时间点(例如,τ0≠τ1),则应用BIO。两个参考区域都具有非零运动(例如,MVx0,MVy0,MVx1,MVy1≠0),并且块运动矢量与时间距离成比例(例如,MVx0/MVx1=MVy0/MVy1=-τ0/τ1)。在JEM中,当两个预测来自不同的参考图片时,BIO可以应用于所有双向预测块。当为CU启用局部照明补偿(LIC)时,可以禁用BIO。
[0049] 在一些情况下,对于CU,当其Merge标志为真时,可以对FRUC标志发信令。当FRUC标志为假时,可以对Merge索引发信令并且使用常规Merge模式。当FRUC标志为真时,可以对另一个FRUC模式标志发信令来指示将使用哪种方法(例如,双向匹配或模板匹配)来导出该块的运动信息。
[0050] 在编码器端,基于对正常Merge候选所做的RD成本选择决定是否对CU使用FRUC Merge模式。例如,通过使用RD成本选择来检查CU的多个匹配模式(例如,双向匹配和模板匹配)。导致最低成本的模式进一步与其它CU模式相比较。如果FRUC匹配模式是最有效的模式,那么对于CU,FRUC标志设置为真,并且使用相关的匹配模式。
[0051] 通常,FRUC Merge模式中的运动推导处理有两个步骤:首先执行CU级运动搜索,然后执行子CU级运动细化。在CU级,基于双向匹配或模板匹配,导出整个CU的初始运动矢量。首先,生成MV候选列表,并且选择导致最低匹配成本的候选作为进一步CU级细化的起点。然后在起点附近执行基于双向匹配或模板匹配的局部搜索。将最小匹配成本的MV结果作为整个CU的MV值。随后,以导出的CU运动矢量为起点,进一步在子CU级细化运动信息。
[0052] 图7示出了在帧速率上转换(FRUC)方法中使用的双向匹配的示例。通过在两个不同的参考图片(710,711)中沿当前CU(700)的运动轨迹找到两个块之间最接近的匹配,使用双向匹配来获得当前CU的运动信息。在连续运动轨迹假设下,指向两个参考块的运动矢量MV0(701)和MV1(702)与当前图片和两个参考图片之间的时间距离(例如,TD0(703)和TD1(704))成正比。在一些实施例中,当当前图片700暂时位于两个参考图片(710,711)之间并且当前图片到两个参考图片的时间距离相同时,双向匹配成为基于镜像的双向MV。
[0053] 图8示出了在帧速率上转换(FRUC)方法中使用的模板匹配的示例。模板匹配可以用于通过找到当前图片中的模板(例如,当前CU的顶部和/或左侧相邻块)与参考图片1110中的块(例如,与模板大小相同)之间的最接近匹配来获取当前CU 800的运动信息。除了上述的FRUC Merge模式外,模板匹配也可以应用于AMVP模式。在JEM和HEVC中,AMVP都具有两个候选。通过模板匹配方法,可以导出新的候选。如果通过模板匹配新导出的候选与第一个现有的AMVP候选不同,则将其插入AMVP候选列表的最开始处,并且然后将列表大小设置为2(例如,通过删除第二个现有AMVP候选)。当应用于AMVP模式时,仅应用CU级搜索。
[0054] CU级设置的MV候选可以包括以下:(1)原始AMVP候选,如果当前CU处于AMVP模式,(2)所有MERGE候选,(3)插值MV场(稍后描述)中的数个MV,以及顶部和左侧相邻运动矢量。
[0055] 当使用双向匹配时,Merge候选的每个有效MV可以用作输入,以生成假设为双向匹配的MV对。例如,Merge候选在参考列表A处的一个有效MV为(MVa,refa)。然后在另一个参考列表B中找到其配对的双向MV的参考图片refb,使得refa和refb在时间上位于当前图片的不同侧。如果参考列表B中的参考refb不可用,则将参考refb确定为与参考refa不同的参考,并且其到当前图片的时间距离是列表B中的最小距离。确定参考refb后,通过基于当前图片和参考refa、参考refb之间的时间距离缩放MVa导出MVb。
[0056] 在一些实现方式中,还可以将来自插值MV场中的四个MV添加到CU级候选列表中。更具体地,添加当前CU的位置(0,0),(W/2,0),(0,H/2)和(W/2,H/2)处插值的MV。当在AMVP模式下应用FRUC时,原始的AMVP候选也添加到CU级的MV候选集。在一些实现方式中,在CU级,可以将AMVP CU的15个MV和合并CU的13个MV添加到候选列表中。
[0057] 在子CU级设置的MV候选包括从CU级搜索确定的MV,(2)顶部、左侧、左上方和右上方相邻的MV,(3)参考图片中并置的MV的缩放版本,(4)一个或多个ATMVP候选(例如,最多四个)和/或(5)一个或多个STMVP候选(例如,最多四个)。来自参考图片的缩放MV如下导出。两个列表中的参考图片都被遍历。参考图片中子CU的并置位置处的MV被缩放为起始CU级MV的参考。ATMVP和STMVP候选可以是前四个。在子CU级,一个或多个MV(例如,最多17个)被添加到候选列表中。
[0058] 在对帧进行编码之前,基于单向ME生成整个图片的内插运动场。然后,该运动场可以随后用作CU级或子CU级的MV候选。
[0059] 在一些实施例中,两个参考列表中每个参考图片的运动场在4×4的块级别上被遍历。图9示出了在FRUC方法中的单向运动估计(ME)900的示例。对于每个4×4块,如果与块关联的运动通过当前图片中的4×4块,并且该块没有被分配任何内插运动,则根据时间距离TD0和TD1将参考块的运动缩放到当前图片(与HEVC中TMVP的MV缩放相同方式),并且在当前帧中将该缩放运动指定给该块。如果没有缩放的MV指定给4×4块,则在插值运动场中将块的运动标记为不可用。
[0060] 当运动矢量指向分数采样位置时,需要运动补偿插值。为了降低复杂度,对双向匹配和模板匹配都使用双线性插值而不是常规的8抽头HEVC插值。
[0061] 匹配成本的计算在不同的步骤处有点不同。当从CU级的候选集中选择候选时,匹配成本可以是双向匹配或模板匹配的绝对和差(SAD)。在确定起始MV后,双向匹配在子CU级搜索的匹配成本C如下计算:
[0062]
[0063] 这里,w是权重系数。在一些实施例中,w可以被经验地设置为4。MV和MVs分别指示当前MV和起始MV。仍然可以将SAD用作模式匹配在子CU级搜索的匹配成本。
[0064] 在FRUC模式下,MV通过仅使用亮度(luma)样本导出。导出的运动将用于亮度(luma)和色度(chroma),用于MC帧间预测。确定MV后,对亮度使用8抽头(8-taps)插值滤波器并且对色度使用4抽头(4-taps)插值滤波器执行最终MC。
[0065] MV细化是基于模式的MV搜索,以双向匹配成本或模板匹配成本为标准。在JEM中,支持两种搜索模式—无限制中心偏置菱形搜索(UCBDS)和自适应交叉搜索,分别在CU级别和子CU级别进行MV细化。对于CU级和子CU级的MV细化,都在四分之一亮度样本MV精度下直接搜索MV,接着是八分之一亮度样本MV细化。将CU和子CU步骤的MV细化的搜索范围设置为8个亮度样本。
[0066] 在双向匹配Merge模式下,应用双向预测,因为CU的运动信息是基于在两个不同的参考图片中沿着当前CU运动轨迹的两个块之间的最近匹配得出的。在模板匹配MERGE模式下,编码器可以从列表0的单向预测、列表1的单向预测或者双向预测中为CU做出选择。该选择可以基于如下的模板匹配成本:
[0067] 如果costBi<=factor*min(cost0,cost1)
[0068] 则使用双向预测;
[0069] 否则,如果cost0<=cost1
[0070] 则使用列表0中的单向预测;
[0071] 否则,
[0072] 使用列表1中的单向预测;
[0073] 这里,cost0是列表0模板匹配的SAD,cost1是列表2模板匹配的SAD,并且costBi是双向模板匹配的SAD。例如,当因子的值等于1.25时,意味着选择处理朝双向预测偏移。帧间预测方向选择可应用于CU级模板匹配处理。
[0074] 人类视觉系统对颜色的位置和运动的敏感度低于亮度。因此,可以通过存储比颜色细节更多的亮度细节来优化带宽。在视频系统中,这是通过使用色差分量来实现的。信号被分成亮度(Y')分量和两个色差(色度)分量。色度子采样是通过实现色度信息的分辨率低于亮度信息来编码图像的实践,利用人类视觉系统对色差的敏锐度低于亮度。例如,常见类型的子采样包括4:2:2(两个色度分量以亮度采样率的一半采样),4:1:1(水平颜色分辨率为四分之一)和4:2:0(与4:1:1相比,垂直分辨率减半,因为Cb和Cr通道仅在每个备用线上采样)。在示例中,HEVC标准定义如何从亮度分量中的用于MC的MV(标记为mv)导出色度分量中的用于MC的MV(标记为mvC)。一般而言,mvC计算为mv乘以因子,所述因子依赖于颜色格式,例如4:2:0或4:2:2。
[0075] 在HEVC屏幕内容编码扩展(SCC)中采用帧内块复制(IBC或帧内图片块补偿),也称为当前图片参考(CPR)。该工具对于屏幕内容视频的编码非常有效,因为文本和图形丰富内容中的重复模式经常出现在同一图片中。使具有相同或相似模式的先前重建的块作为预测器可以有效地减少预测误差并因此提高编码效率。
[0076] 类似于HEVC SCC中的CRP的设计,在VVC中,在序列和图片级别对IBC模式的使用发信令。当在序列参数集(SPS)处启用IBC模式时,可以在图像级别启用它。当在图像级别启用IBC模式时,将当前重建的图片视为参考图片。因此,在现有VVC帧间模式之上不需要块级别的语法改变来对IBC模式的使用发信令。
[0077] IBC模式的特征包括以下:
[0078] ○将其视为正常的帧间模式。因此,IBC模式也可以使用Merge和跳过模式。Merge候选列表构造是统一的,包含来自相邻位置的Merge候选,其在IBC模式或HEVC帧间模式中被编码。取决于所选择的Merge索引,Merge或跳过模式下的当前块可以合并为IBC模式编码的邻域,或者以不同图片作为参考图片以另外方式合并为正常帧间模式编码的邻域。
[0079] ○用于IBC模式的块矢量预测和编码方案重新使用用于HEVC帧间模式中的运动矢量预测和编码的方案(AMVP和MVD编码)。
[0080] ○用于IBC模式的运动矢量(也称为块矢量)以整数像素精度编码,但在解码后以1/16像素精度存储在存储器中,因为在插值和解块阶段中需要四分之一像素精度。当用于IBC模式的运动矢量预测时,存储的矢量预测器将右移4。
[0081] ○搜索范围:它被限制在当前CTU内。
[0082] ○当启用仿射模式/三模式/GBI/加权预测时,不允许CPR。
[0083] 在一些情况下,通过对当前Merge候选列表中的预定候选对进行平均来生成成对平均候选,并且将预定义对定义为{(0,1),(0,2),(1,2),(0,3),(1,3),(2,3)},其中数字表示Merge候选列表的Merge索引。针对每个参考列表分别计算平均运动矢量。如果两个运动矢量在一个列表中可用,则即使它们指向不同的参考图像,也将这两个运动矢量平均;如果只有一个运动矢量可用,则直接使用一个;如果没有可用的运动矢量,则保持该列表无效。成对平均候选替换HEVC标准中的组合候选。假设两个Merge候选的MV是MV0=(MV0x,MV0y)和MV1=(MV1x,MV1y),则表示为MV*=(MV*x,MV*y)的成对Merge候选的MV被导出为[0084] MV*x=(MV0x+MV1x)/2,和
[0085] MV*y=(MV0y+MV1y)/2。
[0086] 另外,当MV0和MV1指代当前图片(即,CPR模式)时,MV*x和MV*y被进一步舍入以去除具有比全像素更高精度的部分以确保获得整数MV:
[0087] MV*x=(MV*x/16)<<4,和
[0088] [MV*y=(MV*y/16)<<4。
[0089] 应当注意,对于每一对,如果两者中的一个用CPR编码而另一个不用CPR编码,则不允许这样的对生成成对平均候选。
[0090] 三角预测模式(TPM)的概念是引入用于运动补偿预测的新三角划分。它在对角线或反对角线方向上将CU分成两个三角预测单元。使用从单个单向预测候选列表导出的其自身的单向预测运动矢量和参考帧索引对CU中的每个三角预测单元进行帧间预测。在预测三角预测单元之后,对对角线边缘执行自适应加权处理。然后,将变换和量化处理应用于整个CU。应当注意,该模式仅应用于Merge模式(注意:跳过模式被视为特殊Merge模式)。TPM的单向预测候选列表。
[0091] 称为TPM运动候选列表的单向预测候选列表由五个单向预测运动矢量候选组成。它从包括五个空间相邻块和两个时间共同定位块的七个相邻块导出。收集七个相邻块的运动矢量,并按照单向预测运动矢量,双向预测运动矢量的L0运动矢量,双向预测运动矢量的L1运动矢量,以及双向预测运动矢量的L0和L1运动矢量的平均运动矢量的顺序将其放入单向预测候选列表中。如果候选的数量小于五,则将零运动矢量添加到列表中。在该列表中为TPM添加的运动候选被称为TPM候选,从空间/时间块导出的运动信息被称为常规运动候选。
[0092] 更具体地,涉及以下步骤:
[0093] (1)从A1,B1,B0,A0,B2,Col和Col2获得常规运动候选(与常规Merge模式中的类似)而不进行任何修剪操作。
[0094] (2)设置变量numCurrMergeCand=0
[0095] (3)对于从A1,B1,B0,A0,B2,Col和Col2导出的每个常规运动候选并且numCurrMergeCand小于5,如果常规运动候选是单向预测(来自列表0或列表1),将其作为TPM候选直接添加到Merge列表,numCurrMergeCand增加1。这样的TPM候选被称为“原始单向预测候选”。
[0096] 应用完全修剪
[0097] (4)对于从A1,B1,B0,A0,B2,Col和Col2导出的每个运动候选并且numCurrMergeCand小于5,如果常规运动候选是双向预测,则将来自列表0的运动信息作为新的TPM候选添加到TPM  Merge列表(即,修改为从列表0的单向预测)并且
numCurrMergeCand增加1。这样的TPM候选被称为“截断列表0预测候选”。
[0098] 应用完全修剪。
[0099] (5)对于从A1,B1,B0,A0,B2,Col和Col2导出的每个运动候选并且numCurrMergeCand小于5,如果常规运动候选是双向预测,则将来自列表1的运动信息添加到TPM Merge列表(即,修改为从列表1的单向预测)并且numCurrMergeCand增加1。这样的TPM候选被称为“截断列表1预测候选”。
[0100] 应用完全修剪。
[0101] (6)对于从A1,B1,B0,A0,B2,Col和Col2导出的每个运动候选并且numCurrMergeCand小于5,如果常规运动候选是双向预测,则将列表1的运动信息首先缩放到列表0参考图片,并且将两个MV(一个来自原始列表0,另一个是来自列表1的缩放MV)的平均值添加到TPM Merge列表,这样的候选被称为来自列表0运动候选的平均单向预测并且numCurrMergeCand增加1。
[0102] 应用完全修剪。
[0103] (7)如果numCurrMergeCand小于5,则添加零运动矢量候选。
[0104] 当将候选插入列表时,如果必须将其与所有先前添加的候选进行比较以查看它是否与它们中的一个相同,则这样的处理称为完全修剪。
[0105] 假设由(MV1'x,MV1'y)表示缩放MV并且由(MV0x,MV0y)表示列表0MV。从由(MV*x,MV*y)表示的列表0运动候选的平均单向预测被定义为:
[0106] MV*x=(MV0x+MV1'x+1)>>1,和
[0107] MV*y=(MV0y+MV1'y+1)>>1。
[0108] 在一些现有实现方式中,例如JEM中的仿射预测,单独地对于每个分量,每个子块的MV用如等式(1)所示的仿射模型计算,这可能导致亮度和色度分量之间的运动矢量的未对准。分量的多次计算也导致编码效率低下。在一些其它现有实现方式中,用于从列表0运动候选导出成对Merge候选/平均单向预测的运动矢量平均操作需要与子块预测中使用的舍入方法对准。因此期望获得统一的设计。
[0109] 本专利文件公开了可以在各种实施例中实现以从另一分量(例如,亮度分量)的一个或多个子块的MV计算一个分量(例如,色度组件)的子块的MV的技术。公开的技术消除了多次确定不同分量的MV的需要,由此提高了视频编码效率。公开的技术还引入了关于平均操作和舍入方法的统一设计。
[0110] 在针对各种实现方式描述的以下实施例中阐明了这样的技术的使用。在不应被解释为限制的以下示例中,Shift(x,s)定义为Shift(x,s)=(x+off)>>s,并且
[0111] SignShift(x,s)定义为:
[0112]
[0113] 这里,off是整数,例如,0或1<<(s-1)。
[0114] 在一些实施例中,可以基于另一分量的一个或多个子块的MV来导出一个分量的子块的MV。这里,已经用仿射模型导出了另一分量的一个或多个子块的MV。这样,不需要多次导出运动信息。
[0115] 在一些实施例中,HEVC标准定义如何从亮度分量中的用于MC的MV(标记为mv)导出色度分量中的MV(标记为mvC)。一般而言,mvC计算为mv乘以因子,所述因子依赖于颜色格式,例如4:2:0或4:2:2。图10示出了根据本技术导出4:2:0格式的子块的分量的MV的示例。在该示例中,对于Y(亮度分量),块大小是16×16,对于Cb/Cr(色度分量),块大小是8×8。亮度分量的子块大小是4×4,而色度分量的子块大小是2×2。首先为Y分量中的4×4子块导出MV*。可以基于MV*导出Cb和/或Cr分量中的2×2子块的MV。在该具体示例中,首先复制MV*的值,并且根据HEVC标准基于MV*计算Cb和/或Cr分量中的2×2子块的MV。
[0116] 图11示出了根据本技术导出4:2:0格式的子块的分量的MV的另一示例。在该示例中,亮度分量的块大小为16×16,色度分量的块大小为8×8。所有分量的子块大小为4×4。Cb或Cr分量中的4×4子块对应于Y分量中的四个4×4子块。首先计算亮度分量的MV*。然后根据HEVC标准基于MV*导出Cb或Cr分量中的4×4子块的MV。
[0117] 在一些实施例中,MV*被计算为Y分量中的所有对应子块MV的平均值:MV*=(MV0+MV1+MV2+MV3)/4。假设MV*=(MV*x,MV*y),MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)以及MV3=(MV3x,MV3y)。
[0118] 在一些实施例中,MV*x=Shift(MV0x+MV1x+MV2x+MV3x,2),MV*y=Shift(MV0y+MV1y+MV2y+MV3y,2)。在一些实施例中,MV*x=SignShift(MV0x+MV1x+MV2x+MV3x,2),MV*y=SignShift(MV0y+MV1y+MV2y+MV3y,2)。
[0119] 在一些实施例中,可以使用以下操作来执行MV*的计算:
[0120] 1.a MV'x=Shift(MV0x+MV1x,1),
[0121] 1.b MV'y=Shift(MV0y+MV1y,1),
[0122] 1.c MV”x=Shift(MV2x+MV3x,1),
[0123] 1.d MV”y=Shift(MV2y+MV3y,1),
[0124] 1.e MV*x=Shift(MV'x+MV”x,1),和
[0125] 1.f MV*y=Shift(MV'y+MV”y,1)。
[0126] 在一些实施例中,可以使用以下操作来执行MV*的计算:
[0127] 2.a MV'x=Shift(MV0x+MV2x,1),
[0128] 2.b MV'y=Shift(MV0y+MV2y,1),
[0129] 2.c MV”x=Shift(MV1x+MV3x,1),
[0130] 2.d MV”y=Shift(MV1y+MV3y,1),
[0131] 2.e MV*x=Shift(MV'x+MV”x,1),和
[0132] 2.f MV*y=Shift(MV'y+MV”y,1)。
[0133] 在一些实施例中,可以使用以下操作来执行MV*的计算:
[0134] 3.a MV'x=SignShift(MV0x+MV1x,1),
[0135] 3.b MV'y=SignShift(MV0y+MV1y,1),
[0136] 3.c MV”x=SignShift(MV2x+MV3x,1),
[0137] 3.d MV”y=SignShift(MV2y+MV3y,1),
[0138] 3.e MV*x=SignShift(MV'x+MV”x,1),和
[0139] 3.f MV*y=SignShift(MV'y+MV”y,1)。
[0140] 在一些实施例中,可以使用以下操作来执行MV*的计算:
[0141] 4.a MV'x=SignShift(MV0x+MV2x,1),
[0142] 4.b MV'y=SignShift(MV0y+MV2y,1),
[0143] 4.c MV”x=SignShift(MV1x+MV3x,1),
[0144] 4.d MV”y=SignShift(MV1y+MV3y,1),
[0145] 4.e MV*x=SignShift(MV'x+MV”x,1),和
[0146] 4.f MV*y=SignShift(MV'y+MV”y,1)。
[0147] 在一些实施例中,基于Y分量中的左上子块的MV(例如,如图11中所示的MV0)来计算MV*。在一些实施例中,基于Y分量中的中心子块的MV来计算MV*。在一些实施例中,基于Y分量中的所有对应子块的中值MV来计算MV*。在图11所示的该具体示例中,MV*=中值(MV0,MV1,MV2,MV3)。
[0148] 在一些实施例中,可以基于颜色格式(例如4:2:0,4:2:2和/或4:4:4)确定颜色分量的子块的MV的推导。例如,当颜色格式为4:4:4时,不会发生子采样。视频数据块中的子块大小和子块的数量对于所有分量是相同的。一个分量中的子块的MV与另一分量中的对应子块的MV相同。
[0149] 作为另一示例,当颜色格式是4:2:2时。所有分量的子块大小可以相同,而不同分量的块的数量可以不同。首先基于若干对应子块的MV来计算亮度分量的MV*。然后从MV*导出Cb或Cr分量中的对应子块的MV。
[0150] 图12示出了根据本技术导出用于子块的分量的MV的又一示例。在该示例中,亮度分量的块大小为16×16,色度分量的块大小为8×16。所有分量的子块大小为4×4。Cb或Cr分量中的4×4子块对应于Y分量中的两个4×4子块。首先计算亮度分量的MV*。然后根据HEVC标准基于MV*导出Cb或Cr分量中的4×4子块的MV。
[0151] 在一些实施例中,MV*被计算为Y分量中的所有对应子块MV的平均值:MV*=(MV0+MV1)/2。假设MV*=(MV*x,MV*y),MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),
[0152] 在一些实施例中,MV*x=Shift(MV0x+MV1x,1),MV*y=Shift(MV0y+MV1y,1)。在一些实施例中,MV*x=SignShift(MV0x+MV1x,1),MV*y=SignShift(MV0y+MV1y,1)。
[0153] 图13是根据本技术的一个或多个实施例的用于视频编码的示例性方法1300的流程图。方法1300包括在操作1310处,将当前视频块的第一分量分割成第一组子块。方法1300包括在操作1320处,将当前视频块的第二分量分割成第二组子块。第二分量的子块对应于第一分量的一个或多个子块。方法1300还包括在操作1330处,基于当前视频块的颜色格式,基于第一颜色分量的一个或多个对应子块的运动矢量导出第二分量的子块的运动矢量。
[0154] 图14是根据本技术的一个或多个实施例的用于视频编码的另一示例性方法1400的流程图。方法1400包括在操作1410处,接收包括第一分量和至少第二分量的视频数据块。将第一分量分割成第一组子块并且将第二分量分割成第二组子块。第二分量的子块对应于第一分量的一个或多个子块。方法1400包括在操作1420处,基于视频数据块的颜色格式,基于第一颜色分量的一个或多个对应子块的运动矢量导出第二分量的子块的运动矢量。方法
1400包括在操作1430处,基于导出的运动矢量,重建视频数据块或解码相同图片中的其他视频数据块。
[0155] 在一些实施例中,第二分量的子块对应于第一分量的子块。例如,这两个子块可以在空间上共同位于图片中。方法1300或1400还包括通过复制第一分量的子块的运动矢量并将因子应用于中间运动矢量集以获得导出的运动矢量来计算中间运动矢量集,其中因子与颜色格式关联。
[0156] 在一些实施例中,颜色格式不是4:4:4(例如,是4:2:2,或4:2:0),并且第一组子块中的至少一个的大小不同于第二组子块中的至少一个的大小。在一些实施例中,颜色格式是4:4:4,并且第一组子块中的至少一个的大小与第二组子块中的至少一个的大小相同。
[0157] 在一些实施例中,颜色格式不是4:4:4,并且第一组子块中的至少一个的大小与第二组子块中的至少一个的大小相同。第二分量的子块对应于第一分量的多个子块。在一些实施例中,基于第一分量的多个子块的对应运动矢量的平均值导出用于第二分量的子块的运动矢量中的至少一个。
[0158] 在一些实现方式中,第二分量的子块对应于第一分量的四个子块。四个子块分别具有运动矢量MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)和MV3=(MV3x,MV3y)。方法1300或1400包括计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=Shift(MV0x+MV1x+MV2x+MV3x,2)和MV*y=Shift(MVy0+MVy1+MVy2+MVy3,2),其中Shift(x,s)=(x+off)>>s,其中off和s是整数,并且其中>>表示右移操作。方法1300或1400还包括将因子应用于中间运动矢量集以获得导出的运动矢量,其中因子与颜色格式关联。
[0159] 在一些实现方式中,第二分量的子块对应于第一分量的四个子块。四个子块分别具有运动矢量MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)和MV3=(MV3x,MV3y)。方法1300或1400包括计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=SignShift(MV0x+MV1x+MV2x+MV3x,2)和MV*y=SignShift(MV0y+MV1y+MV2y+MV3y,2),其中其中off和s是整数,并且其中>>
表示移位操作。方法1300或1400还包括将因子应用于中间运动矢量集以获得导出的运动矢量,其中因子与颜色格式关联。
[0160] 在一些实现方式中,第二分量的子块对应于第一分量的四个子块。四个子块分别具有运动矢量MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)和MV3=(MV3x,MV3y)。方*法1300或1400包括计算中间运动矢量集MV*=(MV*x,MV*y)作为MVx=Shift(MV′x+MV″x,
1)和MV*y=Shift(MV′y+MV″y,1),其中MV′x=Shift(MV0x+MV1x,1),MV′y=Shift(MV0y+MV1y,1),MV″x=Shift(MV2x+MV3x,1),和MV″y=Shift(MV2y+MV3y,1),其中Shift(x,s)=(x+off)>>s,其中off和s是整数,并且其中>>表示右移操作。方法1300或1400还包括将因子应用于中间运动矢量集以获得导出的运动矢量,其中因子与颜色格式关联。
[0161] 在一些实现方式中,第二分量的子块对应于第一分量的四个子块。四个子块分别具有运动矢量MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)和MV3=(MV3x,MV3y)。方法1300或1400包括计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=Shift(MV′x+MV″x,1)和MV*y=Shift(MV′y+MV″y,1),其中MV′x=Shift(MV0x+MV2x,1),MV′y=Shift(MV0y+MV2y,1),MV″x=Shift(MV1x+MV3x,1),和MV″y=Shift(MV1y+MV3y,1),其中Shift(x,s)=(x+off)>>s,其中off和s是整数,并且其中>>表示右移操作。方法1300或1400还包括将因子应用于中间运动矢量集以获得导出的运动矢量,其中因子与颜色格式关联。
[0162] 在一些实现方式中,第二分量的子块对应于第一分量的四个子块。四个子块分别具有运动矢量MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)和MV3=(MV3x,MV3y)。方法1300或1400包括计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=SignShift(MV′x+MV″x,1)和MV*y=SignShift(MV′y+MV″y,1),其中MV′x=SignShift(MV0x+MV1x,1),MV′y=SignShift(MV0y+MV1y,1),MV″x=SignShift(MV2x+MV3x,1),和MV″y=SignShift(MV2y+MV3y,1),其中 其中off和s是整数,并且其中>>表示移位操作。方法1300或1400还包括将因子应用于中间运动矢量集以获得导出的运动矢量,其中因子与颜色格式关联。
[0163] 在一些实现方式中,第二分量的子块对应于第一分量的四个子块。四个子块分别具有运动矢量MV0=(MV0x,MV0y),MV1=(MV1x,MV1y),MV2=(MV2x,MV2y)和MV3=(MV3x,MV3y)。方法1300或1400包括计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=SignShift(MV′x+MV″x,1)和MV*y=SignShift(MV′y+MV″y,1),其中MV′x=SignShift(MV0x+MV2x,1),MV′y=SignShift(MV0y+MV2y,1),MV″x=SignShift(MV1x+MV3x,1),和MV″y=SignShift(MV1y+MV3y,1),其中 其中off和s是整数,并且其中>>表示移位操作。方法1300或1400还包括将因子应用于中间运动矢量集以获得导出的运动矢量,其中因子与颜色格式关联。
[0164] 在一些实现方式中,第二分量的子块对应于第一分量的两个子块。两个子块分别具有运动矢量MV0=(MV0x,MV0y)和MV1=(MV1x,MV1y)。方法1300或1400包括计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=Shift(MV0x+MV1x,1)和MV*y=Shift(MVy0+MVy1,1),其中Shift(x,s)=(x+off)>>s,其中off和s是整数,并且其中>>表示右移操作。方法1300或1400还包括将因子应用于中间运动矢量集以获得导出的运动矢量,其中因子与颜色格式关联。
[0165] 在一些实现方式中,第二分量的子块对应于第一分量的两个子块。两个子块分别具有运动矢量MV0=(MV0x,MV0y)和MV1=(MV1x,MV1y)。
[0166] 方法1300或1400包括计算中间运动矢量集MV*=(MV*x,MV*y)作为MV*x=SignShift(MV0x+MV1x,1)和MV*y=SignShift(MVy0+MVy1,1),其中
[0167]
[0168] 其中off和s是整数,并且其中>>表示移位操作。方法1300或1400还包括将因子应用于中间运动矢量集以获得导出的运动矢量,其中因子与颜色格式关联。
[0169] 在一些实施例中,方法1300或1400还包括基于第一分量的多个子块中的选择的子块的运动矢量计算中间运动矢量集,并且将因子应用于中间运动矢量集以获得导出的运动矢量。因子与颜色格式关联。在一些实现方式中,选择的子块是第一分量的多个子块的左上子块。在一些实现方式中,选择的子块是第一分量的多个子块的中心子块。
[0170] 在一些实施例中,方法1300或1400包括基于第一分量的多个子块的运动矢量的中值计算中间运动矢量集,并且将因子应用于中间运动矢量集以获得导出的运动矢量,其中因子与颜色格式关联。
[0171] 在一些实施例中,在高效视频编码(HEVC)标准中指定因子的应用。
[0172] 以上描述的示例可以结合在下面描述的方法(例如,方法1300和1400)的上下文中,其可以在视频解码器和/或视频编码器处实现。
[0173] 图15是示出可以用于实现本公开技术的各个部分的示例性编码装置1500的框图,所述技术包括(但不限于)方法1300和方法1400。编码装置1500包括用于压缩输入数据比特的量化器1505。编码装置1500还包括去量化器1515,使得数据比特可以进给到存储器1525和预测器1520以执行运动估计。编码装置1500还包括二进制编码器1530以生成编码的二进制代码。
[0174] 图16是示出可以用于实现本公开技术的各个部分的示例性编码装置1600的框图,所述技术包括(但不限于)方法1300和方法1400。解码装置1600包括用于解码二进制代码的二进制解码器1605。。解码装置1600还包括去量化器1615,使得解码的数据比特可以进给到存储器1625和预测器1620以在解码端执行运动估计。
[0175] 图17是示出可以用于实现本公开技术的各个部分的计算机系统或其他控制设备1700的架构的示例的示意图。在图17中,计算机系统1700包括经由互连1725连接的一个或多个处理器1705和存储器1710。互连1725可以表示由适当的桥、适配器或控制器连接的任何一条或多条单独的物理总线、点对点连接或两者。因此,互连1725可以包括例如系统总线、外围组件互连(PCI)总线、超传输或工业标准体系结构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)、IIC(I2C)总线或电气与电子工程师协会(IEEE)标准674总线(有时被称为“火线”)。
[0176] 处理器1705可以包括中央处理器(CPU)以控制例如主机的整体操作。在一些实施例中,处理器1705通过执行存储在存储器1710中的软件或固件来实现这一点。处理器1705可以是或可以包括一个或多个可编程通用或专用微处理器数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)等,或这些器件的组合。
[0177] 存储器1710可以是或包括计算机系统的主存储器。存储器1710表示任何适当形式的随机存取存储器(RAM)、只读存储器(ROM)、闪存等,或这些器件的组合。在使用中,存储器1710除其他外可包含机器指令集,所述机器指令集在由处理器1705执行时使处理器1705执行操作以实现本公开技术的实施例。
[0178] 通过互连1725连接到处理器1705的还有(可选的)网络适配器1715。网络适配器1715为计算机系统1700提供与远程设备(诸如存储客户机和/或其他存储服务器)通信的能,并且可以是例如以太网适配器或光纤通道适配器。
[0179] 图18示出了可以用于实现本公开技术的各个部分的移动设备1800的示例性实施例的框图,所述技术包括(但不限于)方法1600。移动设备1800可以是笔记本电脑、智能手机、平板电脑、摄像机或能够处理视频的其他设备。移动设备1800包括处理数据的处理器或控制器1801,以及与处理器1801通信以存储和/或缓冲数据的存储器1802。例如,处理器1801可以包括中央处理器(CPU)或微控制器单元(MCU)。在一些实现方式中,处理器1801可以包括现场可编程阵列(FPGA)。在一些实现方式中,移动设备1800包括或与图形处理单元(GPU)、视频处理单元(VPU)和/或无线通信单元通信,以实现智能手机设备的各种视觉和/或通信数据处理功能。例如,存储器1802可以包括并存储处理器可执行代码,当处理器
1801执行该代码时,将移动设备1800配置为执行各种操作,例如接收信息、命令和/或数据,处理信息和数据,以及将处理过的信息/数据发送或提供给另一设备,诸如执行器或外部显示器。
[0180] 为了支持移动设备1800的各种功能,存储器1802可以存储信息和数据,诸如指令、软件、值、图像以及处理器1801处理或引用的其他数据。例如,可以使用各种类型的随机存取存储器(RAM)设备、只读存储器(ROM)设备、闪存设备和其他合适的存储介质来实现存储器1802的存储功能。在一些实现方式中,移动设备1800包括输入/输出(I/O)单元1803以将处理器1801和/或存储器1802与其他模块、单元或设备进行接口。例如,I/O单元1803可以与处理器1801和存储器1802进行接口,以利用与典型数据通信标准兼容的各种类型的无线接口,例如,在中的一台或多台计算机和用户设备之间。在一些实现方式中,移动设备1800可以经由I/O单元1803使用有线连接与其他设备进行接口。移动设备1800还可以与其他外部接口(例如数据存储器)和/或可视或音频显示设备1804进行接口,以检索和传输可由处理器处理、存储在存储器中或在显示设备1804或外部设备的输出单元上显示的数据和信息。例如,显示设备1804可以显示包括块(CU,PU或TU)的视频帧,所述块基于是否使用运动补偿算法并且根据公开的技术对块进行编码来应用帧内块复制。
[0181] 从前述内容将理解,为了便于说明,本公开技术的具体实施例已经在本文中进行了描述,但是可以在不偏离本发明范围的情况下进行各种修改。因此,除了所附权利要求之外,本公开的技术不受限制。
[0182] 本专利文件中描述的主题和功能操作的实现方式可以在各种系统、数字电子电路、或计算机软件、固件或硬件中实现,包括本说明书中公开的结构及其结构等效体,或其中一个或多个的组合。本说明书中描述的主题的实现方式可以实现为一个或多个计算机程序产品,即编码在有形和非暂时计算机可读介质上的计算机程序指令的一个或多个模块,以供数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、影响机器可读传播信号的物质组成或其中一个或多个的组合。术语“数据处理装置”涵盖用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。除硬件外,该装置还可以包括为所述计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或其中一个或多个的组合的代码。
[0183] 计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或适合在计算环境中使用的其他单元。计算机程序不一定与文件系统中的文件对应。程序可以存储在保存其他程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)中、专用于所述程序的单个文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署成在一台或多台计算机上执行,所述计算机位于一个站点上或分布在多个站点上,并通过通信网络互连。
[0184] 本说明书描述的处理和逻辑流可以通过一个或多个可编程处理器执行,所述处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
[0185] 例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如,磁盘、磁光盘或光盘,或可操作联接到一个或多个大容量存储设备以从其接收数据或向其传输数据,或两者兼有。然而,计算机不一定具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备。处理器和存储器可以由专用逻辑电路来补充,或合并到专用逻辑电路中。
[0186] 本说明书和附图仅意在被视为示例性的,其中示例性是指示例。如本文所用,除非上下文另有明确说明,否则单数形式“a”、“an”和“the”也应包括复数形式。此外,“或”的使用旨在包括“和/或”,除非上下文另有明确说明。
[0187] 虽然本专利文件包含许多细节,但不应将其解释为对任何发明或权利要求范围的限制,而应解释为对特定发明的特定实施例的特征的描述。本专利文件在单独实施例的上下文描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独实现,或在任何合适的子组合中实现。而且,尽管上述特征可以描述为在某些组合中起作用,甚至最初要求是这样,但在某些情况下,可以从组合中删除权利要求组合中的一个或多个特征,并且权利要求的组合可以涉及子组合或子组合的变型。
[0188] 类似地,尽管图中以特定顺序描述了操作,但这不应理解为要获得想要的结果必须按照所示的特定顺序或按照先后顺序执行这样的操作,或执行所有示出的操作。而且,本专利文件所述实施例中各种系统部件的分离不应理解为在所有实施例中都需要这样的分离。
[0189] 仅描述了一些实现方式和示例,其他实现方式、增强和变型可以基于本专利文件中描述和示出的内容做出。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈