1.本发明涉及视频编码,并且更具体地说,涉及视频编码和解码系统、视频编码和解码中的组件和方法,例如用于使用预测的色度样本执行对块的编码。
背景技术:
2.随着视频编码技术的进步,从h.261和mpeg
‑
1到h.264/avc(高级视频编码)、mpeg
‑
la、h.265/hevc(高效视频编码)和h.266/vvc(多功能视频编解码器),仍然持续地需要提供对视频编码技术的改进和优化,以在各种应用中处理不断增加的数字视频数据量。本公开内容涉及视频编码中的进一步进步、改进和优化,特别是在使用预测的色度样本执行对块的编码方面。
技术实现要素:
3.在一方面,编码器包括电路和耦合至该电路的存储器。该电路确定是否将当前亮度虚拟管线解码单元(vpdu)拆分成更小的块。当确定不将当前亮度vpdu拆分成更小的块时,电路在不使用亮度样本的情况下预测色度样本的块。当确定将亮度vpdu拆分成更小的块时,电路使用亮度样本来预测色度样本的块。电路使用预测的色度样本对块进行编码。
4.在一方面,一种编码器包括:块拆分器,其在操作中将第一图像拆分成多个块;帧内预测器,其在操作中使用包括在所述第一图像中的参考块来预测包括在所述第一图像中的块;帧间预测器,其在操作中使用包括在与所述第一图像不同的第二图像中的参考块来预测包括在所述第一图像中的块;循环滤波器,其在操作中对包括在所述第一图像中的块进行滤波;变换器,其在操作中变换对原始信号与由帧内预测器或帧间预测器生成的预测信号之间的预测误差进行变换,以生成变换系数;量化器,其在操作中对所述变换系数进行量化以生成经量化的系数;以及熵编码器,其在操作中对所述经量化的系数进行可变编码以生成包括编码的经量化的系数和控制信息的编码的比特流。对块进行预测包括:确定是否将当前亮度虚拟管线解码单元(vpdu)拆分成更小的块。响应于确定不将当前亮度vpdu拆分成更小的块,在不使用亮度样本的情况下预测色度样本的块。响应于确定将亮度vpdu拆分成更小的块,使用亮度样本来预测色度样本的块。
5.在一方面,解码器包括电路和耦合至该电路的存储器。该电路确定是否将当前亮度虚拟管线解码单元(vpdu)拆分成更小的块。当确定不将当前亮度vpdu拆分成更小的块时,电路在不使用亮度样本的情况下预测色度样本的块。当确定将亮度vpdu拆分成更小的块时,电路使用亮度样本来预测色度样本的块。电路使用预测的色度样本对块进行解码。
6.在一方面,一种解码设备包括:解码器,其在操作中对编码的比特流进行解码以输出经量化的系数;逆量化器,其在操作中对经量化的系数进行逆量化以输出变换系数;逆变换器,其在操作中对变换系数进行逆变换以输出预测误差;帧内预测器,其在操作中使用包括在第一图像中的参考块来预测包括在所述第一图像中的块;帧间预测器,其在操作中使用包括在与所述第一图像不同的第二图像中的参考块来预测包括在所述第一图像中的块;
循环滤波器,其在操作中对包括在所述第一图像中的块进行滤波;以及输出端,其在操作中输出包括所述第一图像的图片。对块进行预测包括:确定是否将当前亮度虚拟管线解码单元(vpdu)拆分成更小的块。响应于确定不将当前亮度vpdu拆分成更小的块,在不使用亮度样本的情况下预测色度样本的块。响应于确定将亮度vpdu拆分成更小的块,使用亮度样本来预测色度样本的块。
7.在一方面,一种编码方法包括:确定是否将当前亮度虚拟管线解码单元(vpdu)拆分成更小的块。响应于确定不将当前亮度vpdu拆分成更小的块,在不使用亮度样本的情况下预测色度样本的块。响应于确定将亮度vpdu拆分成更小的块,使用亮度样本来预测色度样本的块。使用预测的色度样本对块进行编码。
8.在一方面,一种解码方法包括:确定是否将当前亮度虚拟管线解码单元(vpdu)拆分成更小的块。响应于确定不将当前亮度vpdu拆分成更小的块,在不使用亮度样本的情况下预测色度样本的块。响应于确定将亮度vpdu拆分成更小的块,使用亮度样本来预测色度样本的块。使用预测的色度样本对块进行解码。
9.在视频编码技术中,期望提出新的方法以提高编码效率、增强图像质量并减小电路规模。本公开内容的实施例的一些实施方式,包括单独或以各种组合方式考虑的本公开内容的实施例的构成元件,可以促进以下各项中的一项或多项:提高编码效率、增强图像质量、降低与编码/解码相关联的处理资源的利用率、减小电路规模、提高编码/解码的处理速度,等等。
10.此外,本公开内容的实施例的一些实施方式,包括单独或以各种组合方式考虑的本公开内容的实施例的构成元件,可以促进编码和解码,一个或多个元素(例如滤波器、块、大小、运动向量、参考图片、参考块或操作)的合适的选择。应当注意,本公开内容包括关于可以提供上述优点之外的优点的配置和方法的公开内容。这种配置和方法的示例包括用于提高编码效率同时减少处理资源使用的增加的配置或方法。
11.根据说明书和附图,所公开的实施例的附加益处和优点将变得显而易见。益处和/或优点可以通过说明书和附图的各种实施例和特征单独获得,不需要提供所有这些实施例和特征以获得这样的益处和/或优点中的一个或多个。
12.应注意,一般或特定实施例可被实现为系统、方法、集成电路、计算机程序、存储介质或其任何选择性组合。
附图说明
13.图1是示出根据实施例的传输系统的功能配置的一个示例的示意图。
14.图2是用于示出流中数据的分层结构的一个示例的概念图。
15.图3是用于示出切片(slice)配置的一个示例的概念图。
16.图4是用于示出瓦片(tile)配置的一个示例的概念图。
17.图5是用于示出可缩放编码中的编码结构的一个示例的概念图。
18.图6是用于示出可缩放编码中的编码结构的一个示例的概念图。
19.图7是示出根据实施例的编码器的功能配置的框图。
20.图8是示出编码器的安装示例的功能框图。
21.图9是表示由编码器执行的整体编码过程的一个示例的流程图。
22.图10是用于示出块拆分的一个示例的概念图。
23.图11是示出根据实施例的拆分器的功能配置的一个示例的框图。
24.图12是用于示出拆分模式的示例的概念图。
25.图13a是用于示出拆分模式的语法树的一个示例的概念图。
26.图13b是用于示出拆分模式的语法树的另一个示例的概念图。
27.图14是表示用于各种变换类型的示例变换基函数的图表。
28.图15是用于示出示例空间变化变换(svt)的概念图。
29.图16是示出由变换器执行的过程的一个示例的流程图。
30.图17是示出由变换器执行的过程的另一示例的流程图。
31.图18是示出根据实施例的量化器的功能配置的一个示例的框图。
32.图19是示出由量化器执行的量化过程的一个示例的流程图。
33.图20是示出根据实施例的熵编码器的功能配置的一个示例的框图。
34.图21是用于示出熵编码器中的基于上下文的自适应二进制算术编码(cabac)过程的示例流程的概念图。
35.图22是示出根据实施例的循环滤波器的功能配置的一个示例的框图。
36.图23a是用于示出在自适应循环滤波器(alf)中使用的滤波器形状的一个示例的概念图。
37.图23b是用于示出alf中使用的滤波器形状的另一示例的概念图。
38.图23c是用于示出alf中使用的滤波器形状的另一示例的概念图。
39.图23d是用于示出交叉分量alf(cc
‑
alf)的示例流程的概念图。
40.图23e是用于示出cc
‑
alf中使用的滤波器形状的示例的概念图。
41.图23f是用于示出联合色度ccalf(jc
‑
ccalf)的示例流程的概念图。
42.图23g是示出可以在jc
‑
ccalf中采用的示例权重指数候选的表格。
43.图24是表示用作解块滤波器(dbf)的循环滤波器的具体配置的一个示例的框图。
44.图25是用于示出具有关于块边界的对称滤波特性的解块滤波器的示例的概念图。
45.图26是用于示出对其执行解块滤波过程的块边界的概念图。
46.图27是用于示出边界强度(bs)值的示例的概念图。
47.图28是示出由编码器的预测器执行的过程的一个示例的流程图。
48.图29是示出由编码器的预测器执行的过程的另一示例的流程图。
49.图30是示出由编码器的预测器执行的过程的另一示例的流程图。
50.图31是用于示出在实施例中的帧内预测中使用的六十七种帧内预测模式的概念图。
51.图32是示出由帧内预测器执行的过程的一个示例的流程图。
52.图33是用于示出参考图片的示例的概念图。
53.图34是用于示出参考图片列表的示例的概念图。
54.图35是示出帧间预测的示例基本处理流程的流程图。
55.图36是示出运动向量的推导的过程的一个示例的流程图。
56.图37是示出运动向量的推导的过程的另一示例的流程图。
57.图38a是用于示出mv推导模式的示例表征的概念图。
58.图38b是用于示出mv推导模式的示例表征的概念图。
59.图39是示出正常帧间模式下的帧间预测过程示例的流程图。
60.图40是示出正常合并模式下的帧间预测过程的示例的流程图。
61.图41是用于示出合并模式下的运动向量推导过程的一个示例的概念图。
62.图42是用于示出hmvp合并模式对当前图片的mv推导过程的一个示例的概念图。
63.图43是示出帧速率上转换(fruc)过程的一个示例的流程图。
64.图44是用于示出沿运动轨迹的两个块之间的模式匹配(双边匹配)的一个示例的概念图。
65.图45是用于示出当前图片中的模板和参考图片中的块之间的模式匹配(模板匹配)的一个示例的概念图。
66.图46a是用于示出基于多个相邻块的运动向量推导出每个子块的运动向量的一个示例的概念图。
67.图46b是用于示出在其中使用三个控制点的仿射模式中推导出每个子块的运动向量的一个示例的概念图。
68.图47a是用于示出仿射模式中控制点处的示例mv推导的概念图。
69.图47b是用于示出仿射模式中控制点处的示例mv推导的概念图。
70.图47c是用于示出仿射模式中控制点处的示例mv推导的概念图。
71.图48a是用于示出在其中使用两个控制点的仿射模式的概念图。
72.图48b是用于示出在其中使用三个控制点的仿射模式的概念图。
73.图49a是用于示出当用于经编码块的控制点的数量和用于当前块的控制点的数量彼此不同时控制点处的mv推导的方法的一个示例的概念图。
74.图49b是用于示出当用于经编码块的控制点的数量和用于当前块的控制点的数量彼此不同时控制点处的mv推导的方法的另一示例的概念图。
75.图50是示出仿射合并模式中的过程的一个示例的流程图。
76.图51是示出仿射帧间模式中的过程的一个示例的流程图。
77.图52a是用于示出生成两个三角形预测图像的概念图。
78.图52b是用于示出与第二分区重叠的第一分区的第一部分以及可作为校正过程的一部分被加权的第一和第二组样本的示例的概念图。
79.图52c是用于示出第一分区的第一部分的概念图,该第一部分是第一分区的与相邻分区的一部分重叠的部分。
80.图53是示出三角形模式中的过程的一个示例的流程图。
81.图54是用于示出其中以子块为单位推导出mv的高级时间运动向量预测(atmvp)模式的一个示例的概念图。
82.图55是示出合并模式和动态运动向量刷新(dmvr)之间的关系的流程图。
83.图56是用于示出dmvr的一个示例的概念图。
84.图57是用于示出用于确定mv的dmvr的另一示例的概念图。
85.图58a是用于示出dmvr中运动估计的一个示例的概念图。
86.图58b是示出dmvr中的运动估计的过程的一个示例的流程图。
87.图59是示出生成预测图像的过程的一个示例的流程图。
88.图60是示出生成预测图像的过程的另一示例的流程图。
89.图61是示出重叠块运动补偿(obmc)进行的对预测图像的校正过程的一个示例的流程图。
90.图62是用于示出obmc进行的预测图像校正过程的一个示例的概念图。
91.图63是用于示出假设匀速直线运动的模型的概念图。
92.图64是示出根据bio的帧间预测过程的一个示例的流程图。
93.图65是示出可以根据bio执行帧间预测的帧间预测器的功能配置的一个示例的功能框图。
94.图66a是用于示出使用由lic执行的亮度校正过程的预测图像生成方法的过程的一个示例的概念图。
95.图66b是示出使用lic的预测图像生成方法的过程的一个示例的流程图。
96.图67是示出根据实施例的解码器的功能配置的框图。
97.图68是示出解码器的安装示例的功能框图。
98.图69是示出由解码器执行的整体解码过程的一个示例的流程图。
99.图70是用于示出拆分确定器与其他构成元件之间的关系的概念图。
100.图71是示出熵解码器的功能配置的一个示例的框图。
101.图72是用于示出熵解码器中的cabac过程的示例流程的概念图。
102.图73是示出逆量化器的功能配置的一个示例的框图。
103.图74是示出由逆量化器执行的逆量化过程的一个示例的流程图。
104.图75是示出由逆变换器执行的过程的一个示例的流程图。
105.图76是示出由逆变换器执行的过程的另一示例的流程图。
106.图77是示出循环滤波器的功能配置的一个示例的框图。
107.图78是示出由解码器的预测器执行的过程的一个示例的流程图。
108.图79是示出由解码器的预测器执行的过程的另一示例的流程图。
109.图80是示出由解码器的预测器执行的过程的另一示例的流程图。
110.图81是示出由解码器的帧内预测器执行的过程的一个示例的图。
111.图82是示出解码器中mv推导过程的一个示例的流程图。
112.图83是示出解码器中mv推导过程的另一示例的流程图。
113.图84是示出解码器中通过正常帧间模式进行帧间预测过程的示例的流程图。
114.图85是示出解码器中通过正常合并模式进行帧间预测过程的示例的流程图。
115.图86是示出解码器中通过fruc模式进行帧间预测过程的示例的流程图。
116.图87是示出解码器中通过仿射合并模式进行帧间预测过程的示例的流程图。
117.图88是示出解码器中通过仿射帧间模式进行帧间预测过程的示例的流程图。
118.图89是示出解码器中通过三角形模式进行帧间预测过程的示例的流程图。
119.图90是示出解码器中通过dmvr进行的运动估计的过程的示例的流程图。图91是示出解码器中通过dmvr进行的运动估计的一个示例过程的流程图。
120.图92是示出在解码器中生成预测图像的过程的一个示例的流程图。
121.图93是示出在解码器中生成预测图像的过程的另一示例的流程图。
122.图94是示出解码器中通过obmc对预测图像的校正过程的示例的流程图。
123.图95是示出解码器中通过bio对预测图像的校正过程的示例的流程图。
124.图96是示出解码器中通过lic对预测图像的校正过程的示例的流程图。
125.图97是示出使用预测的色度样本来对块进行解码的过程的一个示例的流程图。
126.图98是用于示出确定当前色度块是否在与mxn网格的色度样本对齐的mxn非重叠区域内部的示例的概念图。
127.图99是用于示出确定当前色度块是否在与mxn网格的色度样本对齐的mxn非重叠区域内部的示例的概念图。
128.图100是用于示出虚拟管线解码单元(vpdu)的概念图。
129.图101是用于示出确定是否可以采用当前vpdu来预测色度样本的块的示例的概念图。
130.图102是用于示出确定亮度vpdu是否将被拆分成更小的块的示例方式的概念图。
131.图103是用于示出使用阈值大小来确定是否使用亮度样本来预测块的色度样本的概念图。
132.图104是用于示出非矩形状分区的示例的概念图。
133.图105是示出用于实现内容分发服务的内容提供系统的示例整体配置的图。图106是用于示出网页的显示屏幕的示例的概念图。
134.图107是用于示出网页的显示屏幕的示例的概念图。
135.图108是示出智能电话的一个示例的框图。
136.图109是示出智能电话的功能配置的示例的框图。
具体实施方式
137.在附图中,除非上下文另有指示,否则相同的附图标记表示相同的元素。图中元素的大小和相对位置不一定是按比例绘制的。
138.在下文中,将参考附图来描述实施例。注意,下文描述的实施例各自示出一般或特定示例。以下实施例中所指的数值、形状、材料、组件、组件的排列和连接、步骤、步骤的关系和顺序等仅为示例,并不意在限制权利要求的范围。
139.下面将描述编码器和解码器的实施例。实施例是在本公开内容的方面的描述中呈现的过程和/或配置可应用于其上的编码器和解码器的示例。过程和/或配置也可以在与根据实施例的编码器和解码器不同的编码器和解码器中实现。例如,关于应用于实施例的过程和/或配置,可以实施下列各项中的任一项:
140.(1)根据在本公开内容的方面的描述中呈现的实施例的编码器或解码器的组件中的任何一个可以由在本公开内容的方面的描述中的任何地方呈现的另一组件替换或与之组合。
141.(2)在根据实施例的编码器或解码器中,可以对由编码器或解码器的一个或多个组件执行的功能或过程进行任意改变,例如对功能或过程的添加、替换、移除等。例如,任何功能或过程可以由在本公开内容的方面的描述中的任何地方呈现的另一功能或过程替换或与之组合。
142.(3)在由根据实施例的编码器或解码器实现的方法中,可以酌情进行变化,例如添加、替换和移除方法中包括的一个或多个过程。例如,方法中的任何过程可以由在本公开内
容的方面的描述中的任何地方呈现的另一过程替换或与之组合。
143.包括在根据实施例的编码器或解码器中的一个或多个组件可以与在本公开内容的方面的描述中的任何地方呈现的组件进行组合,可以与包括在本公开内容的方面的描述中的任何地方呈现的一个或多个功能的组件进行组合,并且可以与实现由在本公开内容的方面的描述中呈现的组件实现的一个或多个过程的组件进行组合。
144.包括根据实施例的编码器或解码器的一个或多个功能的组件,或者实现根据实施例的编码器或解码器的一个或多个过程的组件,可以与在本公开内容的方面的描述中的任何地方呈现的组件进行组合或由其替代,可以与包括在本公开内容的方面的描述中的任何地方呈现的一个或多个功能的组件进行组合或由其替代,或者可以与实现由在本公开内容的方面的描述中的任何地方呈现的一个或多个过程的组件进行组合或由其替代。
145.在由根据实施例的编码器或解码器实现的方法中,包括在该方法中的任何过程可以由在本公开内容的方面的描述中的任何地方呈现的过程来替代或与该过程组合,或者由任何对应或等效的过程来替代或与之组合。
146.包括在由根据实施例的编码器或解码器实现的方法中的一个或多个过程可以与在本公开内容的方面的描述中的任何地方呈现的过程组合。
147.在本公开内容的方面的描述中呈现的过程和/或配置的实现不限于根据实施例的编码器或解码器。例如,过程和/或配置可以在用于与实施例中公开的运动图片编码器或运动图片解码器不同目的的设备中实现。
148.(术语定义)
149.各个术语可以定义如下作为示例。
150.图像是由一组像素构成的数据单元,是图片,或者包括小于像素的块。除了视频之外,图像还包括静止图像。
151.图片是被配置有一组像素的图像处理单元,而也可以被称为帧或场。例如,图片可以采用单色格式的亮度样本的阵列,或4:2:0、4:2:2和4:4:4颜色格式的亮度样本阵列和两个相对应的色度样本阵列。
152.块是处理单元,它是一组确定数量的像素。块可以具有任意数量的不同形状。例如,块可以具有m
×
n(m列
×
n行)像素的矩形、m
×
m像素的正方形、三角形、圆形等。块的示例包括切片、瓦片、块、ctu、超级块、基本拆分单元、vpdu、针对硬件的处理拆分单元、cu、处理块单元、预测块单元(pu)、正交变换块单元(tu)、单元,以及子块。块可以采用样本的m
×
n阵列或变换系数的m
×
n阵列的形式。例如,块可以是包括一个亮度矩阵和两个色度矩阵的像素的正方形或矩形区域。
153.像素或样本是图像的最小点。像素或样本包括整数位置处的像素,以及子像素位置处的像素,例如基于整数位置处的像素生成的像素。
154.像素值或样本值是像素的特征值。像素值或样本值可以包括下列各项中的一项或多项:亮度值、色度值、rgb灰度等级、深度值、二进制值0或1,等等。
155.色度或色度是颜色的强度,通常由符号cb和cr表示,它们指定样本阵列的值或单个样本值表示与原色相关的两个色差信号中的一个的值。
156.亮度或亮度是图像的明度,通常由符号或下标y或l表示,它们指定:样本阵列的值或单个样本值表示与原色相关的单色信号的值。
157.标志包括指示例如参数或索引的值的一个或多个比特。标志可以是二进制标志,其表示标志的二进制值,其也可以表示参数的非二进制值。
158.信号传达信息,其由信号符号化或编码到信号中。信号包括离散数字信号和连续模拟信号。
159.流或比特流是数字数据流的数字数据串。流或比特流可以是一个流或者可以被配置有具有多个分级层的多个流。流或比特流可以使用单个传输路径以串行通信方式发送,或者可以使用多个传输路径以分组通信方式发送。
160.差是指各种数学上的差,如简单差(x
‑
y)、差的绝对值(|x
‑
y|)、平方差(x^2
‑
y^2)、差的平方根(√(x
‑
y))、加权差(ax
‑
by:a和b是常数)、偏移差(x
‑
y a:a是偏移量)等。在标量的情况下,简单差可以就足够了,并且包括差计算。
161.和是指各种数学上的和,如简单和(x y)、和的绝对值(|x y|)、平方和(x^2 y^2)、和的平方根(√(x y))、加权和(ax by:a和b是常数)、偏移和(x y a:a是偏移量)等。在标量的情况下,简单和可以就足够了,并且包括和计算。
162.帧是顶场和底场的组合,其中样本行0、2、4、......源自顶场,样本行1、3、5、......源自底场。
163.切片是包含在一个独立切片段和同一访问单元内的下一个独立切片段(如果有)之前的所有后续从属切片段(如果有)中的整数个编码树单元。
164.瓦片是图片中特定瓦片列和特定瓦片行内的编码树块的矩形区域。瓦片可以是旨在能够独立解码和编码的帧的矩形区域,尽管仍然可以应用跨越瓦片边缘的循环滤波。
165.编码树单元(ctu)可以是具有三个样本阵列的图片的亮度样本的编码树块,或者色度样本的两个相应编码树块。或者,ctu可以是单色图片和使用三个单独的色彩平面和用于对样本进行编码的语法结构编码的图片之一的样本的编码树块。超级块可以是由1个或2个模式信息块组成的64
×
64像素的方形块,或者递归地划分为四个32
×
32块,这些块本身可以被进一步划分。
166.(系统配置)
167.首先,将描述根据实施例的传输系统。图1是示出根据实施例的传输系统400的配置的一个示例的示意图。
168.传输系统400是发送通过对图像进行编码而生成的流并对所发送的流进行解码的系统。如图所示,传输系统400包括图1所示的编码器100、网络300以及解码器200。
169.图像被输入到编码器100。编码器100通过对输入图像进行编码来生成流,并将该流输出到网络300。该流包括例如,编码图像和用于对编码图像进行解码的控制信息。图像通过编码被压缩。
170.应当指出的是,由编码器100编码前的图像也被称为原始图像、原始信号或原始样本。图像可以是视频或静止图像。图像是序列、图片和块的通用概念,并且因此除非另有说明,否则不限于具有特定大小的空间区域以及具有特定大小的时间区域。图像是像素或像素值的阵列,并且表示图像或像素值的信号也被称为样本。该流可以被称为比特流、编码的比特流、压缩比特流或编码信号。此外,编码器100可被称为图像编码器或视频编码器。由编码器100执行的编码方法可以被称为编码方法、图像编码方法或视频编码方法。
171.网络300将由编码器100生成的流发送到解码器200。网络200可以是互联网、广域
网(wan)、局域网(lan)或网络的任何组合。网络300不限于双向通信网络,并且可以是发送数字地面广播、卫星广播等的广播波的单向通信网络。或者,网络300可以由在其上记录流的诸如数字多功能盘(dvd)和蓝光光盘(bd)等的记录介质代替。
172.解码器200通过对由网络300发送的流进行解码来生成例如是未压缩图像的解码图像。例如,解码器根据与编码器100采用的编码方法相对应的解码方法对流进行解码。
173.应当指出的是,解码器200也可以被称为图像解码器或视频解码器,并且由解码器200执行的解码方法也可以被称为解码方法、图像解码方法或视频解码方法。
174.(数据结构)
175.图2是用于示出流中数据的分层结构的一个示例的概念图。为方便起见,将参考图1的传输系统400来描述图2。流包括例如,视频序列。如图2(a)所示,视频序列包括一个或多个视频参数集(vps)、一个或多个序列参数集(sps)、一个或多个图片参数集(pps)、补充增强信息(sei),以及多张图片。
176.在具有多个层的视频中,vps可以包括在多个层中的一些层之间共用的编码参数,以及与视频中包括的多个层中的一些层或与单个层相关的编码参数。
177.sps包括用于序列的参数,即解码器200为了对序列进行解码而参考的编码参数。例如,编码参数可以指示图片的宽度或高度。应当指出的是,可以存在多个sps。
178.pps包括用于图片的参数,即解码器200为了对序列中的每个图片进行解码而参考的编码参数。例如,编码参数可以包括用于对图片进行解码的量化宽度的参考值以及指示加权预测的应用的标志。应当指出的是,可以存在多个sps。sps和pps中的每一个可以被简称为参数集。
179.如图2的(b)所示,图片可以包括图片报头和一个或多个切片。图片报头包括解码器200为了对一个或多个切片进行解码而参考的编码参数。
180.如图2的(c)所示,切片包括切片报头和一个或多个块。切片报头包括解码器200为了对一个或多个块进行解码而参考的编码参数。
181.如图2的(d)所示,块包括一个或多个编码树单元(ctu)。
182.应当指出的是,图片可以不包括任何切片并且可以包括瓦片组而不是切片。在这种情况下,瓦片组包括至少一个瓦片。此外,块可以包括切片。
183.ctu也可以被称为超级块或基础拆分单元。如图2的(e)所示,ctu包括ctu报头和至少一个编码单元(cu)。如图所示,ctu包括四个编码单元cu(10)、cu(11)、cu(12)和cu(13)。ctu报头包括解码器200为了对至少一个cu进行解码而参考的编码参数。
184.一个cu可以被拆分成多个较小的cu。如图所示,cu(10)没有被拆分成更小的编码单元;cu(11)被拆分成四个较小的编码单元cu(110)、cu(111)、cu(112)和cu(113);cu(12)没有被拆分成更小的编码单元;而cu(13)被拆分成七个较小的编码单元cu(1310)、cu(1311)、cu(1312)、cu(1313)、cu(132)、cu(133)和cu(134)。如图2的(f)所示,cu包括cu报头、预测信息和残差系数信息。预测信息是用于预测cu的信息,而残差系数信息是表示后述的预测残差的信息。尽管cu与预测单元(pu)和变换单元(tu)基本相同,但应当指出的是,例如,后面将要描述的子块变换(sbt)可以包括小于cu的多个tu。此外,可以针对包括在cu中的每个虚拟管线解码单元(vpdu)来处理cu。vpdu例如是固定的单元,当在硬件中进行管线处理时,可以在一个阶段对其进行处理。
185.应当指出的是,流可以不包括图2中所示的所有分级层。可以交换分级层的顺序,或者分级层中的任何分级层可以被另一分级层代替。这里,作为将要由诸如编码器100或解码器200的设备执行的过程的目标的图片被称为当前图片。当过程为编码过程时,当前图片意指待编码的当前图片;并且当过程为解码过程时,当前图片意指待解码的当前图片。同样地,例如,作为即将由诸如编码器100或解码器200的设备执行的过程的目标的cu或cu块被称为当前块。当过程为编码过程时,当前块意指待编码的当前块;并且当过程为解码过程时,当前块意指待解码的当前块。
186.(图片结构:切片/瓦片)
187.图片可配置有一个或多个切片单元或一个或多个瓦片单元以促进图片的并行编码/解码。
188.切片是包括在图片中的基本编码单元。图片可以包括例如一个或多个切片。此外,切片包括一个或多个编码树单元(ctu)。
189.图3是用于示出切片配置的一个示例的概念图。例如,在图3中,图片包括11
×
8个ctu,并被拆分成四个切片(切片1到4)。切片1包括16个ctu,切片2包括21个ctu,切片3包括29个ctu,而切片4包括22个ctu。这里,图片中的每个ctu都属于切片中的一个。每个切片的形状是通过对图片进行水平拆分而获得的形状。每个切片的边界不需要与图像端重合,并且可以与图像中ctu之间的任何边界重合。切片中ctu的处理顺序(编码顺序或解码顺序)例如是光栅扫描顺序。切片包括切片报头和编码数据。切片的特征可以写入切片报头中。特征可以包括切片中顶部ctu的ctu地址、切片类型等。
190.瓦片是包括在图片中的矩形区域单元。图片的瓦片可以按光栅扫描顺序分配有称为tileid的数字。
191.图4是用于示出瓦片配置的一个示例的概念图。例如,在图4中,图片包括11
×
8个ctu,并被拆分成矩形区域的四个瓦片(瓦片1到4)。当使用瓦片时,ctu的处理顺序可以与不使用瓦片的情况下的处理顺序不同。当不使用瓦片时,通常以光栅扫描顺序处理图片中的多个ctu。当使用多个瓦片时,以光栅扫描顺序处理多个瓦片中的每个瓦片中的至少一个ctu。例如,如图4所示,瓦片1中包括的ctu的处理顺序从瓦片1的第一列的左端到瓦片1的第一列的右端,并且然后继续从瓦片1的第二列的左端到瓦片1的第二列的右端。
192.应当指出的是,一个瓦片可以包括一个或多个切片,而一个切片可以包括一个或多个瓦片。
193.应当指出的是,图片可以配置有一个或多个瓦片集。瓦片集可以包括一个或多个瓦片组,或者一个或多个瓦片。图片可以配置有瓦片集、瓦片组和瓦片中的一项。例如,假设以光栅扫描顺序针对每个瓦片集扫描多个瓦片的顺序是瓦片的基本编码顺序。假设在每个瓦片集中以基本编码顺序连续的一个或多个瓦片的集合是瓦片组。这样的图片可以由稍后描述的拆分器102(参见图7)来配置。
194.(可缩放编码)
195.图5和图6是示出可缩放流结构的示例的概念图,并且为了方便将参考图1进行描述。
196.如图5所示,编码器100可以通过将多个图片中的每个图片划分为多个层中的任何层并且在层中对图片进行编码来生成时间/空间上可缩放的流。例如,编码器100对每一层
的图片进行编码,从而在增强层存在于基础层之上的情况下实现可缩放性。每个图片的这种编码也被称为可缩放编码。以这种方式,解码器200能够切换通过对流进行解码而显示的图像的图像质量。换言之,解码器200可以基于诸如解码器200的处理能力之类的内部因素和诸如通信带宽的状态之类的外部因素来确定要解码哪一层。因此,解码器200能够在低分辨率和高分辨率之间自由切换的同时对内容进行解码。例如,流的用户在回家的路上使用智能手机观看流的视频看到一半,并在家中在连接到互联网的设备(例如电视机)上继续观看视频。应当指出的是,上述智能手机和设备中的每一个都包括具有相同或不同性能的解码器200。在这种情况下,当设备将层解码到流中的更高层时,用户可以在家中观看高质量的视频。以这种方式,编码器100不需要生成具有相同内容的不同图像质量的多个流,并且因此可以减少处理负荷。
197.此外,增强层可以包括基于关于图像的统计信息的元信息。解码器200可以基于元数据通过对基层中的图片执行超分辨率成像来生成其图像质量已经被增强的视频。超分辨率成像可以包括例如在相同分辨率下sn比的提高、分辨率的增加等。元数据可以包括例如用于标识线性或非线性滤波器系数的信息(如在超分辨过程中使用的),或标识滤波过程中的参数值、或超分辨率处理中使用的机器学习、最小二乘法等的信息。
198.在实施例中,可以提供一种配置,其中根据例如图片中的对象的含义将图片划分为例如瓦片。在这种情况下,解码器200可以通过选择要解码的瓦片来仅对图片中的部分区域进行解码。此外,对象(人、汽车、球等)的属性和对象在图片中的位置(相同图像中的坐标)可以存储为元数据。在这种情况下,解码器200能够基于元数据来识别期望对象的位置,并确定包括该对象的瓦片。例如,如图6所示,可以使用与图像数据不同的数据存储结构(例如,hevc中的sei(补充增强信息)消息)来存储元数据。该元数据指示例如主要对象的位置、大小或颜色。
199.元数据可以以多张图片为单位(例如,流、序列或随机存取单元等)进行存储。以这种方式,解码器200能够获得例如特定人出现在视频中的时间,并且通过将时间信息与图片单元信息进行拟合,能够识别对象(人)在其中存在的图片,并确定对象在图片中的位置。
200.(编码器)
201.将描述根据实施例的编码器。图7是示出根据实施例的编码器100的功能配置的框图。编码器100是以块为单位对视频进行编码的视频编码器。
202.如图7所示,编码器100是以块为单位对图像进行编码的装置,并且其包括拆分器102、减法器104、变换器106、量化器108、熵编码器110、逆量化器112、逆变换器114、加法器116、块存储器118、循环滤波器120、帧存储器122、帧内预测器124、帧间预测器126、预测控制器128以及预测参数生成器130。如图所示,帧内预测器124和帧间预测器126是预测控制器的一部分。
203.编码器100被实现为例如通用处理器和存储器。在这种情况下,当存储在存储器中的软件程序由处理器执行时,处理器用作拆分器102、减法器104、变换器106、量化器108、熵编码器110、逆量化器112、逆变换器114、加法器116、循环滤波器120、帧内预测器124、帧间预测器126以及预测控制器128。或者,编码器100可被实现为对一个或多个专用电子电路,其对应于拆分器102、减法器104、变换器106、量化器108、熵编码器110、逆量化器112、逆变换器114、加法器116、循环滤波器120、帧内预测器124、帧间预测器126以及预测控制器128。
204.(编码器的安装示例)
205.图8是示出编码器100的安装示例的功能框图。编码器100包括处理器a1和存储器a2。例如,图7所示的编码器100的多个构成元件安装在图8所示的处理器a1和存储器a2上。
206.处理器a1是执行信息处理并耦合到存储器a2的电路。例如,处理器a1是对图像进行编码的专用或通用电子电路。处理器a1可以是处理器,例如cpu。此外,处理器a1可以是多个电子电路的聚合。此外,例如,处理器a1可以起到图7所示的编码器100的多个构成元件中的两个或更多个构成元件的作用,等等。
207.存储器a2是用于存储由处理器a1用来对图像进行编码的信息的专用或通用存储器。存储器a2可以是电子电路,并且可以连接到处理器a1。此外,存储器a2可以包括在处理器a1中。此外,存储器a2可以是多个电子电路的聚合。另外,存储器a2可以是磁盘、光盘等,或者可以表示为存储、记录介质等。此外,存储器a2可以是非易失性存储器或易失性存储器。
208.例如,存储器a2可以存储待编码的图像或与编码图像相对应的比特流。此外,存储器a2可以存储用于使处理器a1对图像进行编码的程序。
209.此外,例如,存储器a2可以起到图7所示的编码器100的多个构成元件中的用于存储信息的两个或更多个构成元件的作用等。例如,存储器a2可以起到图7中所示的块存储器118和帧存储器122的作用。更具体地,存储器a2可以存储重构的块、重构的图片等。
210.应当指出的是,在编码器100中,可以不实现图7中指示的所有多个构成元件等,并且不执行本文中描述的所有过程。图7中所示的构成元件的一部分等可以包含在另一个设备中,或者本文中描述的部分过程可以由另一个设备执行。
211.在下文中,描述了由编码器100执行的过程的整体流程,并且然后将描述编码器100中包括的每个构成元件。
212.(编码过程的整体流程)
213.图9是表示由编码器100执行的整体编码过程的一个示例的流程图,并且为了方便将参考图7进行描述。
214.首先,编码器100的拆分器102将输入图像中包括的每个图片拆分成具有固定尺寸(例如,128
×
128像素)的多个块(步骤sa_1)。拆分器102然后为固定大小的块(也被称为块形状)选择拆分模式(步骤sa_2)。换言之,拆分器102进一步将固定大小的块拆分成形成所选择的拆分模式的多个块。编码器100针对多个块中的每一个,针对该块(即待编码的当前块)执行步骤sa_3至sa_9。
215.预测控制器128和预测执行器(其包括帧内预测器124和帧间预测器126)生成当前块的预测图像(步骤sa
‑
3)。预测图像也可以被称为预测信号、预测块或预测样本。
216.接着,减法器104生成当前块和预测图像之间的差作为预测残差(步骤sa_4)。预测残差也可以被称为预测误差。
217.接着,变换器106对预测图像进行变换,而量化器108对结果进行量化,以生成多个经量化的系数(步骤sa_5)。多个经量化的系数有时可以被称为系数块。
218.接着,熵编码器110对多个经量化的系数和与预测图像的生成相关的预测参数进行编码(具体而言,熵编码),以生成流(步骤sa_6)。该流有时可以被称为编码的比特流或压缩比特流。
219.接下来,逆量化器112对多个经量化的系数进行逆量化,并且逆变换器114对结果进行逆变换,以恢复预测残差(步骤sa_7)。
220.接下来,加法器116将预测图像与恢复的预测残差相加以重构当前块(步骤sa_8)。这样,生成重构图像。重构图像也可以被称为重构块或解码图像块。
221.当生成重构图像时,循环滤波器120根据需要执行对重构图像的滤波(步骤sa_9)。
222.编码器100然后确定整个图片的编码是否已经完成(步骤sa_10)。当确定编码还没有完成时(步骤sa_10中的否),针对图片的下一个块重复执行从步骤sa_2开始的过程。
223.尽管在上述示例中编码器100为固定大小的块选择了一个拆分模式,并根据拆分模式对每个块进行编码,但应当指出的是,每个块可以根据多个拆分模式中的相应一个拆分模式来进行编码。在这种情况下,编码器100可以评估多个拆分模式中的每个拆分模式的成本,并且例如可以选择通过根据产生最小成本的拆分模式来进行编码而获得的流作为输出的流。
224.如图所示,步骤sa_1至sa_10中的处理由编码器100顺序执行。或者,两个或多个过程可以并行执行,过程可以被重新排序,等等。
225.编码器100采用的编码过程是使用预测编码和变换编码的混合编码。此外,预测编码由配置有减法器104、变换器106、量化器108、逆量化器112、逆变换器114、加法器116、循环滤波器120、块存储器118、帧存储器122、帧内预测器124、帧间预测器126和预测控制器128的编码循环执行。换言之,配置有帧内预测器124和帧间预测器126的预测执行器是编码循环的一部分。
226.(拆分器)
227.拆分器102将包括在原始图像中的每个图片拆分成多个块,并将每个块输出到减法器104。例如,拆分器102首先将图片拆分为固定大小(例如,128
×
128像素)的块。可以采用其他固定的块大小。固定大小的块也被称为编码树单元(ctu)。拆分器102然后基于递归四叉树和/或二叉树块拆分将每个固定大小的块拆分为可变大小的块(例如,64
×
64像素或更小)。换言之,拆分器102选择拆分模式。可变大小块也可以被称为编码单元(cu)、预测单元(pu)或变换单元(tu)。应当指出的是,在各种处理示例中,无需区分cu、pu和tu;可以以cu、pu或tu为单位来处理图片中的全部或部分块。
228.图10是用于示出根据实施例的块拆分的一个示例的概念图。在图10中,实线表示通过四叉树块拆分拆分的块的块边界,虚线表示通过二叉树块拆分来拆分的块的块边界。
229.这里,块10是具有128
×
128像素的正方形块(128
×
128块)。该128
×
128的块10首先被拆分成四个正方形的64
×
64像素块(四叉树块拆分)。
230.左上角的64
×
64像素块被进一步垂直拆分为两个矩形的32
×
64像素块,左侧的32
×
64像素块被进一步垂直拆分为两个矩形的16
×
64像素块(二叉树块拆分)。结果,左上角的64
×
64像素块被拆成两个16
×
64像素块11和12,以及一个32
×
64像素块13。
231.右上方的64
×
64像素块被水平拆分为两个矩形64
×
32像素块14和15(二叉树块拆分)。
232.左下方的64
×
64的像素块首先被拆分成四个正方形的32
×
32像素块(四叉树块拆分)。四个正方形32
×
32像素块中的左上块和右下块被进一步拆分。左上角的32
×
32像素块被垂直拆分为两个矩形16
×
32像素块,右侧的16
×
32像素块被进一步水平拆分为两个16
×
16像素块(二叉树块拆分)。右上角的正方形32
×
32像素块被水平拆分为两个矩形32
×
16像素块(二叉树块拆分)。右上角的正方形32
×
32像素块被水平拆分为两个矩形32
×
16像素块(二叉树块拆分)。结果,左下角的64
×
64像素块被拆分为矩形16
×
32像素块16、两个正方形16
×
16像素块17和18、两个正方形32
×
32像素块19和20,以及两个矩形32
×
16像素块21和22。
233.右下角的64
×
64像素块23没有被拆分。
234.如上所述,在图10中,基于递归四叉树和二叉树块拆分,块10被拆分成13个可变大小块11至23。这种类型的拆分也被称为四叉树加二叉树(qtbt)拆分。
235.应当指出的是,在图10中,一个块被拆分成四个或两个块(四叉树或二叉树块拆分),但拆分不限于这些示例。例如,可以将一个块拆分为三个块(三元块拆分)。包括这种三元块拆分的拆分也被称为多类型树(mbt)拆分。
236.图11是示出根据一个实施例的拆分器的功能配置的一个示例的框图。如图11所示,拆分器102可以包括块拆分确定器102a。作为示例,块拆分确定器102a可以执行以下过程。
237.例如,块拆分确定器102a可以从块存储器118和/或帧存储器122获得或检索块信息,并基于块信息来确定拆分模式(例如,上述拆分模式)。拆分器102根据拆分模式对原始图像进行拆分,并将拆分得到的至少一个块输出到减法器104。
238.此外,例如,块拆分确定器102a将指示所确定的拆分模式(例如,上述拆分模式)的一个或多个参数输出到变换器106、逆变换器114、帧内预测器124、帧间预测器126以及熵编码器110。变换器106可以基于一个或多个参数变换来预测残差。帧内预测器124和帧间预测器126可以基于一个或多个参数来生成预测图像。此外,熵编码器110可以对一个或多个参数进行熵编码。
239.与拆分模式相关的参数可以如下所示被写入流中,仅举一例。
240.图12是用于示出拆分模式的示例的概念图。拆分模式的示例包括:拆分成四个区域(qt),其中一个块被分成水平和垂直两个区域;拆分为三个区域(ht或vt),其中一个块以1:2:1的比例在同一方向上拆分;拆分为两个区域(hb或vb),其中一个块以1:1的比例在同一方向上被拆分;以及没有拆分(ns)。
241.应当指出的是,拆分模式在拆分成四个区域和不拆分的情况下不具有块拆分方向,而拆分模式在拆分成两个区域或三个区域的情况下具有拆分方向信息。
242.图13a是用于示出拆分模式的语法树的一个示例的概念图。
243.图13b是用于示出拆分模式的语法树的另一个示例的概念图。
244.图13a和图13b是用于示出拆分模式的语法树的示例的概念图。在图13a的示例中,首先是表示是否进行拆分的信息(s:拆分标志),接下来是表示是否进行4个区域拆分的信息(qt:qt标志)。接下来是指示执行拆分为两个区域还是拆分为三个区域的信息(tt:tt标志,或者bt:bt标志),然后是指示拆分方向的信息(ver:垂直标志,或者hor:水平标志)。应当指出的是,按照这样的划分方式来划分得到的至少一个块中的每个块都可以在类似的过程中被进一步重复划分。换言之,作为一个示例,是否进行拆分,是否进行四区域的拆分,水平方向和垂直方向中的哪一个是所执行的拆分方法的方向,将要执行拆分为三个区域或拆分为两个区域中的哪一种,可以递归地确定,并且可以根据由图13a所示的语法树公开的编
码顺序将确定结果编码在流中。
245.另外,虽然分别指示s、qt、tt和ver的信息项在图13a所示的语法树中按照列出的顺序排列,但是分别指示s、qt、ver和bt的信息项可以按照列出的顺序排列。即,在图13b的示例中,首先是表示是否进行拆分的信息(s:拆分标志),接下来是表示是否进行4个区域拆分的信息(qt:qt标志)。接下来是指示拆分方向的信息(ver:垂直标志,或者hor:水平标志),然后是指示执行拆分为两个区域还是拆分为三个区域的信息(bt:bt标志,或者tt:tt标志)。
246.应当指出的是,以上所述的拆分方式为示例,可以使用上述拆分方式以外的拆分方式,也可以使用上述拆分方式的一部分。
247.(减法器)
248.减法器104以从拆分器102输入并由拆分器102拆分的块为单位从原始图像中减去预测图像(从下面指示的预测控制器128输入的预测样本)。换言之,减法器104计算当前块的预测残差(也被称为误差)。减法器104然后将计算的预测残差输出到变换器106。
249.原始图像可以是作为表示包括在视频中的每个图片的图像的信号(例如,亮度信号和两个色度信号)已经输入到编码器100的图像。表示图像的信号也可以被称为样本。
250.(变换器)
251.变换器106将空间域中的预测残差变换为频域中的变换系数,并将变换系数输出到量化器108。更具体地,变换器106应用例如所定义的离散余弦变换(dct)或离散正弦变换(dst)来预测空间域中的残差。可以预定义所定义的dct或dst。
252.应当指出的是,变换器106可从多个变换类型中自适应地选择变换类型,并通过使用与所选择的变换类型相对应的变换基函数将预测残差变换为变换系数。这种变换也被称为显式多核变换(emt)或自适应多核变换(amt)。变换基函数也可以被称为基。
253.变换类型包括例如dct
‑
ii、dct
‑
v、dct
‑
viii、dst
‑
i和dst
‑
vii。注意,这些变换类型可以表示为dct2、dct5、dct8、dst1和dst7。图14是指示示例变换类型的示例变换基函数的图表。在图14中,n表示输入像素的数量。例如,从多种变换类型中选择变换类型可以取决于预测类型(帧内预测和帧间预测种的一种),并且可以取决于帧内预测模式。
254.通常在cu级别用信号通知指示是应用这种emt还是amt的信息(例如被称为emt标志或amt标志)和指示所选择的变换类型的信息。应当指出的是,此类信息的信令不一定需要在cu级别执行,也可以在其他级别(例如,在序列级别、图片级别、切片级别、瓦片级别或ctu级别)执行。
255.此外,变换器106可以对变换系数(它们是变换结果)进行重新变换。这种重新变换也被称为自适应二次变换(ast)或不可分离二次变换(nsst)。例如,变换器106以包括在与帧内预测残差相对应的变换系数块中的子块(例如,4
×
4像素子块)为单位执行重新变换。通常在cu级别用信号通知指示是否应用nsst的信息以及与用于nsst的变换矩阵相关的信息。应当指出的是,此类信息的信令不一定需要在cu级别执行,也可以在其他级别(例如,在序列级别、图片级别、切片级别、瓦片级别或ctu级别)执行。
256.变换器106可以采用可分离变换和不可分离变换。可分离变换是这样一种方法,其中通过根据输入的维数对多个方向中的每个方向分别执行变换来多次执行变换。不可分离变换是一种执行集体变换的方法,其中多维输入中的两个或多个维度被集体视为一个维
度。
257.在不可分离变换的一个示例中,当输入是4
×
4像素块时,该4
×
4像素块被认为是包括16个元素的阵列,并且变换对阵列应用16
×
16变换矩阵。
258.在不可分离变换的另一个示例中,4
×
4像素的输入块被视为包括16个元素的单个阵列,然后可以执行对阵列执行多次给定旋转的变换(超立方体给定变换)。
259.在变换器106中的变换中,可以切换要根据cu中的区域变换到频域中的变换基函数的变换类型。示例包括空间变化变换(svt)。
260.图15是用于示出svt的一个示例的概念图。
261.在svt中,如图15所示,cu被水平或垂直地拆分成两个相等的区域,并且其中只有一个区域被变换到频域中。可以为每个区域设置变换基类型。例如,使用dst7和dst8。例如,在通过将一个cu垂直拆分成两个相等的区域而得到的两个区域中,dst7和dct8用于在位置0处的区域。或者,在这两个区域中,dst7用于在位置1处的区域。同样,在通过将一个cu水平拆分成两个相等的区域而得到的两个区域中,dst7和dct8用于在位置0处的区域。或者,在这两个区域中,dst7用于在位置1处的区域。尽管在图15所示的示例中cu中的两个区域中仅一个被变换而另一个没有被变换,但是两个区域中的每个区域都可以被变换。另外,拆分方法可以不仅包括拆分为两个区域,还可以拆分为四个区域。此外,拆分方法可以更加灵活。例如,指示拆分方法的信息可以被编码并且可以用与cu拆分相同的方式用信号通知。应当指出的是,svt也可以被称为子块变换(sbt)。
262.上文描述的amt和emt可以被称为mts(多变换选择)。当应用mts时,可以选择dst7、dct8等变换类型,并且可以将指示所选择的变换类型的信息编码为每个cu的索引信息。存在被称为imts(隐式mts)的另一个过程作为用于选择用于在没有对索引信息进行编码的情况下执行的正交变换的变换类型的过程。当应用imts时,例如,当cu具有矩形状时,矩形状的正交变换可以通过针对短边使用dst7和针对长边使用dst2来执行。另外,例如,当cu具有正方形状时,通过当mts在序列中有效时使用dct2并且当mts在序列中无效时使用dst7可以执行矩形状的正交变换。dct2和dst7仅是示例。可以使用其他变换类型,并且也可以将使用的变换类型的组合改变为不同的变换类型组合。imts可以仅用于帧内预测块,或者可以用于帧内预测块和帧间预测块二者。
263.上面已经将mts、sbt和imts这三个过程描述为用于选择性地切换用于正交变换的变换类型的选择过程。然而,可以采用所有三个选择过程,或者可以选择性地仅采用部分选择过程。例如,可以基于诸如sps的报头中的标志信息等来识别是否采用这些选择过程中的一个或多个。例如,当所有三个选择过程都可用时,为每个cu选择三个选择过程中的一个并且执行cu的正交变换。应当指出的是,用于选择性地切换变换类型的选择过程可以是与上述三个选择过程不同的选择过程,或者这三个选择过程中的每一个都可以被另一个过程代替。通常,执行以下四个传递函数[1]至[4]中的至少一个。函数[1]是用于执行整个cu的正交变换和指示在变换中使用的变换类型的编码信息的函数。函数[2]是用于执行整个cu的正交变换并且在没有对指示变换类型的信息进行编码的情况下基于确定的规则来确定变换类型的函数。函数[3]是用于执行cu的部分区域的正交变换和指示在变换中使用的变换类型的编码信息的函数。函数[4]是用于执行cu的部分区域的正交变换并且在没有对指示变换中使用的变换类型的信息进行编码的情况下基于确定的规则来确定变换类型的函数。
可以预确定所确定的规则。
[0264]
应当指出的是,可以针对每个处理单元确定是否应用mts、imts和/或sbt。例如,可以针对每个序列、图片、块、切片、ctu或cu来确定是否应用mts、imts和/或sbt。
[0265]
应当指出的是,本公开内容中的用于选择性地切换变换类型的工具可以被描述为用于选择性地选择在变换过程中使用的基的方法、选择过程或用于选择基的过程。另外,选择性地切换变换类型的工具可以被描述为用于自适应选择变换类型的模式。
[0266]
图16是示出由转换器106执行的过程的一个示例的流程图,并且为了方便将参考图7进行描述。
[0267]
例如,变换器106确定是否执行正交变换(步骤st_1)。这里,当确定执行正交变换时(步骤st_1中的是),变换器106从多个变换类型中选择用于正交变换的变换类型(步骤st_2)。接下来,变换器106通过将所选择的变换类型应用于当前块的预测残差来执行正交变换(步骤st_3)。变换器106然后将指示所选择的变换类型的信息输出到熵编码器110,以允许熵编码器110对该信息进行编码(步骤st_4)。另一方面,当确定不执行正交变换时(步骤st_1中的否),变换器106输出指示未执行正交变换的信息,以允许熵编码器110对该信息进行编码(步骤st_5)。应当指出的是,是否在步骤st_1中执行正交变换可以基于例如变换块的大小、应用于cu的预测模式等来确定。或者,可以在没有对指示用于正交变换的变换类型的信息进行编码的情况下,使用定义的变换类型来执行正交变换。可以预定义所定义的变换类型。
[0268]
图17是示出由转换器106执行的过程的一个示例的流程图,并且为了方便将参考图7进行描述。应当指出的是,图17所示的示例是在如图16所示的示例的情况下,在选择性地切换用于正交变换的变换类型的情况下的正交变换的示例。
[0269]
作为一个示例,第一变换类型组可以包括dct2、dst7和dct8。作为另一示例,第二变换类型组可以包括dct2。第一变换类型组包括的变换类型和第二变换类型组包括的变换类型可以部分重叠,或者可以彼此完全不同。
[0270]
变换器106确定变换大小是否小于或等于确定值(步骤su_1)。这里,当确定变换大小小于或等于确定值时(步骤su_1中的是),变换器106使用第一变换类型组中包括的变换类型对当前块的预测残差进行正交变换(步骤su_2)。接下来,变换器106将指示第一变换类型组中包括的至少一个变换类型之中要使用的变换类型的信息输出到熵编码器110,以允许熵编码器110对该信息进行编码(步骤su_3)。另一方面,当确定变换尺寸不小于或等于预定值时(步骤su_1中的否),变换器106使用第二变换类型组对当前块的预测残差进行正交变换(步骤su_4)。确定值可以是阈值,也可以是预确定的值。
[0271]
在步骤su_3中,指示在正交变换中使用的变换类型的信息可以是指示在当前块中垂直应用的变换类型和在当前块中水平应用的变换类型的组合的信息。第一类型组可以仅包括一种变换类型,并且可以不对指示用于正交变换的变换类型的信息进行编码。第二变换类型组可以包括多种变换类型,并且可以对指示包括在第二变换类型组中的一种或多种变换类型之中的用于正交变换的变换类型的信息进行编码。
[0272]
或者,可以在没有对指示变换类型的信息进行编码的情况下,基于变换大小来指示变换类型。应当指出的是,这样的判断不限于对变换大小是否小于或等于所确定的值的判断,其他的过程也可以用于基于变换大小来确定用于正交变换的变换类型。
[0273]
(量化器)
[0274]
量化器108对从变换器106输出的变换系数进行量化。更具体地,量化器108以确定的扫描顺序来扫描当前块的变换系数,并基于与变换系数相对应的量化参数(qp)来对经扫描的变换系数进行量化。量化器108然后将当前块的量化变换系数(以下也称为经量化的系数)输出到熵编码器110和逆量化器112。确定的扫描顺序可以是预确定的。
[0275]
确定的扫描顺序是用于量化/逆量化变换系数的顺序。例如,确定的扫描顺序可以定义为频率的升序(从低频到高频)或频率的降序(从高频到低频)。
[0276]
量化参数(qp)是定义量化步长(量化宽度)的参数。例如,当量化参数的值增加时,量化步长也增加。换言之,当量化参数的值增加时,经量化的系数的误差(量化误差)增加。
[0277]
此外,量化矩阵可用于量化。例如,几种量化矩阵可以相应地用于诸如4
×
4、8
×
8的频率变换大小、诸如帧内预测和帧间预测的预测模式、以及诸如亮度和色度像素分量的像素分量。应当指出的是,量化意味着对以与所确定的电平相对应的确定间隔采样的值进行数字化。在本技术领域中,量化可以指代使用其他表达方式,例如舍入和缩放,并且可以采用舍入和缩放。确定的间隔和确定的电平可以是预确定的。
[0278]
使用量化矩阵的方法可以包括:使用在编码器100侧直接设置的量化矩阵的方法,以及使用已设置为默认(默认矩阵)的量化矩阵的方法。在编码器100侧,可以通过直接设置量化矩阵来设置适合图像特征的量化矩阵。然而,这种情况可能具有增加用于对量化矩阵进行编码的编码量的缺点。应当指出的是,可以基于默认量化矩阵或编码量化矩阵来生成用于对当前块进行量化的量化矩阵,而不是直接使用默认量化矩阵或编码量化矩阵。
[0279]
存在一种不使用量化矩阵来对高频系数和低频系数进行量化的方法。应当指出的是,该方法可被视为等效于使用其系数具有相同值的量化矩阵(平坦矩阵)的方法。
[0280]
量化矩阵可以例如在序列级别、图片级别、切片级别、块级别或ctu级别被编码。可以使用例如序列参数集(sps)或图片参数集(pps)来指定量化矩阵。sps包括用于序列的参数,而pps包括用于图片的参数。sps和pps中的每一个可以被简称为参数集。
[0281]
当使用量化矩阵时,量化器108使用量化矩阵的值针对每个变换系数缩放例如可以基于量化参数等计算的量化宽度。不使用量化矩阵执行的量化过程可以是基于根据量化参数等计算出的量化宽度对变换系数进行量化的过程。应当指出的是,在没有使用任何量化矩阵的情况下执行的量化处理中,可以将量化宽度乘以块中所有变换系数公共的确定值。所确定的值可以是预确定的。
[0282]
图18是示出根据实施例的量化器的功能配置的一个示例的框图。例如,量化器108包括差分量化参数生成器108a、预测量化参数生成器108b、量化参数生成器108c、量化参数存储器108d以及量化执行器108e。
[0283]
图19是示出由量化器108执行的量化过程的一个示例的流程图,并且为了方便将参考图7和18进行描述。
[0284]
作为一个示例,量化器108可以基于图19所示的流程图对每个cu执行量化。更具体地,量化参数生成器108c确定是否执行量化(步骤sv_1)。这里,当确定执行量化时(步骤sv_1中的是),量化参数生成器108c生成当前块的量化参数(步骤sv_2),并将量化参数存储到量化参数存储器108d(步骤sv_3)。
[0285]
接下来,量化执行器108e使用在步骤sv_2中生成的量化参数来对当前块的变换系
数进行量化(步骤sv_4)。预测量化参数生成器108b然后从量化参数存储器108d获得与当前块不同的处理单元的量化参数(步骤sv_5)。预测量化参数生成器108b基于获得的量化参数生成当前块的预测量化参数(步骤sv_6)。差值量化参数生成器108a计算由量化参数生成器108c生成的当前块的量化参数与由预测量化参数生成器108b生成的当前块的预测量化参数之间的差值(步骤sv_7)。可以通过计算差值来生成差值量化参数。差值量化参数产生器108a将差值量化参数输出到熵编码器110,以允许熵编码器110对差值量化参数进行编码(步骤sv_8)。
[0286]
应当指出的是,不同量化参数可以例如在序列级别、图片级别、切片级别、块级别或ctu级别被编码。此外,量化参数的初始值可以在序列级别、图片级别、切片级别、块级别或ctu级别被编码。在初始化阶段,可以使用量化参数的初始值和差值量化参数来生成量化参数。
[0287]
应当指出的是,量化器108可以包括多个量化器,并且可以应用相关量化,在相关量化中,使用从多种量化方法中选择的量化方法来对变换系数进行量化。
[0288]
(熵编码器)
[0289]
图20是示出根据实施例的熵编码器110的功能配置的一个示例的框图,并且为了方便将参照图7进行描述。熵编码器110通过对从量化器108输入的经量化的系数和从预测参数生成器130输入的预测参数进行熵编码来生成流。例如,使用基于上下文的自适应二进制算术编码(cabac)作为熵编码。更具体地,如图所示的熵编码器110包括二值化器110a、上下文控制器110b和二值算术编码器110c。二值化器110a执行二值化,其中将诸如经量化的系数和预测参数的多级信号变换为二值信号。二值化方法的示例包括截断莱斯二值化、指数哥伦布码和固定长度二值化。上下文控制器110b根据语法元素的特征或周围状态,即二进制信号的出现概率,来推导出上下文值。用于推导出上下文值的方法的示例包括绕过、参考语法元素、参考上相邻和左相邻块、参考层级信息等。二进制算术编码器110c使用推导出的上下文对二进制信号进行算术编码。
[0290]
图21是用于示出熵解码器110中的cabac过程的示例流程的概念图。首先,在熵编码器110中的cabac中执行初始化。在初始化中,执行二进制算术编码器110c中的初始化和初始上下文值的设置。例如,二值化器110a和二值算术编码器110c可以在ctu中顺序地执行多个经量化的系数的二值化和算术编码。每次执行算术编码时,上下文控制器110b可以更新上下文值。上下文控制器110b然后可以保存上下文值作为后过程。例如,可以使用保存的上下文值来对下一个ctu的上下文值进行初始化。
[0291]
(逆量化器)
[0292]
逆量化器112对从量化器108输入的经量化的系数进行逆量化。更具体地,逆量化器112以确定的扫描顺序对当前块的经量化的系数进行逆量化。逆量化器112然后将当前块的逆量化变换系数输出到逆变换器114。确定的扫描顺序可以是预确定的。
[0293]
(逆变换器)
[0294]
逆变换器114通过对从逆量化器112输入的变换系数进行逆变换来恢复预测残差。更具体地,逆变换器114通过执行与变换器106应用于变换系数的变换相对应的逆变换来恢复当前块的预测残差。逆变换器114然后将恢复的预测残差输出到加法器116。
[0295]
应注意,由于信息通常在量化中丢失,因此恢复的预测残差与减法器104计算的预
测残差不匹配。换言之,恢复的预测残差通常包括量化误差。
[0296]
(加法器)
[0297]
加法器116通过将从逆变换器114输入的预测残差和从预测控制器128输入的预测图像相加来重构当前块。随后,生成重构图像。加法器116然后将重构的图像输出到块存储器118和循环滤波器120。重构块也可以被称为本地解码块。
[0298]
(块存储器)
[0299]
块存储器118是用于存储当前图片中的块的存储,例如用于帧内预测。更具体地,块存储器118存储从加法器116输出的重构图像。
[0300]
(帧存储器)
[0301]
帧存储器122是例如用于存储帧间预测中使用的参考图片的存储器,并且也被称为帧缓冲器。更具体地,帧存储器122存储由循环滤波器120滤波的重构图像。
[0302]
(循环滤波器)
[0303]
循环滤波器120将循环滤波器应用于加法器116输出的重构图像,并将经滤波的重构图像输出到帧存储器122。循环滤波器是在编码循环中使用的滤波器(循环滤波器)。循环滤波器的示例包括例如自适应循环滤波器(alf)、解块滤波器(db或dbf)、样本自适应偏移(sao)滤波器等。
[0304]
图22是示出120根据实施例的循环滤波器120的功能配置的一个示例的框图。例如,如图22所示,循环滤波器120包括解块滤波器执行器120a、sao执行器120b和alf执行器120c。解块滤波器执行器120a对重构图像执行解块滤波器处理。sao执行器120b对经过解块滤波过程之后的重构图像执行sao过程。alf执行器120c对经过sao过程后的重构图像进行alf过程。将在后面详细描述alf和解块滤波器。sao过程是通过减少振铃(在边缘周围像素值像波浪一样扭曲的现象)和校正像素值的偏差来提高图像质量的过程。sao过程的示例包括边缘偏移过程和带偏移过程。应当注意,在一些实施例中,循环滤波器120可以不包括图22中公开的所有构成元件,可以包括一些构成元件,并且可以包括附加元件。此外,循环滤波器120可以被配置为以不同于图22中公开的处理顺序的处理顺序来执行上述过程,可以不执行所有过程等。
[0305]
(循环滤波器>自适应循环滤波器)
[0306]
在alf中,应用了用于去除压缩伪影的最小二乘误差滤波器。例如,针对当前块中的每个2
×
2像素子块应用基于局部梯度的方向和活动性从多个滤波器中选择的一个滤波器。
[0307]
更具体地,首先,每个子块(例如,每个2
×
2像素子块)被分类为多个类(例如,十五或二十五个类)中的一个。子块的分类可以基于例如梯度方向性和活动性。在一个示例中,根据梯度方向性d(例如0到2或0到4)和梯度活动性a(例如0到4)计算或确定类别索引c(例如,c=5d a)。然后,基于分类索引c,每个子块被分类为多个类中的一个。
[0308]
例如,通过比较多个方向(例如,水平、垂直和两个对角线方向)的梯度来计算梯度方向性d。此外,例如,通过将多个方向的梯度相加并对相加结果进行量化来计算梯度活性a。
[0309]
可以基于这样的分类结果从多个滤波器中确定要用于每个子块的滤波器。
[0310]
alf中使用的滤波器形状例如是圆形对称的滤波器形状。图23a至图23c是用于示
出在alf中使用的滤波器形状的示例的概念图。图23a示出了5
×
5菱形滤波器,图23b示出了7
×
7菱形滤波器,图23c示出了9
×
9菱形滤波器。通常在图片级别发信号通知指示滤波器形状的信息。应当指出的是,这种指示滤波器形状的信息的信令并不一定需要在图片级别执行,也可以在其他级别(例如,在序列级别、切片级别、瓦片级别或ctu级别)执行。
[0311]
例如,可以在图片级别或cu级别确定alf的开启或关闭。例如,可以在cu级别做出是否对亮度应用alf的决定,可以在图片级别做出是否对色度应用alf的决定。指示alf开启或关闭的信息通常在图像级别或cu级别发出信号。应当指出的是,指示alf开启或关闭的信息的信令不一定需要在图片级别或cu级别执行,也可以在其他级别执行(例如,在序列级别、切片级别、瓦片级别或ctu级别)执行。
[0312]
此外,如上所述,从多个滤波器中选择一个滤波器,并执行子块的alf处理。通常在图片级别用信号通知用于多个滤波器中的每个滤波器(例如,直到第十五或第二十五个滤波器)的系数的系数集合。应当指出的是,系数集合的信令不一定需要在图片级别执行,也可以在其他级别(例如,在序列级别、切片级别、瓦片级别、ctu级别、cu级别或子块基本)执行。
[0313]
(循环滤波器>交叉分量自适应循环滤波器)
[0314]
图23d是用于示出交叉分量alf(cc
‑
alf)的示例流程的概念图。图23e是用于示出在cc
‑
alf(例如图23d的cc
‑
alf)中使用的滤波器形状的示例的概念图。图23d和图23e的示例cc
‑
alf通过将线性菱形滤波器应用于每个色度分量的亮度通道来进行操作。例如,滤波器系数可以在aps中发送,按2^10的因子缩放,并针对定点表示进行舍入。例如,在图23d中,y个样本(第一分量)用于cb的ccalf和ccalf的cr(与第一分量不同的分量)。
[0315]
滤波器的应用可以在可变块大小上控制,并且由针对每个样本块接收的上下文编码标志用信号通知。可以在切片级别针对每个色度分量接收块大小连同cc
‑
alf使能标志。cc
‑
alf可以支持各种块大小,例如(在色度样本中)16x16像素、32x32像素、64x64像素、128x128像素。
[0316]
(循环滤波器>联合色度交叉分量自适应循环滤波器)
[0317]
联合色度
‑
ccalf的一个示例在图23f和23g中示出。图23f是用于示出联合色度ccalf的示例流程的概念图。图23g是示出示例权重指数候选的表格。如图所示,一个ccalf滤波器用于生成一个ccalf滤波输出作为一个颜色分量的色度细化信号,同时将相同色度细化信号的加权版本应用于另一颜色分量。这样,现有ccalf的复杂度大约降低了一半。权重值可以被编码为符号标志和权重索引。权重索引(表示为weight_index)可以编码为3个比特,并且指定jc
‑
ccalf权重jcccweight的幅值,其为非零大小。例如,jcccweight的幅值可以确定如下:
[0318]
如果weight_index小于或等于4,则jcccweight等于weight_index>>2;
[0319]
否则,jcccweight等于4/(weight_index
‑
4)。
[0320]
cb和cr的alf滤波的块级开/关控制可以是分开的。这与ccalf中的相同,并且可以对两组单独的块级开/关控制标志进行编码。与ccalf不同的是,这里的cb、cr开/关控制块大小是相同的,因此可以只对一个块大小变量进行编码。
[0321]
(循环滤波器>解块滤波器)
[0322]
在解块滤波处理中,循环滤波器120对重构图像中的块边界执行滤波处理以减少
在块边界处发生的失真。
[0323]
图24是示出用作解块滤波器的循环滤波器120(见图7和图22)的解块滤波器执行器120a的具体配置的一个示例的框图。
[0324]
解块滤波器执行器120a包括:边界确定器1201;滤波器确定器1203;滤波执行器1205;过程确定器1208;滤波器特性确定器1207;以及开关1202、1204和1206。
[0325]
边界确定器1201确定要被解块滤波的像素(即,当前像素)是否存在于块边界周围。边界确定器1201然后将确定结果输出到开关1202和处理确定器1208。
[0326]
在边界确定器1201已经确定当前像素存在于块边界周围的情况下,开关1202将未经滤波的图像输出到开关1204。在边界确定器1201已确定块边界周围不存在当前像素的相反情况下,开关1202将未经滤波的图像输出到开关1206。应当指出的是,未经滤波的图像是被配置有当前像素和位于当前像素周围的至少一个周围像素的图像。
[0327]
滤波器确定器1203基于位于当前像素周围的至少一个周围像素的像素值来确定是否对当前像素执行解块滤波。滤波器确定器1203然后将确定结果输出到开关1204和过程确定器1208。
[0328]
在滤波器确定器1203已经确定对当前像素执行解块滤波的情况下,开关1204将通过开关1202获得的未经滤波图像输出到滤波执行器1205。在滤波器确定器1203已确定没有对当前像素执行解块滤波的相反情况下,开关1204将通过开关1202获得的未经滤波图像输出到开关1206。
[0329]
当通过开关1202和1204获得未经滤波的图像时,滤波执行器1205对当前像素执行具有由滤波器特性确定器1207确定的滤波器特性的解块滤波。滤波执行器1205然后将经滤波的像素输出到开关1206。
[0330]
在处理确定器1208的控制下,开关1206选择性地输出尚未被解块滤波的像素和已经被滤波执行器1205解块滤波的像素之一。
[0331]
处理确定器1208基于边界确定器1201和滤波器确定器1203做出的确定结果来控制开关1206。换言之,当边界确定器1201确定当前像素存在于块边界附近并且当滤波器确定器1203确定执行当前像素的解块滤波时,处理确定器1208使开关1206输出已经被解块滤波的像素。此外,除了上述情况之外,处理确定器1208使开关1206输出未被解块滤波的像素。通过以这种方式重复像素的输出,从开关1206输出滤波图像。应当注意,图24中所示的配置是解块滤波器执行器120a中的配置的一个示例。解块滤波器执行器120a可以具有各种配置。
[0332]
图25是用于示出具有关于块边界的对称滤波特性的解块滤波器的示例的概念图。
[0333]
在解块滤波过程中,可以使用像素值和量化参数来选择具有不同特性的两个解块滤波器(即强滤波器和弱滤波器)之一。在强滤波器的情况下,当像素p0到p2和像素q0到q2跨块边界存在时,如图25所示,通过例如根据以下表达式执行计算,各个像素q0到q2的像素值改变为像素值q'0到q’2。
[0334]
q’0=(p1 2
×
p0 2
×
q0 2
×
q1 q2 4)/8
[0335]
q’1=(p0 q0 q1 q2 2)/4
[0336]
q’2=(p0 q0 q1 3
×
q2 2
×
q3 4)/8
[0337]
应当指出的是,在上式中,p0~p2和q0~q2分别是像素p0~p2和像素q0~q2的像
素值。另外,q3是相对于块边界位于像素q2的相对侧的相邻像素q3的像素值。另外,在每个表达式的右侧,与要用于解块滤波的像素的各个像素值相乘的系数是滤波器系数。
[0338]
此外,在解块滤波中,可以执行限幅以使得计算的像素值的变化不超过阈值。例如,在裁剪过程中,可以使用基于量化参数确定的阈值,将根据上述表达式计算的像素值裁剪为根据“计算像素值
±2×
阈值”获得的值。这样,可以防止过度平滑。
[0339]
图26是用于示出对其执行解块滤波过程的块边界的概念图。图27是用于示出边界强度(bs)值的示例的概念图。
[0340]
执行解块滤波处理的块边界是例如具有8
×
8个像素块的cu、pus或tu之间的边界,如图26所示。例如,可以以四行或四列为单位来执行解块滤波处理。首先,对于图26所示的块p和块q,如图27所示确定边界强度(bs)值。
[0341]
根据图27中的bs值,可以确定是否使用不同强度对属于同一图像的块边界执行解块滤波过程。当bs值为2时,执行针对色度信号的解块滤波过程。当bs值为1或更大并且满足确定条件时,执行针对亮度信号的解块滤波过程。所确定的条件可以是预确定的。应当指出的是,用于确定bs值的条件不限于图27中所示的那些,并且可以基于另一个参数来确定bs值。
[0342]
(预测器(帧内预测器、帧间预测器、预测控制器))
[0343]
图28是示出由编码器100的预测器执行的过程的一个示例的流程图。应当指出的是,预测器包括以下构成元件的全部或部分:帧内预测器124;预测器126;以及预测控制器128。预测执行器包括例如帧内预测器124和帧间预测器126。
[0344]
预测器生成当前块的预测图像(步骤sb_1)。该预测图像也可以被称为预测信号或预测块。应注意,预测信号例如是帧内预测图像(图像预测信号)或帧间预测图像(帧间预测信号)。预测器使用重构图像来生成当前块的预测图像,重构图像是已经通过另一块经由预测图像的生成、预测残差的生成、经量化的系数的生成、预测残差的恢复以及预测图像的相加而获得的。
[0345]
重构图像例如可以是参考图片中的图像,或者是当前图片(其是包括当前块的图片)中的编码块(即,上述其他块)的图像。当前图片中的编码块例如是当前块的相邻块。
[0346]
图29是示出由编码器100的预测器执行的过程的另一示例的流程图。
[0347]
预测器使用第一种方法生成预测图像(步骤sc_1a),使用第二种方法生成预测图像(步骤sc_1b),并使用第三种方法生成预测图像(步骤sc_1c)。第一种方法、第二种方法和第三种方法可以是彼此不同的用于生成预测图像的方法。第一至第三种方法中的每种方法可以是帧间预测方法、帧内预测方法或另一种预测方法。在这些预测方法中可以使用上述重构图像。
[0348]
接下来,预测处理器对在步骤sc_1a、sc_1b和sc_1c中生成的预测图像进行评估(步骤sc_2)。例如,预测器针对在步骤sc_1a、sc_1b和sc_1中生成的预测图像计算成本c,并通过比较预测图像的成本c来评估预测图像。应当指出的是,成本c例如可以根据rd优化模型的表达式(例如,c=d λ
×
r)来计算。在该表达式中,d表示预测图像的压缩伪影,并且被表示为例如当前块的像素值与预测图像的像素值之间的绝对差之和。此外,r表示流的比特率。此外,λ表示例如根据拉格朗日乘数法的乘数。
[0349]
预测器然后选择在步骤sc_1a、sc_1b和sc_1c中生成的预测图像中的一个(步骤
sc_3)。换言之,预测器选择用于获得最终预测图像的方法或模式。例如,预测器基于为预测图像计算的成本c来选择具有最小成本c的预测图像。或者,步骤sc_2中的评估和步骤sc_3中预测图像的选择可以基于在编码处理中使用的参数来进行。编码器100可以将用于识别所选择的预测图像、方法或模式的信息转换成流。该信息可以是例如标志等。以此方式,解码器200能够基于该信息根据编码器100选择的方法或模式来生成预测图像。应当指出的是,在图29所示的示例中,在通过使用相应方法生成预测图像之后,预测器选择这些预测图像中的任意预测图像。然而,预测器可以在生成预测图像之前基于在上述编码过程中使用的参数来选择方法或模式,并且可以根据所选择的方法或模式来生成预测图像。
[0350]
例如,第一种方法和第二种方法可以分别是帧内预测和帧间预测,预测器可以从根据预测方法生成的预测图像中选择当前块的最终预测图像。
[0351]
图30是示出由编码器100的预测执行的过程的另一示例的流程图。
[0352]
首先,预测器使用帧内预测生成预测图像(步骤sd_1a),并使用帧间预测生成预测图像(步骤sd_1b)。应当指出的是,帧内预测生成的预测图像也被称为帧内预测图像,帧间预测生成的预测图像也被称为帧间预测图像。
[0353]
接下来,预测器对帧内预测图像和帧间预测图像中的每一个进行评估(步骤sd_2)。可以在评估中使用上述成本c。预测器然后可以在帧内预测图像和帧间预测图像中选择已经针对其计算出最小成本c的预测图像作为当前块的最终预测图像(步骤sd_3)。换言之,选择用于生成当前块的预测图像的预测方法或模式。
[0354]
预测处理器然后在帧内预测图像和帧间预测图像中选择已经针对其计算出最小成本c的预测图像作为当前块的最终预测图像(步骤sd_3)。换言之,选择用于生成当前块的预测图像的预测方法或模式。
[0355]
(帧内预测器)
[0356]
帧内预测器124通过以下操作来生成预测信号(即,帧内预测图像):通过参考当前图片中的一个或多个块来执行当前块的帧内预测(也被称为帧内预测),并将其存储在块存储器118中。更具体地,帧内预测器124通过参考与当前块相邻的一个或多个块的像素值(例如,亮度和/或色度值)执行帧内预测来生成帧内预测图像,然后将帧内预测图像输出到预测控制器128。
[0357]
例如,帧内预测器124通过使用已定义的多个帧内预测模式中的一种模式来执行帧内预测。帧内预测模式通常包括一种或多种非定向预测模式和多种定向预测模式。可以预定义所定义的模式。
[0358]
一种或多种非定向预测模式包括例如h.265/高效视频编码(hevc)标准中定义的平面预测模式和dc预测模式。
[0359]
多种定向预测模式包括例如h.265/hevc标准中定义的三十三种定向预测模式。应当指出的是,多种定向预测模式除了包括三十三种定向预测模式之外,还可以包括三十二种定向预测模式(总共六十五种定向预测模式)。图31是用于示出可以在帧内预测中使用的总共67种帧内预测模式(两种非定向预测模式和65种定向预测模式)的概念图。实线箭头表示h.265/hevc标准中定义的三十三个方向,而虚线箭头表示附加的三十二个方向(两种非定向预测模式未在图31中示出)。
[0360]
在各种处理示例中,在色度块的帧内预测中可以参考亮度块。换言之,可以基于当
前块的亮度分量来预测当前块的色度分量。这种帧内预测也被称为跨分量线性模型(cclm)预测。可以添加在其中参考了这种亮度块的针对色度块的帧内预测模式(也被称为例如cclm模式)作为色度块的帧内预测模式之一。
[0361]
帧内预测器124可以基于水平/垂直参考像素梯度来校正帧内预测像素值。伴随这种校正的帧内预测也被称为位置相关帧内预测组合(pdpc)。通常在cu级别用信号通知指示是否应用pdpc的信息(例如,被称为pdpc标志)。应当指出的是,此类信息的信令不一定需要在cu级别执行,也可以在其他级别(例如,在序列级别、图片级别、切片级别、瓦片级别或ctu级别)执行。
[0362]
图32是示出由帧内预测器124执行的过程的一个示例的流程图。
[0363]
帧内预测器124从多个帧内预测模式中选择一种帧内预测模式(步骤sw_1)。帧内预测器124然后根据所选择的帧内预测模式生成预测图像(步骤sw_2)。接下来,帧内预测器124确定最可能模式(mpm)(步骤sw_3)。mpm包括例如六种帧内预测模式。例如,六种帧内预测模式中的两种模式可以是平面模式和dc预测模式,其他四种模式可以是定向预测模式。帧内预测器124确定在步骤sw_1中选择的帧内预测模式是否包括在mpm中(步骤sw_4)。
[0364]
这里,当确定在步骤sw_1中选择的帧内预测模式包括在mpm中时(步骤sw_4中的是),帧内预测器124将mpm标志设置为1(步骤sw_5),并生成指示在这些mpm之中选择的帧内预测模式的信息。mpm(步骤sw_6)。应当指出的是,设置为1的mpm标志和指示帧内预测模式的信息可以由熵编码器110编码为预测参数。
[0365]
当确定所选择的帧内预测模式不包括在mpm中时(步骤sw_4中的否),帧内预测器124将mpm标志设置为0(步骤sw_7)。或者,帧内预测器124不设置任何mpm标志。帧内预测器124然后生成指示没有包括在mpm中的从至少一种帧内预测模式中选择的帧内预测模式的信息(步骤sw_8)。应当指出的是,设置为0的mpm标志和指示帧内预测模式的信息可以由熵编码器110编码为预测参数。指示帧内预测模式的信息指示例如0到60中的任何一个。
[0366]
(帧内预测器)
[0367]
帧间预测器126通过以下操作来生成预测图像(帧间预测图像):通过参考在参考图片(其与当前图片不同)中的一个或多个块来执行当前块的帧间预测(也被称为帧间预测),并将其存储在帧存储器122中。以当前块或当前块中的当前子块(例如,4
×
4块)为单位执行帧间预测。子块包括在块中,是比块更小的单位。子块的大小可以是切片、块、图片等形式。
[0368]
例如,帧间预测器126在当前块或当前子块的参考图片中执行运动估计,并找到与当前块或当前子块最佳匹配的参考块或参考子块。帧间预测器126然后获得对从参考块或参考子块到当前块或子块的运动或变化进行补偿的运动信息(例如,运动向量)。帧间预测器126通过基于运动信息执行运动补偿(或运动预测)来生成当前块或子块的帧间预测图像。帧间预测器126将生成的帧间预测图像输出到预测控制器128。
[0369]
在运动补偿中使用的运动信息可以以各种形式作为帧间预测信号用信号发送。例如,可以用信号通知运动向量。作为另一示例,可以用信号通知运动向量和运动向量预测值之间的差异。
[0370]
(参考图片列表)
[0371]
图33是用于示出参考图片的示例的概念图。图34是用于示出参考图片列表的示例
的概念图。参考图片列表是指示存储在帧存储器122中的至少一个参考图片的列表。应当指出的是,在图33中,每个矩形表示一个图片,每个箭头表示一个图片参考关系,横轴表示时间,矩形中的i、p、b分别表示帧内预测图片、单预测图片和双向预测图片,矩形中的数字表示解码顺序。如图33所示,图片的解码顺序为i0、p1、b2、b3和b4的顺序,图片的显示顺序为i0、b3、b2、b4和p1的顺序。如图34所示,参照图片列表是表示参照图片候选的列表。例如,一个图片(或切片)可以包括至少一个参考图片列表。例如,在当前图片为单预测图片时使用一个参考图片列表,在当前图片为双预测图片时使用两个参考图片列表。在图33和34的示例中,作为当前图片currpic的图片b3具有两个参考图片列表,即l0列表和l1列表。在当前图片currpic为图片b3时,当前图片currpic的参考图片候选为i0、p1、b2,参考图片列表(其为l0列表和l1列表)指示这些图片。帧间预测器126或预测控制器128指定要以参考图片索引refidxlx的形式实际参考每个参考图片列表中的哪个图片。在图34中,参考图片p1和b2由参考图片索引refidxl0和refidxl1指定。
[0372]
可以为诸如序列、图片、切片、块、ctu或cu的每个单元生成这样的参考图片列表。另外,在参考图片列表中指示的参考图片之中,可以在序列级别、图片级别、切片级别、块级别、ctu级别或cu级别用信号通知指示将在帧间预测中参考的参考图片的参考图片索引。此外,可以在多个帧间预测模式中使用公共参考图片列表。
[0373]
(帧间预测的基本流程)
[0374]
图35是示出帧间预测过程的示例基本处理流程的流程图。
[0375]
首先,帧间预测器126生成预测信号(步骤se_1~se_3)。接着,减法器104生成当前块和预测图像之间的差作为预测残差(步骤se_4)。
[0376]
这里,在预测图像的生成中,帧间预测器126通过当前块的运动向量(mv)的确定(步骤se_1和se_2)和运动补偿(步骤se_3)来生成预测图像。此外,在mv的确定中,帧间预测器126通过运动向量候选(mv候选)的选择(步骤se_1)和mv的推导(步骤se_2)来确定mv。mv候选的选择是通过例如帧间预测器126生成mv候选列表并从mv候选列表中选择至少一个mv候选来进行的。应当指出的是,可以将过去推导出的mv添加到mv候选列表中。或者,在mv的推导中,帧间预测器126还可从至少一个mv候选中选择至少一个mv候选,并将所选择的至少一个mv候选确定为当前块的mv。或者,帧间预测器126可通过在由所选的至少一个mv候选中的每一个指定的参考图片区域中执行估计来确定当前块的mv。应当指出的是,参考图片区域中的估计可以被称为运动估计。
[0377]
另外,尽管在上述示例中步骤se_1至se_3由帧间预测器126执行,但是例如步骤se_1、步骤se_2等的过程可以由编码器100中包括的另一构成元件执行。
[0378]
应当指出的是,可以在帧间预测模式中针对每个过程生成mv候选列表,或者可以在多个帧间预测模式中使用公共mv候选列表。步骤se_3和se_4中的过程分别对应于图9所示的步骤sa_3和sa_4。步骤se_3中的过程对应于图30中步骤sd_1b中的过程。
[0379]
(运动向量推导流程)
[0380]
图36是示出运动向量的推导的过程的一个示例的流程图。
[0381]
帧间预测器126可以在用于编码运动信息的模式(例如,mv)中推导出当前块的mv。在这种情况下,例如,运动信息可以被编码为预测参数,并且可以用信号通知。换言之,编码运动信息被包括在流中。
[0382]
或者,帧间预测器126可以在运动信息未被编码的模式中推导出mv。在这种情况下,流中不包括运动信息。
[0383]
这里,mv推导模式可以包括后面描述的正常帧间模式、正常合并模式、fruc模式、仿射模式等。在其中对运动信息进行编码的模式包括正常帧间模式、正常合并模式、仿射模式(具体地,仿射帧间模式和仿射合并模式)等。应当指出的是,运动信息可以不仅包括mv而且还包括后面描述的运动向量预测器选择信息。在其中没有运动信息被编码的模式包括fruc模式等。帧间预测器126从多个模式中选择用于推导出当前块的mv的模式,并使用所选择的模式推导出当前块的mv。
[0384]
图37是示出运动向量的推导的另一示例的流程图。
[0385]
帧间预测器126可以在其中对mv差进行编码的模式中推导出当前块的mv。在这种情况下,例如,可以将mv差编码为预测参数,并且可以用信号通知。换言之,经编码的mv差包括在流中。mv差是当前块的mv与mv预测器之间的差。应当指出的是,mv预测器是运动向量预测器。
[0386]
或者,帧间预测器126可以在没有对mv差进行编码的模式中推导出mv。在这种情况下,流中不包括经编码的mv差。
[0387]
这里,如上所述,mv推导模式包括后面描述的正常帧间模式、正常合并模式、fruc模式、仿射模式等。在其中对mv差进行编码的模式包括正常帧间模式、仿射模式(具体而言,仿射帧间模式)等。在其中没有对mv差进行编码的模式包括fruc模式、正常合并模式、仿射模式(具体地,仿射合并模式)等。帧间预测器126从多个模式中选择用于推导出当前块的mv的模式,并使用所选择的模式来推导出当前块的mv。
[0388]
(运动向量推导模式)
[0389]
图38a和图38b是用于示出用于mv推导的模式的示例分类的概念图。例如,如图38a所示,根据是否对运动信息进行编码以及是否对mv差进行编码,mv推导模式大致分为三种模式。三种模式是帧间模式、合并模式和帧速率上转换(fruc)模式。帧间模式是执行运动估计并且在其中对运动信息和mv差进行编码的模式。例如,如图38b所示,帧间模式包括仿射帧间模式和正常帧间模式。合并模式是这样一种模式:不执行运动估计,并且在其中从经编码的周围块中选择mv,并且使用该mv推导出当前块的mv。合并模式是一种基本上对运动信息进行编码而不对mv差进行编码的模式。例如,如图38b所示,合并模式包括正常合并模式(也被称为正常合并模式或常规合并模式)、运动向量差合并(mmvd)模式、组合间合并/帧内预测(ciip)模式、三角形模式、atmvp模式以及仿射合并模式。这里,在合并模式中包括的模式之中的mmvd模式中,mv差被例外地编码。应当指出的是,仿射合并模式和仿射帧间模式是包括在仿射模式中的模式。仿射模式是这样一种模式:假设仿射变换,推导出当前块中包括的多个子块中的每个子块的mv作为当前块的mv。fruc模式是这样一种模式:通过在编码区域之间执行估计来推导出当前块的mv,并且在其中既不对运动信息进行编码也不对任何mv差进行编码。应当指出的是,后面将更详细地描述各个模式。
[0390]
应当指出的是,图38a和图38b中所示的模式的分类是示例,并且分类不限于此。例如,当以ciip模式对mv差异进行编码时,ciip模式被归类为帧间模式。
[0391]
(mv推导>正常帧间模式)
[0392]
正常帧间模式是这样一种帧间预测模式:基于与当前块的图像相似的块从由mv候
选指定的参考图片区域中推导出当前块的mv。在该正常帧间模式中,对mv差进行编码。
[0393]
图39是示出正常帧间模式下的帧间预测过程示例的流程图。
[0394]
首先,帧间预测器126基于诸如时间上或空间上围绕当前块的多个编码块的mv之类的信息来获得当前块的多个mv候选(步骤sg_1)。换言之,帧间预测器126生成mv候选列表。
[0395]
接下来,帧间预测器126根据确定的优先级顺序从在步骤sg_1中获得的多个mv候选中提取n个(n为2或更大的整数)mv候选作为运动向量预测候选(也被称为mv预测候选)(步骤sg_2)。应当指出的是,可以为n个mv候选中的每一个预先确定优先级顺序。
[0396]
接下来,帧间预测器126从n个预测运动向量候选中选择一个预测运动向量候选作为当前块的运动向量预测器(也被称为mv预测器)(步骤sg_3)。此时,帧间预测器126在流中对用于标识所选择的运动向量预测器的预测运动向量选择信息进行编码。换言之,帧间预测器126通过预测参数生成器130将mv预测器选择信息作为预测参数输出到熵编码器110。
[0397]
接下来,帧间预测器126通过参考编码参考图片来推导出当前块的mv(步骤sg_4)。此时,帧间预测器126还在流中将推导出的mv和运动向量预测器之间的差编码为mv差。换言之,帧间预测器126通过预测参数生成器130将mv差作为预测参数输出到熵编码器110。应当指出的是,编码参考图片是包括多个在编码之后被重构的块的图片。
[0398]
最后,帧间预测器126通过使用推导出的mv和编码参考图片执行当前块的运动补偿来生成当前块的预测图像(步骤sg_5)。对每个块执行步骤sg_1到sg_5中的过程。例如,当对切片中的所有块执行了步骤sg_1至sg_5中的过程时,使用正常帧间模式的切片的帧间预测完成。例如,当对图片中的所有块执行了步骤sg_1至sg_5中的过程时,使用正常帧间模式的图片的帧间预测完成。应当指出的是,可以并不是切片中包括的所有块都经历步骤sg_1至sg_5中的这些过程,当部分块经历这些过程时,使用正常帧间模式的切片的帧间预测可以完成。这也适用于步骤sg_1到sg_5中的过程。当对图片中的部分块执行这些过程时,使用正常帧间模式的图片的帧间预测可以完成。
[0399]
应当指出的是,预测图像是如上所述的帧间预测信号。另外,表示用于生成预测图像的帧间预测模式(在上述示例中为正常帧间模式)的信息例如被编码为编码信号中的预测参数。
[0400]
应当指出的是,mv候选列表也可以用作在另一种模式下使用的列表。此外,与mv候选列表相关的过程可以被应用于与列表相关的过程以在另一模式中使用。与mv候选列表相关的过程包括例如从mv候选列表中提取或选择mv候选、mv候选的重新排序或mv候选的删除。
[0401]
(mv推导>正常合并模式)
[0402]
正常合并模式是这样一种帧间预测模式:从mv候选列表中选择mv候选作为当前块的mv从而推导出mv。应当指出的是,正常合并模式是一种合并模式,其可以被简称为合并模式。在本实施例中,区分了正常合并模式和合并模式,合并模式的使用范围更广。
[0403]
图40是示出正常合并模式下的帧间预测的示例的流程图。
[0404]
首先,帧间预测器126基于诸如时间上或空间上围绕当前块的多个编码块的mv之类的信息来获得当前块的多个mv候选(步骤sh_1)。换言之,帧间预测器126生成mv候选列表。
[0405]
接下来,帧间预测器126从在步骤sh_1中获得的多个mv候选中选择一个mv候选,从而推导出当前块的mv(步骤sh_2)。此时,帧间预测器126在流中对用于标识所选择的mv候选的mv选择信息进行编码。换言之,帧间预测器126通过预测参数生成器130将mv选择信息作为预测参数输出到熵编码器110。
[0406]
最后,帧间预测器126通过使用推导出的mv和编码参考图片执行当前块的运动补偿来生成当前块的预测图像(步骤sh_3)。例如,对每个块执行步骤sh_1至sh_3中的过程。例如,当对切片中的所有块执行了步骤sh_1至sh_3中的过程时,使用正常合并模式的切片的帧间预测完成。此外,当对图片中的所有块执行了步骤sh_1至sh_3中的过程时,使用正常合并模式的图片的帧间预测完成。应当指出的是,可以并不是切片中包括的所有块都经历步骤sh_1至sh_3中的这些过程,当部分块经历这些过程时,使用正常合并模式的切片的帧间预测可以完成。这也适用于步骤sh_1至sh_3中的过程。当对图片中的部分块执行这些过程时,使用正常合并模式的图片的帧间预测可以完成。
[0407]
另外,表示用于生成预测图像并包括在编码信号中的帧间预测模式(在上述示例中为正常合并模式)的信息例如,被编码为流中的预测参数。
[0408]
图41是用于示出通过正常合并模式的当前图片的运动向量推导过程的一个示例的概念图。
[0409]
首先,帧间预测器126生成mv候选注册在其中的mv候选列表。mv候选的示例包括:空间相邻的mv候选,它们是在空间上围绕当前块的多个编码块的mv;时间上相邻的候选mv,它们是编码参考图片中当前块的位置被投影到其上的周围块的mv;组合的mv候选,它们是通过将空间相邻mv预测器的mv值和时间相邻mv预测器的mv值进行组合生成的mv;以及零mv候选,其是具有零值的mv。
[0410]
接下来,帧间预测器126从注册在mv候选列表中的多个mv候选中选择一个mv候选,并将该mv候选确定为当前块的mv。
[0411]
此外,熵编码器110在流中写入并编码merge_idx,merge_idx是指示已选择了哪个mv候选的信号。
[0412]
应当指出的是,在图41中描述的mv候选列表中注册的mv候选是示例。mv候选的数量可以与图中的mv候选的数量不同,mv候选列表可以以这样的方式配置:可以不包括图中的某些种类的候选mv,或者包括图中的mv候选种类以外的一个或多个候选mv。
[0413]
可以通过使用由正常合并模式推导出的当前块的mv来执行后面描述的动态运动向量刷新(dmvr)来确定最终mv。应当指出的是,在正常合并模式下,对运动信息进行编码并且不对mv差进行编码。在mmvd模式中,从mv候选列表中选择一个mv候选,就像在正常合并模式的情况下一样,对mv差进行编码。如图38b所示,mmvd可以与正常合并模式一起被分类为合并模式。应当注意,mmvd模式中的mv差异并不总是需要与用于帧间模式的mv差异相同。例如,mmvd模式下的mv差推导可以是需要比帧间模式下的mv差推导所需的处理量更小的处理量的过程。
[0414]
此外,可以执行组合的间合并/帧内预测(ciip)模式。该模式用于重叠在帧间预测中生成的预测图像和在帧内预测中生成的预测图像以生成当前块的预测图像。
[0415]
应当指出的是,mv候选列表可以被称为候选列表。另外,merge_idx是mv选择信息。
[0416]
(mv推导>hmvp模式)
[0417]
图42是用于示出使用hmvp合并模式的针对当前图片的mv推导过程的一个示例的概念图。
[0418]
在正常合并模式中,通过从参考编码块(例如,cu)生成的mv列表中选择一个mv候选来确定例如作为当前块的cu的mv。这里,可以在mv候选列表中注册另一个mv候选。注册这种另一个mv候选的模式被称为hmvp模式。
[0419]
在hmvp模式下,使用hmvp的先进先出(fifo)服务器来管理mv候选,与用于正常合并模式的mv候选列表分开。
[0420]
在fifo缓冲器中,最先存储过去处理过的块的最新的运动信息(例如mv)。在fifo缓冲器的管理中,每处理一个块,在fifo缓冲器中存放最新块(即前一处理过的cu)的mv,并且从fifo缓冲器中删除最旧的cu(即最早处理的cu)的mv。在图42所示的示例中,hmvp1是最新块的mv,hmvp5是最旧mv的mv。
[0421]
然后,例如,帧间预测器126检查在fifo缓冲器中管理的每个mv是否是与从hmvp1开始的正常合并模式的mv候选列表中已经注册的所有mv候选不同的mv。当确定mv不同于所有mv候选时,帧间预测器126可以将fifo缓冲器中管理的mv添加到用于正常合并模式的mv候选列表中作为mv候选。此时,fifo缓冲器中的一个或多个候选mv可以被注册(添加到mv候选列表)。
[0422]
通过以这种方式使用hmvp模式,不仅可以添加在空间或时间上与当前块相邻的块的mv,而且可以添加过去处理过的块的mv。结果,扩展了正常合并模式的mv候选的变化,这增加了可以提高编码效率的可能性。
[0423]
应当指出的是,mv可以是运动信息。换言之,存储在mv候选列表和fifo缓冲器中的信息不仅可以包括mv值,还可以包括参考图片信息、参考方向、图片数量等。另外,块可以是例如cu。
[0424]
应当指出的是,图42所示的mv候选列表和fifo缓冲器是示例。mv候选列表和fifo缓冲器的大小可以与图42中的不同,或者可以被配置为以不同于图42中的顺序来注册mv候选。此外,本文中描述的过程在编码器100和解码器200之间可以是公共的。
[0425]
应当指出的是,hmvp模式可以应用于普通合并模式以外的模式。例如,也可以将过去以仿射模式处理的块等最新的运动信息(例如mv)最先存储,并且可以用作mv候选,这样可以提高效率。通过将hmvp模式应用于仿射模式而获得的模式可以被称为历史仿射模式。
[0426]
(mv推导>fruc模式)
[0427]
运动信息可在解码器侧推导出而无需从编码器侧用信号通知。例如,可以通过在解码器200侧执行运动估计来推导出运动信息。在一个实施例中,在解码器侧,在不使用当前块中的任何像素值的情况下执行运动估计。用于在解码器200侧执行运动估计而不使用当前块中的任何像素值的模式包括帧速率上转换(fruc)模式、模式匹配运动向量推导(pmmvd)模式等。
[0428]
图43中说明了流程图形式的fruc过程的一个示例。首先,一个列表,该列表通过参考mv来指示每个在空间或时间上与当前块相邻的编码块的mv作为mv候选(该列表可以是mv候选列表,也可以用作普通合并模式的mv候选列表(步骤si_1)。
[0429]
接下来,从mv候选列表中注册的多个mv候选中选择最佳mv候选(步骤si_2)。例如,计算候选mv列表中包括的各个mv候选的评估值,并基于评估值选择一个mv候选。基于所选
择的运动向量候选,然后推导出当前块的运动向量(步骤si_4)。更具体地,例如,所选择的运动向量候选(最佳mv候选)被直接推导出为当前块的运动向量。另外,例如,可以使用参考图片中的某个位置的周围区域中的模式匹配来推导出当前块的运动向量,其中参考图片中的该位置对应于所选择的运动向量候选。换言之,使用模式匹配和评估值的估计可以在最佳mv候选的周围区域中执行,并且当存在产生更好评估值的mv时,可以将最佳mv候选更新为产生更好评估值的mv,并且经更新的mv可以被确定为当前块的最终mv。在一些实施例中,可以不执行产生更好评估值的运动向量的更新。
[0430]
最后,帧间预测器126通过使用推导出的mv和编码参考图片执行当前块的运动补偿来生成当前块的预测图像(步骤si_5)。例如,对每个块执行步骤si_1至si_5中的过程。例如,当对切片中的所有块执行了步骤si_1至si_5中的过程时,使用fruc模式的切片的帧间预测完成。例如,当对图片中的所有块执行了步骤si_1至si_5中的过程时,使用fruc模式的图片的帧间预测完成。应当指出的是,可以并不是切片中包括的所有块都经历步骤si_1至si_5中的这些过程,当部分块经历这些过程时,使用fruc模式的切片的帧间预测可以完成。当以类似方式对图片中包括的部分块执行步骤si_1至si_5中的处理时,使用fruc模式的图片的帧间预测可以完成。
[0431]
可以以子块为单位执行类似的过程。
[0432]
可以根据各种方法来计算评价值。例如,在参考图片中与运动向量相对应的区域中的重构图像与确定区域中的重构图像之间进行比较(该区域可以是例如另一个参考图片中的区域或当前图片的相邻块中的区域,如下所示)。所确定的区域可以是预确定的。
[0433]
两个重构图像的像素值之间的差可用于运动向量的评估值。应当注意,可以使用差值以外的信息来计算评估值。
[0434]
接下来,详细描述模式匹配的示例。首先,通过模式匹配选择包括在mv候选列表(例如,合并列表)中的一个mv候选作为估计的起点。例如,作为模式匹配,可以使用第一模式匹配或第二模式匹配。第一模式匹配和第二模式匹配可以分别被称为双边匹配和模板匹配。
[0435]
(mv推导>fruc>双边匹配)
[0436]
在第一模式匹配中,在沿着当前块的运动轨迹分布并且包括在两个不同参考图片中的两个块之间进行模式匹配。因此,在第一模式匹配中,沿着当前块的运动轨迹的另一参考图片中的区域被用作计算上述候选的评估值的确定区域。所确定的区域可以是预确定的。
[0437]
图44是用于示出沿着运动轨迹的两个参考图片中的两个块之间的第一模式匹配(双边匹配)的一个示例的概念图。如图44所示,在第一模式匹配中,通过以下操作来推导出两个运动向量(mv0、mv1):估计两个不同参考图片(ref0,ref1)中包括的两个块中的对之间的最佳匹配的对,并且这两个运动向量沿当前块(cur块)的运动轨迹分布。更具体地,针对当前块推导出由mv候选指定的第一编码参考图片(ref0)中指定位置处的重构图像与由通过以显示时间间隔对候选mv进行缩放而获得的对称mv指定的第二编码参考图片(ref1)中指定位置处的重构图像之间的差,并使用获得的差值来计算评估值。可以选择多个mv候选之中产生最佳评估值并且可能产生良好结果的mv候选作为最终mv。
[0438]
在连续运动轨迹的假设下,指定两个参考块的运动向量(mv0,mv1)与当前图片
(cur pic)和两个参考图片(ref0,ref1)之间的时间距离(td0,td1)成正比。例如,当当前图片在时间上位于两个参考图片之间并且当前图片到相应两个参考图片的时间距离彼此相等时,在第一模式匹配中推导出镜像对称的双向运动向量。
[0439]
(mv推导>fruc>模板匹配)
[0440]
在第二模式匹配(模板匹配)中,在参考图片中的块和当前图片中的模板之间执行模式匹配(模板是当前图片中与当前块相邻的块(例如,相邻块是上相邻块和/或左相邻块))。因此,在第二模式匹配中,将当前图片中与当前块相邻的块用作用于计算上述mv候选的评估值的确定区域。
[0441]
图45是用于示出当前图片中的模板和参考图片中的块之间的模式匹配(模板匹配)的一个示例的概念图。如图45所示,在第二模式匹配中,通过在参考图片(ref0)中估计与当前图片(cur pic)中的当前块相邻的块最佳匹配的块来推导出当前块(cur块)的运动向量。更具体地,推导出在左相邻并且上相邻或者左相邻或上相邻的编码区域中的重构图像与在编码参考图片(ref0)中的相应区域中并由mv候选指定的重构图像之间的差,并且使用获得的差值来计算评估值。可以选择多个mv候选之中产生最佳评估值的mv候选作为最佳mv候选。
[0442]
可以在cu级别用信号通知这种指示是否应用fruc模式的信息(例如被称为fruc标志)。另外,当应用fruc模式时(例如,当fruc标志为真时),可以在cu级别用信号通知指示可应用的模式匹配方法(例如,第一模式匹配或第二模式匹配)的信息。应当指出的是,此类信息的信令不一定需要在cu级别执行,也可以在其他级别(例如,在序列级别、图片级别、切片级别、瓦片级别、ctu级别或子块级别)执行。
[0443]
(mv推导>仿射模式)
[0444]
仿射模式是使用仿射变换来生成mv的模式。例如,可以基于多个相邻块的运动向量以子块为单位推导出mv。该模式也被称为仿射运动补偿预测模式。
[0445]
图46a是用于示出基于多个相邻块的运动向量以子块为单位的mv推导的一个示例的概念图。在图46a中,当前块包括例如十六个4
×
4子块。这里,基于相邻块的运动向量推导出当前块的左上角控制点的运动向量v0,同样基于相邻子块的运动向量推导出当前块中右上角控制点的运动向量v1。可以根据下面指示的表达式(1a)来投影两个运动向量v0和v1,并且可以推导出当前块中各个子块的运动向量(v
x
,v
y
)。
[0446]
[数学.1]
[0447][0448]
这里,x和y分别表示子块的水平位置和垂直位置,w表示确定的加权系数。确定的加权系数可以是预确定的。
[0449]
可以在cu级别用信号通知这种指示仿射模式的信息(例如,被称为仿射标志)。应当指出的是,指示仿射模式的信息的信令不一定需要在cu级别执行,也可以在其他级别(例如,在序列级别、图片级别、切片级别、瓦片级别、ctu级别或子块级别)执行。
[0450]
此外,仿射模式可以包括用于推导出左上角和右上角控制点处的运动向量的不同方法的几种模式。例如,仿射模式包括两种模式:仿射帧间模式(也被称为仿射正常帧间模
式)和仿射合并模式。
[0451]
(mv推导>仿射模式)
[0452]
图46b是用于示出在其中使用三个控制点的仿射模式中以子块为单位的mv推导的一个示例的概念图。在图46b中,当前块包括例如十六个4
×
4块。这里,基于相邻块的运动向量推导出当前块中左上角控制点的运动向量v0。这里,基于相邻块的运动向量推导出当前块的右上角控制点的运动向量v1,同样基于相邻块的运动向量推导出当前块的左下角控制点的运动向量v2。三个运动向量v0、v1和v2可以根据下面指示的表达式(1b)被投影,并且可以推导出当前块中各个子块的运动向量(v
x
,v
y
)。
[0453]
[数学.2]
[0454][0455]
这里,x和y分别表示子块的水平位置和垂直位置,w和h可以是加权系数,它们可以是预定的加权系数。在一个实施例中,w可以表示当前块的宽度,h可以表示当前块的高度。
[0456]
可以在cu级别切换和用信号通知使用了不同数量的控制点(例如,两个和三个控制点)的仿射模式。应当指出的是,可以在另一个级别(例如,序列级别、图片级别、切片级别、瓦片级别、ctu级别或子块级别)用信号通知指示在cu级别使用的仿射模式中的控制点数量的信息。
[0457]
此外,这种使用三个控制点的仿射模式可以包括用于推导出左上角、右上角和左下角控制点处的运动向量的不同方法。例如,与使用两个控制点的仿射模式的情况一样,使用三个控制点的仿射模式可以包括仿射帧间模式和仿射合并模式这两种模式。
[0458]
应当指出的是,在仿射模式下,当前块包含的每个子块的大小可以不限于4
×
4像素,也可以是其他大小。例如,每个子块的大小可以是8
×
8像素。
[0459]
(mv推导>仿射模式>控制点)
[0460]
图47a、图47b和图47c是用于示出仿射模式中控制点处的mv推导的示例的概念图。
[0461]
如图47a所示,在仿射模式中,例如,基于编码块a中与和当前块相邻的编码块a(左)、块b(上)、块c(右上)、块d(左下)和块e(左上)之中的根据仿射模式编码的块相对应的多个运动向量来计算当前块的各个控制点处的运动向量预测器。更具体地,按照列出的顺序检查编码块a(左)、块b(上)、块c(右上)、块d(左下)和块e(左上),并且识别按照仿射模式编码的第一个有效块。当前块的控制点处的运动向量预测值是基于与所识别的块相对应的多个运动向量来计算的。
[0462]
例如,如图47b所示,当与当前块左侧相邻的块a已根据使用了两个控制点的仿射模式进行了编码时,推导出投影在包括块a的编码块的左上角位置和右上角位置处的运动向量v3和v4。然后根据推导出的运动向量v3和v4计算当前块左上角控制点处的运动向量v0和当前块右上角控制点处的运动向量v1。
[0463]
例如,如图47c所示,当与当前块左侧相邻的块a已根据使用了三个控制点的仿射模式进行了编码时,推导出投影在包括块a的编码块的左上角位置、右上角位置和左下角位置处的运动向量v3、v4和v5。然后根据推导出的运动向量v3、v4和v5计算当前块左上角控制点处的运动向量v0,当前块右上角控制点处的运动向量v1,以及当前块左下角控制点处的运动
向量v2。
[0464]
图47a至47c所示的mv推导方法可以用于图50所示的步骤sk_1中当前块的每个控制点的mv推导,或者可以用于在后面描述的图51所示的步骤sj_1中当前块的每个控制点处的mv预测器推导。
[0465]
图48a和48b是用于示出仿射模式中控制点处的mv推导的示例的概念图。
[0466]
图48a是用于示出在其中使用两个控制点的示例仿射模式的概念图。
[0467]
在仿射模式中,如图48a所示,从与当前块相邻的编码块a、块b和块c处的mv中选择的mv用作当前块左上角控制点处的运动向量v0。同样,从与当前块相邻的编码块d和块e的mv中选择的mv用作当前块右上角控制点处的运动向量v1。
[0468]
图48b是用于示出在其中使用三个控制点的示例仿射模式概念图。
[0469]
在仿射模式中,如图48b所示,从与当前块相邻的编码块a、块b和块c处的mv中选择的mv用作当前块左上角控制点处的运动向量v0。同样,从与当前块相邻的编码块d和块e的mv中选择的mv用作当前块右上角控制点处的运动向量v1。此外,从与当前块相邻的编码块f和块g的mv中选择的mv用作当前块左下角控制点处的运动向量v2。
[0470]
应当指出的是,图48a和图48b所示的mv推导方法可以用于后面描述的图50所示的步骤sk_1中当前块的每个控制点的mv推导稍后描述,或者可以用于在后面描述的图51所示的步骤sj_1中当前块的每个控制点处的mv预测器推导。
[0471]
这里,当可以在cu级别切换和用信号通知使用了不同数量的控制点(例如,两个和三个控制点)的仿射模式,编码块的控制点数和当前块的控制点数可以彼此不同。
[0472]
图49a和图49b是用于示出当用于经编码块的控制点的数量和用于当前块的控制点的数量彼此不同时控制点处的mv推导的方法的示例的概念图。
[0473]
例如,如图49a所示,当前块在左上角、右上角和左下角具有三个控制点,并且左下角以及与当前块左侧相邻的块a已根据仿射模式进行了编码,其中使用了两个控制点。在这种情况下,推导出投影在包括块a的编码块中的左上角位置和右上角位置处的运动向量v3和v4。然后根据推导出的运动向量v3和v4计算当前块左上角控制点处的运动向量v0和右上角控制点处的运动向量v1。此外,根据推导出的运动向量v0和v1计算左下角控制点处的运动向量v2。
[0474]
例如,如图49b所示,当前块在左上角和右上角具有两个控制点,并且右上角以及与当前块左侧相邻的块a已根据仿射模式进行了编码,其中使用了两个控制点。在这种情况下,推导出投影在包括块a的编码块中的左上角位置处、编码块中的右上角位置处和编码块中的左下角位置处的运动向量v3、v4和v5。然后根据推导出的运动向量v3、v4和v5计算当前块左上角控制点处的运动向量v0和当前块右上角控制点处的运动向量v1。
[0475]
应当指出的是,图49a和图49b所示的mv推导方法可以用于后面描述的图50所示的步骤sk_1中当前块的每个控制点的mv推导稍后描述,或者可以用于在后面描述的图51所示的步骤sj_1中当前块的每个控制点处的mv预测器推导。
[0476]
(mv推导>仿射模式>仿射合并模式)
[0477]
图50是示出仿射合并模式中的过程的一个示例的流程图。
[0478]
在如图所示的仿射合并模式中,首先,帧间预测器126推导出当前块的各个控制点处的mv(步骤sk_1)。控制点是当前块的左上角点和当前块的右上角点,如图46a所示,或者
当前块的左上角点、当前块的右上角点以及当前块的左下角点,如图46b所示。帧间预测器126可以对mv选择信息进行编码以标识流中的两个或三个推导出的mv。
[0479]
例如,当使用图47a至47c所示的mv推导方法时,如图47a所示,帧间预测器126检查编码块a(左)、块b(上)、块c右上)、块d(左下)和块e(左上),并识别根据仿射模式编码的第一个有效块。
[0480]
帧间预测器126使用根据所识别的仿射模式编码的所识别的第一有效块来推导出控制点处的mv。例如,当块a被识别并且块a具有两个控制点时,如图47b所示,帧间预测器126根据包括块a的编码块左上角处以及编码块右上角处的运动向量v3和v4来计算当前块左上角控制点处的运动向量v0以及当前块右上角控制点处的运动向量v1。例如,帧间预测器126通过将编码块左上角和右上角处的运动向量v3和v4投影到当前块上来计算当前块左上角控制点处的运动向量v0以及当前块右上角控制点处的运动向量v1。
[0481]
或者,当块a被识别并且块a具有三个控制点时,如图47c所示,帧间预测器126根据包括块a的编码块左上角处、编码块右上角处以及编码块左下角处的运动向量v3、v4和v5来计算当前块左上角控制点处的运动向量v0、当前块右上角控制点处的运动向量v1以及当前块左下角控制点处的运动向量v2。例如,帧间预测器126通过将编码块左上角、右上角以及左下角处的运动向量v3、v4和v5投影到当前块上来计算当前块左上角控制点处的运动向量v0、当前块右上角控制点处的运动向量v1以及当前块左下角控制点处的运动向量v2。
[0482]
应当指出的是,如上述图49a所示,当块a被识别并且块a具有两个控制点时,可以计算三个控制点处的mv,并且如上述图49b所示,当块a被识别并且块a具有三个控制点时,可以计算两个控制点处的mv。
[0483]
接下来,帧间预测器126对当前块中包括的多个子块中的每个子块执行运动补偿。换言之,帧间预测器126例如使用两个运动向量v0和v1以及上述表达式(1a)或三个运动向量v0、v1和v2以及上述表达式(1b)计算多个子块中的每个子块的mv作为仿射mv(步骤sk_2)。帧间预测器126然后使用这些仿射mv和编码参考图片来执行子块的运动补偿(步骤sk_3)。在针对当前块中包括的所有子块中的每个子块执行步骤sk_2和sk_3中的过程时,用于对当前块使用仿射合并模式来生成预测图像的过程结束。换言之,执行当前块的运动补偿以生成当前块的预测图像。
[0484]
应当指出的是,可以在步骤sk_1中生成上述mv候选列表。mv候选列表可以是例如,包括使用针对每个控制点的多种mv推导出方法推导出的mv候选的列表。多个mv推导方法例如可以是图47a至47c所示的mv推导方法、图48a和48b所示的mv推导方法、图49a和49b所示的mv推导方法以及其他mv推导方法的任意组合。
[0485]
应当指出的是,除了仿射模式之外,mv候选列表可以包括以子块为单位执行预测的模式中的mv候选。
[0486]
应当指出的是,例如,可以在使用两个控制点的仿射合并模式和使用三个控制点的仿射合并模式中生成包括mv候选的mv候选列表作为mv候选列表。或者,可以分别生成包括使用两个控制点的仿射合并模式下的mv候选的mv候选列表和包括使用三个控制点的仿射合并模式下的mv候选的mv候选列表。或者,可以在使用两个控制点的仿射合并模式和使用三个控制点的仿射合并模式之一中生成包括mv候选的mv候选列表。mv候选可以是例如用于编码块a(左)、块b(上)、块c(右上)、块d(左下)和块e(左上)的mv,或这些块之中有效块的
mv。
[0487]
应当指出的是,指示mv候选列表中的mv之一的索引可以作为mv选择信息被发送。
[0488]
(mv推导>仿射模式>仿射帧间模式)
[0489]
图51是示出仿射帧间模式中的过程的一个示例的流程图。
[0490]
在仿射帧间模式中,首先,帧间预测器126推导出当前块的相应两个或三个控制点的mv预测值(v0,v1)或(v0,v1,v2)(步骤sj_1)。如图46a或图46b所示,控制点可以是例如当前块的左上角点、当前块的右上角点和当前块的左下角点。
[0491]
例如,当使用图48a和48b中所示的mv推导方法时,帧间预测器126通过在图48a或图48b所示的当前块的各个控制点附近的编码块之中选择任意块的mv,在当前块的相应两个或三个控制点处推导出mv预测器(v0,v1)或(v0,v1,v2)。此时,帧间预测器126在流中对用于标识所选择的两个或三个mv预测器的mv预测器选择信息进行编码。
[0492]
例如,帧间预测器126可以使用成本评估等从与当前块相邻的编码块之中确定从其选择了一个mv作为控制点处的mv预测器的块,并且可以在比特流中写入指示已选择了哪个mv预测器的标志。换言之,帧间预测器126通过预测参数生成器130将mv预测器选择信息(例如标志)作为预测参数输出到熵编码器110。
[0493]
接下来,帧间预测器126执行运动估计(步骤sj_3和sj_4),同时更新在步骤sj_1中选择或推导出的mv预测器(步骤sj_2)。换言之,帧间预测器126使用上述表达式(1a)或表达式(1b)来计算与更新的mv预测器相对应的每个子块的mv作为仿射mv(步骤sj_3)。帧间预测器126然后使用这些仿射mv和编码参考图片来执行子块的运动补偿(步骤sj_4)。当在步骤sj_2中更新mv预测器时,对当前块中的所有块执行步骤sj_3和sj_4中的过程。结果,例如,帧间预测器126将产生最小成本的mv预测器确定为运动估计循环中控制点处的mv(步骤sj_5)。此时,帧间预测器126还在流中将确定的mv和mv预测器之间的差编码为mv差。换言之,帧间预测器126通过预测参数生成器130将mv差作为预测参数输出到熵编码器110。
[0494]
最后,帧间预测器126通过使用确定的mv和编码参考图片执行当前块的运动补偿来生成当前块的预测图像(步骤sj_6)。
[0495]
应当指出的是,可以在步骤sj_1中生成上述mv候选列表。mv候选列表可以是例如,包括使用针对每个控制点的多种mv推导出方法推导出的mv候选的列表。多个mv推导方法例如可以是图47a至47c所示的mv推导方法、图48a和48b所示的mv推导方法、图49a和49b所示的mv推导方法以及其他mv推导方法的任意组合。
[0496]
应当指出的是,除了仿射模式之外,mv候选列表可以包括以子块为单位执行预测的模式中的mv候选。
[0497]
应当指出的是,例如,可以在使用两个控制点的仿射帧间模式和使用三个控制点的仿射帧间模式中生成包括mv候选的mv候选列表作为mv候选列表。或者,可以分别生成包括使用两个控制点的仿射帧间模式下的mv候选的mv候选列表和包括使用三个控制点的仿射帧间模式下的mv候选的mv候选列表。或者,可以在使用两个控制点的仿射帧间模式和使用三个控制点的仿射帧间模式之一中生成包括mv候选的mv候选列表。mv候选可以是例如用于编码块a(左)、块b(上)、块c(右上)、块d(左下)和块e(左上)的mv,或这些块之中有效块的mv。
[0498]
应当指出的是,指示mv候选列表中的mv候选之一的索引可以作为mv预测器选择信
息被发送。
[0499]
(mv推导>三角形模式)
[0500]
在上述示例中,帧间预测器126针对当前矩形块生成一个矩形预测图像。然而,帧间预测器126可以生成多个预测图像,每个预测图像的形状与当前矩形块的矩形不同,并且可以组合多个预测图像以生成最终的矩形预测图像。与矩形不同的形状可以是例如三角形。
[0501]
图52a是用于示出生成两个三角形预测图像的概念图。
[0502]
帧间预测器126通过使用第一分区的第一mv对当前块中具有三角形形状的第一分区执行运动补偿来生成三角形预测图像,以生成三角形预测图像。同样地,帧间预测器126通过使用第二分区的第二mv对当前块中具有三角形形状的第二分区执行运动补偿来生成三角形预测图像,以生成三角形预测图像。帧间预测器126然后通过对这些预测图像进行组合来生成具有与当前块的矩形状相同的矩形状的预测图像。
[0503]
应当指出的是,可以使用第一mv生成具有与当前块相对应的矩形状的第一预测图像作为第一分区的预测图像。此外,可以使用第二mv生成具有与当前块的矩形状相对应的第二预测图像作为第二分区的预测图像。可以通过执行第一预测图像和第二预测图像的加权相加来生成当前块的预测图像。应当指出的是,加权相加的部分可以是跨越第一分区和第二分区边界的部分区域。
[0504]
图52b是用于示出与第二分区重叠的第一分区的第一部分以及可作为校正过程的一部分被加权的第一和第二组样本的示例的概念图。第一部分可以是例如第一分区的宽度或高度的四分之一。在另一示例中,第一部分可以具有对应于与第一分区的边缘相邻的n个样本的宽度,其中n是大于零的整数,例如,n可以是整数2。如图所示,图52b的左侧示例示出了矩形分区,其宽度是第一分区的宽度的四分之一,其中,第一组样本包括第一部分之外的样本和第一部分内部的样本,第二组样本包括第一部分内的样本。图52b的中心示例示出了矩形分区,其高度是第一分区的高度的四分之一,其中,第一组样本包括第一部分之外的样本和第一部分内部的样本,第二组样本包括第一部分内的样本。图52b的右侧示例是除了具有多边形部分的三角形分区,其高度对应于两个样本,其中,第一组样本包括第一部分之外的样本和第一部分内部的样本,第二组样本包括第一部分内的样本。
[0505]
第一部分可以是第一分区的与相邻分区重叠的部分。图52c是用于示出第一分区的第一部分的概念图,该第一部分是第一分区的与相邻分区的一部分重叠的部分。为了便于说明,示出了具有与空间相邻的矩形分区重叠部分的矩形分区。可以采用具有其他形状的分区,例如三角形分区,并且重叠部分可以与空间或时间上相邻的分区重叠。
[0506]
此外,虽然给出了使用帧间预测为两个分区中的每个分区生成预测图像的示例,但是可以使用帧内预测为至少一个分区生成预测图像。
[0507]
图53是示出三角形模式中的过程的一个示例的流程图。
[0508]
在三角形模式中,首先,帧间预测器126将当前块拆分成第一分区和第二分区(步骤sx_1)。此时,帧间预测器126可以将作为与拆分成分区相关的信息的分区信息编码在流中作为预测参数。换言之,帧间预测器126可以通过预测参数生成器130将分区信息作为预测参数输出到熵编码器110。
[0509]
首先,帧间预测器126基于诸如时间上或空间上围绕当前块的多个编码块的mv之
类的信息来获得当前块的多个mv候选(步骤sx_2)。换言之,帧间预测器126生成mv候选列表。
[0510]
帧间预测器126然后从在步骤sx_1中获得的多个mv候选中分别选择第一分区的mv候选和第二分区的mv候选作为第一mv和第二mv(步骤sx_3)。此时,帧间预测器126在流中对用于识别所选择的mv候选的mv选择信息进行编码作为预测参数。换言之,帧间预测器126通过预测参数生成器130将mv选择信息作为预测参数输出到熵编码器110。
[0511]
接下来,帧间预测器126通过使用所选择的第一mv和编码参考图片执行运动补偿来生成第一预测图像(步骤sx_4)。同样地,帧间预测器126通过使用所选择的第二mv和编码参考图片执行运动补偿来生成第二预测图像(步骤sx_5)。
[0512]
最后,帧间预测器126通过执行第一预测图像和第二预测图像的加权相加来生成当前块的预测图像(步骤sx_6)。
[0513]
应当指出的是,虽然在图52a所示的示例中第一分区和第二分区是三角形,但是第一分区和第二分区可以是梯形,或者彼此不同的其他形状。此外,尽管在图52a和52c所示的示例中当前块包括两个分区,但是当前块可以包括三个或更多个分区。
[0514]
此外,第一分区和第二分区可以彼此重叠。换言之,第一分区和第二分区可以包括相同的像素区域。在这种情况下,可以使用第一分区中的预测图像和第二分区中的预测图像来生成当前块的预测图像。
[0515]
此外,虽然已经示出了使用帧间预测为两个分区中的每个分区生成预测图像的示例,但是可以使用帧内预测为至少一个分区生成预测图像。
[0516]
应当指出的是,用于选择第一mv的mv候选列表和用于选择第二mv的mv候选列表可以彼此不同,或者用于选择第一mv的mv候选列表也可以用作用于选择第二mv的mv候选列表。
[0517]
应当指出的是,分区信息可以包括指示至少当前块被拆分成多个分区的拆分方向的索引。mv选择信息可以包括指示所选择的第一mv的索引和指示所选择的第二mv的索引。一个索引可以指示多条信息。例如,可以对共同指示分区信息的一部分或全部以及mv选择信息的一部分或全部的一个索引进行编码。
[0518]
(mv推导>atmvp模式)
[0519]
图54是用于示出其中以子块为单位推导出mv的高级时间运动向量预测(atmvp)模式的一个示例的概念图。
[0520]
atmvp模式是归类为合并模式的模式。例如,在atmvp模式中,每个子块的mv候选被注册在mv候选列表中以用于正常合并模式。
[0521]
更具体地,在atmvp模式中,首先,如图54所示,在由相对于当前块位于左下位置的相邻块的mv(mv0)指定的编码参考图片中识别与当前块相关联的时间mv参考块。接下来,在当前块中的每个子块中,识别用于对时间mv参考块中的子块相应区域进行编码的mv。以此方式识别的mv作为当前块中子块的mv候选包括在mv候选列表中。当从mv候选列表中选择每个子块的mv候选时,对子块进行运动补偿,其中mv候选用作子块的mv。这样,生成了每个子块的预测图像。
[0522]
尽管在图54所示的示例中,相对于当前块位于左下位置的块被用作周围mv参考块,应当指出的是,可以使用另一个块。另外,子块的大小可以是4
×
4像素、8
×
8像素或其他
大小。子块的大小可以以切片、块、图片等为单位进行切换。
[0523]
(mv推导>dmvr)
[0524]
图55是示出合并模式和解码运动向量细化dmvr之间的关系的流程图。
[0525]
帧间预测器126根据合并模式推导出当前块的运动向量(步骤s1_1)。接下来,帧间预测器126确定是否执行运动向量的估计,即运动估计(步骤s1_2)。这里,当确定不执行运动估计时(步骤s1_2中的否),帧间预测器126确定在步骤s1_1中推导出的运动向量作为当前块的最终运动向量(步骤s1_4)。换言之,在这种情况下,当前块的运动向量是根据合并模式确定的。
[0526]
当在步骤sl_1中确定执行运动估计时(步骤sl_2中的是),帧间预测器126通过估计由在步骤sl_1中推导出的运动向量指定的参考图片的周围区域来推导出当前块的最终运动向量(步骤sl_3)。换言之,在这种情况下,当前块的运动向量是根据dmvr确定的。
[0527]
图56是用于示出用于确定mv的dmvr过程的一个示例的概念图。
[0528]
首先,例如在合并模式中,为当前块选择mv候选(l0和l1)。根据mv候选(l0)从第一参考图片(l0)(其为l0列表中的编码图片)中识别参考像素。同样地,根据mv候选(l1)从第一参考图片(l1)(其为l1列表中的编码图片)中识别参考像素。通过计算这些参考像素的平均值来生成模板。
[0529]
接下来,使用模板来估计第一参考图片(l0)和第二参考图片(l1)的mv候选的每个周围区域,并且将产生最小成本的mv确定为最终mv。应当指出的是,可以例如利用模板中的每个像素值与估计区域中的相应像素值之间的差值、mv候选的值等来计算成本。
[0530]
并不总是需要执行此处描述的完全相同的过程。可以使用用于通过在mv候选的周围区域中的估计来实现最终mv的推导的其他过程。
[0531]
图57是用于示出用于确定mv的dmvr的另一示例的概念图。与图56所示的dmvr的示例不同,在图57所示的示例中,在不生成模板的情况下计算成本。
[0532]
首先,帧间预测器126基于初始mv(其是从每个mv候选列表获得的mv候选)来估计包括在l0列表和l1列表中的每个参考图片中的参考块的周围区域。例如,如图57所示,与l0列表中参考块相对应的初始mv为initmv_l0,与l1列表中的参考块相对应的初始mv为initmv_l1。在运动估计中,帧间预测器126首先为l0列表中的参考图片设置搜索位置。基于指示搜索位置的向量差所指示的位置,具体为初始mv(即initmv_l0,与搜索位置的向量差为mvd_l0)。帧间预测器126然后确定l1列表中参考图片中的估计位置。该搜索位置由与初始mv(即initmv_l1)指示的位置的搜索位置的向量差表示。更具体地,帧间预测器126通过mvd_l0的镜像将向量差确定为mvd_l1。换言之,帧间预测器126将关于由初始mv指示的位置对称的位置确定为l0列表和l1列表中的每个参考图片中的搜索位置。帧间预测器126针对每个搜索位置计算块中搜索位置处像素值之间的绝对差(sad)的总和作为成本,并找出产生最小成本的搜索位置。
[0533]
图58a是用于示出dmvr中运动估计的一个示例的概念图,并且图58b是示出运动估计过程的一个示例的流程图。
[0534]
首先,在步骤1中,帧间预测器126计算由初始mv指示的搜索位置(也被称为起点)与八个周围搜索位置之间的成本。帧间预测器126然后确定除起点之外的每个搜索位置处的成本是否最小。这里,当确定除起点之外的搜索位置处的成本最小时,帧间预测器126将
目标改变为获得最小成本的搜索位置,并执行步骤2中的过程。当起点处的成本最小时,帧间预测器126跳过步骤2中的过程并执行步骤3中的过程。
[0535]
在步骤2中,帧间预测器126执行类似于步骤1中的过程的搜索,根据步骤1中的过程的结果,将目标改变后的搜索位置作为新的起点。帧间预测器126然后确定除起点之外的每个搜索位置处的成本是否最小。这里,当确定除起点之外的搜索位置处的成本最小时,帧间预测器126执行步骤4中的过程。当起点处的成本最小时,帧间预测器126执行步骤3中的过程。
[0536]
在步骤4中,帧间预测器126将起点处的搜索位置视为最终搜索位置,并将由初始mv指示的位置与最终搜索位置之间的差确定为向量差。
[0537]
在步骤3中,帧间预测器126基于相对于步骤1或步骤2中起点的上、下、左、右位置处的四个点处的成本,以获得最小成本的子像素精度来确定像素位置,并将像素位置视为最终搜索位置。对上、下、左、右四个向量((0,1),(0,
‑
1),(
‑
1,0)以及(1,0))中的每一个向量进行加权相加,使用四个搜索位置中相应位置处的成本作为权重,确定了子像素精度下的像素位置。帧间预测器126然后将初始mv指示的位置与最终搜索位置之间的差确定为向量差。
[0538]
(运动补偿>bio/obmc/lic)
[0539]
运动补偿涉及用于生成预测图像并校正预测图像的模式。模式例如是双向光流(bio)、重叠块运动补偿(obmc)、局部光照补偿(lic)等,将在后面描述。
[0540]
图59是示出生成预测图像的过程的一个示例的流程图。
[0541]
帧间预测器126生成预测图像(步骤sm_1),并且,例如,根据例如上述任一模式来校正预测图像(步骤sm_2)。
[0542]
图60是示出生成预测图像的过程的另一示例的流程图。
[0543]
帧间预测器126确定当前块的运动向量(步骤sn_1)。接下来,帧间预测器126使用运动向量生成预测图像(步骤sn_2),并确定是否执行校正过程(步骤sn_3)。这里,当确定执行校正过程时(步骤sn_3中的是),帧间预测器126通过校正预测图像来生成最终预测图像(步骤sn_4)。应当指出的是,在后面描述的lic中,可以在步骤sn_4中对亮度和色度进行校正。当确定不执行校正过程时(步骤sn_3中的否),帧间预测器126输出预测图像作为最终预测图像而不校正预测图像(步骤sn_5)。
[0544]
(运动补偿>obmc)
[0545]
应当指出的是,除了通过运动估计获得的当前块的运动信息之外,还可以使用相邻块的运动信息来生成帧间预测图像。更具体地,通过将基于运动估计获得的运动信息的预测图像(在参考图片中)与基于相邻块的运动信息(在当前图片中)的预测图像进行加权相加,可以为当前块中的每个子块生成帧间预测图像。这种帧间预测(运动补偿)也被称为重叠块运动补偿(obmc)或obmc模式。
[0546]
在obmc模式中,可以在序列级别用信号通知指示用于obmc的子块大小的信息(例如,被称为obmc块大小)。此外,可以在cu级别用信号通知指示是否应用obmc模式的信息(例如,被称为obmc标志)。应当指出的是,此类信息的信令不一定需要在序列级别和cu级别执行,也可以在其他级别(例如,在图片级别、切片级别、瓦片级别、ctu级别或子块级别)执行。
[0547]
将更详细地描述obmc模式。图61和图62是用于示出由obmc执行的预测图像校正过
程的概要的流程图和概念图。
[0548]
首先,如图62所示,获得使用分配给当前块的mv获得经正常运动补偿的预测图像(pred)。在图62中,箭头“mv”指向参考图片,并且指示当前图片的当前块为了获得预测图像而参考什么。
[0549]
接下来,通过将已经针对与当前块左侧相邻的编码块推导出的运动向量(mv_l)应用于当前块(重新使用当前块的运动向量)来获得预测图像(pred_l)。运动向量(mv_l)由箭头“mv_l”指示,该箭头指示来自当前块的参考图片。通过对两个预测图像pred和pred_l进行重叠来执行预测图像的第一次校正。这提供了使相邻块之间的边界相混合的效果。
[0550]
同样地,通过将已经针对与当前块上方相邻的编码块推导出的mv(mv_u)应用于当前块(重新使用当前块的mv)来获得预测图像(pred_u)。mv(mv_u)由箭头“mv_u”指示,该箭头指示来自当前块的参考图片。通过将预测图像pred_u重叠到已经对其执行了第一次校正的预测图像(例如,pred和pred_l)来执行预测图像的第二次校正。这提供了使相邻块之间的边界相混合的效果。第二次校正得到的预测图像是相邻块之间的边界已经混合(平滑)的图像,因此是当前块的最终预测图像。
[0551]
虽然上述示例是使用左相邻块和上相邻块的双路径校正方法,但需要注意的是,校正方法可以是同时使用右相邻块和/或下相邻块的三路径或更多路径校正方法。
[0552]
应当指出的是,进行这种重叠的区域可以只是块边界附近区域的一部分,而不是整个块的像素区域。
[0553]
应当指出的是,上面已经描述了根据obmc的用于通过对附加预测图像pred_l和pred_u进行重叠从一张参考图片获得一张预测图像pred的预测图像校正过程。然而,当基于多个参考图像来校正预测图像时,可以对多个参考图片中的每一个应用类似的过程。在这种情况下,在通过基于多张参考图片执行obmc图像校正而从各个参考图片中得到经校正的预测图像之后,将得到的经校正的预测图像进一步重叠,以得到最终的预测图像。
[0554]
应当指出的是,在obmc中,当前块单元可以是pu,也可以是将pu进一步拆分得到的子块单元。
[0555]
用于确定是否应用obmc的方法的一个示例是使用obmc_flag的方法,obmc_flag是指示是否应用obmc的信号。作为一个具体示例,编码器100可以确定当前块是否属于具有复杂运动的区域。编码器100在块属于具有复杂运动的区域时将obmc_flag设置为“1”值并在编码时应用obmc,当块不属于具有复杂运动的区域时将obmc_flag设置为“0”值并在不应用obmc的情况下对块进行编码。解码器200通过对写入流中的obmc_flag进行解码在obmc的应用和非应用之间进行切换。
[0556]
(运动补偿>bio)
[0557]
接下来,描述mv推导方法。首先,描述用于基于假设匀速直线运动的模型来推导mv的模式。这种模式也被称为双向光流(bio)模式。另外,该双向光流可以写成bdof而不是bio。
[0558]
图63是用于示出假设匀速直线运动的模型的概念图。在图63中,(v
x
,v
y
)表示速度向量,τ0和τ1表示当前图片(cur pic)和两个参考图片(ref0,ref1)之间的时间距离。(mv
x0
,mv
y0
)表示与参考图片ref0相对应的mv,(mv
x1
,mv
y1
)表示与参考图片ref1相对应的mv。
[0559]
在这里,假设由速度向量(v
x
,v
y
)表现出匀速直线运动,(mv
x0
,mv
y0
)和(mv
x1
,mv
y1
)
分别表示为(v
xτ0
,v
yτ0
)和(
‑
v
xτ1
,
‑
v
yτ1
),并给出以下光流方程(2)。
[0560]
[数学.3]
[0561][0562]
这里,i(k)表示经运动补偿的参考图片k(k=0、1)的运动补偿亮度值。该光流方程表明(i)亮度值的时间导数,(ii)水平速度与参考图像空间梯度的水平分量的乘积,以及(iii)垂直速度与参考图像空间梯度垂直分量的乘积为零。基于光流方程和hermite插值的组合,可以以像素为单位校正从例如mv候选列表获得的每个块的运动向量。
[0563]
应当指出的是,可以在解码器侧200使用不同于基于假设均匀线性运动的模型推导出运动向量的方法推导出运动向量。例如,可以基于多个相邻块的运动向量以子块为单位推导出运动向量。
[0564]
图64是示出根据bio的帧间预测过程的一个示例的流程图。图65是示出可以根据bio执行帧间预测的帧间预测器126的功能配置的一个示例的功能框图。
[0565]
如图65所示,帧间预测器126包括例如存储器126a、差值图像推导器126b、梯度图像推导器126c、光流推导器126d、校正值推导器126e以及预测图像校正器126f。应当指出的是,存储器126a可以是帧存储器122。
[0566]
帧间预测器126使用与包括当前块的图片(cur pic)不同的两个参考图片(ref0、ref1)推导出两个运动向量(m0、m1)。帧间预测器126然后使用两个运动向量(m0、m1)推导出当前块的预测图像(步骤sy_1)。应当指出的是,运动向量m0是与参考图片ref0相对应的运动向量(mv
x0
、mv
y0
),运动向量m1是与参考图片ref1相对应的运动向量(mv
x1
、mv
y1
)。
[0567]
接下来,差值图像推导器126b通过参考存储器126a使用运动向量m0和参考图片l0推导出当前块的差值图像i0。接着,差值图像推导器126b通过参考存储器126a使用运动向量m1和参考图片l1推导出当前块的差值图像i1(步骤sy_2)。这里,差值图像i0是包括在参考图片ref0中并且要针对当前块推导出的图像,并且差值图像i1是包括在参考图片ref1中并且要针对当前块推导出的图像。差值图像i0和差值图像i1中的每一个在尺寸上可以与当前块相同。或者,差值图像i0和差值图像i1中的每一个都可以是比当前块更大的图像。此外,差值图像i0和差值图像i1可以包括通过使用运动向量(m0、m1)和参考图片(l0,l1)并应用运动补偿滤波器而获得的预测图像。
[0568]
另外,梯度图像推导器126c从差值图像i0和差值图像i1推导出当前块的梯度图像(ix0、ix1、iy0、iy1)(步骤sy_3)。应当指出的是,水平方向的梯度图像为(ix0,ix1),垂直方向的梯度图像为(iy0,iy1)。梯度图像推导器126c可以通过例如将梯度滤波器应用于差值图像来推导出每个梯度图像。梯度图像可指示像素值沿水平方向、沿垂直方向或沿这两个方向的空间变化量。
[0569]
接下来,光流推导器126d使用插值图像(i0,i1)和梯度图像(ix0、ix1、iy0、iy1)为当前块的每个子块推导出为速度向量的光流(vx,vy)(步骤sy_4)。光流指示用于校正空间像素移动量的系数,并且可以被称为局部运动估计值、经校正运动向量或经校正加权向量。作为一个示例,子块可以是4
×
4像素子cu。应当指出的是,光流推导可以针对每个像素单元等来进行,而不是针对每个子块进行。
[0570]
接下来,帧间预测器126使用光流(vx,vy)来校正当前块的预测图像。例如,校正值推导器126e使用光流(vx,vy)推导出当前块中包括的像素值的校正值(步骤sy_5)。预测图
像校正器126f然后可以使用校正值来校正当前块的预测图像(步骤sy_6)。应当指出的是,可以以像素为单位来推导校正值,也可以以多个像素为单位或以子块为单位来推导校正值。
[0571]
应当指出的是,bio过程流程不限于图64中公开的过程。例如,可以仅执行图64中公开的部分过程,或者可以添加或使用不同的过程作为替代,或者可以以不同的处理顺序来执行这些过程,等等。
[0572]
(运动补偿>lic)
[0573]
接下来,描述用于使用局部照明补偿(lic)过程来生成预测图像(预测)的模式的一个示例。
[0574]
图66a是用于示出使用由lic执行的亮度校正过程的预测图像生成方法的过程的一个示例的概念图。图66b是示出使用lic的预测图像生成方法的过程的一个示例的流程图。
[0575]
首先,帧间预测器126从编码参考图片推导出mv,并获得与当前块相对应的参考图像(步骤sz_1)。
[0576]
接下来,帧间预测器126针对当前块提取指示当前块和参考图片之间亮度值如何变化的信息(步骤sz_2)。该提取是基于当前图片中经编码的左相邻参考区域(周围参考区域)和经编码的上相邻参考区域(周围参考区域)的亮度像素值,以及由推导出的mv指定的参考图片中相应位置处的亮度像素值来执行的。帧间预测器126使用指示亮度值如何改变的信息来计算亮度校正参数(步骤sz_3)。
[0577]
帧间预测器126通过执行亮度校正过程来生成当前块的预测图像,在该过程中亮度校正参数被应用于由mv指定的参考图片中的参考图像(步骤sz_4)。换言之,基于亮度校正参数对预测图像(其是由mv指定的参考图片中的参考图像)进行校正。在该校正中,可以校正亮度,或者可以校正色度,或者可以校正这二者。换言之,可以使用指示色度如何改变的信息来计算色度校正参数,并且可以执行色度校正过程。
[0578]
应当指出的是,图66a所示的周围参考区域的形状是一个示例;可以使用另一种形状。
[0579]
此外,尽管这里描述了根据单个参考图片生成预测图像的处理,但是可以以相同方式描述根据多个参考图片生成预测图像的情况。可以在以与上述相同的方式对从参考图片获得的参考图像执行亮度校正过程之后生成预测图像。
[0580]
用于确定是否应用lic的方法的一个示例是使用lic_flag的方法,lic_flag是指示是否应用所述lic的信号。作为一个具体示例,编码器100确定当前块是否属于具有亮度变化的区域。编码器100在块属于具有亮度变化的的区域时将lic_flag设置为“1”值并在编码时应用lic,当块不属于具有亮度变化的区域时将lic_flag设置为“0”值并在不应用lic的情况下执行编码。解码器200可通过根据标志值在应用和不应用lic之间进行切换来对写入流中的lic_flag进行解码并解码当前块。
[0581]
确定是否应用lic过程的不同方法的一个示例是根据是否已对周围块应用了lic过程的确定方法。作为一个具体示例,在当前块已经在合并模式下被处理时,帧间预测器126确定在合并模式下的mv推导中选择的经编码周围块是否已经被使用lic进行了编码。帧间预测器126通过根据结果在应用和不应用lic之间进行切换来执行编码。应当指出的是,
也在该示例中,在解码器200侧的过程中应用相同的过程。
[0582]
已经参考图66a和图66b描述了亮度校正(lic)过程,并且在下面对其进一步描述。
[0583]
首先,帧间预测器126从参考图片(其为编码图片)推导出用于获得与待编码的当前块相对应的参考图像的mv。
[0584]
接下来,帧间预测器126使用与当前块的左侧和上方相邻的经编码周围参考区域的亮度像素值以及由mv指定的参考图片中相应位置的亮度值来提取指示参考图片的亮度值如何改变为当前图片的亮度值的信息,并计算亮度校正参数。例如,假设当前图片中周围参考区域中给定像素的亮度像素值为p0,并且与参考图片中周围参考区域中的给定像素相对应的像素的亮度像素值是p1。帧间预测器126计算用于优化a
×
p1 b=p0的系数a和b作为周围参考区域中的多个像素的亮度校正参数。
[0585]
接下来,帧间预测器126使用由mv指定的参考图片中的参考图像的亮度校正参数来执行亮度校正处理,以生成当前块的预测图像。例如,假设参考图像中的亮度像素值为p2,预测图像的经亮度校正的亮度像素值为p3。帧间预测器126通过针对参考图像中的每个像素计算a
×
p2 b=p3,在经历亮度校正过程之后生成预测图像。
[0586]
例如,具有从上相邻像素和左相邻像素中的每一个提取的确定数量的像素的区域可以用作周围参考区域。另外,周围参考区域不限于与当前块相邻的区域,也可以是不与当前块相邻的区域。在图66a所示的示例中,参考图片中的周围参考区域可以是当前图片中由另一mv指定的区域,来自当前图片中的周围参考区域。例如,另一个mv可以是当前图片中周围参考区域中的mv。
[0587]
尽管这里描述了由编码器100执行的操作,但应当指出的是,解码器200执行类似的操作。
[0588]
应当指出的是,lic不仅可以应用于亮度,还可以应用于色度。此时,可以针对y、cb和cr中的每一个单独推导出校正参数,或者可以对y、cb和cr中的任何一个使用公共的校正参数。
[0589]
此外,可以以子块为单位来应用lic过程。例如,可以使用当前子块中的周围参考区域以及由当前子块的mv指定的参考图片中的参考子块中的周围参考区域来推导出校正参数。
[0590]
(预测控制器)
[0591]
预测控制器128选择帧内预测信号(从帧内预测器124输出的图像或信号)和帧间预测信号(从帧间预测器126输出的图像或信号)之一,并将所选择的预测图像输出到减法器104和加法器116作为预测信号。
[0592]
(预测参数生成器)
[0593]
预测参数生成器130可以将与帧内预测、帧间预测、预测控制器128中的预测图像的选择等相关的信息作为预测参数输出到熵编码器110。熵编码器110可以基于从预测参数生成器130输入的预测参数和从量化器108输入的经量化的系数来生成流。预测参数可以用在解码器200中。解码器200可以接收和解码流,并且执行与由帧内预测器124、帧间预测器126和预测控制器128执行的预测过程相同的过程。预测参数可以包括例如(i)选择预测信号(例如,由帧内预测器124或帧间预测器126使用的mv、预测类型或预测模式),或者(ii)可选索引、标记或基于在帧内预测器124、帧间预测器126和预测控制器128中的每一个中执行
的预测过程的值,或指示预测过程的值。
[0594]
(解码器)
[0595]
接下来,描述能够对从上述编码器100输出的流进行解码的解码器200。图67是表示本实施例的解码器200的功能结构的框图。解码器200是以块为单位对作为编码图像的流进行解码的装置。
[0596]
如图67所示,解码器200包括熵解码器202、逆量化器204、逆变换器206、加法器208、块存储器210、循环滤波器212、帧存储器214、帧内预测器216、帧间预测器218、预测控制器220、预测参数生成器222以及拆分确定器224。应当注意,帧内预测器216和帧间预测器218被配置为预测执行器的一部分。
[0597]
(解码器的安装示例)
[0598]
图68是示出解码器200的安装示例的功能框图。解码器200包括处理器b1和存储器b2。例如,图67所示的解码器200的多个构成元件安装在图68所示的处理器b1和存储器b2上。
[0599]
处理器b1是执行信息处理并耦合到存储器b2的电路。例如,处理器b1是对流进行解码的专用或通用电子电路。处理器b1可以是处理器,例如cpu。此外,处理器b1可以是多个电子电路的聚合。此外,例如,处理器b1可以起到图67所示的解码器200的多个构成元件中用于存储信息的构成元件之外的两个或更多个构成元件的作用,等等。
[0600]
存储器b2是用于存储由处理器b1用来对流进行解码的信息的专用或通用存储器。存储器b2可以是电子电路,并且可以连接到处理器b1。此外,存储器b2可以包括在处理器b1中。此外,存储器b2可以是多个电子电路的聚合。另外,存储器b2可以是磁盘、光盘等,或者可以表示为存储、记录介质等。此外,存储器b2可以是非易失性存储器或易失性存储器。
[0601]
例如,存储器b2可以存储图像或流。此外,存储器b2可以存储用于使处理器b1对流进行解码的程序。
[0602]
此外,例如,存储器b2可以起到图67所示的解码器200的多个构成元件中的用于存储信息的两个或更多个构成元件的作用。更具体地,存储器b2可以起到图67中所示的块存储器210和帧存储器214的作用。更具体地,存储器b2可以存储重构图像(具体而言,重构的块、重构的图片等)。
[0603]
应当指出的是,在解码器200中,不是图67等中示的所有多个构成元件都要实施,并且不是本文中描述的所有过程都要执行。图67等中所示的构成元件的一部分可以包含在另一个设备中,或者本文中描述的部分过程可以由另一个设备执行。
[0604]
在下文中,描述了由解码器200执行的过程的整体流程,然后描述解码器200中包括的每个构成元件。需要注意的是,解码器200中包括的一些构成元件执行与编码器100中的一些构成元件执行的相同的过程,因此不再重复详细描述相同的过程。例如,解码器200中包括的逆量化器204、逆变换器206、加法器208、块存储器210、帧存储器214、帧内预测器216、帧间预测器218、预测控制器220以及循环滤波器212分布执行与由解码器200中包括的逆量化器112、逆变换器114、加法器116、块存储器118、帧存储器122、帧内预测器124、帧间预测器126、预测控制器128以及循环滤波器120所执行的过程类似的过程。
[0605]
(解码过程的整体流程)
[0606]
图69是示出由解码器200执行的整体解码过程的一个示例的流程图。
[0607]
首先,解码器200中的拆分确定器224基于从熵解码器202输入的参数,确定包括在图片中的多个固定尺寸块(128
×
128像素)中的每个块的拆分模式(步骤sp_1)。该拆分模式是由编码器100选择的拆分模式。解码器200然后针对拆分模式的多个块中的每个块执行步骤sp_2至sp_6的过程。
[0608]
熵解码器202对编码经量化的系数和当前块的预测参数进行解码(具体地,熵解码)(步骤sp_2)。
[0609]
接下来,逆量化器204对多个经量化的系数进行逆量化,逆变换器206对结果进行逆变换,以恢复预测残差(即差块)(步骤sp_3)。
[0610]
接下来,包括帧内预测器216、帧间预测器218和预测控制器220中的所有或一部分的预测执行器生成当前块的预测信号(步骤sp_4)。
[0611]
接下来,加法器208将预测图像与预测残差相加以生成当前块的重构图像(也被称为解码图像块)(步骤sp_5)。
[0612]
当生成重构图像时,循环滤波器212执行重构图像的滤波(步骤sp_6)。
[0613]
解码器200然后确定整个图片的解码是否已经完成(步骤sp_7)。当确定解码尚未完成时(步骤sp_7中的否),解码器200重复从步骤sp_1开始的过程。
[0614]
应当指出的是,这些步骤sp_1至sp_7的过程可以由解码器200顺序执行,或者这些过程中的两个或更多个过程可以并行执行。可以修改这些过程中的两个或更多个过程的处理顺序。
[0615]
(拆分确定器)
[0616]
图70是用于示出实施例中的拆分确定器224与其他构成元件之间的关系的概念图。作为示例,拆分确定器224可以执行以下过程。
[0617]
例如,拆分确定器224从块存储器210或帧存储器214收集块信息,并且进一步从熵解码器202获得参数。拆分确定器224然后可以基于块信息和参数来确定固定大小块的拆分模式。拆分确定器224然后可以将指示所确定的拆分模式的信息输出到逆变换器206、帧内预测器216和帧间预测器218。逆变换器206可以基于由来自拆分确定器224的信息指示的拆分模式来执行变换系数的逆变换。帧内预测器216和帧间预测器218可以基于来自拆分确定器224的信息所指示的拆分模式来生成预测图像。
[0618]
(熵解码器)
[0619]
图71是示出熵解码器202的功能配置的一个示例的框图。
[0620]
熵解码器202通过对流进行熵解码来生成经量化的系数、预测参数以及与拆分模式相关的参数。例如,cabac用于熵解码。更具体地,熵解码202包括例如二进制算术解码器202a、上下文控制器202b以及解二值化器202c。二进制算术解码器202a使用由上下文控制器202b推导出的上下文值将流算术解码为二进制信号。上下文控制器202b按照与编码器100的上下文控制器110b所执行的相同的方式,根据语法元素的特征或周围状态(即二进制信号的出现概率),推导出上下文值。解二值化器202c执行解二值化以便将从二值算术解码器202a输出的二进制信号变换为如上所述的表示经量化的系数的多电平信号。该二值化可以根据上述二值化方法来执行。
[0621]
这样,熵解码器202将每个块的经量化的系数输出到逆量化器204。熵解码器202可以将包括在流中的预测参数(参加见图1)输出到帧内预测器216、帧间预测器218和预测控
制器220。帧内预测器216、帧间预测器218和预测控制器220能够执行与由编码器100侧的帧内预测器124、帧间预测器126和预测控制器128执行的那些预测过程相同的预测过程。
[0622]
图72是用于示出熵解码器202中的示例cabac过程的流程的概念图。
[0623]
首先,在熵解码器202中的cabac中执行初始化。在初始化中,执行二进制算术解码器202a中的初始化和初始上下文值的设置。二进制算术解码器202a和解二值化器202c然后执行例如ctu的编码数据的算术解码和解二值化。此时,上下文控制器202b在每次进行算术解码时更新上下文值。上下文控制器202b然后将上下文值保存为后过程。例如,保存的上下文值用于对下一个ctu的上下文值进行初始化。
[0624]
(逆量化器)
[0625]
逆量化器204对当前块的经量化的系数进行逆量化,这些系数是来自熵解码器202的输入。更具体地,逆量化器204基于与经量化的系数相对应的量化参数来对当前块的经量化的系数进行逆量化。逆量化器204然后将当前块的逆量化变换系数(即变换系数)输出到逆变换器206。
[0626]
图73是示出逆量化器204的功能配置的一个示例的框图。
[0627]
逆量化器204包括例如量化参数生成器204a、预测量化参数生成器204b、量化参数存储204d,以及逆量化执行器204e。
[0628]
图74是示出由逆量化器204执行的逆量化过程的一个示例的流程图。
[0629]
逆量化器204可以基于图74所示的流程针对每个cu执行逆量化过程作为一个示例。更具体地,量化参数生成器204a确定是否执行逆量化(步骤sv_11)。这里,当确定执行逆量化时(步骤sv_11中的是),量化参数生成器204a从熵解码器202获得当前块的差分量化参数(步骤sv_12)。
[0630]
接下来,预测量化参数生成204b然后从量化参数存储204d获得与当前块不同的处理单元的量化参数(步骤sv_13)。预测量化参数生成204b基于获得的量化参数生成当前块的预测量化参数(步骤sv_14)。
[0631]
量化参数生成器204a然后基于从熵解码器202获得的当前块的差量化参数以及由预测量化参数生成器204b生成的当前块的预测量化参数来生成当前块的量化参数(步骤sv_15)。例如,可以将从熵解码器202获得的当前块的差量化参数和由预测量化参数生成器204b生成的当前块的预测量化参数相加在一起以生成当前块的量化参数。此外,量化参数生成器204a将当前块的量化参数存储在量化参数存储204d中(步骤sv_16)。
[0632]
接下来,逆量化执行器204e使用在步骤sv_15中生成的量化参数将当前块的经量化的系数逆量化为变换系数(步骤sv_17)。
[0633]
应当指出的是,不同量化参数可以在比特序列级别、图片级别、切片级别、块级别或ctu级别被解码。此外,量化参数的初始值可以在序列级别、图片级别、切片级别、块级别或ctu级别被解码。此时,可以使用量化参数的初始值和差值量化参数来生成量化参数。
[0634]
应当指出的是,逆量化器204可以包括多个逆量化器,并且可以使用从多种逆量化方法中选择的逆量化方法来对经量化的系数进行逆量化。
[0635]
(逆变换器)
[0636]
逆变换器206通过对来自逆量化器204的输入的变换系数进行逆变换来恢复预测残差。
[0637]
例如,当从流解析的信息指示将应用emt或amt(例如,当amt标志为真时),逆变换器206基于指示解析变换类型的信息来对当前块的变换系数进行逆变换。
[0638]
此外,例如,当从流解析的信息指示要应用nsst时,逆变换器206对变换系数应用二次逆变换。
[0639]
图75是示出由逆变换器206执行的过程的一个示例的流程图。
[0640]
例如,逆变换器206判断流中是否存在表示没有执行正交变换的信息(步骤st_11)。这里,当确定不存在这样的信息时(步骤st_11中的否)(例如:不存在关于是否执行了正交变换的任何指示;存在要执行正交变换的指示);逆变换器206获得指示由熵解码器202解码的变换类型的信息(步骤st_12)。接下来,基于该信息,逆变换器206确定用于编码器100中的正交变换的变换类型(步骤st_13)。逆变换器206然后使用确定的变换类型来执行逆正交变换(步骤st_14)。如图75所示,当确定存在指示没有执行正交变换的信息时(步骤st_11中的是)(例如,没有执行正交变换的明确指示;不存在执行了正交变换的指示),不执行正交变换。
[0641]
图76是示出由逆变换器206执行的过程的一个示例的流程图。
[0642]
例如,逆变换器206确定变换大小是否小于或等于确定值(步骤su_11)。所确定的值可以是预确定的。这里,当确定变换大小小于或等于确定值时(步骤su_11中的是),逆变换器206从熵解码器202获得指示编码器100在第一变换类型组中包括的至少一种变换类型中使用了哪种变换类型的信息(步骤su_12)。应当指出的是,这种信息由熵解码器202解码并输出到逆变换器206。
[0643]
基于该信息,逆变换器206确定用于编码器100中的正交变换的变换类型(步骤su_13)。逆变换器206然后使用所确定的变换类型对当前块的变换系数进行逆正交变换(步骤su_14)。当确定变换大小不小于或等于所确定的值时(步骤su_11中的否),逆变换器206使用第二变换类型组对当前块的变换系数进行逆变换(步骤su_15)。
[0644]
应当指出的是,作为一个示例,可以根据图75或图76所示的流程针对每个tu执行逆变换器206的逆正交变换。另外,可以在不对指示用于正交变换的变换类型的信息进行解码的情况下通过使用定义的变换类型来执行逆正交变换。定义的变换类型可以是预定义的变换类型或默认的变换类型。另外,变换类型具体可以是dst7、dct8等。在逆正交变换中,使用与变换类型相对应的逆变换基函数。
[0645]
(加法器)
[0646]
加法器208通过将从逆变换器206输入的预测残差和从预测控制器220输入的预测图像进行相加来重构当前块。换言之,生成当前块的重构图像。加法器208然后将当前块的重构图像输出到块存储器210和循环滤波器212。
[0647]
(块存储器)
[0648]
块存储器210是用于存储包括在当前图片中并且可以在帧内预测中参考的块的存储器。更具体地,块存储器210存储从加法器208输出的重构图像。
[0649]
(循环滤波器)
[0650]
循环滤波器212将循环滤波器应用于加法器208生成的重构图像,并将经滤波的重构图像输出到帧存储器214,并提供解码器200的输出,例如,并输出到显示设备等。
[0651]
当从流中解析出的指示alf的开启或关闭的信息指示alf为开启时,可以例如基于
局部梯度的方向和活动从多个滤波器中选择一个滤波器,并且所选择的滤波器被应用于重构的图像。
[0652]
图77是示出循环滤波器212的功能配置的一个示例的框图。应当指出的是,循环滤波器212的配置类似于编码器100的循环滤波器120的配置。
[0653]
例如,如图77所示,循环滤波器212包括解块滤波器执行器212a、sao执行器212b和alf执行器120c。解块滤波器执行器212a对重构图像执行解块滤波器处理。sao执行器212b对经过解块滤波过程之后的重构图像执行sao过程。alf执行器212c对经过sao过程后的重构图像进行alf过程。应当指出的是,循环滤波器212并不总是需要包括图77中公开的所有构成元件,并且可以仅包括构成元件的一部分。此外,循环滤波器212可以被配置为以不同于图77中公开的处理顺序的处理顺序来执行上述过程,可以不执行图77中所示的所有过程等。
[0654]
(帧存储器)
[0655]
帧存储器214是例如用于存储帧间预测中使用的参考图片的存储器,并且也可以被称为帧缓冲器。更具体地,帧存储器214存储由循环滤波器212滤波的重构图像。
[0656]
(预测器(帧内预测器、帧间预测器、预测控制器))
[0657]
图78是示出由解码器200的预测器执行的过程的一个示例的流程图。应当指出的是,预测执行器可以包括以下构成元件的全部或部分:帧内预测器216;预测器218;以及预测控制器220。预测执行器包括例如帧内预测器216和帧间预测器218。
[0658]
预测器生成当前块的预测图像(步骤sq_1)。该预测图像也可以被称为预测信号或预测块。应当指出的是,预测信号例如是帧内预测信号或帧间预测信号。更具体地,预测器通过预测图像的生成、预测残差的恢复以及预测图像的相加使用重构图像来生成当前块的预测图像,重构图像是已经针对另一个块获得的。解码器200的预测器生成与编码器100的预测器生成的预测图像相同的预测图像。换言之,根据预测器之间共同的方法或相互对应的方法来生成预测图像。
[0659]
重构图像例如可以是参考图片中的图像,或者是当前图片(其是包括当前块的图片)中的解码块(即,上述其他块)的图像。当前图片中的解码块例如是当前块的相邻块。
[0660]
图79是示出由解码器200的预测执行的过程的另一示例的流程图。
[0661]
预测器确定用于生成预测图像的方法或模式(步骤sr_1)。例如,可以基于例如预测参数等来确定方法或模式。
[0662]
当确定第一方法作为生成预测图像的模式时,预测器根据第一方法生成预测图像(步骤sr_2a)。当确定第二方法作为生成预测图像的模式时,预测器根据第二方法生成预测图像(步骤sr_2b)。当确定第三方法作为生成预测图像的模式时,预测器根据第三方法生成预测图像(步骤sr_2c)。
[0663]
第一种方法、第二种方法和第三种方法可以是彼此不同的用于生成预测图像的方法。第一至第三种方法中的每种方法可以是帧间预测方法、帧内预测方法或另一种预测方法。在这些预测方法中可以使用上述重构图像。
[0664]
图80是示出由解码器200的预测执行的过程的另一示例的流程图。
[0665]
作为一个示例,预测器可以根据图80所示的流程来执行预测过程。注意,图80中所示的块内复制是属于帧间预测的一种模式,其中,当前图片中包括的块被称为参考图像或
参考块。换言之,在块内复制中不参考与当前图片不同的图片。另外,图80所示的pcm模式是属于帧内预测并且不执行变换和量化的一种模式。
[0666]
(帧内预测器)
[0667]
帧内预测器216通过参考块存储器210中存储的当前图片中的块,基于从流中解析出的帧内预测模式来执行帧内预测,以生成当前块(即,帧内预测块)的预测图像。更具体地,帧内预测器216通过参考与当前块相邻的一个或多个块的像素值(例如,亮度和/或色度值)来执行帧内预测以生成帧内预测图像,然后将帧内预测图像输出到预测控制器220。
[0668]
应当指出的是,当选择了在色度块的帧内预测中参考亮度块的帧内预测模式,帧内预测器216可以基于当前块的亮度分量来预测当前块的色度分量。
[0669]
此外,当从流解析的信息指示将应用pdpc时,帧内预测器216基于水平/垂直参考像素梯度来校正帧内预测像素值。
[0670]
图81是示出由解码器200的预测器216执行的过程的一个示例的图。
[0671]
帧内预测器216首先确定是否要使用mpm。如图81所示,帧内预测器216确定在流中是否存在指示1的mpm标志(步骤sw_11)。这里,当确定存在指示1的mpm标志时(步骤sw_11中的是),帧内预测器216从熵解码器202获得指示在mpm之中在编码器100中选择的帧内预测模式的信息。应当注意,这样的信息由熵解码器202解码并输出到帧内预测器216。接下来,帧内预测器216确定mpm(步骤sw_3)。mpm包括例如六种帧内预测模式。帧内预测器216然后确定包括在mpm中包括的多个帧内预测模式中并且由在步骤sw_12中获得的信息指示的帧内预测模式(步骤sw_14)。
[0672]
当确定不存在指示1的mpm标志时(步骤sw_11中的否),帧内预测器216获得指示在编码器100中选择的帧内预测模式的信息(步骤sw_15)。换言之,帧内预测器216从熵解码器202获得指示在编码器100中从未包括在mpm中的至少一种帧内预测模式中选择的帧内预测模式的信息。应当注意,这样的信息由熵解码器202解码并输出到帧内预测器216。帧内预测器216然后确定没有包括在mpm中包括的多个帧内预测模式中并且由在步骤sw_15中获得的信息指示的帧内预测模式(步骤sw_17)。
[0673]
帧内预测器216根据在步骤sw_14或步骤sw_17中确定的帧内预测模式来生成预测图像(步骤sw_18)。
[0674]
(帧间预测器)
[0675]
帧间预测器218通过参考存储在帧存储器214中的参考图片来预测当前块。以当前块或当前块中的当前子块为单位进行预测。应当指出的是,子块包括在块中,是比块更小的单位。子块的大小可以是4
×
4像素、8
×
8像素或其他大小。子块的大小可以以切片、块、图片等为单位进行切换。
[0676]
例如,帧间预测器218通过使用从流(例如,从熵解码器202输出的预测参数)解析的运动信息(例如,mv)执行运动补偿来生成当前块或当前子块的帧间预测图像,并将帧间预测图像输出到预测控制器220。
[0677]
当从流解析的信息指示要应用obmc模式时,帧间预测器218除了使用通过运动估计获得的当前块的运动信息之外,还使用相邻块的运动信息来生成帧间预测图像。
[0678]
此外,当从流解析的信息指示要应用fruc模式时,帧间预测器218通过根据从流解析的模式匹配方法(例如,双边匹配或模板匹配)执行运动估计来推导出运动信息。帧间预
测器218然后使用推导出的运动信息来执行运动补偿(预测)。
[0679]
此外,当要应用bio模式时,帧间预测器218基于假设均匀线性运动的模型来推导出mv。此外,当从流解析的信息指示要应用仿射模式时,帧间预测器218基于多个相邻块的mv来推导出每个子块的mv。
[0680]
(mv推导流程)
[0681]
图82是示出解码器200中mv推导过程的一个示例的流程图。
[0682]
例如,帧间预测器218确定是否对运动信息(例如,mv)进行解码。例如,帧间预测器218可以根据流中包括的预测模式进行确定,或者可以基于流中包括的其他信息进行确定。这里,当确定对运动信息进行解码时,帧间预测器218在对运动信息进行解码的模式中推导出当前块的mv。当确定不对运动信息进行解码时,帧间预测器218在没有运动信息被解码的模式中推导出mv。
[0683]
这里,mv推导模式包括后面描述的正常帧间模式、正常合并模式、fruc模式、仿射模式等。在其中对运动信息进行解码的模式包括正常帧间模式、正常合并模式、仿射模式(具体地,仿射帧间模式和仿射合并模式)等。应当指出的是,运动信息可以不仅包括mv而且还包括后面描述的mv预测器选择信息。在其中没有运动信息被解码的模式包括fruc模式等。帧间预测器218从多个模式中选择用于推导出当前块的mv的模式,并使用所选择的模式推导出当前块的mv。
[0684]
图83是示出解码器200中mv推导过程的一个示例的流程图。
[0685]
例如,帧间预测器218可以确定是否对mv差进行解码,即例如,可以根据流中包括的预测模式进行确定,或者可以基于流中包括的其他信息进行确定。这里,当确定对mv差进行解码时,帧间预测器218可以在对mv差进行解码的模式中推导出当前块的mv。在这种情况下,例如,包括在流中的mv差被解码为预测参数。
[0686]
当确定不对任何mv差进行解码时,帧间预测器218以其中没有mv差被解码的模式推导出mv。在这种情况下,流中不包括经编码的mv差。
[0687]
这里,如上所述,mv推导模式包括后面描述的正常帧间模式、正常合并模式、fruc模式、仿射模式等。在其中对mv差进行编码的模式包括正常帧间模式以及仿射模式(具体而言,仿射帧间模式)等。在其中没有对mv差进行编码的模式包括fruc模式、正常合并模式、仿射模式(具体地,仿射合并模式)等。帧间预测器218从多个模式中选择用于推导出当前块的mv的模式,并使用所选择的模式来推导出当前块的mv。
[0688]
(mv推导>正常帧间模式)
[0689]
例如,当从流解析的信息指示要应用正常帧间模式时,帧间预测器218基于从流解析的信息推导出mv并使用mv来执行运动补偿(预测)。
[0690]
图84是示出解码器200中通过正常帧间模式进行帧间预测过程的示例的流程图。
[0691]
解码器200的帧间预测器218为每个块执行运动补偿。首先,帧间预测器218基于诸如时间上或空间上围绕当前块的多个解码块的mv之类的信息来获得当前块的多个mv候选(步骤sh_11)。换言之,帧间预测器218生成mv候选列表。
[0692]
接下来,帧间预测器218根据确定的优先级顺序中的排名从在步骤sg_11中获得的多个mv候选中提取n个(n为2或更大的整数)mv候选作为运动向量预测候选(也被称为mv预测候选)(步骤sg_12)。应当指出的是,可以针对相应的n个mv预测器候选预先确定优先级顺
序中的排名,并且排名可以是预确定的。
[0693]
接下来,帧间预测器218从输入流中解码mv预测器选择信息,并使用经解码的mv预测器选择信息从n个mv预测器候选中选择一个mv预测器候选作为当前块的mv预测器(步骤sg_13)。
[0694]
接下来,帧间预测器218从输入流中解码mv差,并且通过将为经解码的mv差的差与所选择的mv预测器相加来推导出当前块的mv(步骤sg_14)。
[0695]
最后,帧间预测器218通过使用推导出的mv和解码参考图片执行当前块的运动补偿来生成当前块的预测图像(步骤sh_15)。对每个块执行步骤sg_11至sg_15中的过程。例如,当对切片中的所有块中的每个块执行了步骤sg_11至sg_15中的过程时,使用正常帧间模式的切片的帧间预测完成。例如,当对图片中的所有块中的每个块执行了步骤sg_11至sg_15中的过程时,使用正常帧间模式的图片的帧间预测完成。应当指出的是,可以并不是切片中包括的所有块都经历步骤sh_11至sh_15中的这些过程,当部分块经历这些过程时,使用正常帧间模式的切片的帧间预测可以完成。这也适用于步骤sh_11至sh_15中的图片。当对图片中的部分块执行这些过程时,使用正常帧间模式的图片的帧间预测可以完成。
[0696]
(mv推导>正常合并模式)
[0697]
例如,当从流解析的信息指示要应用正常合并模式时,帧间预测器218推导出mv并使用mv来执行运动补偿(预测)。
[0698]
图85是示出解码器200中通过正常合并模式进行帧间预测过程的示例的流程图。
[0699]
首先,帧间预测器218基于诸如时间上或空间上围绕当前块的多个解码块的mv之类的信息来获得当前块的多个mv候选(步骤sh_11)。换言之,帧间预测器218生成mv候选列表。
[0700]
接下来,帧间预测器218从在步骤sh_11中获得的多个mv候选中选择一个mv候选,从而推导出当前块的mv(步骤sh_12)。更具体地,帧间预测器218获得作为预测参数包括在流中的mv选择信息,并且选择由mv选择信息标识的mv候选作为当前块的mv。
[0701]
最后,帧间预测器218通过使用推导出的mv和解码参考图片执行当前块的运动补偿来生成当前块的预测图像(步骤sh_13)。例如,对每个块执行步骤sh_11至sh_13中的过程。例如,当对切片中的所有块中的每个块执行了步骤sh_11至sh_13中的过程时,使用正常合并模式的切片的帧间预测完成。此外,当对图片中的所有块中的每个块执行了步骤sh_11至sh_13中的过程时,使用正常合并模式的图片的帧间预测完成。应当指出的是,并不是切片中包括的所有块都经历步骤sh_11至sh_13中的这些过程,当部分块经历这些过程时,使用正常合并模式的切片的帧间预测可以完成。这也适用于步骤sh_11至sh_13中的图片。当对图片中的部分块执行这些过程时,使用正常合并模式的图片的帧间预测可以完成。
[0702]
(mv推导>fruc模式)
[0703]
例如,当从流解析的信息指示要应用fruc模式时,帧间预测器218推导出fruc模式下的mv并使用mv来执行运动补偿(预测)。在这种情况下,运动信息是在解码器200侧推导出的,而没有从编码器100侧用信号通知。例如,解码器200可以通过执行运动估计来推导出运动信息。在这种情况下,解码器200在不使用当前块中的任何像素值的情况下执行运动估计。
[0704]
图86是示出解码器200中通过fruc模式进行帧间预测过程的示例的流程图。
[0705]
首先,帧间预测器218通过将mv作为mv候选来指示与当前块在空间或时间上相邻的解码块的mv的列表(该列表是mv候选列表,并且例如,也可以用作普通合并模式的mv候选列表)(步骤si_11)。接下来,从mv候选列表中注册的多个mv候选中选择最佳mv候选(步骤si_12)。例如,帧间预测器218计算包括在mv候选列表中的每个mv候选的评估值,并基于评估值来选择mv候选之一作为最佳mv候选。基于所选择的最佳mv候选,帧间预测器218然后推导出当前块的mv(步骤si_14)。更具体地,例如,所选择的最佳mv候选被直接推导为当前块的mv。另外,例如,可以使用某个位置周围区域中的模式匹配来推导出当前块的mv,其包括在参考图片中并对应于所选择的最佳mv候选。换言之,在参考图片中使用模式匹配和评估值的估计可以在最佳mv候选的周围区域中执行,并且当存在产生更好评估值的mv时,可以将最佳mv候选更新为产生更好评估值的mv,并且经更新的mv可以被确定为当前块的最终mv。在实施例中,可以不执行产生更好评估值的mv的更新。
[0706]
最后,帧间预测器218通过使用推导出的mv和解码参考图片执行当前块的运动补偿来生成当前块的预测图像(步骤si_15)。例如,对每个块执行步骤si_11至si_15中的过程。例如,当对切片中的所有块中的每个块执行了步骤si_11至si_15中的过程时,使用fruc模式的切片的帧间预测完成。例如,当对图片中的所有块中的每个块执行了步骤si_11至si_15中的过程时,使用fruc模式的图片的帧间预测完成。可以用与每个块的情况类似的方式来处理每个子块。
[0707]
(mv推导>fruc模式)
[0708]
例如,当从流解析的信息指示要应用仿射合并模式时,帧间预测器218推导出仿射合并模式下的mv并使用mv来执行运动补偿(预测)。
[0709]
图87是示出解码器200中通过仿射合并模式进行帧间预测过程的示例的流程图。
[0710]
在仿射合并模式中,首先,帧间预测器218推导出当前块的各个控制点处的mv(步骤sk_11)。控制点是当前块的左上角点和当前块的右上角点,如图46a所示,或者当前块的左上角点、当前块的右上角点以及当前块的左下角点,如图46b所示。
[0711]
例如,当使用图47a至47c所示的mv推导方法时,如图47a所示,帧间预测器218以这样的顺序检查解码块a(左)、块b(上)、块c右上)、块d(左下)和块e(左上),并识别根据仿射模式解码的第一个有效块。帧间预测器218使用根据仿射模式解码的所识别的第一有效块来推导出控制点处的mv。例如,当块a被识别并且块a具有两个控制点时,如图47b所示,帧间预测器218根据包括块a的解码块左上角和右上角处的运动向量v3和v4来计算当前块左上角控制点处的运动向量v0以及当前块右上角控制点处的运动向量v1。以这种方式推导出了每个控制点处的mv。
[0712]
应当指出的是,如图49a所示,当块a被识别并且块a具有两个控制点时,可以计算三个控制点处的mv,并且如图49b所示,当块a被识别并且当块a具有三个控制点时,可以计算两个控制点处的mv。
[0713]
此外,当mv选择信息被包括在流中作为预测参数时,帧间预测器218可以使用mv选择信息来推导出当前块的每个控制点处的mv。
[0714]
接下来,帧间预测器218对当前块中包括的多个子块中的每个子块执行运动补偿。换言之,帧间预测器218使用两个运动向量v0和v1以及上述表达式(1a)或三个运动向量v0、v1和v2以及上述表达式(1b)计算多个子块中的每个子块的mv作为仿射mv(步骤sk_12)。帧
间预测器218然后使用这些仿射mv和解码参考图片来执行子块的运动补偿(步骤sk_13)。在针对当前块中包括的每个子块执行步骤sk_12和sk_13中的过程时,针对当前块使用仿射合并模式的帧间预测结束。换言之,执行当前块的运动补偿以生成当前块的预测图像。
[0715]
应当指出的是,可以在步骤sk_11中生成上述mv候选列表。mv候选列表可以是例如,包括使用针对每个控制点的多种mv推导出方法推导出的mv候选的列表。多个mv推导方法例如可以是图47a至47c所示的mv推导方法、图48a和48b所示的mv推导方法、图49a和49b所示的mv推导方法以及其他mv推导方法的任意组合。
[0716]
应当指出的是,除了仿射模式之外,mv候选列表可以包括以子块为单位执行预测的模式中的mv候选。
[0717]
应当指出的是,例如,可以在使用两个控制点的仿射合并模式和使用三个控制点的仿射合并模式中生成包括mv候选的mv候选列表作为mv候选列表。或者,可以分别生成包括使用两个控制点的仿射合并模式下的mv候选的mv候选列表和包括使用三个控制点的仿射合并模式下的mv候选的mv候选列表。或者,可以在使用两个控制点的仿射合并模式和使用三个控制点的仿射合并模式之一中生成包括mv候选的mv候选列表。
[0718]
(mv推导>仿射帧间模式)
[0719]
例如,当从流解析的信息指示要应用仿射帧间模式时,帧间预测器218推导出仿射帧间模式下的mv并使用mv来执行运动补偿(预测)。
[0720]
图88是示出解码器200中通过仿射帧间模式进行帧间预测过程的示例的流程图。
[0721]
在仿射帧间模式中,首先,帧间预测器218推导出当前块的相应两个或三个控制点的mv预测值(v0,v1)或(v0,v1,v2)(步骤sj_11)。如图46a或图46b所示,控制点是当前块的左上角点、当前块的右上角点和当前块的左下角点。
[0722]
帧间预测器218获得作为预测参数包括在流中的mv预测器选择信息,并使用由mv预测器选择信息标识的mv来推导出当前块的每个控制点处的mv预测器。例如,当使用图48a和图48b所示的mv推导方法时,帧间预测器218通过在图48a或图48b所示的当前块的各个控制点附近的解码块之中选择由mv预测器选择信息标识的块的mv在当前块的控制点处推导出运动向量预测器(v0,v1)或(v0,v1,v2)。
[0723]
接下来,帧间预测器218获得包括在流中作为预测参数的每个mv差,并将当前块的每个控制点处的mv预测器和与mv预测器相对应的mv差相加(步骤sj_12)。这样就推导出了当前块在每个控制点处的mv。
[0724]
接下来,帧间预测器218对当前块中包括的多个子块中的每个子块执行运动补偿。换言之,帧间预测器218使用两个运动向量v0和v1以及上述表达式(1a)或三个运动向量v0、v1和v2以及上述表达式(1b)计算多个子块中的每个子块的mv作为仿射mv(步骤sj_13)。帧间预测器218然后使用这些仿射mv和解码参考图片来执行子块的运动补偿(步骤sj_14)。在针对当前块中包括的每个子块执行步骤sj_13和sj_14中的过程时,针对当前块使用仿射合并模式的帧间预测结束。换言之,执行当前块的运动补偿以生成当前块的预测图像。
[0725]
应当指出的是,可以在步骤sj_11中像在步骤sk_11中一样生成上述mv候选列表。
[0726]
(mv推导>三角形模式)
[0727]
例如,当从流解析的信息指示要应用三角形模式时,帧间预测器218推导出三角形模式下的mv并使用mv来执行运动补偿(预测)。
[0728]
图89是示出解码器200中通过仿三角形模式进行帧间预测过程的示例的流程图。
[0729]
在三角形模式中,首先,帧间预测器218将当前块拆分成第一分区和第二分区(步骤sx_11)。例如,帧间预测器218可以从流中获得分区信息作为预测参数,该信息是与拆分相关的信息。帧间预测器218然后可以根据分区信息来将当前块拆分成第一分区和第二分区。
[0730]
接下来,帧间预测器218基于诸如时间上或空间上围绕当前块的多个解码块的mv之类的信息来获得当前块的多个mv候选(步骤sx_12)。换言之,帧间预测器218生成mv候选列表。
[0731]
帧间预测器218然后从在步骤sx_11中获得的多个mv候选中分别选择第一分区的mv候选和第二分区的mv候选作为第一mv和第二mv(步骤sx_13)。此时,帧间预测器218可以从流中获得用于将每个所选择的mv候选标识为预测参数的mv选择信息。帧间预测器218然后可以根据mv选择信息来选择第一mv和第二mv。
[0732]
接下来,帧间预测器218通过使用所选择的第一mv和解码参考图片执行运动补偿来生成第一预测图像(步骤sx_14)。同样地,帧间预测器218通过使用所选择的第二mv和解码参考图片执行运动补偿来生成第二预测图像(步骤sx_15)。
[0733]
最后,帧间预测器218通过执行第一预测图像和第二预测图像的加权相加来生成当前块的预测图像(步骤sx_16)。
[0734]
(mv估计>dmvr)
[0735]
例如,从流解析的信息指示将应用dmvr,帧间预测器218使用dmvr来执行运动估计。
[0736]
图90是示出解码器200中的dmvr进行的运动估计的过程的示例的流程图。
[0737]
帧间预测器218根据合并模式推导出当前块的mv(步骤s1_11)。接下来,帧间预测器218通过搜索由在s1_11中推导出的mv指示的参考图片周围的区域来推导出当前块的最终mv(步骤s1_12)。换言之,在这种情况下,当前块的mv是根据dmvr确定的。
[0738]
图91是示出解码器200中的dmvr进行的运动估计的过程的示例的流程图,并且与图58b相同。
[0739]
首先,在图58a所示的步骤1中,帧间预测器218计算由初始mv指示的搜索位置(也被称为起点)与八个周围搜索位置之间的成本。帧间预测器218然后确定除起点之外的每个搜索位置处的成本是否最小。这里,当确定除起点之外的搜索位置之一处的成本最小时,帧间预测器218将目标改变为获得最小成本的搜索位置,并执行图58a所示的步骤2中的过程。当起点处的成本最小时,帧间预测器218跳过图58a所示的步骤2中的过程并执行步骤3中的过程。
[0740]
在图58a所示的步骤2中,帧间预测器218执行类似于步骤1中的过程的搜索,根据步骤1中的过程的结果将目标改变之后的搜索位置作为新的起点。帧间预测器218然后确定除起点之外的每个搜索位置处的成本是否最小。这里,当确定除起点之外的搜索位置之一处的成本最小时,帧间预测器218执行步骤4中的过程。当起点处的成本最小时,帧间预测器218执行步骤3中的过程。
[0741]
在步骤4中,帧间预测器218将起点处的搜索位置视为最终搜索位置,并将由初始mv指示的位置与最终搜索位置之间的差确定为向量差。
[0742]
在图58a所示的步骤3中,帧间预测器218基于相对于步骤1或步骤2中起点的上、下、左、右位置处的四个点处的成本,以获得最小成本的子像素精度来确定像素位置,并将像素位置视为最终搜索位置。
[0743]
对上、下、左、右四个向量((0,1),(0,
‑
1),(
‑
1,0)以及(1,0))中的每一个向量进行加权相加,使用四个搜索位置中相应位置处的成本作为权重,确定了子像素精度下的像素位置。帧间预测器218然后将初始mv指示的位置与最终搜索位置之间的差确定为向量差。
[0744]
(运动补偿>bio/obmc/lic)
[0745]
例如,当从流解析的信息指示将执行预测图像的校正时,在生成预测图像时,帧间预测器218基于校正模式来校正预测图像。该模式例如是上述bio、obmc和lic之一。
[0746]
图92是示出解码器200中生成预测图像的过程的一个示例的流程图。
[0747]
帧间预测器218生成预测图像(步骤sm_11),并根据上述任一模式来校正预测图像(步骤sm_12)。
[0748]
图93是示出解码器200中生成预测图像的过程的另一示例的流程图。
[0749]
帧间预测器218推导出当前块的mv(步骤sn_11)。接下来,帧间预测器218使用mv生成预测图像(步骤sn_12),并确定是否执行校正过程(步骤sn_13)。例如,帧间预测器218获得包括在流中的预测参数,并基于该预测参数确定是否执行校正过程。例如,该预测参数是指示是否要应用一种或多种上述模式的标志。这里,当确定执行校正过程时(步骤sn_13中的是),帧间预测器218通过校正预测图像来生成最终预测图像(步骤sn_14)。应当指出的是,在lic中,可以在步骤sn_14中对亮度和色度进行校正。当确定不执行校正过程时(步骤sn_13中的否),帧间预测器218输出最终预测图像而不校正预测图像(步骤sn_15)。
[0750]
(运动补偿>obmc)
[0751]
例如,当从流解析的信息指示要执行obmc时,在生成预测图像时,帧间预测器218根据obmc来校正预测图像。
[0752]
图94是示出解码器200中obmc对预测图像的校正过程的示例的流程图。应当指出的是,图94中的流程图表示使用图62所示的当前图片和参考图片的预测图像的校正流程。
[0753]
首先,如图62所示,帧间预测器218使用分配给当前块的mv通过正常运动补偿获得预测图像(pred)。
[0754]
接下来,帧间预测器218通过将已经针对与当前块左侧相邻的解码块推导出的运动向量(mv_l)应用于当前块(重新使用当前块的运动向量)来获得预测图像(pred_l)。帧间预测器218然后通过对两个预测图像pred和pred_l进行重叠来执行预测图像的第一次校正。这提供了使相邻块之间的边界相混合的效果。
[0755]
同样地,帧间预测器218通过将已经针对与当前块上方相邻的解码块推导出的mv(mv_u)应用于当前块(重新使用当前块的运动向量)来获得预测图像(pred_u)。帧间预测器218然后通过将预测图像pred_u重叠到已经对其执行了第一次校正的预测图像(例如,pred和pred_l)来执行预测图像的第二次校正。这提供了使相邻块之间的边界相混合的效果。第二次校正得到的预测图像是相邻块之间的边界已经混合(平滑)的图像,因此是当前块的最终预测图像。
[0756]
(运动补偿>bio)
[0757]
例如,当从流解析的信息指示要执行bio时,在生成预测图像时,帧间预测器218根
据bio来校正预测图像。
[0758]
图95是示出解码器200中bio对预测图像的校正过程的示例的流程图。
[0759]
如图63所示,帧间预测器218使用与包括当前块的图片(cur pic)不同的两个参考图片(ref0、ref1)推导出两个运动向量(m0、m1)。帧间预测器218然后使用两个运动向量(m0,m1)推导出当前块的预测图像(步骤sy_11)。应当指出的是,运动向量m0是与参考图片ref0相对应的运动向量(mvx0、mvy0),运动向量m1是与参考图片ref1相对应的运动向量(mvx1、mvy1)。
[0760]
接下来,帧间预测器218使用运动向量m0和参考图片l0推导出当前块的差值图像i0。此外,帧间预测器218使用运动向量m1和参考图片l1推导出当前块的差值图像i1(步骤sy_12)。这里,差值图像i0是包括在参考图片ref0中并且要针对当前块推导出的图像,并且差值图像i1是包括在参考图片ref1中并且要针对当前块推导出的图像。差值图像i0和差值图像i1中的每一个在尺寸上可以与当前块相同。或者,差值图像i0和差值图像i1中的每一个都可以是比当前块更大的图像。此外,差值图像i0和差值图像i1可以包括通过使用运动向量(m0,m1)和参考图片(l0,l1)并应用运动补偿滤波器而获得的预测图像。
[0761]
此外,帧间预测器218从差值图像i0和差值图像i1推导出当前块的梯度图像(ix0,ix1,iy0,iy1)(步骤sy_13)。应当指出的是,水平方向的梯度图像为(ix0,ix1),垂直方向的梯度图像为(iy0,iy1)。帧间预测器218可以通过例如将梯度滤波器应用于差值图像来推导出梯度图像。梯度图像可以是这样的图像:每一个都指示像素值沿水平方向的空间变化量或像素值沿垂直方向的空间变化量。
[0762]
接下来,帧间预测器218使用插值图像(i0,i1)和梯度图像(ix0,ix1,iy0,iy1)为当前块的每个子块推导出为速度向量的光流(vx,vy)(步骤sy_14)。作为一个示例,子块可以是4
×
4像素子cu。
[0763]
接下来,帧间预测器218使用光流(vx,vy)来校正当前块的预测图像。例如,帧间预测器218使用光流(vx,vy)推导出当前块中包括的像素值的校正值(步骤sy_15)。帧间预测器218然后可以使用校正值来校正当前块的预测图像(步骤sy_16)。应当指出的是,可以以像素为单位来推导校正值,也可以以多个像素为单位或以子块为单位来推导校正值,等等。
[0764]
应当指出的是,bio过程流程不限于图95中公开的过程。可以仅执行图95中公开的部分过程,或者可以添加或使用不同的过程作为替代,或者可以以不同的处理顺序来执行这些过程。
[0765]
(运动补偿>lic)
[0766]
例如,当从流解析的信息指示要执行lic时,在生成预测图像时,帧间预测器218根据lic来校正预测图像。
[0767]
图96是示出解码器200中lic对预测图像的校正过程的示例的流程图。
[0768]
首先,帧间预测器218使用mv从解码参考图片中获得与当前块相对应的参考图像(步骤sz_11)。
[0769]
接下来,帧间预测器218针对当前块提取指示当前图片和参考图片之间光度值如何变化的信息(步骤sz_12)。该提取可以是基于经解码的左相邻参考区域(周围参考区域)和经解码的上相邻参考区域(周围参考区域)的亮度像素值,以及由推导出的mv指定的参考图片中相应位置处的亮度像素值来执行的。帧间预测器218使用指示亮度值如何改变的信
息来计算亮度校正参数(步骤sz_13)。
[0770]
帧间预测器218通过执行亮度校正过程来生成当前块的预测图像,在该过程中亮度校正参数被应用于由mv指定的参考图片中的参考图像(步骤sz_14)。换言之,基于亮度校正参数对预测图像(其是由mv指定的参考图片中的参考图像)进行校正。在该校正中,可以校正亮度,或者可以校正色度。
[0771]
(预测控制器)
[0772]
预测控制器220选择帧内预测图像或帧间预测图像,并将选择的图像输出到加法器208。总的来说,解码器200侧的预测控制器220、帧内预测器216和帧间预测器218的配置、功能和过程可以对应于编码器100侧的预测控制器128、帧内预测器124和帧间预测器218的配置、功能和过程。
[0773]
(使用预测的色度样本进行解码)
[0774]
在第一方面,确定是否可以使用亮度样本来预测当前块的色度样本的块,其中使用预测的色度样本来对该块进行解码。
[0775]
图97是示出使用预测的色度样本对块进行解码的过程1000的一个示例的流程图,该过程可由例如图7的编码器100或图67的解码器200执行。为了方便起见,将参考图67的解码器200来描述图97。
[0776]
在s1001处,解码器200确定当前色度块是否在与mxn网格的色度样本对齐的mxn非重叠区域内。图98和图99是用于示出确定当前色度块是否在与mxn网格的色度样本对齐的mxn非重叠区域内部的示例的概念图。在某些格式中,例如yuv420格式,16x16像素的色度区域对应于32x32像素的亮度区域。如图98和tu 99所示,在与16
×
16色度网格对齐的32
×
32亮度区域内的色度块被确定为在与m
×
n色度样本网格对齐的m
×
n非重叠区域内部。不在32x32亮度区域内的色度块不被确定为在与mxn网格的色度样本对齐的mxn非重叠区域内部。如图99所示,可以使用色度块的亮度样本来预测所示色度块的色度样本,因为色度块包括在网格中(如图所示,16x16网格),并且共置的亮度块也在共置的32x32区域内部。
[0777]
在一些实施例中,可以不使用亮度样本来预测未被确定为在与mxn网格的色度样本对齐的mxn非重叠区域内部的块的色度样本,而当满足其他条件(如下面参考s1002所讨论的)时,可以例如默认使用亮度样本来预测被确定在与mxn网格的色度样本对齐的mxn非重叠区域内的块的色度样本。
[0778]
如图97所示,当在s1001处未确定当前色度块在与mxn网格的色度样本对齐的mxn非重叠区域内时,过程1000从s1001进行到s1004,其中解码器200在不使用亮度样本的情况下对块的色度样本进行预测。过程1000从s1004进行到s1005,其中解码器200使用预测的色度样本对块进行解码。当在s1001处确定当前色度块在mxn非重叠区域内时,过程1000从s1001进行到s1002。
[0779]
在s1002处,解码器200确定是否将当前亮度vpdu拆分成更小的块。可以通过各种方式来确定是否将当前亮度vpdu拆分为更小的块,下面参考图102和图103更详细地讨论一些示例。当在s1002处未确定当前亮度vpdu将被拆分成更小的块时,过程1000从s1002进行到s1004,其中解码器200在不使用亮度样本的情况下对块的色度样本进行预测。过程1000从s1004进行到s1005,其中解码器200使用预测的色度样本对块进行解码。当在s1002处确定当前亮度vpdu将被拆分成更小的块时,过程1000从s1002进行到s1003,其中解码器200在
使用亮度样本的情况下对块的色度样本进行预测。过程1000从s1003进行到s1005,其中解码器200使用预测的色度样本对块进行解码。在一些实施例中,可以考虑额外的考虑来确定是否使用亮度样本来对块的色度样本进行解码,例如,如下面参考图103所讨论的。
[0780]
图100是用于示出vpdu的概念图。vpdu是非重叠的,它代表管线阶段的缓冲器大小。图100的左侧(标记为a)示出了具有4个64x64 vpdu的128x128 ctu的示例。图100的右侧(标记为b)示出了具有16个32x32vpdu的128x128 ctu的示例。
[0781]
图101是用于示出基于是否将亮度vpdu拆分成块来确定当前vpdu是否可以使用亮度样本来预测色度样本的块的示例的概念图,左侧示出了亮度ctu,右侧示出了相应的色度ctu。如图所示,亮度vpdu0将被拆分为块,而亮度vpdu1将不被拆分为块。因此,可以使用亮度样本来预测vpdu0的色度样本,并且可以不使用亮度样本来预测vpdu1的色度样本。
[0782]
图102是用于示出确定亮度vpdu是否将被拆分成更小的块的两种示例方式的概念图。在图102左侧所示的第一示例(标记为a)中,可以基于与亮度vpdu相关联的拆分标志来确定亮度vpdu是否要被拆分。如图所示,当拆分标志的值为1时,vpdu将被拆分(并且可以使用亮度样本来预测块的色度样本)。当拆分标志的值为0时,不拆分vpdu(并且可以不使用亮度样本来预测块的色度样本)。可以采用其他拆分标志值来确定亮度vpdu是否可以被拆分。
[0783]
在图102右侧所示的第二示例中(标记为b),可以基于vpdu的亮度块的四叉树拆分深度来确定亮度vpdu是否要被拆分。如图所示,vpdu0的亮度块的四叉树拆分深度大于1,因此在对vpdu0的块进行解码时,可以使用亮度样本来预测的色度样本。相反,vpdu1的块的四叉树拆分深度小于或等于1,因此因此在对vpdu0的块进行解码时,可以不使用亮度样本来预测的色度样本。可以采用其他拆分深度值来确定亮度vpdu是否可以被拆分。
[0784]
图103是用于示出额外考虑的概念图,可以考虑这些额外考虑以确定是否使用亮度样本来预测块的色度样本。如图所示,当前块大小是否等于或小于阈值块大小可用作确定是否使用亮度样本来预测块的色度样本的附加考虑。
[0785]
阈值块大小可以是默认块大小、用信号通知的块大小或者所确定的块大小,并且可以是亮度或色度块大小。例如,如果阈值块大小为16x16亮度块大小,则vpdu0的亮度块大小大于16x16,因此可以确定不使用亮度样本来决定块的色度样本。可以在s1002采用阈值块大小来确定是否当前亮度vpdu将被拆分成更小的块。
[0786]
可以以各种方式修改图97的过程1000的方面。例如,过程1000可以被修改以执行比示出更多的动作、可以被修改以执行比示出更少的动作、可以被修改以便以各种顺序执行动作、可以被修改以组合或拆分动作等。例如,在s1001或s1002之前,过程1000可以被修改以基于其他考虑(例如参考图103所讨论的当前块的大小)来确定是否使用亮度样本来预测块的色度样本。在另一示例中,可以修改过程1000以省略s1001。
[0787]
在每个方面中描述的块可以替换为矩形或非矩形状的分区。图104示出了非矩形状的分区的示例,例如三角形分区、l形分区、五边形分区、六边形分区和多边形分区。可以采用其他非矩形状的分区,并且可以采用各种形状的组合。在每个方面中描述的术语“分区”可以替换为术语“预测单元”。在每个方面中描述的术语“分区”也可以替换为术语“子预测单元”。在每个方面中描述的术语“分区”也可以替换为术语“编码单元”。
[0788]
在其他优点中,确定是否可以使用亮度样本来预测用于对当前块进行解码的色度样本有助于减少重构延时并增加硬件实现的灵活性。
[0789]
本文公开的一个或多个方面可以与本公开内容中的其他方面的至少一部分组合来执行。此外,可以通过将根据这些方面的任何流程图中指示的过程的一部分、任何设备的配置的一部分、语法的一部分等与其他方面结合来执行本文公开的一个或多个方面。参考编码器的构成元件描述的方面可以由解码器的对应构成元件类似地执行。
[0790]
(实现和应用)
[0791]
如在上述每个实施例中所描述的,例如,每个功能块或操作块通常可以被实现为mpu(微处理单元)和存储器。此外,由每个功能块执行的过程可以被实现为程序执行单元,例如读取并执行记录在诸如rom的记录介质上的软件(程序)的处理器。可以分发软件。软件可以记录在各种记录介质上,例如半导体存储器。应当指出的是,每个功能块也可以实现为硬件(专用电路)。可以采用硬件和软件的各种组合。
[0792]
在每个实施例中描述的处理可以通过使用单个设备(系统)的集成处理来实现,或者可以通过使用多个设备的分散处理来实现。此外,执行上述程序的处理器可以是单个处理器或多个处理器。换言之,可以执行集成处理,或者,可以执行分散处理。
[0793]
本公开内容的实施例不限于上述示例性实施例;可以对示例性实施例进行各种修改,其结果也包括在本公开内容的实施例的范围内。
[0794]
接着,将描述在上述每个实施例中描述的运动图像编码方法(图像编码方法)和运动图像解码方法(图像解码方法)的应用示例,以及实现这些应用示例的各种系统。这种系统的特征可以是包括采用图像编码方法的图像编码器、采用图像解码方法的图像解码器或包括图像编码器和图像解码器二者的图像编码器
‑
解码器。这种系统的其他配置可以根据具体情况进行修改。
[0795]
(用法示例)
[0796]
图105示出了提供合适用于实现内容分配服务的内容提供系统ex100的总体配置。在其中提供通信服务的区域被划分为期望大小的小区,并且基站ex106、ex107、ex108、ex109和ex110(其为示出示例中的固定无线站)位于各个小区中。
[0797]
在内容提供系统ex100中,包括计算机ex111、游戏机ex112、照相机ex113、家用电器ex114、智能手机ex115的设备经由互联网服务提供商ex102或通信网络ex104以及基站ex106~ex110连接到互联网ex101。内容提供系统ex100可以组合和连接上述设备的任意组合。在各种实施方式中,设备可以经由电话网络或近场通信而不经由基站ex106至ex110直接或间接连接在一起。此外,流式传输服务器ex103可以经由例如互联网ex101连接到包括计算机ex111、游戏设备ex112、相机ex113、家用电器ex114和智能手机ex115的设备。流式传输服务器ex103还可以经由卫星ex116连接到例如飞机ex117中的热点中的终端。
[0798]
注意,代替基站ex106至ex110,可以使用无线接入点或热点。流式传输服务器ex103可以直接连接到通信网络ex104而不经由互联网ex101或互联网服务提供商ex102,并且可以直接连接到飞机ex117而不经由卫星ex116。
[0799]
照相机ex113可以是能够捕捉静止图像和视频的设备,例如数码相机。智能电话ex115可以是智能电话设备、蜂窝电话或个人手持电话系统(phs)电话,可以在2g、3g、3.9g和4g系统以及下一代5g系统移动通信系统标准下操作。
[0800]
家用电器ex114例如是冰箱或家用燃料电池热电联产系统中包括的设备。
[0801]
在内容提供系统ex100中,包括图像和/或视频捕捉功能的终端能够例如通过经由
例如基站ex106连接到流式传输服务器ex103来进行实时流式传输。在实时流式传输时,终端(例如,计算机ex111、游戏设备ex112、照相机ex113、家用电器ex114、智能电话ex115、飞机ex117中的终端)可以对用户经由终端捕捉的静止图像或视频内容进行上述实施例中描述的编码处理,可以将经由编码获得的视频数据和通过对与视频相对应的音频进行编码而获得的音频数据进行复用,并且可以向流式传输服务器ex103发送获得的数据。换言之,终端用作根据本公开内容的一个方面的图像编码器。
[0802]
流式传输服务器ex103将内容数据流式发送到请求流的客户端。客户端示例包括能够对上述编码数据进行解码的计算机ex111、游戏设备ex112、照相机ex113、家用电器ex114、智能电话ex115以及飞机内部的终端ex117。接收流式传输数据的设备可以解码和再现所接收的数据。换言之,根据本公开内容的一个方面,设备可以各自用作图像解码器。
[0803]
(分散处理)
[0804]
流式传输服务器ex103可以实现为多个服务器或计算机,在这些服务器或计算机之间划分诸如数据的处理、记录和流式传输的任务。例如,流式传输服务器ex103可以实现为内容交付网络(cdn),该网络经由连接位于世界各地的多个边缘服务器的网络来流式传输内容。在cdn中,物理上靠近客户端的边缘服务器可以被动态分配给客户端。内容被高速缓存并流式传输到边缘服务器以减少加载时间。例如,在出现某种类型的错误或连接变化时,例如由于业务激增,可以高速稳定地流式传输数据,因为例如,可以通过在多个边缘服务器之间划分处理,或者将流式传输任务切换到不同的边缘服务器并继续进行流式传输来避免网络的受影响部分。
[0805]
分散不仅限于用于流式传输的处理的划分;捕捉到的数据的编码可以在终端之间、在服务器侧或这二者之间划分和执行。在一个示例中,在典型的编码中,处理在两个循环中执行。第一个循环用于逐帧或逐场景检测图像的复杂程度,或检测编码负载。第二个循环用于保持图像质量和提高编码效率的处理。例如,通过让终端执行第一编码循环,让接收内容的服务器端执行第二编码循环,可以减少终端的处理负荷并提高内容的质量和编码效率。在这种情况下,在接收到解码请求时,可以近似实时地在另一个终端上接收和再现由一个终端执行的第一循环产生的编码数据。这使得可以实现流畅的实时流式传输。
[0806]
在另一示例中,照相机ex113等从图像中提取特征量(特征量或特性量),将与特征量相关的数据压缩为元数据,并将经压缩的元数据发送到服务器。例如,服务器基于特征量确定对象的重要性,并相应地改变量化精度,以执行适合图像意义(或内容重要性)的压缩。在服务器执行的第二次压缩过程中,特征量数据在提高运动向量预测的精度和效率方面特别有效。此外,具有相对低处理负载的编码(例如可变长度编码(vlc))可以由终端处理,而具有相对高处理负载的编码(例如上下文自适应二进制算术编码(cabac))可以由服务器处理。
[0807]
在又一示例中,存在例如体育场、购物中心或工厂中的多个终端捕捉大致相同场景的多个视频的情况。在这种情况下,例如,可以通过在捕捉视频的多个终端之间以及在必要时未捕捉视频的其他终端和服务器之间按单位划分处理任务来分散编码。单元可以是例如图片组(gop)、图片或由划分图片产生的瓦片。这使得可以减少加载时间并实现更接近实时的流式传输。
[0808]
由于视频具有大致相同的场景,因此可以由服务器进行管理和/或指令,以便由终
端捕捉的视频可以相互参照。此外,服务器可以从终端接收编码数据,改变数据项之间的引用关系,或者自行修正或替换图片,然后执行编码。这使得针对个体数据项生成具有更高质量和效率的流成为可能。
[0809]
此外,服务器可以在执行转码后对视频数据进行流式传输,以转换视频数据的编码格式。例如,服务器可以将编码格式从mpeg转换为vp(例如,vp9),可以将h.264转换为h.265等。
[0810]
以这种方式,编码可以由终端或一个或多个服务器执行。因此,虽然执行编码的设备在以下描述中被称为“服务器”或“终端”,但是由服务器执行的部分或全部过程可以由终端执行,同样,由终端执行的部分或全部过程可以由服务器执行。这也适用于解码过程。
[0811]
(3d,多角度)
[0812]
照相机ex113和/或智能电话ex115等多个终端对同时拍摄的不同场景的图像或视频组合而成的图像或视频,或从不同角度拍摄的同一场景的图像或视频的使用增加。可以基于例如单独获得的终端之间的相对位置关系,或者视频中具有匹配特征点的区域来对由终端捕捉的视频进行组合。
[0813]
除了二维运动图片的编码之外,服务器还可以基于运动图片的场景分析对静止图像进行编码(例如自动或在用户指定的时间点),并将经编码的静止图像发送到接收终端。此外,当服务器能够获得视频捕捉终端之间的相对位置关系时,除了二维运动图片外,服务器可以基于从不同角度捕捉的同一场景的视频来生成场景的三维几何图形。服务器可以对从例如点云生成的三维数据进行单独编码,并且基于使用三维数据识别或跟踪人或对象的结果,可以从由多个终端捕捉的视频中选择或重构并生成要发送到接收终端的视频。
[0814]
这允许用户通过自由选择与视频捕获终端相对应的视频来欣赏场景,并且允许用户通过从从多个图像或视频重构的三维数据中提取所选视点处的视频来欣赏内容。此外,对于视频,可以从相对不同的角度记录声音,服务器可以将来自特定角度或空间的音频与相应的视频进行复用,并发送经复用的视频和音频。
[0815]
近年来,由现实世界和虚拟世界复合而成的内容,例如虚拟现实(vr)和增强现实(ar)内容也开始流行。在vr图像的情况下,服务器可以从左眼和右眼的两个视点创建图像,并执行允许两个视点图像之间参考的编码,例如多视图编码(mvc),或者,也可以在不参考的情况下将图像编码为单独的流。当图像被解码为单独的流时,可以在再现时对流进行同步,从而根据用户的视点重建虚拟三维空间。
[0816]
在ar图像的情况下,服务器可以将存在于虚拟空间中的虚拟对象信息叠加到表示现实世界空间的照相机信息上,例如基于从用户的角度来看的三维位置或运动。解码器可以获得或存储虚拟对象信息和三维数据、从用户的角度来看的运动生成二维图像,然后通过图像的无缝连接生成叠加数据。或者,除了对虚拟对象信息的请求之外,解码器还可以向服务器发送从用户的角度来看的运动。服务器可以根据接收到的运动基于存储在服务器中的三维数据生成叠加数据,并将生成的叠加数据编码并流式传输到解码器。注意,叠加数据通常除了rgb值之外还包括表示透明度的α值,并且服务器将除了从三维数据生成的对象之外的部分的α值设置为例如0,并且当这些部分是透明的则可以执行编码。或者,服务器可以将背景设置为确定的rgb值,例如色度键,并生成将对象以外的区域设置为背景的数据。确定的rgb值可以是预确定的。
[0817]
类似的流式传输数据的解码可以由客户端(例如,终端)在服务器侧执行,或者在它们之间进行划分。在一个示例中,一个终端可以向服务器发送接收请求,所请求的内容可以由另一终端接收和解码,并且经解码的信号可以发送到具有显示器的设备。可以通过无论终端本身的通信的处理能力如何进行分散处理并适当地选择内容来再现高图像质量的数据。在又一个示例中,例如在电视接收较大尺寸的图像数据的同时,可以在个人终端或电视的一个或多个观看者的终端上解码并显示图片的区域,例如通过划分图片而获得的瓦片。这使得观看者可以共享大图视图并且每个观看者可以检查他或她指定的区域,或者更详细地近距离检查某个区域。
[0818]
在室内或室外的近距离、中距离和远距离上可以实现多个无线连接的情况下,可以使用诸如mpeg
‑
dash之类的流式传输系统标准来无缝地接收内容。用户可以在自由选择解码器或显示装置(包括用户终端、布置在室内或室外的显示器等)的同时实时切换数据。此外,使用例如关于用户位置的信息,可以在切换哪个终端处理解码和哪个终端处理内容显示的同时进行解码。这使得可以在用户正在前往目的地的途中、在嵌入了能够显示内容的设备的附近建筑物的墙壁上或在地面的一部分上映射和显示信息。此外,还可以基于对网络上编码数据的可访问性(例如当编码数据高速缓存在可从接收终端快速访问的服务器上时,或者当编码数据被复制时到内容交付服务中的边缘服务器)来切换接收数据的比特率。
[0819]
(网页优化)
[0820]
例如,图106示出了计算机ex111上的网页的显示屏幕的示例。例如,图107例示了智能电话ex115上的网页的显示屏幕的示例。如图106和图107所示,网页可以包括作为图像内容链接的多个图像链接,并且网页的外观可以根据用于查看网页的设备而不同。当多个图像链接在屏幕上可见时,直到用户明确选择图像链接,或者直到图像链接位于屏幕的近似中心或整个图像链接适合屏幕,显示装置(解码器)可以显示内容中包括的静止图像或i图片作为图像链接;可以使用多个静止图像或i图片显示诸如动画gif的视频;或者可以只接收基础层,并解码和显示视频。
[0821]
当用户选择图像链接时,显示装置在例如给予基础层最高优先级的同时执行解码。注意,如果网页的html代码中存在指示内容是可缩放的信息,则显示装置可以解码到增强层。进一步地,为了便于实时再现,在进行选择之前或带宽受到严重限制时,显示装置可以通过仅解码和显示前向参考图片(i图片、p图片、前向参考b图片)来减少前导画面被解码的时间点与显示解码图片的时间点之间的延迟(即从开始解码内容到显示内容之间的延迟)。更进一步地,显示设备可以故意忽略图片之间的参考关系,将所有b图片和p图片粗解码为前向参考图片,然后随着接收的图片数量随时间增加而执行正常解码。
[0822]
(自动驾驶)
[0823]
在发送和接收用于汽车自动驾驶或辅助驾驶的静止图像或视频数据(例如二维或三维地图信息)时,接收终端除了接收属于一层或多层的图像数据之外,还可以接收关于例如天气或道路建设的信息作为元数据,并在解码时将元数据与图像数据进行关联。注意,元数据可以按层分配,或者,可以简单地与图像数据复用。
[0824]
在这种情况下,由于包含接收终端的汽车、无人机、飞机等是移动的,因此接收终端可以通过发送指示接收终端的位置的信息在基站ex106至ex110之中的基站之间切换的
同时无缝地接收和执行解码。并且,根据用户的选择、用户的情况、和/或连接的带宽,接收终端可以动态选择接收元数据到什么程度,或者例如地图信息更新到什么程度。
[0825]
在内容提供系统ex100中,客户端可以实时接收、解码和再现用户发送的编码信息。
[0826]
(个体内容的流式传输)
[0827]
在内容提供系统ex100中,除了高图像质量之外,视频分发实体分发的长内容、低图像质量的单播或组播流式传输以及来自个体的短内容也是可能的。来自个体的此类内容的流行度可能会增加。服务器可以在编码处理之前先对内容进行编辑处理,以细化个体内容。例如,这可以使用以下配置来实现。
[0828]
在捕捉视频或图像内容的同时,或者在内容被捕捉并积累后,服务器基于原始数据或编码数据执行识别处理,例如捕捉错误处理、场景搜索处理、含义分析和/或对象检测处理。然后,基于识别处理的结果,服务器(例如在被提示时或自动地)编辑内容,其示例包括:校正(例如焦点和/或运动模糊校正);去除低优先级场景(例如与其他图片相比亮度较低或失焦的场景);对象边缘调整;以及色调调整。服务器基于编辑的结果对经编辑的数据进行编码。众所周知,过长的视频往往会收到较少的观看次数。相应地,为了将内容保持在与原始视频长度成比例的特定长度内,除了上述低优先级场景外,服务器还可以基于图像处理结果自动裁剪出低运动场景。或者,服务器可以基于场景含义的分析结果来生成和编码视频摘要。
[0829]
在某些情况下,个体内容可能包括侵犯版权、精神权利、肖像权等的内容。这种情况可能会导致对创作者不利的情况,例如超出创作者意图范围共享内容。因此,在编码之前,服务器可以例如编辑图像以模糊屏幕周边的人脸或模糊房屋内部。此外,服务器可以被配置为在待编码图像中识别除注册人之外的人的面部,并且当这样的面部出现在图像中时,可以将马赛克滤波器应用于例如人的面部。或者,作为用于编码的预处理或后处理,出于版权原因,用户可以指定包括人物的图像区域或要处理的背景区域。服务器可以通过例如用不同的图像替换该区域或者对该区域进行模糊处理来处理该指定区域。如果该区域包括人,则可以在运动图片中跟踪该人,并且随着该人的移动,该人的头部区域可以被替换为另一图像。
[0830]
由于个体制作的内容有实时观看的需求,其数据量往往较小,因此解码器可以首先接收基层作为最高优先级,并进行解码和再现,尽管这可能会根据带宽而有所不同。当内容被再现两次或更多次时,例如当解码器在基本层的解码和再现期间接收增强层并且循环再现时,解码器可以再现包括增强层的高图像质量视频。如果使用这种可缩放编码对流进行编码,则视频在处于未选择状态或视频开始时可能是低质量的,但它可以提供使流的图像质量以智能方式逐渐提高的体验。这不仅限于可缩放编码;通过根据第一次再现的低质量流以及使用第一个流作为参考编码的第二个流来配置单个流,可以提供相同的体验。
[0831]
(其他实现和应用示例)
[0832]
编码和解码可由lsi(大规模集成电路)ex500(见图105)执行,其通常包括在每个终端中。lsi ex500可以由单个芯片或多个芯片构成。对运动图像进行编码和解码的软件可以集成到例如计算机ex111可读的某种类型的记录介质(如cd
‑
rom、软盘或硬盘)中,并且编码和解码可以使用软件来执行。此外,当智能电话ex115配备有照相机时,可以发送由照相
机获得的视频数据。在这种情况下,视频数据可以由智能电话ex115中包括的lsi ex500编码。
[0833]
注意,lsi ex500可以被配置为下载和激活应用。在这种情况下,终端首先确定它是否与用于对内容进行编码的方案兼容,或者它是否能够执行特定服务。当终端与内容的编码方案不兼容,或者终端不能执行特定服务时,终端可以先下载编解码器或应用软件,然后获得并再现内容。
[0834]
除了使用互联网ex101的内容提供系统ex100的示例之外,至少可以在数字广播系统中实现上述实施例中描述的运动图像编码器(图像编码器)或运动图像解码器(图像解码器)。相同的编码处理和解码处理可以应用于使用例如卫星来发送和接收叠加有复用音频和视频数据的广播无线电波,即使这是面向多播的,而单播对于内容提供系统ex100则更容易。
[0835]
(硬件配置)
[0836]
图108示出了图105中所示的示例智能电话ex115的其他细节。图109示出了智能电话ex115的功能配置示例。智能电话ex115包括用于向基站ex110发送无线电波和从基站ex110接收无线电波的天线ex450、能够捕捉视频和静止图像的照相机ex465、以及显示解码数据(例如由照相机ex465捕捉的视频和由天线ex450接收的视频)的显示器ex458。智能手机ex115还包括用户接口ex466(例如触摸屏);音频输出单元ex457(例如用于输出语音或其他音频的扬声器);音频输入单元ex456(例如用于音频输入的麦克风);能够存储解码数据(例如捕捉的视频或静止图像、录制的音频、接收的视频或静止图像、邮件,以及解码数据)的存储器ex467;以及用于授权访问网络和各种数据的插槽ex464(其是sim ex468的接口)。注意,可以使用外部存储器来代替或补充存储器ex467。
[0837]
主控制器ex460(其可以综合控制显示器ex458和用户接口ex466)、电源电路ex461、用户接口输入控制器ex462、视频信号处理器ex455、摄像头接口ex463、显示控制器ex459、调制器/解调器ex452、复用器/解复用器ex453、音频信号处理器ex454、插槽ex464以及存储器ex467经由总线ex470连接。
[0838]
当用户打开电源电路ex461的电源按钮时,智能电话ex115通电进入可操作状态,并且每个组件例如由电池组供电。
[0839]
智能电话ex115基于由主控制器ex460(其包括cpu、rom和ram)执行的控制来执行用于呼叫和数据传输的处理。在进行呼叫时,音频输入单元ex456记录的音频信号由音频信号处理器ex454转换为数字音频信号,由调制器/解调器ex452进行扩频处理,并由发射机/接收机ex451进行数模转换和变频处理,所产生的信号经由天线ex450发射。所接收的数据由调制解调器ex452进行放大、变频、模数转换、逆扩频处理后,由音频信号处理器ex454转换成模拟音频信号,然后由音频输出单元ex457输出。
[0840]
例如,在数据传输模式中,可以基于主体的用户接口ex466的操作在主控制器ex460的控制下经由用户接口输入控制器ex462发送文本、静止图像或视频数据。执行类似的发送和接收处理。在数据传输模式下,当发送视频、静止图像或视音频时,视频信号处理器ex455经由上述实施例中描述的运动图像编码方法对存储器ex467中存储的视频信号或从照相机ex465输入的视频信号进行压缩编码,并将经编码的视频数据发送到复用器/解复用器ex453。音频信号处理器ex454在照相机ex465捕捉视频或静止图像的同时对由音频输
入单元ex456记录的音频信号进行编码,并将经编码的音频数据发送到复用器/解复用器ex453。复用器/解复用器ex453使用所确定的方案对经编码的视频数据和经编码的音频数据进行复用,使用调制器/解调器(调制器/解调器电路)ex452和发射机/接收机ex451来调制和转换数据,并经由天线ex450来发送结果。所确定的方案可以是预确定的。
[0841]
当接收到附加在电子邮件或聊天中的视频或从网页链接的视频时,例如,为了对经由天线ex450接收到的复用数据进行解码,复用器/解复用器ex453对复用数据进行解复用以将复用数据划分为视频数据比特流和音频数据比特流,将经编码的视频数据经由同步总线ex470提供给视频信号处理器ex455,并将经编码的音频数据经由同步总线ex470提供给音频信号处理器ex454。视频信号处理器ex455使用与上述实施例中描述的运动图像编码方法相对应的运动图像解码方法对视频信号进行解码,并且包括在链接运动图片文件中的视频或静止图像经由显示控制器ex459显示在显示器ex458上。音频信号处理器ex454对音频信号进行解码并从音频输出单元ex457输出音频。由于实时流式传输变得越来越流行,因此根据用户的环境,可能存在音频再现可能不适合社交的情况。因此,作为初始值,仅再现视频数据(例如不再现音频信号)的配置可能是优选的;仅当接收到输入时(例如当用户点击视频数据时),才可以同步和再现音频。
[0842]
虽然在上面的示例中使用了智能电话ex115,但其他实现方式也是可以想象的:包括编码器和解码器二者的收发机终端;仅包括编码器的发射机终端;以及仅包括解码器的接收机终端。在数字广播系统的描述中,给出了作为视频数据与音频数据复用的结果而获得的复用数据被接收或发送的示例。然而,复用数据可以是与音频数据以外的数据(例如与视频相关的文本数据)复用的视频数据。此外,可以接收或发送视频数据本身而不是复用数据。
[0843]
尽管包括cpu的主控制器ex460被描述为控制编码或解码过程,但是各种终端通常包括图形处理单元(gpu)。因此,这样的配置是可接受的:经由cpu和gpu共享的存储器,或包括被管理以便允许cpu和gpu共同使用的地址的存储器,或者经由单独的存储器,利用gpu的性能能力,一次性处理大的区域。这使得可以缩短编码时间、保持流的实时性,并减少延迟。特别地,与运动估计、解块滤波、样本自适应偏移(sao),以及变换/量化相关的处理可以由gpu而非cpu以图片为单位有效地执行,例如一次全部执行。
转载请注明原文地址:https://win.8miu.com/read-6774.html