画面编码和解码的方法和设备与流程

文档序号:33274408发布日期:2023-02-24 19:18阅读:32来源:国知局
画面编码和解码的方法和设备与流程
画面编码和解码的方法和设备
1.本技术是申请日为2018年5月17日、申请号为201880044002.7、发明名称为“画面编码和解码的方法和设备”的发明专利申请的分案申请。
技术领域
2.本原理一般涉及编码和解码画面部分的块的方法和设备,并且尤其涉及一种利用环内滤波(例如,利用样本自适应偏移滤波)的画面编码和解码的方法和设备。


背景技术:

3.为了实现高压缩效率,视频编码方案通常采用预测和变换来利用视频内容中的空间和时间冗余。一般地,使用帧内或帧间预测来利用帧内或帧间相关性,然后变换,量化和熵编码原始图像和预测的图像的样本的组之间的差异(经常表示为残差)。为了重构视频,通过与预测,变换,量化和熵编码对应的逆处理来解码压缩的数据。
4.传统的视频编码方案包括环内滤波处理,用于改进重构的图像的质量。环内滤波可以包括若干滤波处理,诸如去块滤波(df),hevc中的样本自适应偏移(sao)滤波和/或诸如维纳滤波器的自适应环内滤波alf。这些滤波器可以以该顺序或以不同的顺序相继应用。题为“high efficiency video coding”(2015年4月版)的itu-t h.265文档第8.7.3节描述样本自适应偏移滤波处理。sao滤波包括将偏移添加到一些重构的样本以便减少例如环状或带状伪像的编码伪像。当启用(或激活)sao滤波时,可以执行两种类型的滤波:边缘偏移(eo)类型或带偏移(bind offset,bo)类型。sao滤波通过首先将一个ctb(编码树块)的样本分类为多个类别并取决于其类别为每个样本添加特定的偏移来减少样本失真。因此,每个颜色分量的一组sao参数(包括例如偏移,可能的偏移符号,滤波器类型等的一组sao参数)在编码器侧确定,并在ctu的其他语法元素之后以ctu(编码树单元)级别编码。为了节省带宽,不一定要为每个ctu编码sao参数。因此,ctu可以从邻近ctu继承其sao参数。sao参数的这种解码模式称为合并模式。更确切地,在hevc中,ctu可以从位于其正上面(向上合并)或位于正左侧(向左合并)的ctu继承其sao参数,如图1描绘。在此图上,一组sao参数有效地编码用于ctu 0、2和6。其他ctu继承其sao参数。作为示例,ctu 1、4和5从ctu 0继承其sao参数,ctu 3从ctu 2继承其sao参数,并且ctu 7从ctu 6继承其sao参数。
5.因为ctu以光栅扫描顺序编码/解码,所以用于合并的sao参数的候选集的选取被限制。作为示例,ctu 3只能从ctu 2继承其sao参数,并且ctu 1、4、5只能从ctu 0继承其sao参数。ctu7可以直接从ctu 6(向左合并)或间接从ctu 2合并(即,经由ctu 3,向上合并)继承其sao参数。由此该方法效率低下,因为图1的大多数ctu只能从单个ctu继承其sao参数,而在比特流中编码3组sao参数(即,每个ctu 0、2和6的一组sao参数)。


技术实现要素:

