一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

编码器、解码器及对应的使用帧内模式译码进行帧内预测的方法与流程

2021-10-29 19:27:00 来源:中国专利 TAG:专利申请 预测 译码 申请 优先权

编码器、解码器及对应的使用帧内模式译码进行帧内预测的方法
1.相关申请案交叉申请
2.本专利申请要求于2019年2月25日提交的第62/810,323号美国临时专利申请的优先权。上述专利申请的全部公开内容通过引用的方式并入本文中。
技术领域
3.本技术实施例大体上涉及图像处理领域,更具体地,涉及帧内预测。


背景技术:

4.视频译码(视频编码和解码)广泛用于数字视频应用,例如广播数字tv、通过互联网和移动网络传输视频、实时会话应用(如视频聊天)、视频会议、dvd和蓝光光盘、视频内容采集和编辑系统,以及安全应用的摄像机。
5.即使在视频较短的情况下也需要对大量的视频数据进行描述,当数据要在带宽容量受限的通信网络中发送或以其它方式发送时,这样会造成困难。因此,视频数据通常要先压缩然后在现代电信网络中发送。由于内存资源有限,当在存储设备中存储视频时,视频的大小也会成为问题。视频压缩设备通常在信源侧使用软件和/或硬件,以在发送或存储之前对视频数据进行译码,从而减少用来表示数字视频图像所需的数据量。然后,压缩数据在目的侧由用于对视频数据进行解码的视频解压缩设备接收。在有限的网络资源以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。
6.特别地,在帧内预测处理背景下,存在对减少处理器负载的持续需求。在本领域中,已知将最可能模式(most probable mode,mpm)列表用于帧内预测模式译码。mpm列表减少了译码当前块的帧内预测模式所需的比特数。在当前块的帧内预测模式对应于mpm列表的条目时,对索引而不是实际模式进行编码,因此需要的比特数更少。但是,考虑到最高效的帧内预测译码,选择用于生成mpm列表的条目仍然是一项任务。条目的正确选择对基于mpm列表的帧内预测模式译码的效率的影响很大。
7.有鉴于此,本发明的一个目的是提供一种用于生成mpm列表的技术,该技术与现有技术相比,能够更高效地译码。


技术实现要素:

8.本技术实施例提供根据独立权利要求请求保护的用于编码和解码的装置和方法。
9.上述和其它目的通过独立权利要求请求保护的主题实现。其它实现方式从从属权利要求、说明书和附图中是显而易见的。
10.根据一个实施例,提供了一种由解码设备或编码设备实现的对当前块进行预测译码的方法,包括:
11.获取所述当前块的左相邻块的帧内预测模式;
12.获取所述当前块的上相邻块的帧内预测模式;
13.当至少第一条件满足时,(根据这些获取步骤的结果)构建所述当前块的帧内预测模式的最可能模式(most probable mode,mpm)列表,所述mpm列表包括如下至少5个帧内预测模式条目:
14.{ang,2 ((ang 61)%64),2 ((ang

1)%64),2 ((ang 60)%64),2 ((ang)%64)},其中,所述第一条件包括所述左相邻块的帧内预测模式和所述上相邻块的帧内预测模式是相同的角度模式,并且其中,ang表示所述左相邻块的所述帧内预测模式或所述上相邻块的所述帧内预测模式。换句话说,ang是一个值或索引,表示所述左相邻块的所述帧内预测模式或所述上相邻块的所述帧内预测模式。ang的范围可以为{2

66}。
15.在本实施例的一种实现方式中,所述方法还可以包括:检查所述左相邻块的所述帧内预测模式与所述上相邻块的所述帧内预测模式是否为相同的角度模式。
16.由于实践中通常使用的帧内预测模式包括在生成的mpm列表中,所以所述mpm列表可以提高译码效率,并可以通过列表的索引参考,无需对实际模式进行译码。
17.特别地,当所述第一条件和第二条件满足时,所述至少5个帧内预测模式条目可以包括在所述mpm列表中,其中,所述第二条件包括所述当前块使用帧内子划分(intra sub partition,isp)模式进行译码。由此,可以根据实际应用,进一步提高译码效率。
18.在一个替代方案中,为了提高译码效率,解码设备或编码设备实现的对当前块进行预测译码的方法可以提供mpm列表,所述方法包括:获取所述当前块的左相邻块的帧内预测模式;获取所述当前块的上相邻块的帧内预测模式;当至少第一条件满足时,(根据这些获取步骤的结果)构建所述当前块的帧内预测模式的最可能模式(most probable mode,mpm)列表,所述mpm列表包括如下至少5个帧内预测模式条目:
19.{ang,2 ((ang 61)%64),2 ((ang

1)%64),2 ((ang 60)%64),2 ((ang)%64)},其中,所述第一条件包括所述左相邻块的所述帧内预测模式和所述上相邻块的所述帧内预测模式中仅有一种为角度模式,其中,ang表示所述角度模式。换句话说,ang是一个值或索引,表示角度模式。ang的范围可以为{2

66}。所述第一条件可以包括所述左相邻块的所述帧内预测模式和所述上相邻块的所述帧内预测模式中的另一个不是角度模式。
20.在替代实施例的一种实现方式中,所述方法还可以包括:检查所述左相邻块的所述帧内预测模式和所述上相邻块的所述帧内预测模式中是否仅有一个为角度模式。
21.同样,当所述第一条件和第二条件满足时,所述mpm列表可以包括所述至少5个帧内预测模式条目,其中,所述第二条件包括所述当前块使用isp模式进行译码。
22.根据另一个替代方案,为了提高译码效率,解码设备或编码设备实现的对当前块进行预测译码的方法可以提供mpm列表,所述方法包括:
23.获取所述当前块的左相邻块的帧内预测模式;
24.获取所述当前块的上相邻块的帧内预测模式;
25.当至少第一条件满足时,(根据这些获取步骤的结果)构建所述当前块的帧内预测模式的最可能模式(most probable mode,mpm)列表,其中,所述第一条件包括所述左相邻块的所述帧内预测模式和所述上相邻块的所述帧内预测模式均为角度模式,所述mpm列表包括如下至少5个帧内预测模式条目:
26.(a)当maxab

minab等于1时,{above_mode,left_mode,2 ((minab 61)%64),2
((maxab

1)%64),2 ((minab 60)%64)};或
27.(b)当maxab

minab等于2时,{above_mode,left_mode,2 ((minab

1)%64),2 ((minab 61)%64),2 ((maxab

1)%64)};或
28.(c)当maxab

minab大于61时,{above_mode,left_mode,2 ((minab

1)%64),2 ((maxab 61)%64),2 (minab%64)};或
29.(d)其它情况下,{above_mode,left_mode,2 ((minab 61)%64),2 ((minab

1)%64),2 ((maxab 61)%64)};
30.其中,above_mode表示所述上相邻块的所述帧内预测模式,left_mode表示所述左相邻块的所述帧内预测模式,minab表示所述above_mode与所述left_mode之间的最小帧内预测模式,maxab表示所述above_mode与所述left_mode之间的最大帧内预测模式。
31.在替代实施例的一种实现方式中,所述方法还可以包括:检查所述左相邻块的所述帧内预测模式和所述上相邻块的所述帧内预测模式是否均为角度模式。
32.在上述所有实施例中,所述当前块的所述帧内预测模式可以根据分别生成的mpm列表进行译码。如上所述,与现有技术相比,译码过程的译码效率可以通过使用相应的mpm列表来提高。
33.根据上述实施例中的一个的方法还可以包括:确定所述当前块的所述帧内预测模式,以及当所述当前块的所述确定的帧内预测模式列在所述mpm列表中时,通过所述mpm列表的对应的索引对所述当前块的所述确定的帧内预测模式进行译码。同样,与现有技术相比,译码过程的译码效率可以通过使用相应的mpm列表的索引来提高。
34.根据一个实施例,所述mpm列表的生成包括生成表示所述planar模式的第六列表条目。或者,上述实施例中的一个的方法可以包括:确定所述当前块的所述帧内预测模式是否为planar模式,以及在确定所述当前块的所述帧内预测模式不是planar模式时,通过标志指示所述当前块的所述帧内预测模式不是planar模式。
35.因此,可以明确考虑广泛使用的重要的planar模式。应明确指出,这些使用planar模式的替代方案之间的区别仅仅是示例性的,并且这些替代方案可以相互替换。
36.根据另一个实施例,所述生成的mpm列表包括上述至少5个条目(即没有索引planar模式),并且所述方法还包括使用所述生成的mpm列表进行多参考行译码。同样,可以提高帧内预测的译码效率。
37.根据另一个特定实施例,如果不存在帧内预测的上相邻块,则所述上相邻块的所述帧内预测模式可以确定为planar;如果不存在帧内预测的左相邻块,则所述左相邻块的所述帧内预测模式确定为planar。因此,对于不存在帧内预测的上相邻块或帧内预测的左相邻块的情况,可以通过默认的方式高效处理。
38.此外,还考虑了所述左相邻块的所述帧内预测模式和所述上相邻块的所述帧内预测模式均不为角度模式的情况。因此,提供了一种解码设备或编码设备实现的对当前块进行预测译码的方法,包括:
39.获取所述当前块的左相邻块的帧内预测模式;
40.获取所述当前块的上相邻块的帧内预测模式;
41.当至少第一条件满足时,构建所述当前块的帧内预测模式的最可能模式(most probable mode,mpm)列表,所述mpm列表包括至少5个帧内预测模式条目,其中,所述至少5
个条目中的4个由ver_idx、hor_idx、ver_idx

4和ver_id 4给出,其中,所述第一条件包括所述左相邻块的所述帧内预测模式和所述上相邻块的所述帧内预测模式均不为角度模式,其中,ver_idx表示垂直帧内预测模式的索引,hor_idx表示水平帧内预测模式的索引。
42.在替代实施例的一种实现方式中,所述方法还可以包括:检查所述左相邻块的所述帧内预测模式和所述上相邻块的所述帧内预测模式是否均不为角度模式。
43.在本发明方法的所有上述实施例中,以下内容成立:所述左相邻块的左上角位于(xcb

1,ycb cbheight

1),所述上相邻块的左上角位于(xcb cbwidth

1,ycb

1),其中,xcb、ycb、cbheight和cbwidth分别表示所述当前块的所述左上角在宽度方向上的位置、所述当前块的所述左上角在高度方向上的位置、所述当前块的高度和所述当前块的宽度。
44.上述实施例可以在提供上述相同优点的编码器或解码器中实现。因此,提供了一种编码器,其包括用于执行根据上述实施例中的任一个实施例的方法的处理电路。类似地,提供了一种解码器,其包括用于执行根据上述实施例中的任一个实施例的方法的处理电路。
45.此外,提供了一种计算机程序产品,其包括用于执行上述方法的步骤的程序代码。
46.此外,提供了一种解码器或编码器,其包括一个或多个处理器和非瞬时性计算机可读存储介质,其与所述处理器耦合并存储由所述处理器执行的程序,其中,当所述程序由所述处理器执行时,使所述编码器或所述解码器执行根据上述实施例中任一项所述的方法。
47.本发明中对当前块进行预测译码的方法的上述实施例可以在用于图像编码器和/或图像解码器的适当设备中实现。这样的设备的操作还提供上述优点。因此,提供了一种用于图像编码器和/或图像解码器的设备,包括:
48.预测模式单元,用于获取所述当前块的左相邻块的帧内预测模式,以及用于获取所述当前块的上相邻块的帧内预测模式;
49.最可能模式(most probable mode,mpm)单元,用于当至少第一条件满足时,(根据来自所述预测模式单元的输入)构建所述当前块的帧内预测模式列表,所述mpm列表包括如下至少5个帧内预测模式条目:
50.{ang,2 ((ang 61)%64),2 ((ang

1)%64),2 ((ang 60)%64),2 ((ang)%64)},其中,所述第一条件包括所述左相邻块的帧内预测模式和所述上相邻块的帧内预测模式是相同的角度模式,并且其中,ang表示所述左相邻块的所述帧内预测模式或所述上相邻块的所述帧内预测模式。换句话说,ang是一个值或索引,表示所述左相邻块的所述帧内预测模式或所述上相邻块的所述帧内预测模式。ang的范围可以为{2

66}。
51.在本实施例的一种实现方式中,mpm单元还可以用于检查所述左相邻块的所述帧内预测模式与所述上相邻块的所述帧内预测模式是否为相同的角度模式。
52.当所述第一条件和第二条件满足时,所述mpm列表可以包括所述至少5个帧内预测模式条目,其中,所述第二条件包括所述当前块使用帧内子划分(intra sub partition,isp)模式进行译码。
53.此外,提供了一种用于图像编码器和/或图像解码器的设备,包括:
54.预测模式单元,用于获取所述当前块的左相邻块的帧内预测模式,以及用于获取所述当前块的上相邻块的帧内预测模式;
55.最可能模式(most probable mode,mpm)单元,用于当至少第一条件满足时,(根据来自所述预测模式单元的输入)构建所述当前块的帧内预测模式列表,所述mpm列表包括如下至少5个帧内预测模式条目:
56.{ang,2 ((ang 61)%64),2 ((ang

1)%64),2 ((ang 60)%64),2 ((ang)%64)},其中,所述第一条件包括所述左相邻块的所述帧内预测模式和所述上相邻块的所述帧内预测模式中仅有一种为角度模式,其中,ang表示所述角度模式。换句话说,ang是一个值或索引,表示角度模式。ang的范围可以为{2

66}。
57.在替代实施例的一种实现方式中,所述mpm单元还可以用于检查所述左相邻块的所述帧内预测模式和所述上相邻块的所述帧内预测模式中是否仅有一个为角度模式。
58.同样,当所述第一条件和第二条件满足时,所述mpm列表可以包括所述至少5个帧内预测模式条目,其中,所述第二条件包括所述当前块使用isp模式进行译码。
59.此外,提供了一种用于图像编码器和/或图像解码器的设备,包括:
60.预测模式单元,用于获取所述当前块的左相邻块的帧内预测模式,以及用于获取所述当前块的上相邻块的帧内预测模式;
61.最可能模式(most probable mode,mpm)单元,用于当至少第一条件满足时,(根据来自所述预测模式单元的输入)构建所述当前块的帧内预测模式列表,
62.其中,所述第一条件包括所述左相邻块的所述帧内预测模式和所述上相邻块的所述帧内预测模式均为角度模式,所述mpm列表包括如下至少5个帧内预测模式条目:
63.(a)当maxab

minab等于1时,{above_mode,left_mode,2 ((minab 61)%64),2 ((maxab

1)%64),2 ((minab 60)%64)};或
64.(b)当maxab

minab等于2时,{above_mode,left_mode,2 ((minab

1)%64),2 ((minab 61)%64),2 ((maxab

1)%64)};或
65.(c)当maxab

minab大于61时,{above_mode,left_mode,2 ((minab

1)%64),2 ((maxab 61)%64),2 (minab%64)};或
66.(d)其它情况下,{above_mode,left_mode,2 ((minab 61)%64),2 ((minab

1)%64),2 ((maxab 61)%64)};
67.其中,above_mode表示所述上相邻块的所述帧内预测模式,left_mode表示所述左相邻块的所述帧内预测模式,minab表示所述above_mode与所述left_mode之间的最小帧内预测模式,maxab表示所述above_mode与所述left_mode之间的最大帧内预测模式。
68.在替代实施例的一种实现方式中,所述mpm单元还可以用于检查所述左相邻块的所述帧内预测模式和所述上相邻块的所述帧内预测模式是否均为角度模式。
69.根据上述实施例中的一个的设备还可以包括编码单元,用于根据生成的mpm列表对所述当前块的帧内预测模式进行编码。
70.此外,根据上述实施例中的一个的设备还可以包括确定单元,用于确定所述当前块的所述帧内预测模式,以及当所述当前块的所述确定的帧内预测模式列在所述mpm列表中时,通过所述mpm列表的对应的索引对所述当前块的所述确定的帧内预测模式进行译码。
71.根据一个实施例,所述最可能模式单元用于生成表示所述planar模式的第六列表条目。
72.根据一个实施例,所述设备还包括平面确定单元,用于确定所述当前块的所述帧
内预测模式是否为所述planar模式;以及指示单元,用于在确定所述当前块的所述帧内预测模式不是planar模式时,通过标志指示所述当前块的所述帧内预测模式不是planar模式。
73.所述生成的mpm列表可以包括所述至少5个条目,并且根据上述实施例中的一个的设备还可以包括多参考行编码单元,用于使用所述mpm列表进行多参考行编码。
74.在上述所有实施例中,如果不存在帧内预测的上相邻块,则所述预测模式单元可以确定所述上相邻块的所述帧内预测模式为planar,并且如果不存在帧内预测的左相邻块,则所述预测模式单元确定所述左相邻块的所述帧内预测模式为planar。
75.此外,还考虑了所述左相邻块的所述帧内预测模式和所述上相邻块的所述帧内预测模式均不为角度模式的情况。因此,提供了一种用于图像编码器和/或图像解码器的设备(1100),包括:
76.预测模式单元(1101),用于获取所述当前块的左相邻块的帧内预测模式,以及用于获取所述当前块的上相邻块的帧内预测模式;
77.最可能模式(most probable mode,mpm)单元(1102),用于当至少第一条件满足时,构建所述当前块的帧内预测模式的最可能模式列表,所述mpm列表包括至少5个帧内预测模式条目,其中,所述至少5个条目中的4个由ver_idx、hor_idx、ver_idx

4和ver_id 4给出,其中,所述第一条件包括所述左相邻块的所述帧内预测模式和所述上相邻块的所述帧内预测模式均不为角度模式,其中,ver_idx表示垂直帧内预测模式的索引,hor_idx表示水平帧内预测模式的索引。
78.通常,在本发明方法的所有上述实施例中,以下内容成立:所述左相邻块的左上角位于(xcb

1,ycb cbheight

1),所述上相邻块的左上角位于(xcb cbwidth

1,ycb

1),其中,xcb、ycb、cbheight和cbwidth分别表示所述当前块的所述左上角在宽度方向上的位置、所述当前块的所述左上角在高度方向上的位置、所述当前块的高度和所述当前块的宽度。
79.在上述所有实施例中,
80.x%y取模运算,x除以y得到的余数,仅针对x>=0且y>0的整数x和y定义。
81.上述所有实施例通过在mpm列表构建中包括与当前预测块更相关的模式来改进帧内模式译码。
82.特别地,当左块的帧内模式和上块的帧内模式中的一个为角度模式或两者均为角度模式但相同时,通过包括角度模式并在mpm列表中扩展其相邻角度模式来构建mpm列表。
83.当左块的帧内模式和上块的帧内模式是角度模式且不相同时,根据左块的帧内模式和上块的帧内模式的差异构建mpm列表。
84.共区分四类,并且通过添加左块和上块的帧内模式的相邻角度模式推导mpm列表。
85.附图及以下说明中将详细描述一个或多个实施例。其它特征、目标和优点在说明书、附图以及权利要求中显而易见。
附图说明
86.下面结合附图对本发明实施例进行详细描述。
87.图1a为用于实现本发明实施例的视频译码系统的示例的框图。
88.图1b为用于实现本发明实施例的视频译码系统的另一个示例的框图。
89.图2为用于实现本发明实施例的视频编码器的示例的框图。
90.图3为用于实现本发明实施例的视频解码器的示例性结构的框图。
91.图4为编码装置或解码装置的一个示例的框图。
92.图5为编码装置或解码装置的另一个示例的框图。
93.图6示出了多参考行译码工具的操作。
94.图7示出了帧内子划分译码的示例。
95.图8示出了帧内子划分译码的示例。
96.图9示出了当前块的帧内预测译码所依赖的相邻块的位置。
97.图10示出了根据本发明的解码设备或编码设备实现的对当前块进行预测译码的方法的实施例。
98.图11示出了根据本发明的用于图像编码器和/或图像解码器中的设备的实施例。
99.图12为实现内容分发服务的内容供应系统3100的示例性结构的框图。
100.图13为终端设备的一个示例的结构的框图。
101.下文中,除非另外明确说明,否则相同的附图标记指代相同或至少功能等同的特征。
具体实施方式
102.在以下描述中,参考构成本发明的一部分的附图,这些附图通过说明的方式示出本发明的实施例的特定方面或可以使用本发明的实施例的具体方面。应理解,本发明的实施例可以用于其它方面,并且包括在附图中未描绘的结构上或逻辑上的变化。因此,以下详细描述不作为限制意义,并且本发明的范围由所附权利要求限定。
103.例如,应理解,参考所描述的方法公开的内容对于用于执行该方法的对应的设备或系统也可以成立,反之亦然。例如,如果描述了一个或多个特定的方法步骤,则对应的设备可以包括一个或多个单元,例如用于执行所描述的一个或多个方法步骤的功能单元(例如,执行一个或多个步骤的一个单元;或者多个单元,每个单元执行多个步骤中的一个或多个),即使一个或多个单元在附图中未明确描述或示出时也是如此。此外,例如,如果根据一个或多个单元(例如功能单元)来描述特定装置,则对应的方法可以包括用于执行一个或多个单元的功能的一个步骤(例如执行一个或多个单元的功能的一个步骤,或多个步骤,每个步骤执行多个单元中的一个或多个单元的功能),即使一个或多个步骤在附图中未明确描述或示出时也是如此。此外,应理解,除非特别指出,否则本文描述的各种示例性实施例和/或方面的特征可以彼此组合。
104.视频译码通常是指对构成视频或视频序列的图像序列进行处理。在视频译码领域中,术语“帧(frame)”可以代替术语“图像(picture或image)”。视频译码(或通常称为译码)包括视频编码和视频解码两部分。视频编码在源端执行,并且通常包括处理(例如,通过压缩)原始视频图像,以减少表示视频图像所需的数据量(以获得更高效的存储和/或传输)。视频解码在目的端执行,并且通常包括相对于编码器的逆处理以重建视频图像。实施例涉及的视频图像(或通常称为图像)的“译码”应理解为视频图像或各自视频序列的“编码”或“解码”。编码部分和解码部分的组合也称为编解码器(编码和解码,codec)。
105.在无损视频译码的情况下,可以对原始视频图像进行重建,即,重建的视频图像与
原始视频图像具有相同的质量(假设在存储或传输期间没有传输损失或其它数据损失)。在有损视频译码的情况下,通过量化等方式进行进一步压缩,以减少表示视频图像所需的数据量,在解码器侧无法完全重建视频图像,即,重建的视频图像的质量比原始视频图像的质量低或差。
106.若干视频译码标准属于“有损混合视频编解码”组(即,将样本域中的空间和时间预测与2d变换译码相结合,以在变换域中进行量化)。视频序列的每个图像通常分割为一组不重叠的块,并且通常在块级别上进行译码。换句话说,在编码器侧,通常在块(视频块)级别上对视频进行处理(即,编码),例如,通过使用空间(帧内图像)预测和/或时间(帧间图像)预测来生成预测块,从当前块(当前处理/待处理块)中减去预测块以获得残差块,变换残差块并在变换域中量化残差块以减少待发送(压缩)的数据量,而在解码器侧,相对于编码器的逆处理用于编码的或压缩的块,以重建当前块用于表示。此外,编码器按照解码器处理循环来处理,使得两者生成相同的预测(例如,帧内和帧间预测)和/或重建,用于进行处理,即,对后续块进行译码。
107.在以下视频译码系统10的实施例中,视频编码器20和视频解码器30根据图1至图3进行描述。
108.图1a为示例性译码系统10的示意性框图,例如可以使用本技术的技术的视频译码系统10(或简称为译码系统10)。视频译码系统10的视频编码器20(或简称为编码器20)和视频解码器30(或简称为解码器30)表示可以用于根据本技术中描述的各种示例执行技术的设备的示例。
109.如图1a所示,译码系统10包括源设备12,源设备12用于向目的地设备14等提供编码图像数据21,以对编码数据13进行解码。
110.源设备12包括编码器20,并且可以另外(即可选地)包括图像源16、预处理器(预处理单元)18(例如图像预处理器18)和通信接口或通信单元22。
111.图像源16可以包括或可以是:任何类型的图像捕获设备,例如用于捕获真实世界图像的摄像机;和/或任何类型的图像生成设备,例如用于生成计算机动画图像的计算机图形处理器;或用于获取和/或提供真实世界图像、计算机动画图像(例如屏幕内容、虚拟现实(virtual reality,vr)图像),和/或其任何组合(例如增强现实(augmented reality,ar)图像)的任何类型的设备。图像源可以为存储上述图像中的任何图像的任何类型的存储器或存储装置。
112.为了与预处理单元18和由预处理单元18执行的处理进行区分,图像或图像数据17也可以称为原始图像或原始图像数据17。
113.预处理器18用于接收(原始)图像数据17,并对图像数据17进行预处理,以获得预处理图像19或预处理图像数据19。预处理器18执行的预处理可以包括修正(trimming)、颜色格式转换(例如从rgb到ycbcr)、颜色校正或去噪等。可以理解的是,预处理单元18可以是可选的组件。
114.视频编码器20用于接收预处理的图像数据19并提供编码图像数据21(例如,下文根据图2进一步详细描述)。
115.源设备12中的通信接口22可以用于:接收编码图像数据21并通过通信信道13向目的地设备14等另一设备或任何其它设备发送编码图像数据21(或任何其它处理后的版本),
以用于存储或直接重建。
116.目的地设备14包括解码器30(例如视频解码器30),并且可以另外(即可选地)包括通信接口或通信单元28、后处理单元32(或后处理单元32)和显示设备34。
117.目的地设备14的通信接口28用于例如直接从源设备12,或从任何其它源(例如存储设备,例如编码图像数据存储设备)接收编码图像数据21或(或任何其它处理后的版本),并将编码图像数据21提供给解码器30。
118.通信接口22和通信接口28可以用于通过源设备12与目的地设备14之间的直接通信链路(例如直接有线或无线连接),或者通过任何类型的网络(例如有线网络、无线网络、有线网络和无线网络的任何组合、任何类型的私网和公网、任何类型的私网和公网的组合),发送或接收编码图像数据21或编码数据13。
119.例如,通信接口22可以用于将编码图像数据21封装为报文等合适的格式,和/或使用任何类型的传输编码或处理来处理编码图像数据,以便在通信链路或通信网络上进行传输。
120.通信接口28与通信接口22对应,例如,可以用于接收所发送数据,并使用任何类型的对应传输解码或处理和/或解封装过程对传输数据进行处理,以获得编码图像数据21。
121.通信接口22和通信接口28均可配置为如图1a中从源设备12指向目的地设备14的通信信道13的箭头所指示的单向通信接口,或配置为双向通信接口,并且可用于发送和接收消息,建立连接,确认并交换与通信链路和/或数据传输(例如编码图像数据传输)相关的任何其它信息等。
122.解码器30用于接收编码图像数据21并提供解码图像数据31或解码图像31(例如,下文根据图3或图5进一步详细描述)。
123.目的地设备14的后处理器32用于对解码图像数据31(也称为重建图像数据),例如解码图像31,进行后处理,以获得后处理图像数据33,例如后处理图像33。由后处理单元32执行的后处理可以包括颜色格式转换(例如从ycbcr到rgb)、颜色校正、修剪或重新采样或任何其它处理,以例如准备解码图像数据31,用于通过显示设备34等进行显示。
124.目的地设备14的显示设备34用于接收经后处理的图像数据33,以例如向用户或观看者显示图像。显示设备34可以是或包括用于呈现重建图像的任何类型的显示器,例如集成的或外部的显示器或监控器。例如,显示器可以包括液晶显示器(liquid crystal display,lcd)、有机发光二极管(organic light emitting diode,oled)显示器、等离子显示器、投影仪、微led显示器,硅上液晶(liquid crystal on silicon,lcos)、数字光处理器(digital light processor,dlp)或任何类型的其它显示器。
125.尽管图1a将源设备12和目的地设备14描绘为的设备,但是设备的实施例也可以包括这两种设备或这两种设备的功能,即包括源设备12或对应的功能与目的地设备14或对应的功能。在此类实施例中,源设备12或对应的功能与目的地设备14或对应的功能可以通过相同的硬件和/或软件、通过单独的硬件和/或软件或其任何组合来实现。
126.根据以上描述,对于本领域技术人员来说显而易见的是,图1a中所示的源设备12和/或目的地设备14的不同单元或功能的存在和(精确)功能划分可以根据实际设备和应用而变化。
127.编码器20(例如视频编码器20)或解码器30(例如视频解码器30)或两者都可通过
如图1b所示的处理电路如一个或多个微处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application