6.公开一种解码画面部分的块的解码方法,包括:
[0007]-从比特流解码滤波器参数的多个候选集;
[0008]-对于画面部分的当前块,从比特流解码标识滤波器参数的候选集之一的索引;
[0009]-从比特流解码当前块;和
[0010]-利用由解码的索引标识的滤波器参数的候选集,滤波解码的当前块。
[0011]
还公开一种解码设备,包括:
[0012]-用于从比特流解码滤波器参数的多个候选集的部件;
[0013]-用于对于画面部分的当前块,从比特流解码标识滤波器参数的候选集之一的索引的部件;
[0014]-用于从比特流解码当前块的部件;和
[0015]-用于利用由解码的索引标识的滤波器参数的候选集,滤波解码的当前块的部件。
[0016]
在变型中,公开一种解码设备,该解码设备包括配置为访问比特流的通信接口和配置为以下的至少一个处理器:
[0017]-从访问的比特流解码滤波器参数的多个候选集;
[0018]-对于画面的当前块,从访问的比特流解码标识滤波器参数的候选集之一的索引;
[0019]-从访问的比特流解码当前块;和
[0020]-利用由解码的索引标识的滤波器参数的候选集,滤波解码的当前块。
[0021]
以下实施例适用于以上公开的解码方法和解码设备。
[0022]
在特定实施例中,从所述当前块所属的条带的条带头部中解码滤波器参数的多个候选集。
[0023]
有利地,从与以解码顺序首先解码的画面部分的块相关联的比特流的一部分解码滤波器参数的多个候选集。
[0024]
在另一特定实施例中,解码方法还包括:从比特流解码表示滤波器参数的候选集的数量的数据。
[0025]
有利地,从比特流以它们的使用顺序解码滤波器参数的多个候选集的候选集。
[0026]
在特定实施例中,当前块的索引的最大值是用于滤波当前块之前解码的块的滤波器参数的候选集的数量的递增函数。
[0027]
在另一特定实施例中,解码方法还包括在滤波当前块之前,重新排序滤波参数的候选集。
[0028]
有利地,重新排序滤波器参数的候选集,使得用于滤波位于紧邻当前块的左侧的块的滤波器参数的集合在该块可用时被首先列出。
[0029]
有利地,重新排序滤波器参数的候选集,使得用于滤波当前块之前解码的块的滤波器参数的候选集以取决于当前块之前解码的块和当前块之间的空间距离的顺序列出。
[0030]
有利地,重新排序滤波器参数的候选集,使得在用于滤波所述当前块之前解码的块的滤波器参数的最后一个候选集之前插入用于滤波当前块之前解码的块未使用的滤波器参数的至少一个候选集。
[0031]
有利地,重新排序滤波器参数的候选集,使得没有由当前块之前解码的块使用并且是接下来要使用的第一候选的滤波器参数的候选集被插入在一位置,该位置是要在所述当前块之后解码的所述画面部分的块的数量和尚未由当前块之前解码的块使用的滤波器参数的候选集的数量的函数。
[0032]
有利地,该方法还包括在滤波器参数的多个候选集中插入滤波器参数的预定义候
选集,例如,规定块不被滤波的滤波器参数的候选集。
[0033]
有利地,将规定块不被滤波的滤波器参数的候选集插入在预定义位置的滤波器参数的候选集之间。
[0034]
在特定实施例中,滤波器参数的所述多个候选集包括滤波器亮度参数,并且该方法还包括解码滤波器色度参数的另一多个候选集和标识滤波器色度参数的候选集之一的另一索引。利用由解码的索引标识的滤波器亮度参数的候选集来完成滤波解码的当前块亮度样本,并且利用由解码的另一个索引标识的滤波器色度参数的候选集来完成滤波解码的当前块色度样本。
[0035]
还公开一种编码画面部分的块的编码方法,包括:
[0036]-确定画面部分的当前块的重构的版本,重构的版本被称为重构的块;
[0037]-获得滤波器参数的多个候选集,并为当前块确定标识滤波器参数的候选集之一的索引;
[0038]-利用由索引标识的滤波器参数的多个候选集的滤波器参数的候选集,滤波重构的块;和
[0039]-在比特流中编码滤波器参数的所述多个候选集,当前块和索引。
[0040]
还公开一种编码设备,其包括:
[0041]-用于确定画面部分的当前块的重构的版本的部件,重构的版本称为重构的块;
[0042]-用于获得滤波器参数的多个候选集,并为当前块确定标识滤波器参数的候选集之一的索引的部件;
[0043]-用于利用由索引标识的滤波器参数的多个候选集的滤波器参数的候选集,滤波重构的块的部件;和
[0044]-用于在比特流中编码滤波器参数的多个候选集,当前块和索引的部件。
[0045]
在变型中,公开一种编码设备,其包括配置为访问画面部分的通信接口和配置为以下的至少一个处理器:
[0046]-确定访问的画面部分的当前块的重构的版本,重构的版本称为重构的块;
[0047]-获得滤波器参数的多个候选集,并为当前块确定标识滤波器参数的候选集之一的索引;
[0048]-利用由索引标识的滤波器参数的多个候选集的滤波器参数的候选集,滤波重构的块;和
[0049]-在比特流中编码滤波器参数的所述多个候选集,当前块和索引。
[0050]
还公开一种比特流,该比特流表示画面部分的块,包括表示滤波器参数的多个候选集的编码的数据,表示画面部分的至少一个当前块的编码的数据和表示用于标识要用于滤波当前块的解码的版本的滤波器参数的候选集之一的至少一个索引的编码的数据。
[0051]
在变型中,公开一种非暂时性处理器可读介质,存储有表示画面部分的块的比特流。该比特流包括表示滤波器参数的多个候选集的编码的数据,表示画面部分的至少一个当前块的编码的数据和表示用于标识要用于滤波当前块的解码的版本的滤波器参数的候选集之一的至少一个索引的编码的数据。
[0052]
公开了一种发送方法,包括:
[0053]-发送表示滤波器参数的多个候选集的编码的数据;
[0054]-发送表示画面部分的至少一个当前块的编码的数据,以及
[0055]-发送表示标识要用于滤波当前块的解码的版本的滤波器参数的候选集之一的至少一个索引的编码的数据。
[0056]
公开了一种发送设备,包括:
[0057]-用于发送表示滤波器参数的多个候选集的编码的数据的部件;
[0058]-用于发送表示画面部分的至少一个当前块的编码的数据的部件,以及
[0059]-用于发送表示标识要用于滤波当前块的解码的版本的滤波器参数的候选集之一的至少一个索引的编码的数据的部件。
[0060]
公开一种发送设备,包括配置为访问画面部分的通信接口和配置为以下的至少一个处理器:
[0061]-发送表示滤波器参数的多个候选集的编码的数据;
[0062]-发送表示画面部分的至少一个当前块的编码的数据,以及
[0063]-发送表示标识要用于滤波当前块的解码的版本的滤波器参数的候选集之一的至少一个索引的编码的数据。
[0064]
以下实施例适用于以上公开的编码方法,编码设备,比特流,处理器可读介质,发送方法和发送设备。
[0065]
有利地,滤波器参数的多个候选集被编码在当前块所属的条带的条带头部中。
[0066]
有利地,滤波器参数的多个候选集被编码在与以编码顺序首先编码的画面部分的块相关联的比特流的一部分中。
[0067]
有利地,包括:在比特流中编码表示滤波器参数的候选集的数量的数据。
[0068]
有利地,滤波器参数的多个候选集的候选集在比特流以它们的使用顺序编码。
[0069]
有利地,当前块的索引的最大值是用于滤波当前块之前编码的块的滤波器参数的候选集的数量的递增函数。
[0070]
有利地,还包括,在编码当前块之前,重新排序滤波器参数的候选集。
[0071]
有利地,重新排序滤波器参数的候选集,使得用于滤波位于紧邻当前块的左侧的块的滤波器参数的集合在该块可用时被首先列出。
[0072]
有利地,重新排序滤波器参数的候选集,使得用于滤波当前块之前编码的块的滤波器参数的候选集以取决于当前块之前编码的块和当前块之间的空间距离的顺序列出。
[0073]
有利地,重新排序滤波器参数的候选集,使得没有用于滤波当前块之前编码的块的滤波器参数的至少一个候选集在用于滤波当前块之前编码的块的滤波器参数的最后一个候选集之前插入。
[0074]
有利地,重新排序滤波器参数的候选集,使得没有被当前块之前编码的块使用并且是接下来要使用的第一候选的滤波器参数的候选集被插入一位置,该位置是要在当前块之后编码的画面部分的块的数量和尚未由当前块之前编码的块使用的滤波器参数的候选集的数量的函数。
[0075]
有利地,该方法还包括在滤波器参数的多个候选集中插入滤波器参数的预定义候选集,例如,规定块不被滤波的滤波器参数的候选集。
[0076]
有利地,将规定块不被滤波的滤波器参数的候选集插入在预定义位置的滤波器参数的候选集之间。
[0077]
在特定实施例中,滤波器参数的所述多个候选集包括滤波器亮度参数,并且该方法还包括获得滤波器色度参数的另一多个候选集并且为当前块确定标识滤波器色度参数的候选集之一的另一索引。利用由索引标识的滤波器亮度参数的候选集来完成滤波重构的块亮度样本,并且利用由另一个索引标识的滤波器色度参数的候选集来完成滤波重构的块色度样本。该方法还包括在比特流中编码滤波器亮度参数的多个候选集和滤波器色度参数的另一多个候选集,当前块和索引。
附图说明
[0078]-图1描绘根据现有技术的从位于其上面或左侧的邻近ctu继承其sao参数的ctu;
[0079]-图2表示根据特定和非限制性实施例的被配置为在比特流中编码画面的发送器的示例性架构;
[0080]-图3例示适应于执行根据本原理的编码方法的示例性视频编码器。
[0081]-图4是例示根据现有技术的eo(边缘偏移)样本分类的四个1-d定向图案的图示示例;
[0082]-图5是例示根据现有技术的具有相关联的开始带位置和四个连续带的偏移的bo(带偏移)的图示示例;
[0083]-图6a至图6c表示根据特定且非限制性实施例的在比特流中编码画面部分的块的方法的流程图;
[0084]-图7是例示根据本原理的参考滤波器参数的多个候选集的画面部分的块的图示示例;
[0085]-图8是表示根据本原理的画面部分的块的比特流的图示示例,其中用与第一块相关联的语法元素发信号通知滤波器参数的多个候选集;
[0086]-图9表示获得滤波器参数的多个候选集并确定画面部分的每个块的索引的方法的流程图。
[0087]-图10是例示画面部分的块的不同扫描的图示示例;
[0088]-图11表示根据特定且非限制性实施例的配置为从比特流解码画面的接收器的示例性架构;
[0089]-图12例示适应于执行根据本原理的解码方法的示例性视频解码器;
[0090]-图13a至13c表示根据特定且非限制性实施例的从比特流解码画面部分的块的方法的流程图;
[0091]-图14是例示根据本原理的参考滤波器参数的多个候选集的画面部分的块的图示示例;
[0092]-图15是例示根据本原理的参考滤波器参数的多个候选集的画面部分的块的另一图示示例;
[0093]-图16是例示在滤波器块大小和形状与ctu大小和形状不同的情况下的一个ctu块和滤波器块大小的图示示例;和
[0094]-图17是示出在滤波器块大小为矩形的情况下的滤波器块图的图示示例。
具体实施方式
[0095]
要理解,已经简化附图和描述以示出与清楚理解本原理有关的元件,同时为了清楚起见,省去在典型编码和/或解码设备中发现的许多其他元件。将理解的是,尽管本文可以使用术语第一和第二来描述各种元件,但是这些元件不应受到这些术语的限制。这些术语仅用于区分一个元件和另一个元件。
[0096]
画面是单色格式的亮度样本的阵列,或者是4:2:0、4:2:2和4:4:4颜色格式的亮度样本的阵列和两个相应的色度样本的阵列,或者更一般地,是三个颜色分量(诸如,绿色,红色,蓝色)的阵列。通常,“块”针对样本阵列(例如,亮度y)中的特定区域,并且“单元”包括所有颜色分量(例如,亮度y以及可能的色度cb和色度cr)的共位块。条带是整数个基本编码单元,诸如hevc编码树单元或h.264宏块单元。条带可以包括完整画面及其一部分。每一条带可包含一个或多个条带片段。
[0097]
在下文中,单词“重构的”和“解码的”可以互换使用。通常但不一定在编码器侧使用“重构的”,而在解码器侧使用“解码的”。应该注意,术语“解码的”或“重构的”可以意味着比特流被部分地“解码”或“重构”,例如,在去块滤波之后但在sao滤波之前获得的信号,并且重构的样本可以与用于显示的最终解码的输出不同。还可以互换使用术语“图像”,“画面”和“帧”。
[0098]
关于hevc标准描述各种实施例。然而,本原理不限于hevc,并且可以应用于其他标准,建议及其扩展,包括例如hevc或hevc扩展,像格式范围(rext),可伸缩性(shvc),多视图(mv-hevc)扩展和h.266那样。关于画面部分的块(例如,条带的块)的编码/解码描述各种实施例。它们可以应用于编码/解码整个画面或整个画面序列。
[0099]
以上描述各种方法,并且每个方法包括用于实现描述的方法的一个或多个步骤或动作。除非方法的适当操作要求特定顺序的步骤或动作,否则可以修改或组合特定步骤和/或动作的顺序和/或使用。
[0100]
图2表示根据特定且非限制性实施例的被配置为在比特流编码画面的发送器1000的示例性架构。。
[0101]
发送器1000包括一个或多个处理器1005,其可以包括例如cpu,gpu和/或dsp(数字信号处理器的英文缩写),以及内部存储器1030(例如,ram,rom,和/或eprom)。发送器1000包括一个或多个通信接口1010(例如,键盘,鼠标,触摸板,网络摄像头),每个适应于显示输出信息和/或允许用户输入命令和/或数据;以及电源1020,可以位于发送器1000的外部。发送器1000还可以包括一个或多个网络接口(未示出)。编码器模块1040表示可以被包括在设备中以执行编码功能的模块。另外,编码器模块1040可以被实现为发送器1000的单独的元件,或者可以被并入处理器1005中作为硬件和软件的组合,如本领域技术人员已知。
[0102]
画面可以从源获得。根据不同的实施例,源可以是但不限于:
[0103]-本地存储器,例如,视频存储器,ram,闪存,硬盘;
[0104]-贮存接口,例如与大容量贮存器,rom,光盘或磁性载体的接口;
[0105]-通信接口,例如,有线接口(例如,总线接口,广域网接口,局域网接口)或无线接口(诸如,ieee 802.11接口或蓝牙接口);和
[0106]-画面捕获电路(例如,传感器,诸如例如ccd(电荷耦合器件)或cmos(互补金属氧化物半导体))。
[0107]
根据不同的实施例,比特流可以被发送到目的地。作为示例,比特流被存储在远程或本地存储器中,例如,视频存储器或ram,硬盘。在变型中,比特流被发送到贮存接口,例如,与大容量贮存器,rom,闪存,光盘或磁性载体的接口和/或通过通信接口(例如,点对点链接,通信总线,点对多点链接或广播网络的接口)传输。
[0108]
根据示例性且非限制性的实施例,发送器1000还包括存储在存储器1030中的计算机程序。该计算机程序包括指令,当由发送器1000,特别是由处理器1005执行时,这些指令使发送器1000能够执行参考图6a到6c描述的编码方法。根据变型,计算机程序在发送器1000外部存储在非暂时性数字数据载体上(例如外部贮存介质上,诸如hdd,cd-rom,dvd,只读和/或dvd驱动器和/或dvd读/写驱动器之类,都是本领域已知的)。发送器1000因此包括读取计算机程序的机构。此外,发送器1000可以通过相应的usb端口(未示出)访问一个或多个通用串行总线(usb)类型的贮存设备(例如,“存储器棒”)。
[0109]
根据示例性和非限制性实施例,发送器1000可以是但不限于:
[0110]-移动设备;
[0111]-通信设备;
[0112]-游戏设备;
[0113]-平板电脑(或平板计算机);
[0114]-膝上型计算机;
[0115]-静态画面相机;
[0116]-摄像机;
[0117]-编码芯片或编码设备/装置;
[0118]-静态画面服务器;和
[0119]-视频服务器(例如,广播服务器,视频点播服务器或网络服务器)。
[0120]
图3例示适应于执行根据图6a-6c的实施例的编码方法的示例性视频编码器100,例如hevc视频编码器。编码器100是发送器1000或该发送器1000的一部分的示例。
[0121]
为了编码,通常将画面划分为基本编码单元,例如,hevc中的编码树单元(ctu)或h.264中的宏块单元。一组可能连续的基本编码单元被分组为条带。基本编码单元包含所有颜色分量的基本编码块。在hevc中,最小的亮度编码树块(ctb)大小16x16与先前视频编码标准中使用的宏块大小对应。将理解的是,尽管本文中使用术语ctu和ctb来描述编码/解码方法和编码/解码装置,但是这些方法和装置不应受到可以用其他标准不同地措辞(例如,宏块,编码块)的这些特定术语的限制。
[0122]
在hevc中,ctb是四叉树划分为编码块(cb)的根,而编码块则划分为一个或多个预测块(pb),并形成四叉树划分为变换块(tb)的根。与编码块,预测块和变换块对应,编码单元(cu)包括预测单元(pu)和树状结构的变换单元(tu)组,pu包括所有颜色分量的预测信息,并且tu包括每个颜色分量的残差编码语法结构。亮度分量的cb,pb和tb的大小适用于对应的cu,pu和tu。在本技术中,术语“块”或“画面块”可用于指代ctu,cu,pu,tu,cb,pb和tb中的任何一个。另外,术语“块”或“画面块”可用于指代h.264/avc或其他视频编码标准中指定的宏块,分区和子块,并且更一般地指代各种大小的样本阵列。
[0123]
在示例性编码器100中,如下描述,通过编码器元件编码画面。要编码的画面以cu为单位处理。使用帧内或帧间模式编码每个cu。当cu以帧内模式编码时,其执行帧内预测
(160)。在帧间模式下,执行运动估计(175)和补偿(170)。编码器决定(105)使用帧内模式或帧间模式中的哪一个来编码cu,并且通过预测模式标志指示帧内/帧间决定。通过从原始画面块中减去(110)预测的样本块(也称为预测量)来计算残差。
[0124]
帧内模式下的cu从同一条带内重构的邻近样本预测。hevc中可用35个帧内预测模式的组,包括dc模式,平面模式和33个角度预测模式。从与当前块相邻的行和列重构帧内预测参考。使用来自先前重构的块的可用样本,参考在水平和垂直方向上延伸超过块大小的两倍。当将角度预测模式用于帧内预测时,可以沿角度预测模式指示的方向复制参考样本。
[0125]
可以使用两个不同的选项编码当前块的可适用亮度帧内预测模式。如果可适用的模式包括在三个最可能的模式(mpm)的构造列表中,则该模式由mpm列表中的索引发信号通知。否则,通过模式索引的固定长度二进制化来发信号通知模式。从顶部和左侧邻近块的帧内预测模式推导三种最可能的模式。
[0126]
对于帧间cu,将对应的编码块进一步划分为一个或多个预测块。在pb级别上执行帧间预测,并且对应的pu包含关于如何执行帧间预测的信息。
[0127]
在hevc中,运动补偿的运动信息的精度对于亮度分量是四分之一样本,并且对于色度分量是八分之一样本。7抽头或8抽头插值滤波器用于分数样本采样位置的插值,即,可以针对亮度进行水平和垂直方向二者上的完全样本位置的1/4、1/2和3/4。
[0128]
变换(125)和量化(130)残差。熵编码(145)量化的变换系数以及运动矢量和其他语法元素以输出比特流。编码器还可以跳过该变换,并以4x4tu为基础将量化直接应用于未变换的残差信号。编码器还可以绕过变换和量化两者,即,在不应用变换或量化处理的情况下直接编码残差。在直接pcm编码中,不应用任何预测,并且编码单元样本直接编码到比特流中。
[0129]
编码器包括解码环,并因此解码被编码的块以为进一步的预测提供参考。量化的变换系数被去量化(140)并被逆变换(150)以解码残差。通过组合(155)解码的残差和预测的样本块来重构画面块。环内滤波器(165)被应用于重构的画面,以例如执行去块/sao(样本自适应偏移)滤波以减少编码伪像。滤波的画面可以存储在参考画面缓冲器(180)中,并用作其他画面的参考。
[0130]
在hevc中,可以在视频级别,条带级别和ctb级别上激活或去激活sao滤波。指定两种sao模式:边缘偏移(eo)和带偏移(bo)。对于eo,样本分类基于要滤波画面中的局部定向结构。对于bo,样本分类基于样本值。eo或bo的参数可以显式编码或从邻域推导(向上合并或向左合并)。sao可以应用于亮度和色度分量,其中sao模式对于cb和cr分量相同。为每个颜色分量分别配置sao参数。更确切地,在ctu级别编码sao参数集(即,偏移,sao类型eo,bo和禁用,eo时的类别和bo时的带位置)。
[0131]
在激活sao滤波用于ctb的情况下,ctb中的样本被分类为nc个类别,例如,hevc中nc=5。对于类别c(s)中的样本s,可以将样本调整为s=s+off(c(s)),其中off(n)是类别n的偏移值。在hevc中,从比特流中解码仅4个(=nc-1)类别的偏移值,其他偏移值设置为0。对于bo,解码绝对偏移值和符号。对于eo,仅解码绝对偏移值,从类别中推断符号(类别1和2的正符号和类别3和4的负符号)。
[0132]
边缘偏移
[0133]
eo使用四个1d-定向模式用于样本分类:水平,垂直,对角线135
°
和对角线45
°
,如
图4所示,其中标签“p
c”表示当前样本,并且标签“p
0”和“p
1”表示两个邻近样本。基于方向指定四个eo种类,每个eo种类与一个方向对应。选择的eo种类(对于每个启用eo的ctb仅一个)在比特流中作为辅助信息发信号通知。
[0134][0135]
表1
[0136]
对于给定的eo种类,ctb内部的每个样本基于局部梯度分类为五个(nc=5)类别之一。具体地,标记为“p
c”的当前样本值与其沿选择的1-d方向的两个邻居比较。表1中总结样本的分类化规则。类别1和4分别与沿选择的1-d图案的局部谷和局部峰相关联,类别2和3分别与沿选择的1-d图案的凹凸角相关联。正偏移用于类别1和2,并且负偏移用于类别3和4。
[0137]
如果当前样本值不属于类别1-4(即,当前样本值与其两个邻居相同,或者p0《pc《p1或p0》pc》p1),则它属于类别0和不应用sao(即,偏移是0)。对于类别1-4,编码偏移。更精确地,四个偏移的绝对值由编码器发信号通知,每个类别一个绝对值。偏移的符号没有被编码,而从对应的eo类别隐式推导。
[0138]
带偏移
[0139]
对于bo,样本值范围(例如,8比特中的0-255)均匀地分割为32个带。将一个偏移添加到其值属于同一带的所有样本。在hevc中,仅将(nc-1)=4个连续带的偏移和开始带位置发信号通知给解码器,如图5例示。在该图上,开始带是第18带,并且编码的偏移值是{0,0,2,3}。开始带位置(即,索引)指示在32个带内具有编码的偏移的第一带的位置。对于(nc-1)个中的每个带,编码一个偏移,并且其余带具有等于零的偏移。当开始带位置接近最后带位置时,由于带被管理为循环缓冲器,偏移值可以对应于非连续带。对于bo,请注意,这四个发信号通知的带可以被视为四个类别,其余带可以被视为另一个类别。在本技术中,我们互换使用术语“带”和“类别”。对于hevc中的bo,偏移被编码用于四个带。更确切地,四个偏移的绝对值由编码器发信号通知,4个带中的每个一个绝对值。偏移的符号也由编码器发信号通知。
[0140]
图6a表示根据特定且非限制性实施例的在比特流中编码画面部分的块的方法的流程图。画面部分可以是整个画面或其子部分,例如,条带。
[0141]
该方法开始于步骤s100。在步骤s110,发送器1000,例如诸如编码器100,访问画面部分的当前块。
[0142]
在步骤s120,发送器确定访问的块的重构版本,也称为重构的块。重构的块通常包括亮度块(即,亮度样本的块)和色度块(即,色度样本的块)。确定重构的块通常但不一定包括部分编码(可能没有熵编码)以及随后的解码。部分编码包括:从访问的块减去预测量以获得残差的块,将残差的块变换为变换系数的块,以量化步长量化系数的块,以获得量化的变换系数的块。在编码器侧对块进行解码通常但不一定包括去量化和逆变换量化的变换系数的块,以获得残差的块并将预测量添加到残差的块以获得重构的块。该方法可以在画面部分的所有块上循环步骤s110和s120,以便在继续步骤s130之前获得由所有重构的块组成的重构的画面部分。
[0143]
在步骤s130,发送器获得与亮度和色度这两个分量有关的滤波器参数的多个候选集,并且进一步对于画面部分的每个块确定标识在多个候选集中要在步骤s140用于滤波重构的块的一个候选集的索引(merge_idx)。一组滤波器参数包括至少一个滤波器参数。
[0144]
滤波器参数的多个候选集可以离线确定,并由此从存储器获得。在一个变型中,从画面部分的内容,如图9所示,通过称为rdo的率失真优化动态地确定滤波器参数的多个候选集。在后一种情况下,在确定编码率时对于解码方法公开的不同变型(例如,列表中的候选集的重新排序,如针对图13a的步骤s250公开的)也适用。为此目的,选择导致最佳率失真折衷的候选集的列表。在具体实施例中,候选集的列表包括称为off候选集的滤波器参数的特定候选集。作为示例,off候选放置在候选集的列表中的预定义的位置,例如,第二个位置。
[0145]
还为画面部分的每个块确定索引,所述索引标识要用于滤波重构的块的多个候选集中的一个候选集。该索引也可以由rdo确定。在候选集的列表的重新排序的情况下,在列表重新排序之后确定该索引。
[0146]
在步骤s140,发送器利用由在步骤s130确定的索引标识的滤波器参数的候选集滤波重构的块。在索引merge_idx标识off候选的情况下,在步骤s140不滤波该块。在具体实施例中,滤波器是sao滤波器,并且参考图3公开的滤波步骤适用。该方法可以在画面部分的所有块上循环步骤s140,以便在继续到步骤s150之前滤波所有这些块。
[0147]
在步骤s150,发送器在比特流中编码滤波器参数的多个候选集。关于图7,编码滤波器参数的三个候选集(c-0,c-1和c-2)。图7的右侧上的画面部分的每个块都从三个候选集之一继承其滤波器参数。在图7上,块blk_0,blk_1,blk_4和blk_5具有相同的滤波器参数,即,候选集c-0的滤波器参数,块blk_2和blk_3具有相同的滤波器参数,即候选集c-1的滤波器参数,并且块blk_6和blk_7具有相同的滤波器参数,即,候选集c-2的滤波器参数。如果在步骤s130获得的列表中存在off候选,则不将该off候选编码在比特流中,而是将其添加到解码器侧的候选集的列表中。在图7中,为清楚起见,使用的候选集由其编号以原始候选集列表顺序进行参考。在列表的重新排序的情况下,即使两个块使用相同的候选集用于滤波,编码的索引(merge_idx)的值可能对于两个块不同。相反,因为在确定索引的值之前重新排序列表,所以两个块可能具有与两个不同候选集对应的编码的索引的相同值。
[0148]
有利地,滤波器参数的多个候选集被编码在条带的头部中。在一个变型中,滤波器参数的多个候选集以编码的顺序在画面部分的第一个块(例如,图7上的blk_0)的级别被编码。作为示例,在图8上,滤波器参数的三个候选集利用第一个块blk_0的语法元素编码。
[0149]
在另一个实施例中,发送器在所述比特流中编码表示滤波器参数的多个候选集的
数据。作为示例,编码的数据num_sao_cand_minus1是要被编码的滤波器参数的候选集的数量减去一。因为num_sao_cand_minus1的值必然小于一个画面部分中(例如,在一个条带中)的块的数量减去一,所以表示语法元素num_sao_cand_minus1的比特的数量小于log2(一个画面部分的块的数量减去一)。
[0150]
由表2和表3提供用于sao滤波的hevc类型的语法的示例。根据表2,一旦编码num_sao_cand_minus1,就编码sao参数的每个候选集。在表2的示例中,候选集(这里,off候选)被推断并由此不被编码。在没有推断候选的情况下,修改语法,如表3例示。表4例示根据本原理的sao参数的候选集的编码。
[0151]
这些sao参数如下:
[0152]
slice_sao_luma_flag(在条带头部中编码)等于1规定sao被启用用于当前条带中的亮度分量并且存在亮度分量的sao参数;slice_sao_luma_flag等于0规定sao被禁用于当前条带中的亮度分量并且不存在亮度分量的sao参数。
[0153]
slice_sao_chroma_flag(在条带头中编码)等于1规定sao被启用用于当前条带中的色度分量并且存在色度分量的sao参数;slice_sao_chroma_flag等于0规定sao被禁用于当前条带中的色度分量并且不存在色度分量的sao参数。
[0154]
sao_type_idx_luma规定亮度分量的偏移类型。
[0155]
sao_type_idx_chroma规定色度分量的偏移类型。
[0156]
saotypeidx[cidx][idxcand]规定颜色分量cidx的候选集idxcand的偏移类型(0未应用,带偏移或边缘偏移)。作为示例,值0指示未应用sao滤波,值1指示利用带偏移进行sao滤波,并且值2指示利用边缘偏移进行sao滤波。saotypeidx[cidx][idxcand]从sao_type_idx_luma和sao_type_idx_chroma语法元素推导。对于cidx=1或2,saotypeidx[0][idxcand]设置为等于sao_type_idx_luma,并且saotypeidx[cidx][idxcand]设置为等于sao_type_idx_chroma。
[0157]
sao_offset_abs[cidx][idxcand][i]规定颜色分量cidx的候选集idxcand的第i个类别的偏移值。
[0158]
sao_offset_sign[cidx][idxcand][i]规定颜色分量cidx的候选集idxcand的第i个类别的偏移值的符号。
[0159]
sao_band_position[cidx][idxcand]规定当saotypeidx[cidx][idxcand]等于带偏移时样本范围的第一个带偏移的值。
[0160]
sao_eo_class_luma规定亮度分量的边缘偏移种类。
[0161]
sao_eo_class_chroma规定色度分量的边缘偏移种类。
[0162][0163]
表2
[0164][0165]
表3
[0166][0167][0168]
表4
[0169]
在步骤s160,发送器在比特流中编码当前块和在步骤s130确定的索引(merge_idx)。这里,编码指代熵编码。因此,当前块(更确切地,在步骤s120获得的具有编码参数(例如,编码模式,可能是运动矢量等)的变换系数)例如使用例如上下文自适应二进制算术编码(cabac)或上下文自适应可变长度编码(cavlc)被熵编码在比特流中。在候选集的列表中存在off候选集的情况下由表5例示或者在候选集的列表中不存在off候选集的情况下由表6例示坐标(rx,ry)的块的索引merge_idx的编码。利用cmax=idx_max,使用截断莱斯(truncated rice,tr)二值化来例如编码索引,如hevc标准9.3.3.2中规定。以与解码器侧相同的方式确定idx_max。idx_max表示给定块的索引的最大可能值。
[0170]
参考图8,为每个块编码索引(merge_idx)。该索引标识滤波器参数的候选集之一。在实施例中,所有块都处于合并模式,即,所有块都从滤波器参数的候选集之一继承其滤波器参数。因此不再需要为块编码指示该块是否处于合并模式的标志,即,它是否从邻居继承其滤波器参数,所以使得可以节省一些比特。具体地,不需要编码以下hevc标志sao_merge_left_flag和sao_merge_up_flag,其规定sao参数从邻近ctu的对应sao参数推导。
[0171]
在候选参数集的列表中不存在off候选集的情况下,merge_idx可以被推导用于第一个块blk_0,并且因此不被编码(参见表6中的if(rx==0 and ry==0){

})。
[0172][0173][0174]
表5
[0175][0176]
表6
[0177]
该方法可以在画面部分的所有块上循环步骤s160,以利用其对应索引编码画面部分的所有块。
[0178]
该方法在步骤s180处结束。
[0179]
本原理可以应用于sao滤波器,但是不限于这种类型的滤波器,并且可以应用于不得不在块级别定义至少一个滤波器参数集的其他滤波器。
[0180]
在图6a的实施例中,编码单个索引,该单个索引标识滤波器参数的候选集的单个列表中的亮度和色度滤波器参数的候选集。实际上,如表4例示,滤波器参数的候选集包含与亮度分量有关的参数(例如,sao_offset_abs[0][idxcand][i])和与色度分量有关的参数(例如,sao_offset_abs[1][idxcand][i])。图6b描绘图6a的方法的变型。在此变型中,亮度和色度分量被分别处理。这种操作的模式称为双模式。在双模式下,编码第一索引和第二索引。第一索引标识滤波器亮度参数的候选集的第一列表中的亮度滤波器参数的候选集,并且第二索引标识滤波器色度参数的候选集的第二列表中的色度滤波器参数的候选集。与图6a的步骤完全相同的图6b的步骤由相同的附图标记标识。
[0181]
该方法开始于步骤s100。在步骤s110,发送器1000(例如,诸如编码器100)访问画面部分的当前块。
[0182]
在步骤s120,发送器确定访问的块的重构版本,即,(多个)重构的亮度块和重构的色度块。
[0183]
在步骤s132,发送器获得滤波器亮度参数的多个第一候选集,并进一步确定画面
部分的每个块的第一索引(merge_idx_luma)。第一索引标识多个第一候选集中的一个候选集。
[0184]
在步骤s134,发送器获得滤波器色度参数的多个第二候选集,并进一步确定画面部分的每个块的第二索引(merge_idx_chroma)。第二索引标识多个第二候选集中的一个候选集。
[0185]
关于s130公开的变型应用于步骤s132和s134。
[0186]
在步骤s142,发送器利用由第一索引标识的滤波器亮度参数的候选集来滤波重构的亮度块。
[0187]
在步骤s144,发送器利用由第二索引标识的滤波器色度参数的候选集滤波重构的色度块。
[0188]
该方法可以在画面部分的所有块上循环步骤s142和s144,以便滤波所有这些块。对于s140公开的变型适用于步骤s142和s144。
[0189]
在步骤s155,发送器在比特流中编码滤波器亮度参数的多个第一候选集和滤波器色度参数的多个第二候选集。对于s150公开的变型适用于步骤s155。
[0190]
由表7和表8提供sao滤波的hevc类型的语法示例。
[0191][0192][0193]
表7
[0194]
num_sao_cand_1_minus1是亮度候选集的数量减一。
[0195]
num_sao_cand_2_minus1是色度候选集的数量减一
[0196]
num_sao_cand_2_delta_abs和num_sao_cand_2_delta_sign允许如下推导num_sao_cand_2_minus1的值:
[0197]
num_sao_cand_2_minus1=num_sao_cand_1_minus1+(1-2

num_sao_cand_2_delta_sign)*num_sao_cand_2_delta_abs。
[0198][0199][0200]
表8
[0201]
在步骤s165,发送器在比特流中编码在步骤s132和s134确定的当前块(更确切地,亮度和色度分量)以及第一和第二索引(merge_idx_luma和merge_idx_chroma)。可以针对亮度和色度分量分别完成候选集的列表的重新排序。在变型中,重新排序是共用的。例如,首先利用与亮度分量有关的候选集的列表来完成重新排序,并且以相同的方式重新排序与(多个)色度分量有关的候选集的列表。
[0202]
由图6c例示的步骤s160的特定实施例中,编码标志以指示是否对当前序列(例如,其以sps编码,序列参数集的英文首字母缩写词)或当前画面(例如,其以pps编码,画面参数集的英文首字母缩写词)或当前条带(例如,其被编码在条带头部中或编码在条带的第一块中)启用双模式。这种标志的示例是表9中提到的slice_dual_merge。
[0203]
在另一变型中,不编码用于指示是否对当前序列,当前画面,或当前条带启用双模式的标志并且默认启用双模式用于所有条带。
[0204]
在变型中,在指示对当前序列,当前画面或当前条带启用双模式的情况下,在步骤s1600编码另一标志(表9中的dual_mode_block_enabled),以指示是否对当前块启用双模式(例如,其在索引之前被编码)。
[0205]
在双模式被启用用于当前块的情况下(dual_mode_block_enabled为真或等于1),
则在步骤s1610中编码两个索引merge_idx_1和merge_idx_2(一个用于亮度,并且一个用于色度)用于当前块。否则,即,dual_mode_block_enabled为假或等于0,在步骤s1620编码单个索引用于当前块,标识多个第一候选集中的一个候选集和多个第二候选集中的一个候选集。
[0206]
在编码器侧,如果亮度和色度索引完全相同,则编码方法将dual_mode_block_enabled设置为假。如果索引不同,则编码方法将dual_mode_block_enabled设置为真。在后一种情况下,决不将值用于merge_idx_chroma,即merge_idx_luma的值。此信息可以用于节省1比特。在这种情况下,我们可以编码相同的值用于两个索引,但是该相同值将在解码器侧解释为两个不同的值,一个用于merge_idx_luma并且一个用于merge_idx_chroma。更确切地,merge_idx_chroma设置为等于解码的值增加1。因此,如果与merge_idx_chroma对应的解码的值大于或等于merge_idx_luma,则merge_idx_chroma设置为等于解码的值增加1(如表9所示)。
[0207]
由表9例示语法示例。
[0208][0209]
表9
[0210]
注意-1:在启用双模式的情况下,merge_idx_chroma的值应与merge_idx_luma不同。
[0211]
slice_dual_merge指示当前条带中是否启用双模式。
[0212]
一旦重新排序用于该块,merge_idx_1与候选集的列表中的第一个索引位置对应。如果不存在,则sao_merge_idx_1推断为(-1)。
[0213]
dual_mode_block_enabled指示双合并模式是否启用用于该块,即,是否存在语法元素merge_idx_2。如果不存在(双模式指示为禁用用于当前序列,当前画面或当前条带),
则将dual_mode_block_enabled推断为等于0。
[0214]
一旦重新排序用于该块,merge_idx_2与候选集的列表中的第二个索引位置对应。如果不存在,则推断sao_merge_idx_2等于sao_merge_idx_1。
[0215]
如果slice_sao_luma_flag等于1,则merge_idx_luma是标识滤波器亮度参数的候选集的列表中要用于滤波重构的亮度块的索引。
[0216]
如果slice_sao_chroma_flag等于1,则merge_idx_chroma是标识滤波器色度参数的候选集的列表中要用于滤波重构的(多个)色度块的索引。
[0217]
图9表示根据特定且非限制性实施例的方法的流程图,该方法用于获得滤波器参数的多个候选集并且对画面部分的每个块确定标识要用于滤波该块的一个候选集的索引。一开始,滤波器参数的候选集的列表为空或仅包含off候选。
[0218]
在步骤s1300,发送器使用rdo确定画面部分的每个块的滤波器参数。为此,画面部分的每个块具有以下选取:选择已在候选集的当前列表中的滤波器参数的候选集(利用索引merge_idx的编码的合并模式)或定义要添加到候选集的当前列表中的滤波器参数的新候选集(利用新的滤波器参数集编码的新模式)。当选择新模式时,即定义了新的候选集时,rd成本是基于当前块的失真减少和滤波器参数的编码率。当选择合并模式时,rd成本基于当前块的失真减少和索引merge_idx的编码率。在s1300的结束,获得滤波器参数的候选集的列表,称为候选集的最佳列表。
[0219]
在变型实施例中,可以根据不同的扫描顺序来扫描画面部分中的块,以便确定滤波器参数的候选集的当前列表。图10是例示画面部分的块的不同扫描的图示示例。在这种情况下,对画面部分针对当前扫描顺序计算rd成本,并且在步骤s1302处与到目前为止获得的最佳rd成本比较。如果当前扫描顺序的rd成本低于到目前为止获得的最佳rd成本,则在步骤s1304将当前候选集存储为候选集的最佳列表,否则,候选集的最佳列表保持不变,并且该方法继续,直到测试所有扫描顺序为止。在扫描顺序上的循环结束时,由此获得与最佳rd成本折衷对应的滤波器参数的候选集的列表(称为候选集的最佳列表)用于给定的扫描顺序。最后,在获得候选集的最佳列表用于与光栅扫描顺序不同的扫描顺序的情况下,按光栅扫描顺序重新排序候选集的最佳列表。
[0220]
在特定且非限制性的实施例中,画面部分的所有块处于新模式,即,仅在确定多个候选集期间(即,仅在步骤s1300期间)禁用模式合并。在这种情况下,为画面部分的每个块确定滤波器参数的新候选集。
[0221]
在步骤s1306,通过使用在先前步骤获得的候选集的最佳列表,选择在合并模式下提供该块的最佳rd成本的索引来确定画面部分的每个块的索引。该索引指向是候选集的最佳列表中的候选集之一。在步骤s1306期间,画面部分的所有块处于合并模式。存储获得的索引,并利用在步骤s1306确定的索引在画面部分上计算rd成本。最佳rd成本的值设置为此计算出的rd成本值。在此步骤中,候选集的最佳列表保持不变。
[0222]
在步骤s1308,通过rdo细化候选集的滤波器参数(例如,在sao滤波的情况下,sao类型和偏移)。为此目的,基于使用该候选集用于滤波而在画面部分的所有块上计算出的失真减小来细化候选集的滤波器参数。使用该候选集的画面部分的区域包括使用该候选集的块的所有样本,即,其merge_idx指代该候选集。
[0223]
在变型中,在候选集的细化之后,通过rdo使用细化的候选集确定用于画面部分的
块的新索引。该步骤与步骤s1306完全相同。
[0224]
在步骤s1308的结束,可以利用在步骤s1308确定的细化的候选集并且可能利用新索引来在画面部分上计算rd成本。将该rd成本值与目前为止获得的最佳rd成本比较。如果当前rd成本低于目前为止获得的最佳rd成本,则存储细化的候选集和新索引以供后续步骤使用,否则候选集的最佳列表将保持不变,并且步骤s1308之前获得的索引保留作为下一步骤的输入。
[0225]
在可选步骤1310,如果在每个区域上计算的对应rd成本的总和(rdcost1+rdcost2)大于当使用其滤波器参数在由r1和r2联合组成的区域r上确定出的单个参数集时获得的rd成本,则可以将与区域r1和r2对应的滤波器参数的两个候选集c1和c2合并为单个候选集。区域r1包括使用c1的画面部分中的块的所有样本,即,其merge_idx指的是c1,而r2包括使用c2的画面部分中的块的所有样本,即其merge_idx指的是c2。基于在两个区域r的所有块上计算出的失真减少来确定单个候选集的滤波器参数。当两个候选集被合并时,更新块的索引。理论上,所有对的候选集都可以被测试用于合并。实际上,将提供最大rd成本减少的一对候选集合并,并且该方法可以返回到步骤s1308用于细化候选集的滤波器参数。rd成本对画面部分计算,并且在步骤s1312与目前为止获得的最佳rd成本比较。如果rd成本低于目前为止获得的最佳rd成本,则在步骤s1314中存储具有合并的候选集和更新的索引的当前候选集,否则,候选集的最佳列表和索引保持不变,并且该方法可以以一对新的候选集继续,或者可以继续到步骤s1316。
[0226]
在可选步骤s1316,我们测试从候选集的当前列表中去除一个候选集,并评估rd成本是否降低。在去除一个候选集的情况下,更新块的索引。然后该方法可以返回到步骤s1308,以便细化滤波器参数。对画面部分计算rd成本,并且在步骤s1318与到目前为止获得的最佳rd成本比较。如果rd成本高于到目前为止获得的最佳rd成本,则不从候选集的当前列表中去除候选集。在这种情况下,候选集的最佳列表和索引保持不变。否则,在步骤s1320中存储在去除一个候选集之后获得的候选集的当前列表和更新的索引。除了off候选,这可以针对所有候选集完成,当off候选被推断出时。
[0227]
在步骤s1322,基于对每个分量单独获得的rd成本值来决定对是否滤波画面部分进行验证。在先前的步骤s1300至s1320中,考虑所有分量(即,亮度和色度分量)来计算rd成本。在步骤s1322中,对每个分量单独计算rd成本。如果与不对块进行滤波相比,利用先前确定的滤波器参数滤波画面部分的块提供了对一个分量的rd成本的减少,则可以对画面部分和对该分量验证进行滤波。否则,将不对此分量验证进行滤波。该决定针对每个分量做出(例如,独立对于亮度和色度)。在sao滤波的特定情况下,在验证进行滤波的情况下,将标志slice_sao_luma_flag/slice_sao_chroma_flag强制设置为真。
[0228]
候选的列表按使用的顺序重新排序。
[0229]
在特定且非限制性的实施例中,步骤s1306至s1316可以迭代地重复直到满足停止条件为止。停止条件可以是(但不限于):
[0230]