specific integrated circuit,asic)、现场可编程门阵列(field

programmable gate array,fpga)、离散逻辑、硬件、视频译码专用处理器或其任何组合来实现。编码器20可以通过处理电路46实现,以实现结合图2的编码器20和/或本文描述的任何其它编码器系统或子系统所讨论的各种模块。解码器30可以通过处理电路46实现,以实现结合图3的解码器30所讨论的各种模块和/或本文所描述的任何其它解码器系统或子系统。处理电路可以用于执行本文所描述的各种操作。如图5所示,如果这些技术部分地在软件中实现,则设备可以将软件指令存储在合适的非瞬时性计算机可读存储介质中,并且可以通过一个或多个处理器在硬件中执行这些指令,以执行本发明的技术。视频编码器20和视频解码器30中的任何一个可以作为组合编解码器(encoder/decoder,codec)的一部分集成在单个设备中,如图1b所示。
128.源设备12和目的地设备14可以包括多种设备中的任一种,包括任何类型的手持设备或固定设备,例如,笔记本电脑或膝上型电脑、手机、智能手机、平板或平板电脑、摄像机、台式计算机、机顶盒、电视机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备(如内容业务服务器或内容分发服务器)、广播接收器设备、广播发送器设备等,并且可以使用或不使用任何类型的操作系统。在一些情况下,源设备12和目的地设备14可以用于无线通信。因此,源设备12和目的地设备14可以是无线通信设备。
129.在一些情况下,图1a所示的视频译码系统10仅是示例,本技术的技术可以应用于视频译码设置(例如,视频编码或视频解码),不一定包括编码设备与解码设备之间的任何数据通信。在其它示例中,数据可以从本地存储器检索、通过网络流式传输等。视频编码设备可以对数据进行编码并将数据存储到存储器,和/或视频解码设备可以从存储器检索和解码数据。在一些示例中,编码和解码由不彼此通信但简单地将数据编码到存储器和/或从存储器检索和解码数据的设备执行。
130.为便于描述,例如,参考由itu

t视频译码专家组(video coding experts group,vceg)和iso/iec运动图像专家组(motion picture experts group,mpeg)的视频译码联合工作组(joint collaboration team on video coding,jct

vc)开发的高效视频译码(high

efficiency video coding,hevc)、通用视频译码(versatile video coding,vvc)参考软件、下一代视频译码标准描述本发明实施例。本领域普通技术人员应理解本发明的实施例不限于hevc或vvc。
131.编码器及编码方法
132.图2为用于实现本技术的技术的示例性视频编码器20的示意性框图。在图2的示例中,视频编码器20包括输入端201(或输入接口201)、残差计算单元204、变换处理单元206、量化单元208、反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器(decoded picture buffer,dpb)230、模式选择单元260、熵编码单元270和输出端272(或输出接口272)。模式选择单元260可以包括帧间预测单元244、帧内预测单元254和分割单元262。帧间预测单元244可以包括运动估计单元和运动补偿单元(图中未示出)。根据混合视频编解码器,图2所示的视频编码器20也可以称为混合视频编码器或视频编码器。
133.残差计算单元204、变换处理单元206、量化单元208和模式选择单元260组成编码器20的前向信号路径;反量化单元210、逆变换处理单元212、重建单元214、缓冲器216、环路
滤波器220、解码图像缓冲器(decoded picture buffer,dpb)230、帧间预测单元244和帧内预测单元254组成视频编码器20的反向信号路径,其中,视频编码器20的反向信号路径对应于解码器(参见图3的解码器30)的信号路径。反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器230、帧间预测单元244和帧内预测单元254还组成视频编码器20的“内置解码器”。
134.图像和图像分割(图像和块)
135.编码器20可以用于通过输入端201等接收图像17(或图像数据17),例如,形成视频或视频序列的图像序列中的图像。接收到的图像或图像数据还可以是经预处理图像19(或预处理图像数据19)。为简单起见,以下描述中称为图像17。图像块17还可以称为当前图像或待译码图像(特别是在视频译码中,将当前图像与其它图像区分开来,其它图像例如是同一视频序列(即,也包括当前图像的视频序列)中之前编码和/或解码的图像)。
136.(数字)图像是或可以看作具有强度值的二维样本阵列或矩阵。阵列中的样本也可以称为像素(pixel/pel)(图像元素的简称)。阵列或图像的水平和垂直方向(或轴线)上的样本的数量定义图像的大小和/或分辨率。通常使用三个颜色分量来表示颜色,即,可以通过三个样本阵列来表示图像或图像可以包括三个样本阵列。在rbg格式或色彩空间中,图像包括对应的红、绿、蓝样本阵列。但是,在视频译码中,每个像素通常以亮度和色度格式或颜色空间表示,例如ycbcr,其包括y表示的亮度分量(有时也用l代替)以及cb和cr表示的两个色度分量。亮度分量y表示亮度或灰度强度(例如在灰度级图像中),而两个色度分量cb和cr表示色度或颜色信息分量。对应地,ycbcr格式的图像包括亮度样本值的亮度样本阵列(y)和色度值的两个色度样本阵列(cb和cr)。rgb格式的图像可以转换或变换为ycbcr格式,反之亦然,该过程也称为颜色变换或转换。如果图像是单色的,则该图像可以只包括亮度样本阵列。相应地,图像可以为例如单色格式的亮度样本阵列或4:2:0、4:2:2和4:4:4彩色格式的亮度样本阵列和两个对应的色度样本阵列。
137.在视频编码器20的实施例中,视频编码器20可以包括图像分割单元(图2中未示出),用于将图像17分割为多个(通常是不重叠的)图像块203。这些块也可以称为根块或宏块(h.264/avc标准)或称为编码树块(coding tree block,ctb)或编码树单元(coding tree unit,ctu)(h.265/hevc和vvc标准)。图像分割单元可以用于对视频序列中的所有图像和定义块大小的对应的栅格使用相同的块大小,或者改变图像或子集或图像组之间的块大小,并将每个图像分割为对应的块。
138.在其它实施例中,视频编码器可以用于直接接收图像17的块203,例如,组成图像17的一个、若干个或所有块。图像块203也可以称为当前图像块或待译码图像块。
139.尽管图像块203的尺寸小于图像17,但是与图像17一样,块203也是或也可以被认为是具有强度值(样本值)的样本的二维阵列或矩阵。换句话说,块203例如可以包括一个样本阵列(例如,在单色图像17的情况下,亮度阵列)、三个样本阵列(例如,在彩色图像17的情况下,一个亮度阵列和两个色度阵列)或任何其它数量和/或类型的阵列,这取决于应用的颜色格式。块203在水平和垂直方向(或轴线)上的样本的数量定义了块203的大小。相应地,某图像块可以为m
×
n(m列
×
n行)个样本阵列,或m
×
n个变换系数阵列等。
140.在图2所示的视频编码器20的实施例中,视频编码器20可以用于对图像17逐块地进行编码,例如对每个块203执行编码和预测。
141.在图2所示的视频编码器20的实施例中,视频编码器20还可以用于采用条带(slice)(也称为视频条带)对图像进行分割和/或编码,其中,图像可以采用一个或多个条带(通常是不重叠的条带)进行分割或编码,每个条带可以包括一个或多个块(如ctu)。
142.在图2所示的视频编码器20的实施例中,视频编码器20还可以用于使用分块组(也称为视频分块组)和/或分块(也称为视频分块)对图像进行分割和/或编码,其中,可以使用一个或多个分块组(通常是不重叠的)对图像进行编码或可以将图像分割为一个或多个分块组,并且每个分块组可以包括一个或多个块(例如ctu)或一个或多个分块,其中,每个分块可以是矩形并且可以包括一个或多个块(例如ctu),例如全部或部分块。
143.残差计算
144.残差计算单元204可以用于根据图像块203和预测块265(后面会详细描述预测块265)计算残差块205(也称为残差205),例如,逐样本(逐像素)从图像块203的样本值中减去预测块265的样本值,以获得样本域中的残差块205。
145.变换
146.变换处理单元206可以用于对残差块205的样本值进行变换,例如离散余弦变换(discrete cosine transform,dct)或离散正弦变换(discrete sine transform,dst),以获得变换域中的变换系数207。变换系数207也可以称为变换残差系数,并且表示变换域中的残差块205。
147.变换处理单元206可以用于应用dct/dst的整数近似,例如针对h.265/hevc指定的变换。与正交dct变换相比,此类整数近似通常通过某个因子进行缩放。使用附加的缩放因子作为变换过程的一部分,以维持经过前向变换和反向变换处理的残差块的范数。通常根据某些限制来选择缩放因子,例如缩放因子为移位运算的2的幂、变换系数的位深度、准确度和实现成本之间的权衡等。例如,通过逆变换处理单元212指定用于逆变换的特定缩放因子(以及在视频解码器30中通过逆变换处理单元312等为相应的逆变换指定缩放因子),在编码器20中可以相应地通过变换处理单元206等指定用于正向变换的对应的缩放因子。
148.在视频编码器20的实施例中,例如,视频编码器20(对应地,变换处理单元206)可以用于直接输出或通过熵编码单元270进行编码或压缩后输出一种或多种变换类型的变换参数,使得视频解码器30可以接收并使用变换参数进行解码。
149.量化
150.量化单元208可以用于对变换系数207进行量化(例如进行标量量化或矢量量化),以获得量化系数209。量化系数209也可以称为量化变换系数209或量化残差系数209。
151.量化过程可以减小与部分或全部变换系数207相关的位深。例如,可以在量化期间将n位变换系数向下舍入到m位变换系数,其中,n大于m,可以通过调整量化参数(quantization parameter,qp)修改量化程度。例如,对于标量量化,可以进行不同的缩放来实现更精细或更粗略的量化。量化步长大小越小,量化越精细;量化步长大小越大,量化越粗略。合适的量化步长大小可以通过量化参数(quantization parameter,qp)来指示。例如,量化参数可以是适用于预定义的一组合适的量化步长大小的索引。例如,小的量化参数可以对应精细的量化(小量化步长大小),而大的量化参数可以对应粗略的量化(大量化步长大小),反之亦然。量化操作可以包括除以量化步长,而反量化单元210等执行的相应解量化和/或反解量化操作可以包括乘以量化步长。根据一些标准(例如hevc),实施例中可以使
memory,dram)(包括同步dram(synchronous dram,sdram))、磁阻ram(magneto resistive ram,mram)、电阻ram(resistive ram,rram)或其它类型的存储器设备。解码图像缓冲器(decoded picture buffer,dpb)230可用于存储一个或多个滤波块221。解码图像缓冲器230还可以用于存储相同的当前图像或不同图像(例如之前重建的图像)的其它之前滤波的块(例如之前重建的和滤波的块221),并且可以提供完整的之前重建的(即解码的)图像(以及对应的参考块和样本)和/或部分重建的当前图像(以及对应的参考块和样本),以例如用于帧间预测。解码图像缓冲器230还可以用于存储一个或多个未滤波的重建块215,或通常存储未滤波的重建样本,例如,未经环路滤波单元220滤波的重建块215,或未进行任何其它处理的重建块或重建样本。
164.模式选择(分割和预测)
165.模式选择单元260包括分割单元262、帧间预测单元244和帧内预测单元254,并且用于从解码图像缓冲器230或其它缓冲器(例如,列缓冲器,图中未示出)接收或获得原始图像数据如原始块203(当前图像17的当前块203),以及重建图像数据如同一(当前)图像和/或一个或多个之前解码的图像的滤波和/或未经滤波的重建样本或重建块。重建图像数据用作帧间预测或帧内预测等预测所需的参考图像数据,以获得预测块265或预测值265。
166.模式选择单元260可以用于为当前块预测模式(包括不分割模式)和预测模式(例如帧内或帧间预测模式)确定或选择分割模式,并生成对应的预测块265,该预测块用于残差块205的计算以及重建块215的重建。
167.在模式选择单元260的实施例中,模式选择单元260可以用于选择分割和预测模式(例如,从模式选择单元260支持或可用的模式中选择)。所述分割和预测模式提供最佳匹配,即最小残差(最小残差更有利于压缩,以便传输或存储),或提供最小指示开销(最小的指示开销更有利于压缩,以便传输或存储),或者同时考虑以上两者或在以上两者中取得平衡。模式选择单元260可用于根据率失真优化(rate distortion optimization,rdo)确定分割和预测模式,即选择提供最小率失真的预测模式。本文中“最佳”、“最小”、“最优”等术语不一定指总体上“最佳”、“最小”、“最优”等,也可以指满足终止或选择标准的情况,例如,某个值超过或低于阈值或其它限制,可能导致“次优选择”,但会降低复杂度和处理时间。
168.换句话说,分割单元262可以用于例如,通过迭代地使用四叉树分割(quad

tree

partitioning,qt)、二叉树分割(binary partitioning,bt)或三叉树分割(triple

tree

partitioning,tt)或其任何组合,将块203分割为较小的块部分或子块(它们再次形成块),以及用于例如对块部分或子块中的每一个执行预测,其中,模式选择包括选择分割的块203的树结构以及应用于每个块部分或子块的预测模式。
169.下文详细描述由视频编码器20执行的分割(例如,由分割单元260执行)处理和预测处理(例如,由帧间预测单元244和帧内预测单元254执行)。
170.分割模块
171.分割单元262可以将当前块203分割(或划分)为较小的部分,例如较小的正方形或矩形块。这些较小的块(也可以称为子块)可以进一步分割为更小的部分。这也称为树分割或分层树分割,其中,在根树层级0(层级0、深度0)等的根块可以递归地分割为两个或多个下一较低树层级的块,例如树层级1(层级1、深度1)的节点,这些块又可以分割为两个或多个下一较低层级的块,例如树层级2(层级2、深度2)等,直到由于满足结束标准(例如达到最
大树深度或最小块大小)而结束分割。未进一步分割的块也称为树的叶块或叶节点。分割为两个部分的树称为二叉树(binary

tree,bt),分割为三个部分的树称为三叉树(ternary

tree,tt),分割为四个部分的树称为四叉树(quad

tree,qt))。
172.如上所述,本文中使用的术语“块”可以是图像的一部分,特别是正方形或矩形部分。例如,结合hevc和vvc,块可以是或对应于编码树单元(coding tree unit,ctu)、编码单元(coding unit,cu)、预测单元(prediction unit,pu)和变换单元(transform unit,tu)和/或对应于相应的块,例如,编码树块(coding tree block,ctb)、编码块(coding block,cb)、变换块(transform block,tb)或预测块(prediction block,pb)。
173.例如,编码树单元(coding tree unit,ctu)可以是或包括:亮度样本的ctb、具有三个样本阵列的图像的色度样本的两个对应的ctb、单色图像或使用三个单独的颜色平面和用于对样本进行译码的语法结构译码的图像的样本的ctb。相应地,编码树块(coding tree block,ctb)可以是n
×
n的样本块,其中,n可以设为某个值以将分量分割为ctb,这是一种分割。编码单元(coding unit,cu)可以是或包括:亮度样本的编码块、具有三个样本阵列的图像的色度样本的两个对应的编码块、单色图像或使用三个单独的颜色平面和用于对样本进行译码的语法结构译码的图像的样本的编码块。相应地,编码块(coding block,cb)可以是m
×
n的样本块,其中,m和n可以设为某些值以将ctb分割为编码块,这是一种分割。
174.在实施例中,例如,根据hevc,可以通过表示为译码树的四叉树结构将编码树单元(coding tree unit,ctu)划分为cu。在cu级别上决定是通过帧间(时间)预测还是通过帧内(空间)预测对图像区域进行译码。每个cu还可以根据pu划分类型划分为1个、2个或4个pu。在一个pu内,进行相同的预测过程,并且以pu为单位将相关信息发送到解码器。在通过进行预测过程而获得残差块后,根据pu划分类型,可以根据与用于cu的译码树类似的其它四叉树结构将cu分割为变换单元(transform unit,tu)。
175.在实施例中,例如,根据当前正在开发的最新视频译码标准(称为通用视频译码(versatile video coding,vvc),使用组合四叉树和二叉树(quad

tree and binary tree,qtbt)分割对编码块进行分割。在qtbt块结构中,cu可以具有正方形或矩形形状。例如,首先通过四叉树结构分割编码树单元(coding tree unit,ctu)。进一步通过二叉树或三叉树结构对四叉树叶节点进行分割。分割树叶节点称为编码单元(coding unit,cu),该段用于预测和变换处理,无需进一步分割。即,cu、pu和tu在qtbt编码块结构中具有相同的块大小。同时,三叉树分割等多重分割可以与qtbt块结构结合使用。
176.在一个示例中,视频编码器20的模式选择单元260可以用于执行本文分割技术的任何组合。
177.如上所述,视频编码器20用于从一组(例如,预定的)预测模式中确定或选择最佳或最优预测模式。该组预测模式可以包括例如帧内预测模式和/或帧间预测模式。
178.帧内预测
179.该组帧内预测模式可以包括35种不同的帧内预测模式,例如dc(或均值)模式和平面模式等非定向模式,或hevc中定义的定向模式等,或者可以包括67种不同的帧内预测模式,例如dc(或均值)模式和平面模式等非定向模式,或vvc中定义的定向模式等。
180.帧内预测单元254用于根据帧内预测模式集合中的帧内预测模式使用同一当前图像的相邻块的重建样本来生成帧内预测块265。
181.帧内预测单元254(或通常为模式选择单元260)还用于以语法元素266的形式向熵编码单元270输出帧内预测参数(或通常为指示块的选定帧内预测模式的信息),以将该帧内预测参数包括到编码图像数据21中,从而视频解码器30可以,例如,接收并使用该预测参数进行解码。
182.帧间预测
183.该组(或可能的)帧间预测模式取决于可用的参考图像(即,例如存储在dbp 230中的之前至少部分解码的图像)和其它帧间预测参数,例如是整个参考图像还是仅参考图像的一部分(例如,当前块的区域周围的搜索窗口区域)用于搜索最佳匹配的参考块,和/或例如是否应用像素插值,例如半像素和/或四分之一像素插值,或不应用像素插值。
184.除了上述预测模式之外,还可以应用跳过模式和/或直接模式。
185.帧间预测单元244可以包括运动估计(motion estimation,me)单元和运动补偿(motion compensation,mc)单元(两者均未在图2中示出)。运动估计单元可以用于接收或获取图像块203(当前图像17的当前图像块203)和解码图像231,或者至少一个或多个之前重建的块(例如一个或多个其它/不同的之前解码的图像231的重建块),以用于运动估计。例如,视频序列可以包括当前图像和之前解码的图像231,或者,换句话说,当前图像和之前解码的图像231可以是构成视频序列的图像序列的一部分或可以构成该序列。
186.例如,编码器20可以用于从多个其它图像的相同或不同图像的多个参考块中选择参考块并提供参考图像(或参考图像索引)和/或参考块的位置(x坐标、y坐标)与当前块的位置之间的偏移量(空间偏移),作为运动估计单元的帧间预测参数。这个偏移量也称为运动矢量(motion vector,mv)。
187.运动补偿单元用于获取(例如,接收)帧间预测参数,并根据或通过帧间预测参数进行帧间预测,以获得帧间预测块265。运动补偿单元所执行的运动补偿可以包括根据通过运动估计确定的运动/块矢量提取或生成预测块(可能执行插值以提高子像素精度)。插值滤波可以通过已知样本生成其它样本,从而潜在地增加可以用于译码图像块的候选预测块的数量。在接收到当前图像块的pu的运动矢量时,运动补偿单元可以定位运动矢量在一个参考图像列表中指向的预测块。
188.运动补偿单元还可以生成与块和视频条带相关的语法元素,该语法元素由视频解码器30用来解码视频条带的图像块。除了或作为条带和相应语法元素的替代,可以生成或使用分块组和/或分块以及相应语法元素。
189.熵译码
190.例如,熵编码单元270用于将熵编码算法或方案(例如,可变长度译码(variable length coding,vlc)方案、上下文自适应vlc方案(context adaptive vlc,calvc)、算术译码方案、二值化算法、上下文自适应二进制算术译码(context adaptive binary arithmetic coding,cabac)、基于语法的上下文自适应二进制算术译码(syntax

based context

adaptive binary arithmetic coding,sbac)、概率区间分割熵(probability interval partitioning entropy,pipe)译码或其它熵编码方法或技术)或旁路(无压缩)方案应用于量化系数209、帧间预测参数、帧内预测参数、环路滤波参数和/或其它语法元素,以获得可以通过输出单元272以编码码流21等形式输出的编码图像数据21,使得视频解码器30可以接收并使用这些参数进行解码。可以将编码码流21发送到视频解码器30,或者
将其存储在存储器汇总,以便随后由视频解码器30发送或检索。
191.视频编码器20的其它结构变化可以用于编码视频流。例如,对于某些块或帧,基于非变换的编码器20可以在没有变换处理单元206的情况下直接量化残差信号。在另一种实现方式中,编码器20可以将量化单元208和反量化单元210组合成单个单元。
192.解码器及解码方法
193.图3为用于实现本技术的技术的视频解码器30的示例。视频解码器30用于接收例如由编码器20编码的编码图像数据21(例如,编码码流21),以获得解码图像331。编码图像数据或码流包括用于对编码图像数据进行解码的信息,例如,表示编码视频条带的图像块的数据(和/或分块组或分块)以及相关的语法元素。
194.在图3的示例中,解码器30包括熵解码单元304、反量化单元310、逆变换处理单元312、重建单元314(例如求和器314)、环路滤波器320、解码图像缓冲器(decoded picture buffer,dbp)330、模式应用单元360、帧间预测单元344和帧内预测单元354。帧间预测单元344可以是或包括运动补偿单元。在一些示例中,视频解码器30可以执行与图2中关于视频编码器100描述的编码通道大体上互逆的解码通道。
195.如编码器20所述,反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器(decoded picture buffer,dpb)230、帧间预测单元344和帧内预测单元354还组成视频编码器20的“内置解码器”。因此,反量化单元310可以与反量化单元110具有相同的功能,逆变换处理单元312可以与逆变换处理单元212具有相同的功能,重建单元314可以与重建单元214具有相同的功能,环路滤波器320可以与环路滤波器220具有相同的功能,解码图像缓冲器330可以与解码图像缓冲器230具有相同的功能。因此,对视频编码器20的相应单元和功能的解释相应地适用于视频解码器30的相应单元和功能。
196.熵解码
197.熵解码单元304用于解析码流21(或通常称为编码图像数据21),并对编码图像数据21进行熵解码,以获得量化系数309和/或解码译码参数(图3中未示出)等,例如帧间预测参数(如参考图像索引和运动矢量)、帧内预测参数(如帧内预测模式或索引)、变换参数、量化参数、环路滤波参数和/或其它语法元素等中的任一者或全部。熵解码单元304可以用于进行对应于编码器20的熵编码单元270所描述的编码方案的解码算法或方案。熵解码单元304还可以用于向模式应用单元360提供帧间预测参数、帧内预测参数和/或其它语法元素,并向解码器30的其它单元提供其它参数。视频解码器30可以在视频条带级和/或视频块级接收语法元素。除了或作为条带和相应语法元素的替代,可以接收和/或使用分块组和/或分块以及相应语法元素。
198.反量化
199.反量化单元310可以用于从编码图像数据21(例如,通过熵解码单元304等解析和/或解码)接收量化参数(quantization parameter,qp)(或通常为与反量化相关的信息)和量化系数,并基于量化参数对解码量化系数309进行反量化,以获得解量化系数311,解量化系数311也可以称为变换系数311。反量化过程可以包括:使用视频编码器20确定的视频条带(或分块或分块组)中的每个视频块的量化参数,以确定应应用的量化程度以及反量化程度。
200.逆变换
201.逆变换处理单元312可以用于接收解量化系数311(也称为变换系数311),并对解量化系数311进行变换,以获得样本域中的重建残差块213。重建残差块213也可以称为变换块313。变换可以是逆变换,例如,逆dct、逆dst、逆整数变换或概念上类似的逆变换过程。逆变换处理单元312还可以用于从编码图像数据21接收变换参数或相应的信息(例如,通过解析和/或解码,例如,通过熵解码单元304),以确定要应用于解量化系数311的变换。
202.重建
203.重建单元314(例如,加法器或求和器314)可以用于将重建残差块313添加到预测块365,以获得样本域中的重建块315,例如,通过将重建残差块313的样本值添加到预测块365的样本值。
204.滤波
205.环路滤波单元320(在译码环路中或译码环路之后)用于对重建块315进行滤波,以获得滤波块321,以平滑像素的突变或提高视频质量。环路滤波单元320可以包括一个或多个环路滤波器,例如去块效应滤波器、采样自适应偏移(sample

adaptive offset,sao)滤波器或一个或多个其它滤波器,例如双边滤波器、自适应环路滤波器(adaptive loop filter,alf)、锐化滤波器、平滑滤波器、协作滤波器或其任和组合。尽管在图3中环路滤波单元320示出为环内滤波器,但在其它配置中,环路滤波单元320可以实现为后环路滤波器。
206.解码图像缓冲器
207.之后,将一个图像的解码视频块321存储在解码图像缓冲器330中。解码图像331作为参考图像存储在所述解码图像缓冲器330中,用于后续对其它图像进行运动补偿和/或后续相应输出以进行显示。
208.解码器30用于例如通过输出端312输出解码图像311,以呈现给用户或由用户观看。
209.预测
210.帧间预测单元344的功能可以与帧间预测单元244(特别是运动补偿单元)相同;帧内预测单元354的功能可以与帧间预测单元254相同,并根据从编码图像数据21接收到的分割和/或预测参数或相应信息(例如,通过熵解码单元304等解析和/或解码)决定划分或分割模式并执行预测。模式应用单元360可以用于根据重建图像、重建块或相应的样本(已滤波的或未滤波的)按块进行预测(帧内预测或帧间预测),以获得预测块365。
211.当视频条带译码为帧内译码(i)条带时,模式应用单元360的帧内预测单元354用于:根据所指示的帧内预测模式和来自当前图像的之前解码的块的数据来为当前视频条带的图像块生成预测块365。当视频图像译码为帧间译码(即,b或p)条带时,模式应用单元360的帧间预测单元344(例如,运动补偿单元)用于根据从熵解码单元304接收的运动矢量和其它语法元素生成当前视频条带的视频块的预测块365。对于帧间预测,预测块可以从一个参考图像列表中的一个参考图像中生成。视频解码器30可以根据dpb 330中存储的参考图像通过默认构建技术构建参考帧列表,列表0和列表1。除了应用于使用条带(例如视频条带)的实施例外,相同或相似的过程可以应用于使用分块组(例如视频分块组)和/或分块(例如视频分块)的实施例,例如可以使用i、p或b分块组和/或分块对视频进行译码。
212.模式应用单元360用于通过解析运动矢量或相关信息和其它语法元素确定当前视频条带的视频块的预测信息,并使用预测信息来生成正在解码的当前视频块的预测块。例
如,模式应用单元360使用接收到的一些语法元素来确定用于对视频条带的视频块进行译码的预测模式(例如,帧内或帧间预测)、帧间预测条带类型(例如,b条带,p条带或gpb条带)、条带的参考图像列表中的一个或多个的构建信息、条带的每个帧间编码视频块的运动矢量、条带的每个帧间译码视频块的帧间预测状态,以及其它信息,以对当前视频条带中的视频块进行解码。除了应用于使用条带(例如视频条带)的实施例外,相同或相似的过程可以应用于使用分块组(例如视频分块组)和/或分块(例如视频分块)的实施例,例如可以使用i、p或b分块组和/或分块对视频进行译码。
213.在图3所示的视频解码器30的实施例中,视频解码器30可以用于采用条带(slice)(也称为视频条带)对图像进行分割和/或解码,其中,图像可以采用一个或多个条带(通常是不重叠的条带)进行分割或解码,每个条带可以包括一个或多个块(如ctu)。
214.在图3所示的视频解码器30的实施例中,视频解码器30可以用于使用分块组(也称为视频分块组)和/或分块(也称为视频分块)对图像进行分割和/或解码,其中,可以使用一个或多个分块组(通常是不重叠的)对图像进行解码或可以将图像分割为一个或多个分块组,并且每个分块组可以包括一个或多个块(例如ctu)或一个或多个分块,其中,每个分块可以是矩形并且可以包括一个或多个块(例如ctu),例如全部或部分块。
215.视频解码器30的其它变型可以用于解码编码图像数据21。例如,解码器30可以在没有环路滤波单元320的情况下生成输出视频流。例如,对于某些块或帧,基于非变换的解码器30可以在没有逆变换处理单元312的情况下直接量化残差信号。在另一种实现方式中,视频解码器30可以将反量化单元310和逆变换处理单元312组合成单个单元。
216.应理解,在编码器20和解码器30中,可以针对当前环节的处理结果进行进一步处理,然后输出到下一环节。例如,在插值滤波、运动矢量推导或环路滤波等之后,可以对插值滤波、运动矢量推导或环路滤波的处理结果进一步进行修正(clip)或移位(shift)等操作。
217.需要说明的是,可以对当前块的推导运动矢量(包括但不限于仿射模式下的控制点运动矢量、仿射、平面、atmvp模式下的子块运动矢量、时间运动矢量等)进行进一步操作。例如,根据运动矢量的表示位将该运动矢量的值限制在预定义范围。如果运动矢量的表示位为bitdepth,则运动矢量的取值范围为

2^(bitdepth

1)至2^(bitdepth

1)

1,其中,“^”符号表示幂次方。例如,如果bitdepth设置为16,则该取值范围为

32768至32767;如果bitdepth设置为18,则该取值范围为

131072至131071。例如,对推导的运动矢量(例如一个8
×
8块中的四个4
×
4子块的mv)的值进行限制,使得四个4
×
4子块mv的整数部分之间的最大差值不超过n个像素,例如不超过1个像素。这里提供了两种根据bitdepth限制运动矢量的方法。
218.方法一:通过流操作移除溢出msb(most significant bit,最高有效位)。
219.ux=(mvx 2
bitdepth
)%2
bitdepth
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
220.mvx=(ux>=2
bitdepth
–1)?(ux
–2bitdepth
):ux
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
221.uy=(mvy 2
bitdepth
)%2
bitdepth
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
222.mvy=(uy>=2
bitdepth
–1)?(uy
–2bitdepth
):uy
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
223.其中,mvx为图像块或子块的运动矢量的水平分量,mvy为图像块或子块的运动矢量的垂直分量,ux和uy表示中间值;
224.例如,如果mvx的值为

32769,则应用公式(1)和(2)后,所得到的值为32767。在计
算机系统中,十进制数以二的补码的形式存储。

32769的二的补码为1,0111,1111,1111,1111(17位),然后丢弃msb,因此所得到的二的补码为0111,1111,1111,1111(十进制数为32767),与公式(1)和(2)的输出相同。
225.ux=(mvpx mvdx 2
bitdepth
)%2
bitdepth
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
226.mvx=(ux>=2
bitdepth
–1)?(ux
–2bitdepth
):ux
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
227.uy=(mvpy mvdy 2
bitdepth
)%2
bitdepth
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(7)
228.mvy=(uy>=2
bitdepth
–1)?(uy
–2bitdepth
):uy
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8)
229.如公式(5)至(8)所示,在求mvp与mvd之和期间,可以应用这些运算。
230.方法二:通过修正(clipping)移除溢出msb。
231.vx=clip3(
–2bitdepth
–1,2
bitdepth
–1–
1,vx)
232.vy=clip3(
–2bitdepth
–1,2
bitdepth
–1–
1,vy)
233.其中,vx为图像块或子块的运动矢量的水平分量,vy为图像块或子块的运动矢量的垂直分量;x、y和z分别对应mv修正过程的三个输入值,函数clip3的定义如下:
[0234][0235]
图4为本发明的一个实施例提供的视频译码设备400的示意图。如本文所述,视频译码设备400适合于实现所公开的实施例。在一个实施例中,视频译码设备400可以是解码器(例如,图1a中的视频解码器30)或编码器(例如,图1a中的视频编码器20)。
[0236]
视频译码设备400包括:用于接收数据的入端口410(或输入端口410)和接收单元(rx)420;用于处理数据的处理器、逻辑单元或中央处理器(central processing unit,cpu)430;用于发送数据的发送器单元(tx)440和出端口450(或输出端口450);以及用于存储数据的存储器460。视频译码设备400还可以包括耦合到入端口410、接收器单元420、发送器单元440和出端口450的光电(optical

to

electrical,oe)组件和电光(electrical

to

optical,eo)组件,以用于光或电信号的出或入。
[0237]
处理器430通过硬件和软件实现。处理器430可以实现为一个或多个cpu芯片、核(例如,多核处理器)、fpga、asic和dsp。处理器430与入端口410、接收单元420、发送器单元440、出端口450和存储器460通信。处理器430包括译码模块470。译码模块470实现上述公开的实施例。例如,译码模块470实现、处理、准备或提供各种译码操作。因此,包括译码模块470大大提高了视频译码设备400的功能,并影响视频译码设备400到不同状态的转换。或者,译码模块470实现为存储在存储器460中并由处理器430执行的指令。
[0238]
存储器460可以包括一个或多个磁盘、磁带机和固态硬盘,并且可以用作溢出数据存储设备,以在选择此类程序用于执行时存储程序,以及存储在程序执行期间读取的指令和数据。例如,存储器460可以是易失性和/或非易失性的,并且可以是只读存储器(read

only memory,rom)、随机存取存储器(random access memory,ram)、三态内容寻址存储器(ternary content

addressable memory,tcam)和/或静态随机存取存储器(static random

access memory,sram)。
[0239]
图5为一个示例性实施例提供的装置500的简化框图,该装置500可以用作图1中的源设备12和目的地设备14中的一者或两者。
[0240]
装置500中的处理器502可以是中央处理器。或者,处理器502可以是能够操纵或处理现在存在或以后开发的信息的任何其它类型的设备或多个设备。尽管所公开的实现方式可以通过单个处理器(例如处理器502)实施,但是可以通过一个以上的处理器来提高速度和效率。
[0241]
装置500中的存储器504在一种实现方式中可以是只读存储器(read only memory,rom)设备或随机存取存储器(random access memory,ram)设备。可以使用任何其它合适类型的存储设备作为存储器504。存储器504可以包括由处理器502通过总线512访问的代码和数据506。存储器504还可以包括操作系统508和应用程序510,应用程序510包括使处理器502执行本文描述的方法的至少一个程序。例如,应用程序510可以包括应用程序1至n,其还包括执行本文所描述的方法的视频译码应用程序。
[0242]
装置500还可以包括一个或多个输出设备,例如显示器518。在一个示例中,显示器518可以是触摸敏感显示器,触摸敏感显示器将显示器与可操作以感测触摸输入的触摸敏感元件相结合。显示器518可以通过总线512耦合到处理器502。
[0243]
尽管在这里描述为单个总线,但装置500的总线512可以由多个总线组成。此外,辅助存储装置514可以直接耦合到装置500的其它组件,或者可以通过网络访问,并且可以包括单个集成单元(例如存储卡)或多个单元(例如多个存储卡)。因此,可以以多种配置实现装置500。
[0244]
关于帧内模式译码的背景
[0245]
在目前的vtm 4.0中,为帧内模式译码构建了6