不再有候选集的合并;
[0231]

无法再去除任何候选集;
[0232]

在步骤s1308,不再能进行细化;或者
[0233]

达到最大迭代循环的数量;
[0234]
步骤的顺序可以不同地安排。例如,可以在s1310之前执行s1316,和/或在s1306之前执行s1308。其中一些步骤可以是可选的,诸如s1310和s1316。
[0235]
在步骤s1300,s1308,s1310和s1316中,确定用于一个块或用于由几个块组成的一个区域的滤波器参数。在sao滤波的特定情况下,滤波器参数可以按照fu等人在2011年发表于mmsp的题为sample adaptive offset for hevc的文档中公开的确定。
[0236]
首先,对于每种类型t(bo,eo_0,eo_90,eo_45,eo_130)和sao类型t中的每个类别-c(bo的带指数或eo的半峰,半谷,全峰,全谷),收集该类别中区域i的样本n
i,t,c
的数量以及重构的信号与原始信号之间的差e
i,t,c
的对应总和。对应的偏移记为a
i,t,c
,并且可以估算如下:
[0237][0238]
rd成本使用以下公式获得,其中λ是拉格朗日乘数,d
i,t,c
是失真减少,并且r
i,t,c
是相应偏移的估计率(用于编码的比特的数量):
[0239]ji,t,c
=d
i,t,c
+λ.r
i,t,c
[0240]
在文档sample adaptive offset for hevc中,fu示出d
i,t,c
可以表达为仅a
i,t,c
,e
i,t,c
和n
i,t,c
的函数。因此,可以确定/细化偏移a
i,t,c
的值,以最小化rd成本j
i,t,c