mpm(most probable mode)列表。引入mpm列表以减少译码当前块的帧内预测模式所需的比特数。根据当前块的相邻块的帧内预测模式构建6

mpm列表。在当前块的帧内预测模式落入mpm列表中时,对索引而不是实际模式进行译码,这使用的比特数更少。在当前块的帧内预测模式不属于mpm列表中时,使用截断二值化对当前块的帧内预测模式进行译码。mpm列表为当前块的帧内模式提供了很好的预测。
[0246]
多参考行(mrl)的mpm列表。
[0247]
在vtm 4.0中,多参考行(multiple reference line,mrl)译码工具可以使用多个相邻行中的一行来预测当前块的样本。当mrl行索引值等于0时(即使用最接近的相邻参考行,如图6所示),使用包括平面和dc的常规6mpm列表。当mrl行索引的值不等于0时,使用不包括平面(即值0)和dc(即值1)的6

mpm列表。
[0248]
帧内子划分(isp)译码模式的mpm列表
[0249]
帧内子划分(intra sub

partition,isp)译码模式是vtm4.0(jvet

m0102)中新引入的一种工具。根据块大小维度,亮度帧内预测块在垂直或水平方向上划分为2或4个子部分,如表1所示。图7和图8示出了这两种可能性的示例。所有子部分满足至少有16个样本的条件。
[0250]
表1:取决于块大小的子部分的数量
[0251]
块大小子部分的数量4
×
4不划分4
×
8和8
×
42所有其它情况4
[0252]
当启用帧内子划分译码模式时,vtm 4.0中使用不包括dc模式的另一个mpm列表。当多参考行索引的值等于0时(即mrl不应用于当前帧内预测块),可以使用帧内子划分模式。所有子部分共享一个帧内预测模式,因此,对于帧内块,mpm列表只构建一次,且由所有子部分共享。
[0253]
mpm的构建取决于isp的划分模式。确定两种划分模式:水平和垂直。它们如图7所示,其中,水平划分/分割在顶部示出,垂直划分/分割在底部示出。
[0254]
下表总结了vtm 4.0中使用的3mpm列表的特点。
[0255]
表2:vtm 4.0在不同的情况下使用不同的6

mpm
[0256]
mrl配置isp配置mpm列表特点mrl!=0

6mpm,不包括平面模式和dc模式mrl==016mpm,不包括dc模式mrl==006mpm,包括平面模式和dc模式
[0257]
关于如何确定左邻和上邻的背景。
[0258]
vvc的帧内模式译码取决于其相邻块(即当前块的左块和上块)的帧内模式。它们的位置如图9所示。
[0259]
mpm索引的指示
[0260]
标志(即mpm标志)用于表示当前块的帧内模式是否在mpm列表中。当mpm标志为真(即值为1)时,可以使用mpm索引确定帧内预测模式。当mpm列表长度为6时,mpm索引使用截断一元码进行译码,如下表所示:当mpm标志不为真时,当前块的帧内模式不在mpm列表中,并且使用截断二进制码对模式进行译码。
[0261][0262][0263]
关于平面模式、dc模式、水平模式、垂直模式、角度模式的背景:帧内预测模式平面(值为0)和dc(值为1)。其它帧内预测模式称为角度预测模式。
[0264]
本文提供了用于生成mpm列表以提高译码效率的改进的技术。特别地,提供了以下用于生成mpm列表的方案。例如,这些方案可以在上文描述的编码器20(参见图2),解码器30(参见图3)和视频译码设备400(参见图4)中实现。
[0265]
mark 1:isp优化的mpm列表构建的替代方案
[0266]
根据本发明的一个实施例(非角度分支,h):
[0267]
·
步骤1:根据图9获得左相邻块的帧内预测模式和上相邻块的帧内预测模式。如
果相邻块的帧内预测模式不可用(例如,相邻块超出图像边界或相邻块进行帧间译码),则相邻块的帧内预测模式设置为平面。左相邻块的帧内预测模式表示为left_mode,上相邻块的帧内预测模式表示为above_mode。
[0268]
·
步骤2:确定相邻块的帧内预测模式是否为角度模式。
[0269]
·
步骤3:确定当前块是否使用isp模式进行译码。
[0270]
·
步骤4:如果当前块使用isp模式,则确定当前块的划分模式。
[0271]
·
步骤5:如果以下所有条件(项目符号项)均被评估为真,则
[0272]
·
left_mode不是角度模式,above_mode不是角度模式。
[0273]
·
当前块使用isp模式进行译码。
[0274]
·
当前块的划分模式为水平划分。
[0275]
然后,构建帧内预测模式列表,该列表包括n个帧内预测模式条目(例如,n等于6,其中,第1条目对应于mpm[0],第2条目对应于mpm[1],以此类推):
[0276]
mpm[0]:平面
[0277]
mpm[1]:dc
[0278]
mpm[2]:水平
[0279]
mpm[3]:25
[0280]
mpm[4]:10
[0281]
mpm[5]:65
[0282]
根据本发明的一个实施例(非角度分支,v):
[0283]
·
步骤1:根据图9获得左相邻块的帧内预测模式和上相邻块的帧内预测模式。如果相邻块的帧内预测模式不可用(例如,相邻块超出图像边界或相邻块进行帧间译码),则相邻块的帧内预测模式设置为平面。左相邻块的帧内预测模式表示为left_mode,上相邻块的帧内预测模式表示为above_mode。
[0284]
·
步骤2:确定相邻块的帧内预测模式是否为角度模式。
[0285]
·
步骤3:确定当前块是否使用isp模式进行译码。
[0286]
·
步骤4:如果当前块使用isp模式,则确定当前块的划分模式。
[0287]
·
步骤5:如果以下所有条件(项目符号项)均被评估为真,则
[0288]
·
left_mode不是角度模式,above_mode不是角度模式
[0289]
·
当前块使用isp模式进行译码
[0290]
·
当前块的划分模式为垂直划分。
[0291]
然后,构建帧内预测模式列表,该列表包括n个帧内预测模式条目(例如,n等于6,其中,第1条目对应于mpm[0],第2条目对应于mpm[1],以此类推):
[0292]
mpm[0]:平面
[0293]
mpm[1]:dc
[0294]
mpm[2]:垂直
[0295]
mpm[3]:43
[0296]
mpm[4]:60
[0297]
mpm[5]:3
[0298]
根据本发明的一个实施例(一个角度分支,一个为角度,另一个为非角度):
[0299]
·
步骤1:根据图9获得左相邻块的帧内预测模式和上相邻块的帧内预测模式。如果相邻块的帧内预测模式不可用(例如,相邻块超出图像边界或相邻块进行帧间译码),则相邻块的帧内预测模式设置为平面。左相邻块的帧内预测模式表示为left_mode,上相邻块的帧内预测模式表示为above_mode。
[0300]
·
步骤2:确定相邻块的帧内预测模式是否为角度模式。
[0301]
·
步骤3:确定当前块是否使用isp模式进行译码。
[0302]
·
步骤4:如果以下所有条件(项目符号项)均被评估为真,则
[0303]
·
left_mode和above_mode有一个是角度模式,另一个是非角度模式。
[0304]
·
当前块使用isp模式进行译码。然后,构建帧内预测模式列表,该列表包括n个帧内预测模式条目(例如,n等于6,其中,第1条目对应于mpm[0],第2条目对应于mpm[1],以此类推):
[0305]
定义角度模式ang,得到如下结果:
[0306]
如果left_mode为角度模式,则ang=left mode
[0307]
否则(上模式为角度模式)ang=above mode
[0308]
mpm[0]:平面
[0309]
mpm[1]:ang
[0310]
mpm[2]:2 ((ang 61)%64)
[0311]
mpm[3]:2 ((ang

1)%64)
[0312]
mpm[4]:2 ((ang 60)%64)
[0313]
mpm[5]:2 ((ang)%64)
[0314]
·
步骤6:根据索引(表示为mpm索引)和构建的列表的条目预测当前块。
[0315]
根据本发明的一个实施例(一个角度分支,两个为相同的角度):
[0316]
·
步骤1:根据图9获得左相邻块的帧内预测模式和上相邻块的帧内预测模式。如果相邻块的帧内预测模式不可用(例如,相邻块超出图像边界或相邻块进行帧间译码),则相邻块的帧内预测模式设置为平面。左相邻块的帧内预测模式表示为left_mode,上相邻块的帧内预测模式表示为above_mode。
[0317]
·
步骤2:确定相邻块的帧内预测模式是否为角度模式。
[0318]
·
步骤3:确定当前块是否使用isp模式进行译码。
[0319]
·
步骤4:如果以下所有条件(项目符号项)均被评估为真,则
[0320]
·
left_mode和above_mode都是角度模式,两者相同。
[0321]
·
当前块使用isp模式进行译码。
[0322]
然后,构建帧内预测模式列表,该列表包括n个帧内预测模式条目(例如,n等于6,其中,第1条目对应于mpm[0],第2条目对应于mpm[1],以此类推):
[0323]
mpm[0]:平面
[0324]
mpm[1]:left_mode
[0325]
mpm[2]:2 ((left_mode 61)%64)
[0326]
mpm[3]:2 ((left_mode

1)%64)
[0327]
mpm[4]:2 ((left_mode 60)%64)
[0328]
mpm[5]:2 ((left_mode)%64)
[0329]
·
步骤6:根据索引(表示为mpm索引)和构建的列表的条目预测当前块。
[0330]
根据本发明的一个实施例(两个角度分支):
[0331]
·
步骤1:根据图9获得左相邻块的帧内预测模式和上相邻块的帧内预测模式。如果相邻块的帧内预测模式不可用(例如,相邻块超出图像边界或相邻块进行帧间译码),则相邻块的帧内预测模式设置为平面。左相邻块的帧内预测模式表示为left_mode,上相邻块的帧内预测模式表示为above_mode。
[0332]
·
步骤2:确定相邻块的帧内预测模式是否为角度模式。
[0333]
·
步骤3:确定当前块是否使用isp模式进行译码。
[0334]
·
步骤4:如果以下所有条件(项目符号项)均被评估为真,则
[0335]
·
left_mode和above_mode是两种不同的角度模式。
[0336]
·
当前块使用isp模式进行译码
[0337]
然后,构建帧内预测模式列表,该列表包括n个帧内预测模式条目(例如,n等于6,其中,第1条目对应于mpm[0],第2条目对应于mpm[1],以此类推):
[0338]
mpm[0]:平面
[0339]
mpm[1]:above_mode
[0340]
mpm[2]:left_mode
[0341]

变量minab和maxab的推导过程如下:
[0342]
minab=min(above_mode,left_mode)
[0343]
maxab=max(above_mode,left_mode)
[0344]

如果maxab

minab等于1,则以下适用:
[0345]
mpm[3]=2 ((minab 61)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

30)
[0346]
mpm[4]=2 ((maxab

1)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

31)
[0347]
mpm[5]=2 ((minab 60)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

32)
[0348]

否则,如果maxab

minab等于2,则以下适用:
[0349]
mpm[3]=2 ((minab

1)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

34)
[0350]
mpm[4]=2 ((minab 61)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

35)
[0351]
mpm[5]=2 ((maxab

1)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

36)
[0352]

否则,如果maxab

minab大于61,则以下适用:
[0353]
mpm[3]=2 ((minab

1)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

38)
[0354]
mpm[4]=2 ((maxab 61)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

39)
[0355]
mpm[5]=2 (minab%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

40)
[0356]

否则,以下适用:
[0357]
mpm[3]=2 ((minab 61)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

42)
[0358]
mpm[4]=2 ((minab

1)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

43)
[0359]
mpm[5]=2 ((maxab 61)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

44)
[0360]
·
步骤6:根据索引(表示为mpm索引)和构建的列表的条目预测当前块。
[0361]
mark 2:非isp帧内块的mpm列表构建的替代方案
[0362]
根据本发明的一个实施例(非角度分支):
[0363]
·
步骤1:根据图9获得左相邻块的帧内预测模式和上相邻块的帧内预测模式。如
果相邻块的帧内预测模式不可用(例如,相邻块超出图像边界或相邻块进行帧间译码),则相邻块的帧内预测模式设置为平面。左相邻块的帧内预测模式表示为left_mode,上相邻块的帧内预测模式表示为above_mode。
[0364]
·
步骤2:确定相邻块的帧内预测模式是否为角度模式。
[0365]
·
步骤3:确定当前块是否使用isp模式进行译码。
[0366]
·
步骤4:如果以下所有条件(项目符号项)均被评估为真,则
[0367]
·
left_mode不是角度模式,above_mode不是角度模式。
[0368]
·
当前块未使用isp模式
[0369]
然后,构建帧内预测模式列表,该列表包括n个帧内预测模式条目(例如,n等于6,其中,第1条目对应于mpm[0],第2条目对应于mpm[1],以此类推):
[0370]
mpm[0]:left_mode
[0371]
mpm[1]:如果左模式为dc模式,则此条目为平面模式;如果左模式为平面模式,则此条目为dc模式。
[0372]
mpm[2]:ver_idx(即,例如,值为50)
[0373]
mpm[3]:hor_idx(即,例如,值为18)
[0374]
mpm[4]:ver_idx

4(即,例如,值为46)
[0375]
mpm[5]:ver_idx 4(即,例如,值为54)
[0376]
其中,ver_idx表示垂直帧内预测模式索引,hor_idx表示水平帧内预测模式索引。
[0377]
根据本发明的一个实施例(一个角度分支,一个为角度,另一个为非角度):
[0378]
·
步骤1:根据图9获得左相邻块的帧内预测模式和上相邻块的帧内预测模式。如果相邻块的帧内预测模式不可用(例如,相邻块超出图像边界或相邻块进行帧间译码),则相邻块的帧内预测模式设置为平面。左相邻块的帧内预测模式表示为left_mode,上相邻块的帧内预测模式表示为above_mode。
[0379]
·
步骤2:确定相邻块的帧内预测模式是否为角度模式。
[0380]
·
步骤3:确定当前块是否使用isp模式进行译码。
[0381]
·
步骤4:如果以下所有条件(项目符号项)均被评估为真,则
[0382]
·
left_mode和above_mode有一个是角度模式,另一个是非角度模式;
[0383]
·
当前块未使用isp模式
[0384]
然后,构建帧内预测模式列表,该列表包括n个帧内预测模式条目(例如,n等于6,其中,第1条目对应于mpm[0],第2条目对应于mpm[1],以此类推):
[0385]
定义角度模式maxab,得到如下结果:
[0386]
如果left_mode为角度模式,则maxab=left mode
[0387]
否则(上模式为角度模式)maxab=above mode
[0388]
mpm[0]:平面
[0389]
mpm[1]:maxab模式
[0390]
mpm[2]:dc
[0391]
mpm[3]:2 ((maxab 61)%64)
[0392]
mpm[4]:2 ((maxab

1)%64)
[0393]
mpm[5]:2 ((maxab 60)%64)
[0394]
·
步骤6:根据索引(表示为mpm索引)和构建的列表的条目预测当前块。
[0395]
根据本发明的一个实施例(一个角度分支,两个为相同的角度):
[0396]
·
步骤1:根据图9获得左相邻块的帧内预测模式和上相邻块的帧内预测模式。如果相邻块的帧内预测模式不可用(例如,相邻块超出图像边界或相邻块进行帧间译码),则相邻块的帧内预测模式设置为平面。左相邻块的帧内预测模式表示为left_mode,上相邻块的帧内预测模式表示为above_mode。
[0397]
·
步骤2:确定相邻块的帧内预测模式是否为角度模式。
[0398]
·
步骤3:确定当前块是否使用isp模式进行译码。
[0399]
·
步骤4:如果以下所有条件(项目符号项)均被评估为真,则
[0400]
·
left_mode和above_mode都是角度模式,两者相同。
[0401]
·
当前块未使用isp模式
[0402]
然后,构建帧内预测模式列表,该列表包括n个帧内预测模式条目(例如,n等于6,其中,第1条目对应于mpm[0],第2条目对应于mpm[1],以此类推):
[0403]
定义角度模式ang,得到如下结果:
[0404]
mpm[0]:左模式
[0405]
mpm[1]:平面
[0406]
mpm[2]:dc
[0407]
mpm[3]:2 ((left mode 61)%64)
[0408]
mpm[4]:2 ((left mode

1)%64)
[0409]
mpm[5]:2 ((left mode 60)%64)
[0410]
·
步骤6:根据索引(表示为mpm索引)和构建的列表的条目预测当前块。
[0411]
根据本发明的一个实施例(两个角度分支):
[0412]
·
步骤1:根据图9获得左相邻块的帧内预测模式和上相邻块的帧内预测模式。如果相邻块的帧内预测模式不可用(例如,相邻块超出图像边界或相邻块进行帧间译码),则相邻块的帧内预测模式设置为平面。左相邻块的帧内预测模式表示为left_mode,上相邻块的帧内预测模式表示为above_mode。
[0413]
·
步骤2:确定相邻块的帧内预测模式是否为角度模式。
[0414]
·
步骤3:确定当前块是否使用isp模式进行译码。
[0415]
·
步骤4:如果以下所有条件(项目符号项)均被评估为真,则
[0416]
·
left_mode和above_mode是两种不同的角度模式。
[0417]
·
当前块未使用isp模式
[0418]
然后,构建帧内预测模式列表,该列表包括n个帧内预测模式条目(例如,n等于6,其中,第1条目对应于mpm[0],第2条目对应于mpm[1],以此类推):
[0419]
mpm[0]:left_mode
[0420]
mpm[1]:平面
[0421]
mpm[2]:above_mode
[0422]
mpm[3]:dc
[0423]

变量minab和maxab的推导过程如下:
[0424]
minab=min(above_mode,left_mode)
[0425]
maxab=max(above_mode,left_mode)
[0426]

如果maxab

minab在2至62之间(包括端值),则以下适用:
[0427]
candmodelist[4]=2 ((maxab 61)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

26)
[0428]
candmodelist[5]=2 ((maxab

1)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

27)
[0429]

否则,以下适用:
[0430]
candmodelist[4]=2 ((maxab 60)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

28)
[0431]
candmodelist[5]=2 ((maxab)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

29)
[0432]
·
步骤6:根据索引(表示为mpm索引)和构建的列表的条目预测当前块。
[0433]
mark 3:isp和非isp帧内块的mpm列表构建的替代方案
[0434]
根据本发明的一个实施例(非角度分支,h):
[0435]
·
步骤1:根据图9获得左相邻块的帧内预测模式和上相邻块的帧内预测模式。如果相邻块的帧内预测模式不可用(例如,相邻块超出图像边界或相邻块进行帧间译码),则相邻块的帧内预测模式设置为平面。左相邻块的帧内预测模式表示为left_mode,上相邻块的帧内预测模式表示为above_mode。
[0436]
·
步骤2:确定相邻块的帧内预测模式是否为角度模式。
[0437]
·
步骤3:确定当前块是否使用isp模式进行译码。
[0438]
·
步骤4:如果当前块使用isp模式,则确定当前块的划分模式。
[0439]
·
步骤5:如果以下所有条件(项目符号项)均被评估为真,则
[0440]
·
left_mode不是角度模式,above_mode不是角度模式
[0441]
·
当前块使用isp模式,划分模式为水平模式
[0442]
然后,构建帧内预测模式列表,该列表包括n个帧内预测模式条目(例如,n等于6,其中,第1条目对应于mpm[0],第2条目对应于mpm[1],以此类推):
[0443]
mpm[0]:平面
[0444]
mpm[1]:水平
[0445]
mpm[2]:垂直模式。
[0446]
mpm[3]:25
[0447]
mpm[4]:10
[0448]
mpm[5]:65。
[0449]
根据本发明的一个实施例(非角度分支,v):
[0450]
·
步骤1:根据图9获得左相邻块的帧内预测模式和上相邻块的帧内预测模式。如果相邻块的帧内预测模式不可用(例如,相邻块超出图像边界或相邻块进行帧间译码),则相邻块的帧内预测模式设置为平面。左相邻块的帧内预测模式表示为left_mode,上相邻块的帧内预测模式表示为above_mode。
[0451]
·
步骤2:确定相邻块的帧内预测模式是否为角度模式。
[0452]
·
步骤3:确定当前块是否使用isp模式进行译码。
[0453]
·
步骤4:如果当前块使用isp模式,则确定当前块的划分模式。
[0454]
·
步骤5:如果以下所有条件(项目符号项)均被评估为真,则
[0455]
·
left_mode不是角度模式,above_mode不是角度模式
[0456]
·
当前块未使用isp模式,或当前块使用isp模式,且划分模式为垂直模式
[0457]
然后,构建帧内预测模式列表,该列表包括n个帧内预测模式条目(例如,n等于6,其中,第1条目对应于mpm[0],第2条目对应于mpm[1],以此类推):
[0458]
mpm[0]:平面
[0459]
mpm[1]:垂直
[0460]
mpm[2]:水平
[0461]
mpm[3]:43
[0462]
mpm[4]:60
[0463]
mpm[5]:3。
[0464]
根据本发明的一个实施例(一个角度分支,一个为角度,另一个为非角度):
[0465]
·
步骤1:根据图9获得左相邻块的帧内预测模式和上相邻块的帧内预测模式。如果相邻块的帧内预测模式不可用(例如,相邻块超出图像边界或相邻块进行帧间译码),则相邻块的帧内预测模式设置为平面模式。左相邻块的帧内预测模式表示为left_mode,上相邻块的帧内预测模式表示为above_mode。
[0466]
·
步骤2:确定相邻块的帧内预测模式是否为角度模式。
[0467]
·
步骤3:如果以下所有条件(项目符号项)均被评估为真,则
[0468]
·
left_mode和above_mode有一个是角度模式,另一个是非角度模式。
[0469]
然后,构建帧内预测模式列表,该列表包括n个帧内预测模式条目(例如,n等于6,其中,第1条目对应于mpm[0],第2条目对应于mpm[1],以此类推):
[0470]
定义角度模式ang,得到如下结果:
[0471]
如果left_mode为角度模式,则ang=left mode
[0472]
否则(上模式为角度模式)ang=above mode
[0473]
mpm[0]:平面
[0474]
mpm[1]:ang
[0475]
mpm[2]:2 ((ang 61)%64)
[0476]
mpm[3]:2 ((ang

1)%64)
[0477]
mpm[4]:2 ((ang 60)%64)
[0478]
mpm[5]:2 ((ang)%64)。
[0479]
·
步骤6:根据索引(表示为mpm索引)和构建的列表的条目预测当前块。
[0480]
根据本发明的一个实施例(一个角度分支,两个为相同的角度):
[0481]
·
步骤1:根据图9获得左相邻块的帧内预测模式和上相邻块的帧内预测模式。如果相邻块的帧内预测模式不可用(例如,相邻块超出图像边界或相邻块进行帧间译码),则相邻块的帧内预测模式设置为平面。左相邻块的帧内预测模式表示为left_mode,上相邻块的帧内预测模式表示为above_mode。
[0482]
·
步骤2:确定相邻块的帧内预测模式是否为角度模式。
[0483]
·
步骤3:如果以下所有条件(项目符号项)均被评估为真,则
[0484]
·
left_mode和above_mode都是角度模式,两者相同。
[0485]
然后,构建帧内预测模式列表,该列表包括n个帧内预测模式条目(例如,n等于6,其中,第1条目对应于mpm[0],第2条目对应于mpm[1],以此类推):
[0486]
mpm[0]:平面
[0487]
mpm[1]:左模式
[0488]
mpm[2]:2 ((left mode 61)%64)
[0489]
mpm[3]:2 ((left mode

1)%64)
[0490]
mpm[4]:2 ((left mode 60)%64)
[0491]
mpm[5]:2 ((left mode)%64)
[0492]
·
步骤6:根据索引(表示为mpm索引)和构建的列表的条目预测当前块。
[0493]
根据本发明的一个实施例(两个角度分支):
[0494]
·
步骤1:根据图9获得左相邻块的帧内预测模式和上相邻块的帧内预测模式。如果相邻块的帧内预测模式不可用(例如,相邻块超出图像边界或相邻块进行帧间译码),则相邻块的帧内预测模式设置为平面。左相邻块的帧内预测模式表示为left_mode,上相邻块的帧内预测模式表示为above_mode。
[0495]
·
步骤2:确定相邻块的帧内预测模式是否为角度模式。
[0496]
·
步骤3:如果以下所有条件(项目符号项)均被评估为真,则
[0497]
·
left_mode和above_mode是两种不同的角度模式。
[0498]
然后,构建帧内预测模式列表,该列表包括n个帧内预测模式条目(例如,n等于6,其中,第1条目对应于mpm[0],第2条目对应于mpm[1],以此类推):
[0499]
mpm[0]:平面
[0500]
mpm[1]:above_mode
[0501]
mpm[2]:left_mode
[0502]