[0241]
对于候选集,sao参数是类型t的值,类别c的值以及3个分量的偏移a
i,t,c
,并且r
i,t,c
是用于编码这些数据的比特的(估计的)数量。区域i由使用该候选集进行滤波的块组成。
[0242]
对于在模式合并中编码的块,r
i,t,c
c是用于编码索引merge-idx的(估计的)比特的数量。区域-i是块。
[0243]
为了推导总体rdcost,失真减少是所有候选的失真减少的总和,并且率是候选率(sao参数类型和偏移的编码)和块率(合并索引的编码)的总和。
[0244]
图11表示根据特定且非限制性实施例的被配置为从比特流解码画面以获得解码的画面的接收器2000的示例性架构。
[0245]
接收器2000包括一个或多个处理器2005,其可以包括例如cpu,gpu和/或dsp(数字信号处理器的英文首字母缩写词),以及内部存储器2030(例如,ram,rom,和/或eprom)。接收器2000包括一个或多个通信接口2010(例如,键盘,鼠标,触摸板,网络摄像头),每个适应于显示输出信息和/或允许用户输入命令和/或数据(例如解码的画面);以及电源2020,可以位于接收器2000的外部。接收器2000还可以包括一个或多个网络接口(未示出)。解码器模块2040表示可以被包括在设备中以执行解码功能的模块。另外,解码器模块2040可以被实现为接收器2000的单独的元件,或者可以被并入(多个)处理器2005中作为硬件和软件的组合,如本领域技术人员已知。
[0246]
比特流可以从源获得。根据不同的实施例,源可以是但不限于:
[0247]-本地存储器,例如,视频存储器,ram,闪存,硬盘;
[0248]-贮存接口,例如与大容量贮存器,rom,光盘或磁性载体的接口;
[0249]-通信接口,例如,有线接口(例如,总线接口,广域网接口,局域网接口)或无线接口(诸如,ieee 802.11接口或蓝牙接口);和
[0250]-图像捕获电路(例如,传感器,诸如例如ccd(电荷耦合器件)或cmos(互补金属氧
化物半导体))。
[0251]
根据不同的实施例,解码的画面可以被发送到目的地,例如,显示设备。作为示例,解码的画面被存储在远程或本地存储器中,例如,视频存储器或ram,硬盘。在变型中,解码的画面被发送到贮存接口,例如,与大容量贮存器,rom,闪存,光盘或磁性载体的接口和/或通过通信接口(例如,点对点链接,通信总线,点对多点链接或广播网络的接口)传输。
[0252]
根据特定且非限制性实施例,接收器2000还包括存储在存储器2030中的计算机程序。该计算机程序包括指令,当由接收器2000,特别是由处理器2005执行时,这些指令使接收器能够执行参考图13a至13c描述的解码方法。根据变型,计算机程序在接收器2000外部存储在非暂时性数字数据载体上(例如外部贮存介质上,诸如hdd,cd-rom,dvd,只读和/或dvd驱动器和/或dvd读/写驱动器之类,都是本领域已知的)。接收器2000因此包括读取计算机程序的机构。此外,接收器2000可以通过对应的usb端口(未示出)访问一个或多个通用串行总线(usb)类型的贮存设备(例如,“存储器棒”)。
[0253]
根据示例性且非限制性实施例,接收器2000可以是但不限于:
[0254]-移动设备;
[0255]-通信设备;
[0256]-游戏设备;
[0257]-机顶盒;
[0258]-电视机;
[0259]-平板电脑(平板计算机);
[0260]-膝上型计算机;
[0261]-视频播放器,例如,蓝光播放器,dvd播放器;
[0262]-显示器;和
[0263]-解码芯片或解码设备/装置。
[0264]
图12例示适应于执行根据图13a或13b的解码方法的示例性视频解码器200(例如,hevc视频解码器)的框图。视频解码器200是接收器2000或这样的接收器2000的一部分的示例。在示例性解码器200中,由如下所述的解码器元件解码比特流。视频解码器200一般执行与图2中描述的编码通道相反的解码通道,其执行视频解码作为编码视频数据的一部分。。
[0265]
特别地,解码器的输入包括可由视频编码器100生成的视频比特流。首先熵解码(230)比特流,以获得变换系数,运动矢量和其他编码信息。去量化(240)和逆变换(250)变换系数以解码残差。然后将解码的残差与预测的样本块(也称为预测量)组合(255)以获得解码/重构的画面块。可以从帧内预测(260)或运动补偿的预测(即,帧间预测)(275)获得(270)预测的样本块。如上所述,可以在运动补偿期间使用amvp和合并模式技术,其可以使用插值滤波器来计算参考块的亚整数样本的内插的值。环内滤波器(265)被应用于重构的画面。环内滤波器可以包括去块滤波器和sao滤波器。滤波的画面被存储在参考画面缓冲器中(280)。
[0266]
图13a表示根据特定且非限制性实施例的用于从比特流解码画面部分的块的方法的流程图。画面部分可以是整个画面或画面的子部分,例如,条带。
[0267]
该方法开始于步骤s200。在步骤s210,诸如解码器200的接收器2000访问比特流。在步骤s220,接收器从比特流解码滤波器参数的多个候选集。因此多个候选集根据它们被
解码的顺序来排序。关于图7,滤波器参数的三个候选集被解码(c-0,c-1和c-2)。图7的右侧画面部分的每个块都从三个候选集之一继承其滤波器参数。在图7上,块blk_0,blk_1,blk_4和blk_5具有相同的滤波器参数,即,候选集c-0的滤波器参数,块blk_2和blk_3具有相同的滤波器参数,即,候选集c-1的滤波器参数,并且块blk_6和blk_7具有相同的滤波器参数,即,候选集c-2的滤波器参数。
[0268]
在特定实施例中,将称为off候选集的滤波器参数的特定候选集添加到解码的候选集的列表中。作为示例,将off候选插入在预定义的位置(例如,第二位置)之间的解码的候选集之间。off候选不从比特流解码。其用于指示没有被滤波的块。
[0269]
有利地,从条带的头部解码滤波器参数的多个候选集。在变型中,按解码顺序在画面部分的第一块(例如,图7上的blk_0)的级别上解码滤波器参数的多个候选集。作为示例,在图8上,滤波器参数的三个候选集利用第一个块blk_0的语法元素编码。
[0270]
在另一个实施例中,接收器从所述比特流解码表示滤波器参数的候选集的数量的数据。作为示例,解码的数据num_sao_cand_minus1是要解码的滤波器参数的候选集的数量减去1。因为num_sao_cand_minus1的值必须小于一个画面部分中(例如,一个条带中)的块的数量减去一,所以表示语法元素num_sao_cand_minus1的比特的数量小于log2(一个画面部分中的块的数量减去一)。
[0271]
由表1和表2提供用于sao滤波的hevc类型的语法示例。根据表2,一旦解码num_sao_cand_minus1,就通过调用sao_cand(idxcand)解码sao参数的每个候选集。在没有将off候选集添加到解码的候选集的列表的情况下,如表3例示修改该语法。表4例示根据本原理的sao参数集的解码。
[0272]
解码以下sao参数:slice_sao_luma_flag,slice_sao_chroma_flag,sao_type_idx_luma,sao_type_idx_chroma,sao_offset_abs[cidx][idxcand][i],sao_offset_sign[cidx][idxcand][i],sao_band_position[cidx][idxcand],sao_eo_class_luma,sao_eo_class_chroma。
[0273]
在步骤s230,接收器针对所述画面的当前块从所述比特流解码索引(merge_idx),该索引标识解码的滤波器参数的候选集之一。在将off候选集添加到解码的候选集的列表中的情况下通过表5或者在off候选集没有被添加到解码的候选集的情况下通过表6例示坐标(rx,ry)的块的索引merge_idx的解码。
[0274]
参考图8,为每个块解码索引(merge_idx)。该索引标识滤波器参数的候选集之一。在一个实施例中,所有块都处于合并模式,即,所有块都从滤波器参数的候选集之一继承其滤波器参数。因为不再需要为块解码指示该块是否处于合并模式的标志,即,它是否从邻居继承其滤波器参数,所以这使得能够节省一些比特。特别地,不再需要解码以下hevc标志sao_merge_left_flag和sao_merge_up_flag,其规定sao参数从邻近ctu的对应sao参数推导。
[0275]
在特定实施例中,以与它们的首次使用顺序相同的顺序从比特流中解码滤波参数的多个候选集。在这种情况下,给定块的索引(idx_max)的最大可能值随块号而增加。更确切地,仅当合并索引与尚未被先前解码的任何块使用的候选集对应时,idx_max才递增。作为示例,在blk_0的索引等于0的情况下,即,blk_0使用c_0中定义的滤波器参数,如果blk_1的索引也等于0,则对于blk_2,idx_max不递增,而如果blk_1的索引等于1,即,blk_1使用c_
1中定义的滤波器参数(其是尚未使用的候选集),则idx_max对于blk_2递增。
[0276]
然而,merge_idx的值是否与尚未由先前解码的块使用的候选对应的信息在解析阶段可能不可用。
[0277]
因此,在变型中,仅当merge_idx的解析的值不为零时,idx_max的值递增,这是因为列表中的第一个候选必须是已经使用的候选(第一个块除外)。hevc标准9.3.3.2中规定的truncated rice(tr)二进制化,cmax的值是idx_max。
[0278]
在变型中,值idx_max是用于滤波在当前块之前解码的块的滤波器参数的候选集的数量的另一个递增函数。
[0279]
在步骤s240,接收器从所述比特流解码所述当前块。解码的块通常包括亮度块和色度块。
[0280]
解码块通常但非必须包括熵解码表示该块的比特流的一部分码以获得变换系数的块,去量化和逆变换变换系数的块以获得残差块并将预测量添加到残差的块以获得解码的块。可能地,可以交换s230和s240的顺序。
[0281]
在可选步骤s250,在使用步骤s230解码的索引从候选集的列表中检索滤波器参数的集之前,重新排序滤波器参数的候选集。在特定实施例中,每当解码画面部分的块时,重新排序滤波器参数的候选集。在滤波块之前完成重新排序。
[0282]
在第一实施例中,滤波器参数的候选集被重新排序,以使得当这样的块可用时用于紧挨着当前块的左侧的块的滤波器参数的集被放置在滤波器参数的候选集的列表中的第一位置。
[0283]
在另一实施例中,滤波器参数的候选集被重新排序,使得已经被用于滤波在当前块之前被解码的块(称为先前块)的滤波器参数的候选集以这样的顺序列出,该顺序取决于该先前块到当前块的空间距离。在实施例中,滤波器参数的候选集被重新排序,使得已经由空间上最接近的邻近块使用的参数出现在滤波器参数的候选集的列表的顶部。在若干块使用相同的候选集的情况下,仅考虑在空间上最接近当前块的块。这可以通过建立使用的候选集的映射来完成。关于图14,在表10中示出动态重新排序滤波参数的候选集的列表的示例。每次解码当前块时,重新排序候选集。在此示例中,下一个尚未使用的候选被放置在列表的末尾。图15例示用于解码当前块blk_5的列表重新排序的处理。当解码blk_5时,最后使用的候选集是{c_0,c_1,c_2,c_3}。c_0由blk_0和blk_4使用,c_1由blk_1使用,c_2由blk_2使用,并且c_3由blk_3使用。blk_5到块blk_4,blk_1,blk_2,blk_3的较小的平方欧几里得距离分别为{1,1,2,5}。对于候选集c_0,考虑到blk_4到blk_5的空间距离,而不考虑blk_0到blk_5的距离,因为blk_4在空间上比blk_0更靠近blk_5。当解码blk_5时,因此使用的最接近的候选集是c_0(left),c_1(top),c_2(top-right)和c_3(top-right-right)。候选c_4尚未使用,并因此被放在列表的末尾。
[0284][0285][0286]
表10
[0287]
在变型中,不用于滤波当前块之前解码的块的滤波器参数的至少一个候选集(例如,接下来要使用的第一个候选)被插入在位置pos_first_new,该位置在用于滤波当前块之前解码的所述块的滤波器参数的最后一个候选集的位置之前。pos_first_new的值在解码器侧是先验的。例如,pos_first_new可以被设置为2或者可以在比特流中被编码。由表11例示此变型。在此示例中,接下来要使用的尚未使用的候选放置于位置2(在表11中以斜体突出显示)。对于blk_5,候选c_4放置在列表中的位置2,而在表10中将其放置在列表的末尾。在用于滤波先前解码的块的候选集的数量严格小于pos_first_new的情况下,可以将未用于滤波先前解码的块的第一候选集的位置插入pos_first_new之前。先前解码的块是在当前块之前解码的块。
[0288][0289]
表11
[0290]
表10和11例示没有将off候选集添加到解码的候选集的列表中的情况。在将off候选集添加到解码的候选集的列表的情况下,对第一块不推断而是解码merge_idx。在后一种情况下,表10和11中idx_max的值递增1。
[0291]
在另一个实施例中,pos_first_new是画面部分中的当前块之后剩余的要解码的块的数量和尚未用于滤波先前解码的块的候选集的数量的函数。例如,位置pos_first_new从使用新候选集的发生可能性中推导。例如,位置pos_first_new可以等于p或p+1的整数部分,其中p=(剩余的要解码的块的数量)/(尚未使用的候选集的数量)。
[0292]
在另一个实施例中,将称为off候选的滤波器参数的特定候选集添加到候选集的列表中,但是不被解码。在块的索引标识该特定候选的情况下,不滤波对应的块。
[0293]
在示例中,off候选的位置pos_off接近列表的开始,例如,列表中的第一位置(pos_off=0)或第二/第三位置(pos_off=1或pos_off=2)。在特定实施例中,在重新排序列表的情况下,不修改列表中的off候选的位置pos_off。在一个变型中,其位置不被固定,即它遵循与其他候选集相同的重新排序规则,但有限制。限制是列表中的off候选的位置不能超出固定的位置,例如位置2。
[0294]
在步骤s260,接收器利用由解码的索引标识的滤波器参数的候选集滤波解码的当前块。在索引merge_idx标识off候选的情况下,在步骤s260不滤波该块。在特定实施例中,滤波器是sao滤波器,并且参考图3公开的滤波步骤适用。
[0295]
该方法可以在步骤s230至s260上循环以便解码和滤波画面部分中的所有块。在特定且非限制性的实施例中,画面部分的所有块可以在开始滤波这些块之前被解码。在变型中,可以在解码画面部分的所有块之前开始画面部分的一些块的滤波。
[0296]
该方法在步骤s280处结束。
[0297]
根据本原理的编码和解码方法和装置不限于sao滤波。该方法可以应用于由可以
本地(例如,在块级别)应用的滤波器参数定义的任何滤波器。
[0298]
在图13a的实施例中,解码单个索引,该单个索引标识滤波器参数的候选集的单个列表中的亮度和色度滤波器参数的候选集。图13b上描绘图13a的方法的变型。在此变型中,亮度和色度分量分别处理。该操作模式称为双模式。在双模式下,第一索引和第二索引被解码。第一索引标识滤波器亮度参数的候选集的第一列表中的亮度滤波器参数的候选集,并且第二索引标识滤波器色度参数的候选集的第二列表中的色度滤波器参数的候选集。
[0299]
与图13a的步骤完全相同的图13b的步骤由相同的附图标记标识。
[0300]
该方法开始于步骤s200。在步骤s210,诸如解码器200的接收器2000访问比特流。
[0301]
在步骤s222,接收器从比特流中解码滤波器亮度参数的多个第一候选集。
[0302]
在步骤s224,接收器从比特流中解码滤波器色度参数的多个第二候选集。
[0303]
在步骤s232,接收器从所述比特流为所述画面的当前块解码第一索引(merge_luma_idx),该第一索引标识滤波器亮度参数的解码的候选集之一。
[0304]
在步骤s234,接收器从所述比特流为当前块解码第二索引(merge_chroma_idx),该第二索引标识滤波器色度参数的解码的候选集之一。
[0305]
在步骤s240,接收器从所述比特流解码所述当前块。
[0306]
在可选步骤s252,在使用第一索引标识来自候选集的列表的滤波器亮度参数的集之前,重新排序滤波器亮度参数的候选集。
[0307]
在可选步骤s254,在第二索引用于标识来自候选集的列表的滤波器色度参数的集之前,重新排序滤波器色度参数的候选集。
[0308]
可以对于亮度和色度分量分别完成候选集的列表的重新排序。在变型中,重新排序是共用的。例如,首先利用与亮度分量有关的候选集的列表来完成重新排序,并且以相同的方式重新排序与(多个)色度分量有关的候选集的列表。
[0309]
在步骤s265,接收器利用分别由解码的第一和第二索引标识的滤波器亮度参数的候选集和滤波器色度参数的参数集滤波所解码的当前块。更确切地,利用由第一索引标识的滤波器亮度参数的候选集来滤波解码的亮度块,并且利用由第二索引标识的滤波器色度参数的候选集来滤波(多个)解码的色度块。
[0310]
在由图13c例示的步骤s238的特定实施例中,解码一标志以指示是否启用双模式用于当前序列(例如,从sps(序列参数集的英文首字母缩写词)解码),用于当前画面(例如,从pps(画面参数集的英文首字母缩写词)解码),或者用于当前条带(例如,从条带头部解码,或者在条带的第一个块中编码的)。这种标志的示例是表9中提到的slice_dual_merge。
[0311]
在另一变型中,不解码一标志来用于指示是否启用双模式用于当前序列,当前画面,当前条带并且双模式默认启用用于所有条带。
[0312]
在变型中,在指示启用双模式用于当前序列,当前画面或当前条带的情况下,在步骤s231解码另一标志(表9中的dual_mode_block_enabled),以指示是否启用双模式用于当前块(例如,其在索引之前被解码)。
[0313]
在启用双模式用于当前块的情况下(dual_mode_block_enabled为真或等于1),则在步骤s232和s234中解码两个索引(一个用于亮度,并且一个用于色度)用于当前块。否则,即,dual_mode_block_enabled为假或等于0,在步骤s235解码单个索引用于当前块,该单个索引标识多个第一候选集中的一个候选集和多个第二候选集中的一个候选集。
[0314]
如果dual_mode_block_enabled为真,并且如果与merge_idx_chroma对应的解码的值大于或等于merge_idx_luma,则将merge_idx_chroma设置为等于解码的值递增1(参见表9中的注意-1)。
[0315]
该方法可以在步骤s232至s265上循环以便解码和滤波画面部分中的所有块。
[0316]
该方法在步骤s280处结束。
[0317]
在特定实施例中,滤波器块大小(例如sao块大小)与ctu大小不同。在这种情况下,将滤波器参数应用于与ctu大小不同的重构的画面的区域。在滤波阶段,将画面或条带子细分为多个区域,每个区域对应一个滤波器块。为每个滤波器块确定滤波器参数,并且在该滤波器块上是恒定的。滤波器块大小是不能改变滤波器参数的最小区域的大小。例如,在sao滤波将重构的画面中的一个区域的样本分类为多个类别并根据其类别向每个样本添加特定偏移的情况下,sao块大小是该区域的大小。在h.265中,sao块大小等于一个ctb的大小。
[0318]
滤波器块大小可以在条带头部中,画面参数集中或序列参数集中利用指示滤波器块大小和形状的索引来规定以与当前条带一起使用。正方形或长方形滤波器块大小的示例在图16中描绘。在这些示例中,水平和垂直滤波器块大小从ctu大小中向右(除以2的幂)或向左(乘以2的幂)移位推导出。在图16上,滤波器块用灰色表示。
[0319]
在实施例中,例如,在条带头部编码标志(分别解码),以指示滤波器块大小是否等于ctu大小或是否较小(例如,水平和垂直方向都减小二)。
[0320]
在变型中,当滤波器块大小不是正方形时,空间距离的推导可以考虑不同的垂直和水平滤波器块大小。在这种情况下,空间距离与以样本的数量表达的距离成比例。在另一变型中,空间距离的推导不考虑实际的垂直和水平滤波器块大小,而仅考虑水平和垂直滤波器块位置。在这种情况下,空间距离与以图17描绘的滤波器块映射表达的距离成比例。对于每个滤波器区域(或sao滤波器区域),滤波器块映射利用标识滤波器参数的候选集的每个的索引的值建立。滤波器块映射x(或y轴)坐标对应于水平(或垂直)方向上的滤波器区域的数量,而与sao滤波器区域大小/形状无关。
[0321]
本文描述的实现方式可以例如以方法或处理,装置,软件程序,数据流或信号来实现。即使仅在单一形式的实现方式的上下文中进行讨论(例如,仅作为方法或设备进行讨论),讨论的特征的实现方式也可以以其他形式(例如程序)实现。装置可以例如以适当的硬件,软件和固件来实现。该方法可以在例如诸如处理器之类的装置中实现,其一般指代处理设备,包括例如计算机,微处理器,集成电路或可编程逻辑设备。处理器还包括通信设备,诸如例如计算机,蜂窝电话,便携式/个人数字助理(“pda”),以及有助于最终用户之间信息通信的其他设备。
[0322]
本文描述的各种处理和特征的实现方式可以体现在各种不同的设备或应用中,尤其是例如设备或应用中。这种设备的示例包括编码器,解码器,处理来自解码器的输出的后处理器,将输入提供给编码器的预处理器,视频编码器,视频解码器,视频编解码器,web服务器,机顶盒,膝上型计算机,个人计算机,蜂窝电话,pda和其他通信设备。应当清楚,设备可以是移动的,甚至可以安装在移动车辆中。
[0323]
另外,可以通过由处理器执行的指令来实现方法,并且可以将这样的指令(和/或由实现方式产生的数据值)存储在诸如例如集成电路,软件载体或其他贮存设备(诸如例如硬盘,致密盘(cd),光盘(诸如,例如dvd,通常称为数字多功能盘或数字视频盘),随机存取
存储器(“ram”)或只读存储器(“rom”))之类的处理器可读介质上。指令可以形成有形地体现在处理器可读介质上的应用程序。指令可以是例如硬件,固件,软件或其组合。指令可以在例如操作系统,单独的应用或两者的组合中找到。因此,处理器可以特征在于,例如,被配置为实施处理的设备和包括具有用于实施处理的指令的处理器可读介质的设备(诸如,贮存设备)。此外,除了或代替指令,处理器可读介质可以存储由实现方式产生的数据值。
[0324]
如将对本领域技术人员显而易见的,实现方式可以产生各种信号,其被格式化以承载例如可以被存储或发送的信息。该信息可以包括例如用于执行方法的指令或由描述的实现方式之一产生的数据。例如,信号可以被格式化为承载用于写入或读取描述的实施例的语法的规则作为数据,或者承载由描述的实施例写入的实际语法值作为数据。这样的信号可以被格式化为例如电磁波(例如,使用频谱的射频部分)或基带信号。格式化可以包括例如编码数据流并且利用编码的数据流来调制载波。信号承载的信息可以是例如模拟或数字信息。众所周知,该信号可以通过各种不同的有线或无线链路传输。信号可以存储在处理器可读介质上。
[0325]
已经描述许多实现方式。然而,将理解,可以进行各种修改。例如,不同实现方式的要素可以被组合,补充,修改或移除以产生其他实现方式。另外,本领域普通技术人员将理解,可以用其他结构和处理代替公开的那些,并且作为结果的实现方式将以至少基本上相同的(多个)方式执行至少基本上相同的(多个)功能,以至少实现与公开的实现方式基本相同的(多个)结果。因此,本技术考虑了这些和其他实现方式。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1