变量minab和maxab的推导过程如下:
[0503]
minab=min(above_mode,left_mode)
[0504]
maxab=max(above_mode,left_mode)
[0505]

如果maxab

minab等于1,则以下适用:
[0506]
mpm[3]=2 ((minab 61)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

30)
[0507]
mpm[4]=2 ((maxab

1)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

31)
[0508]
mpm[5]=2 ((minab 60)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

32)
[0509]

否则,如果maxab

minab等于2,则以下适用:
[0510]
mpm[3]=2 ((minab

1)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

34)
[0511]
mpm[4]=2 ((minab 61)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

35)
[0512]
mpm[5]=2 ((maxab

1)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

36)
[0513]

否则,如果maxab

minab大于61,则以下适用:
[0514]
mpm[3]=2 ((minab

1)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

38)
[0515]
mpm[4]=2 ((maxab 61)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

39)
[0516]
mpm[5]=2 (minab%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

40)
[0517]

否则,以下适用:
[0518]
mpm[3]=2 ((minab 61)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

42)
[0519]
mpm[4]=2 ((minab

1)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

43)
[0520]
mpm[5]=2 ((maxab 61)%64)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8

44)
[0521]
·
步骤6:根据索引(表示为mpm索引)和构建的列表的条目预测当前块。
[0522]
mark 4:isp和非isp帧内块的mpm列表构建的替代方案,但仅用于非角度分支,因为其它分支已经没有dc,并且已经使用isp优化版本。
[0523]
根据本发明的一个实施例(非角度分支,h):
[0524]
·
步骤1:根据图9获得左相邻块的帧内预测模式和上相邻块的帧内预测模式。如果相邻块的帧内预测模式不可用(例如,相邻块超出图像边界或相邻块进行帧间译码),则相邻块的帧内预测模式设置为平面。左相邻块的帧内预测模式表示为left_mode,上相邻块的帧内预测模式表示为above_mode。
[0525]
·
步骤2:确定相邻块的帧内预测模式是否为角度模式。
[0526]
·
步骤3:确定当前块是否使用isp模式进行译码。
[0527]
·
步骤4:如果当前块使用isp模式,则确定当前块的划分模式。
[0528]
·
步骤5:如果以下所有条件(项目符号项)均被评估为真,则
[0529]
·
left_mode不是角度模式,above_mode不是角度模式
[0530]
·
当前块使用isp模式,划分模式为水平划分
[0531]
然后,构建帧内预测模式列表,该列表包括n个帧内预测模式条目(例如,n等于6,其中,第1条目对应于mpm[0],第2条目对应于mpm[1],以此类推):
[0532]
mpm[0]:平面
[0533]
mpm[1]:dc
[0534]
mpm[2]:水平
[0535]
mpm[3]:25
[0536]
mpm[4]:10
[0537]
mpm[5]:65。
[0538]
根据本发明的一个实施例(非角度分支,v):
[0539]
·
步骤1:根据图9获得左相邻块的帧内预测模式和上相邻块的帧内预测模式。如果相邻块的帧内预测模式不可用(例如,相邻块超出图像边界或相邻块进行帧间译码),则相邻块的帧内预测模式设置为平面。左相邻块的帧内预测模式表示为left_mode,上相邻块的帧内预测模式表示为above_mode。
[0540]
·
步骤2:确定相邻块的帧内预测模式是否为角度模式。
[0541]
·
步骤3:确定当前块是否使用isp模式进行译码。
[0542]
·
步骤4:如果当前块使用isp模式,则确定当前块的划分模式
[0543]
·
步骤5:如果以下所有条件(项目符号项)均被评估为真,则
[0544]
·
left_mode不是角度模式,above_mode不是角度模式
[0545]
·
当前块未使用isp模式,或当前块使用isp模式,且划分模式为垂直模式
[0546]
然后,构建帧内预测模式列表,该列表包括n个帧内预测模式条目(例如,n等于6,其中,第1条目对应于mpm[0],第2条目对应于mpm[1],以此类推):
[0547]
mpm[0]:平面
[0548]
mpm[1]:dc
[0549]
mpm[2]:垂直
[0550]
mpm[3]:43
[0551]
mpm[4]:60
[0552]
mpm[5]:3。
[0553]
在本实施例的一种实现方式中,n设置为6。
[0554]
在本实施例的一种实现方式中,n设置为5。在这种情况下,所述帧内预测模式列表包括如上文列出的前5个条目,不包括第六条目。
[0555]
在本实施例的一种实现方式中,n设置为4。在这种情况下,所述帧内预测模式列表包括如上文列出的前4个条目,不包括第五条目和第六条目。
[0556]
在本实施例的一种实现方式中,所述帧内预测模式列表称为mpm列表。
[0557]
在一种实现方式中,所述列表索引(mpm索引)在码流中作为指示符进行指示。有利地,mpm索引可以使用上下文自适应熵译码器(context adaptive entropy coder,cabac)进行译码。mpm索引可以由cabac根据不同数量的概率模型(换句话说,上下文)进行译码。
[0558]
与多参考行的交互
[0559]
如果一个mpm列表同时包括平面模式和dc模式,则多参考行译码工具使用一个从构建的mpm列表中排除平面模式和dc模式的mpm列表。在这种情况下,多参考行的帧内模式译码使用4

mpm列表。在一个示例中,在mpm列表构建后,mpm列表为{planar(值为0)、dc(值为1)、ver(值为50)、hor(值为18)、ver

4(值为46)、ver 4(值为54)},当启用多参考行时,帧内模式译码使用{ver,hor,ver

4,ver 4}的4

mpm列表。
[0560]
如果一个mpm列表包括平面模式但不包括dc模式,则多参考行译码工具使用一个从构建的mpm列表中排除平面模式的mpm列表。在这种情况下,多参考行的帧内模式译码使用5

mpm列表。在一个示例中,在mpm列表构建之后,mpm列表为{planar,ver,hor,43,60,3},当启用多参考行时,帧内模式译码使用{ver,hor,43,60,3}的5

mpm列表。
[0561]
在另一个示例中,可能需要对没有dc模式的mpm列表进行语法修改。如果mpm列表不包括dc模式,则dc模式在非mpm分支中使用非常频繁(即,mpm标志为假)。在这种情况下,引入了新的语法dc_mode。dc_mode等于1表示当前块的帧内模式是dc模式。dc_mode等于0表示当前块的帧内模式不是dc模式。
[0562]
即,非mpm的旧语法从
[0563][0564]
改变为
[0565][0566][0567]
语法dc_mode可以使用上下文自适应熵译码器(context adaptive entropy coder,cabac)进行译码。dc_mode可以由cabac根据各种数量的概率模型(换句话说,上下
文)进行译码。随着dc_mode的引入,截断二进制的最大值是60,即67(总模式数)

6(mpm)

1(dc)。在没有引入dc_mode时,截断二进制的最大值是61,即67(总模式数)

6(mpm)。
[0568]
特别地,本文提供了以下由解码设备或编码设备实现的对当前块进行预测译码的方法。解码设备可以是图3的解码器30,编码设备可以是图2的编码器20。
[0569]
根据一个实施例(参见图10),一种由解码设备或编码设备实现的对当前块进行预测译码的方法包括以下步骤:获取当前块的左相邻块的帧内预测模式(1001);获取当前块的上相邻块的帧内预测模式(1002)(参见图9)。此外,该方法包括根据获取步骤1101和1002提供的结果构建当前块的帧内预测模式的最可能模式(most probable mode,mpm)列表,mpm列表包括至少5个帧内预测模式条目(1003)。
[0570]
当至少第一条件满足时,至少5个条目如下:
[0571]
{ang,2 ((ang 61)%64),2 ((ang

1)%64),2 ((ang 60)%64),2 ((ang)%64)},其中,第一条件包括左相邻块的帧内预测模式和上相邻块的帧内预测模式是相同的角度模式,其中,ang表示左相邻块的帧内预测模式或上相邻块的帧内预测模式。
[0572]
根据一个替代示例,当至少第一条件满足时,至少5个条目如下:
[0573]
{ang,2 ((ang 61)%64),2 ((ang

1)%64),2 ((ang 60)%64),2 ((ang)%64)},其中,第一条件包括左相邻块的帧内预测模式和上相邻块的帧内预测模式中有一种为角度模式,其中,ang表示角度模式。
[0574]
根据另一个替代示例,至少5个条目如下:
[0575]
当左相邻块的帧内预测模式和上相邻块的帧内预测模式均为角度模式时,其中,above_mode表示上相邻块的帧内预测模式,left_mode表示左相邻块的帧内预测模式,
[0576]
minab=min(above_mode,left_mode)
[0577]
maxab=max(above_mode,left_mode)
[0578]
(a)如果maxab

minab等于1,则至少5个帧内预测模式条目如下所示:
[0579]
{above_mode,left_mode,2 ((minab 61)%64),2 ((maxab

1)%64),2 ((minab 60)%64)};或
[0580]
(b)如果maxab

minab等于2,则至少5个帧内预测模式条目如下所示:
[0581]
{above_mode,left_mode,2 ((minab

1)%64),2 ((minab 61)%64),2 ((maxab

1)%64)};或
[0582]
(c)如果maxab

minab大于61,则至少5个帧内预测模式条目如下所示:
[0583]
{above_mode,left_mode,2 ((minab

1)%64),2 ((maxab 61)%64),2 (minab%64)};或
[0584]
(d)否则,至少5个帧内预测模式条目如下所示:
[0585]
{above_mode,left_mode,2 ((minab 61)%64),2 ((minab

1)%64),2 ((maxab 61)%64)}。
[0586]
根据另一个实施例,当至少第一条件满足时,至少5个条目中的4个由ver_idx、hor_idx、ver_idx

4和ver_id 4给出,其中,第一条件包括左相邻块的帧内预测模式和上相邻块的帧内预测模式均不为角度模式,其中,ver_idx表示垂直帧内预测模式的索引,hor_idx表示水平帧内预测模式的索引。
[0587]
特别地,mpm列表可以包括5个条目,例如上述替代实施例中提到的5个条目。此外,
可以通过planar模式标志来指示planar模式。
[0588]
上述对当前块进行预测译码的方法可以在用于图像编码器和/或图像解码器(例如图2的编码器20和/或图3的解码器30)的设备中实现。
[0589]
如图11所示,根据实施例的设备1100包括预测模式单元1101,用于获取当前块的左相邻块的帧内预测模式,以及用于获取当前块的上相邻块的帧内预测模式。此外,设备1100包括最可能模式(most probable mode,mpm)单元1102,用于(根据由预测模式单元1101提供的结果)构建包括至少5个条目的当前块的帧内预测模式的最可能模式列表。
[0590]
根据替代实施例,由最可能模式单元1102提供的mpm列表包括如下至少5个帧内预测模式条目:
[0591]
(1)
[0592]
当至少第一条件满足时,{ang,2 ((ang 61)%64),2 ((ang

1)%64),2 ((ang 60)%64),2 ((ang)%64)},其中,第一条件包括左相邻块的帧内预测模式和上相邻块的帧内预测模式是相同的角度模式,其中,ang表示左相邻块的帧内预测模式或上相邻块的帧内预测模式;或
[0593]
(2)
[0594]
当至少第一条件满足时,{ang,2 ((ang 61)%64),2 ((ang

1)%64),2 ((ang 60)%64),2 ((ang)%64)},其中,第一条件包括左相邻块的帧内预测模式和上相邻块的帧内预测模式中有一种为角度模式,其中,ang表示角度模式。
[0595]
根据另一个替代方案,mpm列表包括如下至少5个帧内预测模式条目:
[0596]
当左相邻块的帧内预测模式和上相邻块的帧内预测模式均为角度模式时,其中,above_mode表示上相邻块的帧内预测模式,left_mode表示左相邻块的帧内预测模式,
[0597]
minab=min(above_mode,left_mode)
[0598]
maxab=max(above_mode,left_mode)
[0599]
(a)如果maxab

minab等于1,则至少5个帧内预测模式条目如下所示:
[0600]
{above_mode,left_mode,2 ((minab 61)%64),2 ((maxab

1)%64),2 ((minab 60)%64)};或
[0601]
(b)如果maxab

minab等于2,则至少5个帧内预测模式条目如下所示:
[0602]
{above_mode,left_mode,2 ((minab

1)%64),2 ((minab 61)%64),2 ((maxab

1)%64)};或
[0603]
(c)如果maxab

minab大于61,则至少5个帧内预测模式条目如下所示:
[0604]
{above_mode,left_mode,2 ((minab

1)%64),2 ((maxab 61)%64),2 (minab%64)};或
[0605]
(d)否则,至少5个帧内预测模式条目如下所示:
[0606]
{above_mode,left_mode,2 ((minab 61)%64),2 ((minab

1)%64),2 ((maxab 61)%64)}。
[0607]
根据另一个实施例,当至少第一条件满足时,至少5个条目中的4个由ver_idx、hor_idx、ver_idx

4和ver_id 4给出,其中,第一条件包括左相邻块的帧内预测模式和上相邻块的帧内预测模式均不为角度模式,其中,ver_idx表示垂直帧内预测模式的索引,hor_idx表示水平帧内预测模式的索引。
timemessagingprotocol,rtmp)或其任何组合等。
[0616]
协议处理单元3202对流进行处理后,生成流文件。将文件输出到解复用单元3204。解复用单元3204可以将复用数据分为编码音频数据和编码视频数据。如上所述,对于一些实际场景,例如在视频会议系统中,不复用编码音频数据和编码视频数据。在这种情况下,将编码数据发送到视频解码器3206和音频解码器3208,无需经过解复用单元3204。
[0617]
通过解复用处理,生成视频基本流(elementarystream,es)、音频es和可选的字幕。视频解码器3206包括如上述实施例中所说明的视频解码器30,通过如上述实施例中所示的解码方法对视频es进行解码以生成视频帧,并将该数据馈送到同步单元3212。音频解码器3208,解码音频es以生成音频帧,并将该数据馈送到同步单元3212。或者,在将视频帧馈送到同步单元3212之前,可以将该视频帧存储在缓冲器(图y中未示出)中。类似地,在将音频帧馈送到同步单元3212之前,可以将该音频帧存储在缓冲器(图y中未示出)中。
[0618]
同步单元3212同步视频帧和音频帧,并将视频/音频提供给视频/音频显示器3214。例如,同步单元3212同步视频和音频信息的呈现。可以使用关于译码音频和视频数据的表示的时间戳和关于数据流本身的传递的时间戳在语法中对信息进行译码。
[0619]
如果流中包括字幕,则字幕解码器3210解码字幕,并使字幕与视频帧和音频帧同步,并将视频/音频/字幕提供给视频/音频/字幕显示器3216。
[0620]
本发明并不限于上述系统,上述实施例中的图像编码设备或图像解码设备都可以结合到其它系统,例如汽车系统。
[0621]
数学运算符
[0622]
本技术中使用的数学运算符与c编程语言中使用的数学运算符类似。但是,这里准确定义了整除运算和算术移位运算的结果,并且还定义了其它运算,如幂运算和实值除法运算。编号和计数规范通常约定从0开始,例如,“第一个”相当于第0个,“第二个”相当于第1个,等等。
[0623]
算术运算符
[0624]
以下算术运算符定义如下:
[0625]
加法
[0626]

减法(用作双参数运算符)或者非运算(用作一元前缀运算符)。
[0627]
*乘法,包括矩阵乘法。
[0628]
x
y
幂次方,表示x的y次幂。在其它上下文中,该表示形式也可以用作上标,而不应解释为是幂次方运算。
[0629]
/向零方向对结果进行截断的整数除法。例如,7/4和

7/

4被截断成1,

7/4和7/

4被截断成

1。
[0630]
÷
用来表示数学等式中的除法运算,但没有截断或者四舍五入操作。
[0631]
用来表示数学等式中的除法运算,但没有截断或者四舍五入操作。
[0632]
f(i)的和,i取从x到y的所有整数值,包括x和y。
[0633]
x%y取模运算,x除以y得到的余数,仅针对x>=0且y>0的整数x和y定义。
[0634]
逻辑运算符
[0635]
以下逻辑运算符定义如下:
[0636]
x&&yx和y的布尔逻辑“与”操作
[0637]
x||yx和y的布尔逻辑“或”操作
[0638]
!布尔逻辑“非”[0639]
x?y:z如果x为真或不等于0,则等于y的值;否则,等于z的值。
[0640]
关系运算符
[0641]
以下关系运算符定义如下:
[0642]
>大于
[0643]
>=大于等于
[0644]
<小于
[0645]
<=小于等于
[0646]
==等于
[0647]
!=不等于
[0648]
当关系运算符用于一个已赋值为“na”(不适用)的语法元素或变量时,则将值“na”视为该语法元素或变量的唯一值。值“na”不等于任何其它值。
[0649]
按位运算符
[0650]
以下按位运算符的定义如下:
[0651]
&按位“与”。对整数参数进行运算时,对整数值的二的补码表示进行运算。当对二进制参数进行运算时,如果它包括的位比另一个参数少,则通过添加等于0的更多有效位来扩展较短的参数。
[0652]
|按位“或”。对整数参数进行运算时,对整数值的二的补码表示进行运算。当对二进制参数进行运算时,如果它包括的位比另一个参数少,则通过添加等于0的更多有效位来扩展较短的参数。
[0653]
^按位“异或”。对整数参数进行运算时,对整数值的二的补码表示进行运算。当对二进制参数进行运算时,如果它包括的位比另一个参数少,则通过添加等于0的更多有效位来扩展较短的参数。
[0654]
x>>y将x的二的补码整数表示算法右移y个二进制数字。该函数仅针对y的非负整数值定义。右移的结果是移到最高有效位(mostsignificantbit,msb)的位的值等于移位操作前的x的msb。
[0655]
x<<y将x的二的补码整数表示算法左移y个二进制数字。该函数仅针对y的非负整数值定义。左移的结果是移到最低有效位(leastsignificantbit,lsb)的位的值等于0。
[0656]
赋值运算符
[0657]
以下算术运算符定义如下:
[0658]
=赋值运算符
[0659]
递增,即,x 等价于x=x 1;当用于数组索引时,等于递增操作之前变量的值。
[0660]
––
递减,即,x
––
等价于x=x

1;当用于数组索引时,等于递减操作之前变量的值。
[0661]
=按指定数量递增,即,x =3等价于x=x 3,x =(

3)等价于x=x (

3)。
[0662]

=按指定数量递减,即,x

=3等价于x=x

3,x

=(

3)等价于x=x

(

3)。
[0663]
范围表示法以下表示法用于指定值的范围:
[0664]
x=y..zx取从y到z的整数值(包括y和z),其中,x、y和z是整数,并且z大于y。
[0665]
数学函数
[0666]
数学函数定义如下:
[0667][0668]
asin(x)三角反正弦函数,对参数x进行运算,x在

1.0至1.0的范围内(包括端值),输出值在

π
÷
2至π
÷
2的范围内(包括端值),单位为弧度。
[0669]
atan(x)三角反正切函数,对参数x运算,输出值在

π
÷
2至π
÷
2的范围内(包括端值),单位为弧度。
[0670][0671]
ceil(x)表示大于或等于x的最小整数值。
[0672]
clip1
y
(x)=clip3(0,(1<<bitdepth
y
)

1,x)
[0673]
clip1
c
(x)=clip3(0,(1<<bitdepth
c
)

1,x)
[0674][0675]
cos(x)三角余弦函数,对参数x运算,单位为弧度。
[0676]
floor(x)表示小于或等于x的最大整数值。
[0677][0678]
ln(x)x的自然对数(以e为底的对数,其中,e是自然对数底数常数2.718281828
……
)。
[0679]
log2(x)以2为底x的对数。
[0680]
log10(x)以10为底x的对数。
[0681][0682][0683]
round(x)=sign(x)*floor(abs(x) 0.5)
[0684]
[0685]
sin(x)三角正弦函数,对参数x进行运算,单位为弧度。
[0686][0687]
swap(x,y)=(y,x)
[0688]
tan(x)三角正切函数,对参数x进行运算,单位为弧度。
[0689]
运算优先级顺序
[0690]
当没有使用括号来显式的表示优先顺序时,则遵循如下规则:
[0691]

高优先级的运算在低优先级的运算之前进行。
[0692]

相同优先级的运算从左到右依次进行。
[0693]
下表从最高到最低的顺序说明运算的优先级,在表中的位置越高,优先级也越高。
[0694]
如果在c编程语言中也使用这些运算符,则本文中采用的优先级顺序与c编程语言中采用的优先级顺序相同。
[0695]
表:运算优先级从最高(表格顶部)到最低(表格底部)进行排序
[0696]
逻辑运算的文字描述
[0697]
文本中,逻辑运算中的语句以数学形式描述如下:
[0698][0699]
可以通过如下方式进行描述:
[0700]
……
如下/
……
以下为准:
[0701]

如果条件0,则语句0
[0702]

否则,如果条件1,则语句1
[0703]
‑……
[0704]

否则(剩余条件的提示性说明),则语句n
[0705]
文本中的每个“如果
……
否则,如果
……
否则,
……”
语句由
“……
如下”或
“……
以下为准”(后面紧跟着“如果
……”
)引入。最后一个条件“如果
……
否则,如果
……
否则,
……”
总有一个“否则,
……”
。插入的“如果
……
否则,如果
……
否则,
……”
语句可以通过匹配
“……
如下”或
“……
以下为准”,以“否则,
……”
结尾来识别。
[0706]
文本中,逻辑运算中的语句以数学形式描述如下:
[0707][0708]
可以通过如下方式进行描述:
[0709]
……
如下/
……
以下为准:
[0710]

如果以下所有条件都为真,则语句0:
[0711]

条件0a
[0712]

条件0b
[0713]

否则,如果以下一个或多个条件为真,则语句1:
[0714]

条件1a
[0715]

条件1b
[0716]
‑……
[0717]

否则,语句n
[0718]
文本中,逻辑运算中的语句以数学形式描述如下:
[0719]
[0720][0721]
可以通过如下方式进行描述:
[0722]
如果条件0,则语句0
[0723]
如果条件1,则语句1
[0724]
尽管本发明的实施例已经主要根据视频译码进行描述,但需要说明的是,译码系统10、编码器20和解码器30(以及相应地系统10)的实施例以及本文描述的其它实施例也可以用于静止图像处理或译码,即独立于视频译码中的任何前面或连续的图像的处理或译码。通常,在图像处理译码限于单个图像17的情况下,可能只有帧间预测单元244(编码器)和344(解码器)不可用。视频编码器20和视频解码器30的所有其它功能(也称为工具或技术)可以同样用于静止图像处理,例如残差计算204/304,变换206,量化208,反量化210/310,(逆)变换212/312,分割262/362,帧内预测254/354和/或环路滤波220、320,熵译码270和熵解码304。
[0725]
编码器20和解码器30等的实施例,以及本文描述的与编码器20和解码器30等有关的功能可以以硬件、软件、固件或其任何组合来实现。如果以软件实现,则功能可以存储在计算机可读介质上或作为一个或多个指令或代码通过通信介质传输,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,对应数据存储介质等有形介质,或包括便于例如根据通信协议将计算机程序从一个地方传输到另一个地方的任何介质的通信介质。在这种方式中,计算机可读介质通常可以对应(1)非瞬时性的有形计算机可读存储介质或(2)通信介质,例如信号或载波。数据存储介质可以是任何可用介质,可由一个或多个计算机或一个或多个处理器访问以检索用于实现本发明所描述的技术的指令、代码和/或数据结构。计算机程序产品可以包括计算机可读介质。
[0726]
作为示例而非限制,此类计算机可读存储介质可以包括ram、rom、eeprom、cd

rom或其它光盘存储器、磁盘存储器或其它磁性存储设备、闪存,或可以用于存储指令或数据结构形式的所需程序代码并且可由计算机访问的任何其它介质。此外,任何连接都可以称为计算机可读介质。例如,如果指令是从网站、服务器或其它远程源通过同轴电缆、光纤电缆、双绞线、数字用户线(digital subscriber line,dsl)或无线技术(例如红外、无线电、微波等)发送的,则介质的定义包括同轴电缆、光纤电缆、双绞线、dsl或无线技术(例如红外、无线电和微波等)。但是,应理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它瞬时介质,而是指非瞬时有形存储介质。本文使用的磁盘和光盘包括压缩光盘(compact disc,cd)、激光光盘、光盘、数字通用光盘(digital versatile disc,dvd)、软盘和蓝光光盘,盘通常磁性地再现数据,而光盘则用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。
[0727]
指令可以由一个或多个处理器执行,例如一个或多个数字信号处理器(digital signal processor,dsp)、通用微处理器、专用集成电路(application

specific integrated circuit,asic)、现场可编程逻辑阵列(field programmable logic array,fpga)或其它等效的集成或分立逻辑电路。因此,本文使用的术语“处理器”可以指任何上述结构或任何适合于实现本文所描述的技术的任何其它结构。另外,在一些方面中,本文所描述的功能可以在用于编码和解码的专用硬件和/或软件模块中提供,或者结合在组合编解
码器中。另外,这些技术可以在一个或多个电路或逻辑元件中完全实现。
[0728]
本发明的技术可以在多种设备或装置中实现,包括无线手持电话、集成电路(integrated circuit,ic)或一组ic(例如芯片组)。本发明描述各种组件、模块或单元以强调用于执行所公开技术的设备的功能方面,但这些组件、模块或单元不一定要求通过不同的硬件单元实现。相反,如上所述,各种单元可以组合在编解码器硬件单元中,或者由包括如上所述的一个或多个处理器的互操作硬件单元的集合结合合适的软件和/或固件来提供。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