编码和解码方法以及对应设备与流程

文档序号:18457568发布日期:2019-08-17 01:44阅读:289来源:国知局
编码和解码方法以及对应设备与流程

在下文中,公开了用于对图片进行编码的方法和设备。还公开了对应的解码方法和解码设备。



背景技术:

为了实现高压缩效率,视频编码方案通常采用预测和变换来影响(leverage)视频内容中的空间和时间冗余。通常,使用帧内或帧间预测来开发帧内或帧间相关,然后对原始图像与预测图像之间的差异(通常表示为残差)进行变换、量化和熵编码。为了重建视频,通过与预测、变换、量化和熵编码相对应的逆处理对压缩数据进行解码。

在hevc编码(“itu-th.265itu电信标准化部门(10/2014),h系列:视听和多媒体系统,视听业务基础架构-移动视频编码,高效视频编码,itu-th.265建议书”)中,图片被划分成具有可配置大小(典型地为64×64、128×128或256×256)的正方形形状的编码树单元(ctu)。ctu是划分成编码单元(cu)的四叉树的根。对于每个cu,用信号通知预测模式,其指示cu是使用帧内预测还是帧间预测来编码。编码单元被划分成一个或多个预测单元(pu),并形成划分成变换单元(tu)的四叉树(称为变换树)的根。pu可以具有正方形或矩形形状,而tu具有正方形形状。在帧间预测中,将cu不对称细分成pu也是可能的,也就是说,如果cu具有大小n×n,则pu可以具有大小n/4×n、3n/4×m、n×n/4、n×3n/4,如图1上所示。每个pu被分配一些预测信息,例如运动信息、空间帧内预测等。

四叉树加二叉树(qtbt)编码工具(“algorithmdescriptionofjointexplorationtestmodel3”,文档jvet-c1001_v3,iso/iecjtc1/sc29/wg11联合视频探索小组,第3次会议,2015年5月26日至6月1日,日内瓦,ch)是新的视频编码工具,其提供比hevc标准的cu/pu/tu布置更灵活的ctu表示。四叉树加二叉树(qtbt)编码工具定义编码树,其中可以以四叉树和以二叉树的方式二者使编码单元分裂。在图2上示出了编码树单元的这样的编码树表示,其中实线指示cu的四叉树划分,并且虚线指示cu的二进制划分。

例如,通过速率失真优化过程,在编码器侧判定ctu到编码单元的分裂,该过程包括确定具有最小速率失真成本的ctu的qtbt表示。在qtbt表示中,cu具有正方形或矩形的形状。编码单元的大小常常是2的幂,并且典型地从4到128。ctu的qtbt分解包括两个阶段:首先以四叉树方式将ctu分裂成4个cu,然后可以以二进制方式将每个四叉树叶片进一步分割成两个cu或者以四叉树方式将每个四叉树叶片进一步分割成4个cu,如图3上所示。在图3上,实线表示四叉树分裂,并且虚线表示在空间上嵌入四叉树叶片中的二进制分裂。

利用qtbt表示,cu不被进一步划分成pu或tu。换句话说,一旦判定ctu的划分,则每个cu被认为是单个预测单元和单个变换单元。然而,这样的qtbt表示仅允许cu的对称分裂,如图4所示。图4描绘了qtbt允许的4个分裂模式。模式no_split指示cu不被进一步分裂,模式qt_split指示cu根据四叉树被分裂成4个象限,模式hor指示cu被水平分裂成相等大小的两个cu,并且ver指示cu被垂直分裂成相等大小的两个cu。



技术实现要素:

一种对图像的块进行解码的解码方法,包括:

-在分裂模式集合中确定用于块的分裂模式;

-响应于分裂模式,将块分裂成至少两个子块;

-对至少两个子块中的每个子块进行解码;

其中分裂模式集合包括用于将块不对称分裂成至少两个子块的至少一个分裂模式。

公开了一种被配置为对图像的块进行解码的解码设备,其包括:

-用于在分裂模式集合中确定用于块的分裂模式的部件;

-用于响应于分裂模式,将块分裂成至少两个子块的部件;

-用于对至少两个子块中的每个子块进行解码的部件;

其中分裂模式集合包括用于将块不对称分裂成至少两个子块的至少一个分裂模式。

公开了一种包括被配置为至少访问流的通信接口和至少一个处理器的解码设备,其中所述至少一个处理器被配置为:

-在分裂模式集合中确定用于图像的块的分裂模式;

-响应于分裂模式,将块分裂成至少两个子块;

-从所访问的流解码至少两个子块中的每个子块;

其中分裂模式集合包括用于将块不对称分裂成至少两个子块的至少一个分裂模式。

以下实施例适用于以上公开的解码方法和解码设备。

有利地,确定分裂模式包括:

-对指定块是被垂直分裂还是被水平分裂的第一语法元素(btsplitorientation)进行解码;

-对指定块是被对称分裂还是被不对称分裂的第二语法元素(horasymmetricsplitflag,verasymmetricsplitflag)进行解码;以及

-在第二语法元素指定块被不对称分裂的情况下,对分裂模式语法元素(vertical/horizontal_asymmetric_type)进行解码。

根据特定特性,从单个比特解码第二语法元素,即horasymmetricsplitflag或verasymmetricsplitflag。

在变型中,第二语法元素(horasymmetricsplitflag或verasymmetricsplitflag)使用单个上下文通过基于上下文的算术编码来解码,该单个上下文取决于当对解码顺序中当前块之前的块进行解码时第二语法元素所采用的值。

在变型中,第二语法元素horasymmetricsplitflag使用两个上下文通过基于上下文的算术编码来解码,这两个上下文取决于位于左相邻块中的、具有低于或等于当前块高度的四分之一的高度的子块的数量。以相同的方式,第二语法元素verasymmetricsplitflag使用两个上下文通过基于上下文的算术编码来解码,这两个上下文取决于位于顶部相邻块中的、具有低于或等于当前块宽度的四分之一的宽度的子块的数量。

根据另一实施例,根据与当前块相关联的四叉树加二叉树深度值或者根据块的宽度和高度,对在先前的实施例之一中提出的上下文加索引。

根据特定特性,从单个比特解码分裂模式语法元素(vertical_asymmetric_type/horizontal_asymmetric_type)。

在变型中,分裂模式语法元素(vertical_asymmetric_type或horizontal_asymmetric_type)使用单个上下文通过基于上下文的算术编码来解码,该单个上下文取决于当对解码顺序中当前块之前的块进行解码时分裂模式语法元素所采用的值。

在变型中,分裂模式语法元素horizontal_asymmetric_type使用三个上下文通过基于上下文的算术编码来解码,这三个上下文取决于在位于当前块的左侧的块中存在边界,该边界在空间上与通过选择当前块的水平不对称分裂获得的当前块中的水平边界重合。

以相同的方式,分裂模式语法元素vertical_asymmetric_type使用三个上下文通过基于上下文的算术编码来解码,这三个上下文取决于在位于当前块的上方的块中存在边界,该边界在空间上与通过选择当前块的垂直不对称分裂获得的当前块中的垂直边界重合。

根据另一实施例,根据与当前块相关联的四叉树加二叉树深度值或者根据块的宽度和高度,对在先前的实施例之一中提出的上下文加索引。

在变型中,确定分裂模式包括:

对指示块与解码顺序中的下一个块合并的语法元素(merge_with_next_cu_flag)进行解码。

在特定实施例中,块是亮度样本块、色度样本块或者由亮度样本块和两个色度样本块形成的编码单元中的一个。

在特定实施例中,响应于分裂模式将块分裂成至少两个子块包括水平地将块分裂成一个高度为h/4的子块和一个高度为3h/4的子块,其中h是块的高度。

在特定实施例中,响应于分裂模式将块分裂成至少两个子块包括垂直地将块分裂成一个宽度为w/4的子块和一个宽度为3w/4的子块,其中w是块的宽度。

还公开了一种对图像的块进行编码的编码方法,其包括:

-在分裂模式集合中确定用于块的分裂模式;

-响应于分裂模式,将块分裂成至少两个子块;

-对至少两个子块中的每个子块进行编码;

其中分裂模式集合包括用于将块不对称分裂成至少两个子块的至少一个分裂模式。

还公开了一种被配置为对图像的块进行编码的编码设备,其包括:

-用于在分裂模式集合中确定用于块的分裂模式的部件;

-用于响应于分裂模式,将块分裂成至少两个子块的部件;

-用于对至少两个子块中的每个子块进行编码的部件;

其中分裂模式集合包括用于将块不对称分裂成至少两个子块的至少一个分裂模式。

公开了一种包括被配置为至少访问图像的块(称为当前块)的通信接口和至少一个处理器的编码设备。至少一个处理器被配置为:

-在分裂模式集合中确定用于块的分裂模式;

-响应于分裂模式,将块分裂成至少两个子块;

-对至少两个子块中的每个子块进行编码;

其中分裂模式集合包括用于将块不对称分裂成至少两个子块的至少一个分裂模式。

以下实施例适用于以上公开的编码方法和编码设备。

有利地,确定分裂模式包括:

-对指定块是被垂直分裂还是被水平分裂的第一语法元素(btsplitorientation)进行确定和编码;

-对指定块是被对称分裂还是被不对称分裂的第二语法元素(horasymmetricsplitflag,verasymmetricsplitflag)进行确定和编码;以及

-在第二语法元素指定块被不对称分裂的情况下,对分裂模式语法元素(vertical_asymmetric_type/horizontal_asymmetric_type)进行确定和编码。

根据特定特性,以单个比特编码第二语法元素,即horasymmetricsplitflag或verasymmetricsplitflag。

在变型中,第二语法元素使用单个上下文通过基于上下文的算术编码来编码,该单个上下文取决于当对编码顺序中当前块之前的块进行编码时第二语法元素所采用的值。

在变型中,第二语法元素horasymmetricsplitflag使用两个上下文通过基于上下文的算术编码来编码,这两个上下文取决于位于左相邻块中的、具有低于或等于当前块高度的四分之一的高度的子块的数量。以相同的方式,第二语法元素verasymmetricsplitflag使用两个上下文通过基于上下文的算术编码来编码,这两个上下文取决于位于顶部相邻块中的、具有低于或等于当前块宽度的四分之一的宽度的子块的数量。

根据另一实施例,根据与当前块相关联的四叉树加二叉树深度值或者根据块的宽度和高度,对在先前的实施例之一中提出的上下文加索引。

根据特定特性,以单个比特编码分裂模式语法元素(vertical_asymmetric_type/horizontal_asymmetric_type)。

在变型中,分裂模式语法元素使用单个上下文通过基于上下文的算术编码来编码,该单个上下文取决于当对编码顺序中当前块之前的块进行编码时分裂模式语法元素所采用的值。

在变型中,分裂模式语法元素horizontal_asymmetric_type使用三个上下文通过基于上下文的算术编码来编码,这三个上下文取决于在位于当前块的左侧的块中存在边界,该边界在空间上与通过选择当前块的水平不对称分裂获得的当前块中的水平边界重合。

以相同的方式,分裂模式语法元素vertical_asymmetric_type使用三个上下文通过基于上下文的算术编码来编码,这三个上下文取决于在位于当前块的上方的块中存在边界,该边界在空间上与通过选择当前块的垂直不对称分裂获得的当前块中的垂直边界重合。

根据另一实施例,根据与当前块相关联的四叉树加二叉树深度值或者根据块的宽度和高度,对在先前的实施例之一中提出的上下文加索引。

在另一实施例中,确定分裂模式包括:

对指示块与编码顺序中的下一个块合并的语法元素(merge_with_next_cu_flag)进行确定和编码。

作为示例性实施例,块是亮度样本块、色度样本块或者由亮度样本块和两个色度样本块形成的编码单元中的一个。

在实施例中,响应于分裂模式将块分裂成至少两个子块包括水平地将块分裂成一个高度为h/4的子块和一个高度为3h/4的子块,其中h是块的高度。

在实施例中,响应于分裂模式将块分裂成至少两个子块包括垂直地将块分裂成一个宽度为w/4的子块和一个宽度为3w/4的子块,其中w是块的宽度。

还公开了一种流,其包括代表块的编码数据,其中该编码数据是通过以下获得的:在分裂模式集合中确定用于块的分裂模式,响应于分裂模式将块分裂成至少两个子块;将至少两个子块中的每个子块编码成编码数据,其中分裂模式集合包括用于将块不对称分裂成至少两个子块的至少一个分裂模式。

公开了一种其上存储有流的非临时性处理器可读介质,其中该流包括代表块的编码数据,其中该编码数据是通过以下获得的:在分裂模式集合中确定用于块的分裂模式,响应于分裂模式将块分裂成至少两个子块;将至少两个子块中的每个子块编码成编码数据,其中分裂模式集合包括用于将块不对称分裂成至少两个子块的至少一个分裂模式。

公开了一种传送方法,其包括传送代表块的编码数据,其中该编码数据是通过以下获得的:在分裂模式集合中确定用于块的分裂模式,响应于分裂模式将块分裂成至少两个子块;将至少两个子块中的每个子块编码成编码数据,其中分裂模式集合包括用于将块不对称分裂成至少两个子块的至少一个分裂模式。

有利地,编码数据包括:

-指定块是被垂直分裂还是被水平分裂的第一语法元素(btsplitorientation),;

-指定块是被对称分裂还是被不对称分裂的第二语法元素(horasymmetricsplitflag,verasymmetricsplitflag);以及

-在第二语法元素指定块被不对称分裂的情况下的分裂模式语法元素(vertical/horizontal_asymmetric_type)。

在变型中,编码数据包括指示块与编码顺序中的下一个块合并的语法元素(merge_with_next_cu_flag)。

附图说明

-图1图示了根据现有技术将编码单元不对称细分成预测单元;

-图2和图3图示了根据现有技术将编码树单元分裂成编码单元;

-图4图示了如由四叉树加二叉树编码工具定义的编码单元的分裂模式;

-图5表示根据非限制性实施例的被配置为在比特流中编码图像块的传送器的示例性架构;

-图6图示了适配于执行图7和/或图11的编码方法的示例性视频编码器;

-图7表示根据特定且非限制性实施例的在比特流中编码图像的块的方法的流程图;

-图8描绘了根据本原理的不对称分裂模式的示例;

-图9描绘了根据本原理将ctu划分成cu的示例;

-图10是编码语法的图形表示;

-图11表示根据特定且非限制性实施例的对当前块的二进制分裂信息进行编码的方法的流程图;

-图12表示根据非限制性实施例的被配置为从比特流解码图像块以获得解码图像块的接收器的示例性架构;

-图13图示了适配于执行图14和/或图15的解码方法的示例性视频解码器的框图;

-图14表示根据特定且非限制性实施例的从比特流解码图像的块的方法的流程图;

-图15表示根据特定且非限制性实施例的在二进制分裂的情况下对当前块的分裂模式进行解码的方法的流程图;

-图16和图17图示了根据本原理的代表不对称分裂模式的语法元素的熵编码处理;以及

-图18图示了编码语法的变型。

具体实施方式

要理解,附图和描述已被简化以说明与清楚理解本原理有关的元素,同时为了清楚起见,除去了存在于典型的编码和/或解码设备中的许多其他元素。将理解,尽管可以在此使用术语第一和第二来描述各种元素,但是这些元素不应被这些术语限制。这些术语仅用于区分一个元素与另一个元素。以上描述各种方法,并且每个方法包括用于实现所描述的方法的一个或多个步骤或动作。除非为了方法的正确操作需要特定顺序的步骤或动作,否则可以修改或组合特定步骤和/或动作的顺序和/或使用。

图片是单色格式的亮度样本阵列或者4:2:0、4:2:2和4:4:4色彩格式的亮度样本阵列和两个对应的色度样本阵列。通常,“块”寻址样本阵列(例如,亮度y)中的特定区域,而“单元”包括所有编码色彩分量(亮度y和可能的色度cb和色度cr)的同位(collocated)块。然而,在此使用术语“块”来指代块(例如cb)或单元(例如cu)。

在以下部分中,词语“重建的”和“解码的”可以互换使用。通常但不是必需地,在编码器侧使用“重建的”,而在解码器侧使用“解码的”。

编码装置

图5表示根据非限制性实施例的被配置为在比特流中编码图像块的传送器200的示例性架构。

传送器200包括一个或多个处理器2000(其可以包括例如cpu、gpu和/或dsp(数字信号处理器的英文首字母缩写)),以及内部存储器2030(例如ram、rom和/或eprom)。传送器200包括一个或多个通信接口2010(例如,键盘、鼠标、触摸板、网络摄像头),每个通信接口适配于显示输出信息和/或允许用户输入命令和/或数据(例如流);以及电源2020,其可以在传送器200的外部。传送器200也可以包括一个或多个网络接口(未示出)。编码器模块2040表示可以包括在设备中以执行编码功能的模块。另外,编码器模块2040可以实现为传送器200的分离元件,或者可以作为硬件和软件的组合并入处理器2000中,如本领域技术人员已知的那样。

可以从源获得图像块。根据不同的实施例,源可以是但不限于:

-本地存储器,例如视频存储器、ram、闪速存储器、硬盘;

-储存接口,例如与大容量储存器、rom、光盘或磁性支撑的接口;

-通信接口,例如有线接口(例如总线接口、广域网接口、局域网接口)或无线接口(诸如ieee802.11接口或蓝牙接口);以及

-图像捕获电路(例如传感器,诸如例如ccd(或电荷耦合器件)或cmos(或互补金属氧化物半导体))。

根据不同的实施例,可以将比特流发送到目的地。作为示例,将比特流存储在远程或本地存储器中,例如,视频存储器或ram、硬盘。在变型中,将比特流发送到储存接口(例如与大容量储存器、rom、闪速存储器、光盘或磁性支撑的接口)和/或将比特流通过通信接口(例如到点对点链路、通信总线、点对多点链路或广播网络的接口)传送。

根据示例性且非限制性实施例,传送器200还包括存储在存储器2030中的计算机程序。计算机程序包括当由传送器200、特别是由处理器2000执行时,使传送器200能够执行参考图7和/或图11描述的编码方法的指令。根据变型,计算机程序在非临时性数字数据支撑上存储在传送器200外部,例如存储在诸如hdd、cd-rom、dvd、只读和/或dvd驱动器和/或dvd读/写驱动器之类的外部储存介质上,这都是本领域中已知的。因此,传送器200包括读取计算机程序的机制。此外,传送器200可以通过对应的usb端口(未示出)访问一个或多个通用串行总线(usb)型储存设备(例如,“存储棒”)。

根据示例性且非限制性实施例,传送器200可以是但不限于:

-移动设备;

-通信设备;

-游戏设备;

-平板(或平板计算机);

-膝上型机;

-静止图像相机;

-摄像机;

-编码芯片或编码设备/装置;

-静止图像服务器;以及

-视频服务器(例如广播服务器、视频点播服务器或网络服务器)。

图6图示了适配于执行图7和/或图11的编码方法的示例性视频编码器400。编码器400是传送器200的示例,或者可以是这样的传送器200的一部分。为了对具有一个或多个图片的视频序列进行编码,可以将图片划分成具有可配置大小的正方形形状的编码树单元(ctu)。可以将连续的编码树单元集合分组成切片。ctu是划分成编码单元的qtbt的根。在示例性编码器400中,如下所述,由编码器模块对图片进行编码。使用帧内或帧间模式对每个块进行编码。当以帧内模式对块进行编码时,编码器400执行帧内预测(模块460)。在帧间模式中,执行运动估计(模块475)和补偿(模块470)。编码器判定(模块405)使用帧内模式或帧间模式中的哪一个对块进行编码,并且通过预测模式标志来指示帧内/帧间判定。通过从原始图像块中减去(模块410)预测样本块(也称为预测器)来计算残差。

作为示例,根据重建相邻样本来预测帧内模式中的块。通过对存储在参考图片缓冲器480中的参考块进行运动补偿来执行帧间预测。

对残差进行变换(模块425)和量化(模块430)。对量化变换系数以及运动矢量和其他语法元素进行熵编码(模块445)以输出比特流。编码器也可以跳过变换并将量化直接应用于非变换的残差信号。编码器也可以绕过变换和量化二者,即,在不应用变换或量化处理的情况下直接对残差进行编码。在直接pcm编码中,不应用预测,并且将块样本直接编码到比特流中。

编码器包括解码环路,并由此对编码块进行解码以提供用于进一步预测的参考。对量化变换系数进行解量化(模块440)和逆变换(模块450)以对残差进行解码。通过将解码残差和预测样本块组合(模块455)来重建图像块。可以将环内滤波器(465)应用于重建图片,例如,以执行去块/sao(样本自适应偏移)滤波以减少编码伪像。将滤波图像存储在参考图片缓冲器480中。

编码方法

图7表示根据特定且非限制性实施例的在比特流中编码图像的块的方法的流程图。

该方法在步骤s200开始。在步骤s210,传送器(例如诸如编码器400)访问图像的块。该块的大小为w×h,其中w是块的宽度(以像素为单位),h是块的高度(以像素为单位)。该块是亮度样本编码块、色度样本编码块或者由亮度样本编码块和两个色度样本编码块形成的编码单元中的一个。在步骤s220,传送器在分裂模式集合中确定用于所访问的块的分裂模式。在特定实施例中,所确定的分裂模式是分裂模式集合中的一个,其提供最小速率失真成本。根据本原理,分裂模式集合包括至少一个不对称分裂模式。图8描绘了这样的不对称分裂模式的示例。在第一实施例中,至少一个不对称分裂模式指示将块水平地分裂成一个高度为h/4的子块和一个高度为3h/4的子块。高度为h/4的子块在高度为3h/4的子块的上方(模式hor_up)或下方(模式hor_down)。在另一实施例中,至少一个不对称分裂模式指示将块垂直地分裂成一个宽度为w/4的子块和一个宽度为3w/4的子块。宽度为w/4的子块在宽度为3w/4的子块的左侧(模式ver_left)或右侧(模式ver_right)。在特定实施例中,分裂模式集合包括图8上描绘的所有分裂模式。在变型实施例中,至少一个不对称分裂模式指示将块水平地或垂直地分裂成大小不是二的幂的子块,例如它们在宽度w或高度h上的大小等于3.2n个像素,其中n是整数。

在变型中,除了至少一个不对称分裂模式之外,分裂模式集合还包括由qtbt定义并在图4上描绘的分裂模式。在分裂模式指示块不被进一步分裂的情况下(例如分裂模式=no_split),然后在步骤s250对块进行编码。

否则,在步骤s230,传送器响应于所确定的分裂模式,将所访问的块分裂成至少两个子块。

在步骤s240,传送器在比特流中对至少两个子块进行编码。对至少两个子块进行编码可以包括在至少两个子块中的每个子块上递归地应用步骤s220至s250。当块不被进一步分裂时(例如由于在步骤s220确定分裂模式no_split),递归分裂结束。在该情况下,通过应用以下步骤在步骤s250对块进行编码:

-对所述块的样本应用相同的预测以获得预测块;

-根据所述预测块和所述块来确定残差块;

-对所述残差块的样本应用相同的变换以获得变换块;

-在比特流中对所述变换块进行编码(例如量化和熵编码)。

指示如何将块分裂的分裂信息也被编码在比特流中。

该方法在步骤s260结束。

有利地,根据本原理,可以由编码器选择具有等于3·2n的宽度或高度的编码单元。在这样的情况下,可以执行具有3的倍数的大小的矩形块的帧内预测和/或帧间预测。另外,也可以执行在宽度或高度上具有3·2n的大小的2d变换,以及随后的变换系数熵编码处理。

这些附加编码单元拓扑有助于具有在空间上匹配原始信号中包含的结构和不连续性的编码结构。在图9上表示根据本原理将ctu划分成cu的示例。在该图上,四叉树划分由实线表示,而二进制划分(对称和不对称)由虚线表示。这样的划分(尤其是灰色cu)不能利用如hevc或qtbt中定义的划分来获得。在二进制分裂的情况下添加不对称分裂模式通过更好地匹配原始信号中包含的结构和不连续性来提高编码效率。

在表1和表2中定义了示例性语法,以在比特流中对二进制分裂信息进行编码。语法定义各种信息项如何被编码。用于对qtbt中定义的二进制分裂模式进行编码的语法元素btsplitflag和btsplitorientation保持不变。第一语法元素btsplitflag指示块(cu或cb)是否被分裂,并且如果是,则第二语法元素btsplitorientation指示块是被水平分裂还是垂直分裂。通过添加新的语法元素以指示图8的新的分裂模式来修改qtbt语法。表1和表2是根据本原理的语法的示例,并且对qtbt语法的修改以斜体示出。图10是如表1和表2中定义的语法的图形表示。添加的语法元素由图10上的虚线指示。来自qtbt的语法元素由图10上的实线指示。

新的语法元素指示二进制分裂是否是不对称的,并且如果是,那么使用哪个不对称二进制分裂模式。更准确地说,对于被二进制分裂的块,horasysmmetricflag和verasysmmetricflag语法元素分别在水平分裂的情况下和在垂直分裂的情况下指示分裂模式是否是不对称的。对于水平且不对称分裂的块,horizontal_asymmetric_type语法元素指示其是根据hor_up还是hor_down不对称二进制分裂模式被分裂。对于垂直且不对称分裂的块,vertical_asymmetric_type语法元素指示其是根据ver_left还是ver_right不对称二进制分裂模式被分裂。

在特定实施例中,在不允许不对称水平分裂(相应地为不对称垂直分裂)的情况下,不存在语法元素horasysmmetricflag和horizontal_asymmetric_type(相应地为verasysmmetricflag和vertical_asymmetric_type)。

表1

表2

图11表示使用表1和表2中定义的修改语法的根据特定且非限制性实施例的对当前块的二进制分裂信息进行编码的方法的流程图。

在图11上仅表示与当前块的二进制分裂模式编码有关的步骤。该方法在步骤s2000开始。在步骤s2010,传送器200(诸如编码器400)访问当前块。

在步骤s2020,传送器200检查对于当前块是否允许二进制分裂。这典型地包括检查当前块宽度(w)或当前块高度(h)是否高于第一阈值(minbtsize)。宽度或高度上的典型的最小矩形块大小为minbtsize=4。如果否,则不对块进行分裂,并且不对与分裂有关的其他语法元素进行编码。

否则(允许二进制分裂),在步骤s2030对第一标志(btsplitflag)进行编码以指示当前块是否被分裂。作为示例,btsplitflag可以取值1或true以指示当前块被分裂,以及取值false或0以指示当前块不被分裂。在步骤s2040,传送器200检查第一标志指示当前块被分裂还是不被分裂。

在步骤s2040第一标志指示当前块不被分裂的情况下(例如由于btsplitflag=false),则不对与分裂有关的其他语法元素进行编码。

否则,在步骤s2040第一标志指示当前块被分裂的情况下(例如由于btsplitflag=true),传送器200在步骤s2050确定对于当前块是否允许水平、垂直、不对称水平和不对称垂直分裂模式。

作为示例,如果以下条件为真(w>minbtsize&&w%3≠0),其中%是模运算符,则允许垂直分裂模式。在w除以3之后,w%3返回余数。典型地,minbtsize可以等于4,并且如果w等于8、16或32,则允许垂直分裂模式。

在该情况下,vertical_allowed参数可以设置为值1或真。作为示例,如果以下条件为真(h>minbtsize&&h%3≠0),则允许水平分裂模式。在该情况下,horizontal_allowed参数可以设置为值1或真。作为示例,如果以下条件为真vertical_allowed&&w>8,则允许垂直不对称分裂模式。作为示例,如果以下条件为真horizontal_allowed&&h>8,则允许水平不对称分裂模式。因此,从不对称水平或垂直分裂中产生的典型的所允许的块宽度或高度是16/4=4、16*3/4=12、32/4=8、32*3/4=24。

在该实施例中,如果块已经以不对称方式被分裂,则我们不允许在块具有3的倍数的大小的方向上将块进一步分裂。此外,作出对块大小的某个限制以允许块的不对称分裂。典型地,块大小应当高于8。在该情况下,作为3的倍数的最小块大小是12。

在特定实施例中,给定要分裂的块具有2的倍数的大小,允许在一个方向上大小等于3·2n,n≥1的块沿着该方向的二进制分裂。这意味着块的分裂可以导致3的块大小。例如,12×4的块可以被分裂成2个子块,每个子块具有6×4的大小。

在另一特定实施例中,允许块的不对称分裂,条件是块的大小高于8,并且是2的幂。例如,这允许将具有8×4大小的块不对称分裂成具有6×4和2×4大小的两个子编码单元。特别是在qtbt工具允许块大小降至2的色度分量中,这可以是可能的。在这样的情况下,条件vertical_allowed&&w>8由条件vertical_allowed&&w≥8代替。类似地,在这样的情况下,条件horizontal_allowed&&w>8由条件horizontal_allowed&&w≥8代替。

在步骤s2060,传送器200检查水平分裂模式和垂直分裂模式是否都被允许。如果是,则在步骤s2070对语法元素(btsplitorientation)进行编码以指示二进制分裂取向(水平或垂直)。如果不允许水平或垂直分裂,则不对该语法元素(btsplitorientation)进行编码。在后一种情况下,在解码器侧如下推断二进制分裂取向:如果不允许水平分裂,则推断btsplitorientation等于ver。否则,如果不允许垂直分裂,则推断btsplitorientation等于hor。

然后,传送器200在步骤s2080(在水平分裂的情况下)或者在步骤s2090(在垂直分裂的情况下)检查沿着该取向是否允许不对称分裂模式。如果否,则不对与分裂有关的另外的语法元素进行编码。在后一种情况下,在解码器侧将二进制分裂模式推断为hor或ver,这取决于btsplitorientation值。

否则,对语法元素(horasymmetricsplitflag或verasymmetricsplitflag)进行编码(在步骤s2082或s2092)以指示是否将不对称分裂用于当前块。

作为示例,horasymmetricsplitflag(相应地为verasymmetricsplitflag)可以取值1或true以指示当前块被不对称分裂,以及取值false或0以指示当前块不被不对称分裂。在步骤s2084(相应地为s2094),传送器200检查当前块是否被水平地(相应地为垂直地)不对称分裂。

如果不使用不对称分裂(例如,在步骤s2084,horasymmetricsplitflag为假,或者在步骤s2094,verasymmetricsplitflag为false),则不对与分裂有关的另外的语法元素进行编码。如果使用不对称分裂(在步骤s2084,horasymmetricsplitflag为真,或者在步骤s2094,verasymmetricsplitflag为true),则对另一语法元素(horizontal_asymmetric_type或vertical_asymmetric_type)进行编码(在步骤s2086或s2096)以指示当前块的不对称分裂模式。

horizontal_asymmetric_type可以取值hor_up或hor_down,并且vertical_asymmetric_type可取值ver_left或ver_right。

该方法在步骤s2100结束。

解码装置

图12表示根据非限制性实施例的被配置为从比特流解码图像块以获得解码图像块的接收器100的示例性架构。

接收器100包括一个或多个处理器1000(其可以包括例如cpu、gpu和/或dsp(数字信号处理器的英文首字母缩写)),以及内部存储器1030(例如ram、rom和/或eprom)。接收器100包括一个或多个通信接口1010(例如,键盘、鼠标、触摸板、网络摄像头),每个通信接口适配于显示输出信息和/或允许用户输入命令和/或数据(例如解码图像块);以及电源1020,其可以在接收器100的外部。接收器100也可以包括一个或多个网络接口(未示出)。解码器模块1040表示可以包括在设备中以执行解码功能的模块。另外,解码器模块1040可以实现为接收器100的分离元件,或者可以作为硬件和软件的组合并入处理器1000中,如本领域技术人员已知的那样。

可以从源获得比特流。根据不同的实施例,源可以是但不限于:

-本地存储器,例如视频存储器、ram、闪速存储器、硬盘;

-储存接口,例如与大容量储存器、rom、光盘或磁性支撑的接口;

-通信接口,例如有线接口(例如总线接口、广域网接口、局域网接口)或无线接口(例如ieee802.11接口或蓝牙接口);以及

-图片捕获电路(例如传感器,诸如例如ccd(或电荷耦合器件)或cmos(或互补金属氧化物半导体))。

根据不同的实施例,可以将解码图像块发送到目的地,例如,显示设备。作为示例,将解码图像块存储在远程或本地存储器中,例如,视频存储器或ram、硬盘。在变型中,将解码图像块发送到储存接口(例如与大容量储存器、rom、闪速存储器、光盘或磁性支撑的接口)和/或将解码图像块通过通信接口(例如到点对点链路、通信总线、点对多点链路或广播网络的接口)传送。

根据特定且非限制性实施例,接收器100还包括存储在存储器1030中的计算机程序。计算机程序包括当由接收器100、特别是由处理器1000执行时,使接收器能够执行参考图14和/或图15描述的解码方法的指令。根据变型,计算机程序在非临时性数字数据支撑上存储在接收器100外部,例如,存储在诸如hdd、cd-rom、dvd、只读和/或dvd驱动器和/或dvd读/写驱动器之类的外部储存介质上,这都是本领域中已知的。因此,接收器100包括读取计算机程序的机制。此外,接收器100可以通过对应的usb端口(未示出)访问一个或多个通用串行总线(usb)型储存设备(例如,“存储棒”)。

根据示例性且非限制性实施例,接收器100可以是但不限于:

-移动设备;

-通信设备;

-游戏设备;

-机顶盒;

-电视机;

-平板(或平板计算机);

-膝上型机;

-视频播放器,例如蓝光播放器、dvd播放器;

-显示器,以及

-解码芯片或解码设备/装置。

图13图示了适配于执行图14和/或图15的解码方法的示例性视频解码器300的框图。视频解码器300是接收器100的示例,或者可以是这样的接收器100的一部分。在示例性解码器300中,如下所述,由解码器模块对比特流进行解码。视频解码器300通常执行与如图6中描述的由视频编码器400执行的编码通道对等的解码通道。

特别地,解码器的输入包括视频比特流,其可以由视频编码器400生成。首先对比特流进行熵解码(模块330)以获得变换系数、运动矢量和其他编码信息。对变换系数进行解量化(模块340)和逆变换(模块350)以对残差进行解码。然后将解码残差与预测样本块(也称为预测器)组合(模块355)以获得解码/重建的图像块。可以从帧内预测(模块360)或运动补偿预测(即,帧间预测)(模块375)获得(模块370)预测样本块。可以将环内滤波器(模块365)应用于重建图像。环内滤波器可以包括去块滤波器和sao滤波器。将滤波图像存储在参考图片缓冲器380中。

解码方法

图14表示根据特定且非限制性实施例的从比特流解码图像的块的方法的流程图。该块的大小为w×h,其中w是以像素为单位的块的宽度,h是以像素为单位的块的高度。该块是亮度样本块、色度样本块或者由亮度样本块和两个色度样本块形成的编码单元中的一个。

该方法在步骤s100开始。在步骤s110,接收器100(诸如解码器300)访问代表要解码的块的比特流或其一部分。

在步骤s120,接收器在分裂模式集合中确定用于该块的分裂模式。分裂模式例如从比特流解码。根据本原理,分裂模式集合包括至少一个不对称分裂模式。图8描绘了这样的不对称分裂模式的示例。在第一实施例中,至少一个不对称分裂模式指示将块水平地分裂成一个高度为h/4的子块和一个高度为3h/4的子块。高度为h/4的子块在高度为3h/4的子块的上方(模式hor_up)或下方(模式hor_down)。在另一实施例中,至少一个不对称分裂模式指示将块垂直地分裂成一个宽度为w/4的子块和一个宽度为3w/4的子块。宽度为w/4的子块在宽度为3w/4的子块的左侧(模式ver_left)或右侧(模式ver_right)。在特定实施例中,分裂模式集合包括图8上描绘的所有分裂模式。在变型实施例中,至少一个不对称分裂模式指示将块水平地或垂直地分裂成大小不是二的幂的子块,例如它们在宽度或高度上的大小等于3.2n,其中n是整数。

在变型中,除了至少一个不对称分裂模式之外,分裂模式集合还包括由qtbt定义并在图4上描绘的分裂模式。在分裂模式指示块不被进一步分裂的情况下(no_split),然后在步骤s150对块进行解码。

否则,在步骤s130,接收器响应于所确定的分裂模式,将所访问的块分裂成至少两个子块。

在步骤s140,传送器对至少两个子块中的每个子块进行解码。对至少两个子块进行解码可以包括在至少两个子块中的每个子块上递归地应用步骤s120至s140。当块不被进一步分裂时(例如由于在步骤s120确定分裂模式no_split),递归分裂结束。在该情况下,通过应用以下步骤在步骤s150对块进行解码:

-对所述子块的变换块进行解码(例如熵解码和逆量化);

-对所述经解码变换块的样本应用相同的变换(在编码器侧使用的变换的逆)以获得残差块;

-对所述子块的样本应用相同的预测以获得预测块;

-根据所述预测块和所述残差块来重建所述子块。

该方法在步骤s160结束。

也从比特流解码指示如何将块分裂的分裂信息。

图15表示使用表1和表2中定义的修改语法的根据特定且非限制性实施例的在二进制分裂的情况下对当前块的分裂模式进行解码的方法的流程图。

在图15上仅表示与当前块的二进制分裂模式解码有关的步骤。该方法从步骤s1000开始。在步骤s1010,接收器100(诸如解码器300)访问代表要解码的当前块的比特流或其一部分。

在步骤s1020,接收器100检查对于要解码的当前块是否允许二进制分裂。这典型地包括检查当前块宽度(w)或当前块高度(h)是否高于第一阈值(minbtsize)。宽度或高度上的典型的最小矩形块大小为minbtsize=4。如果不允许二进制分裂,则不对块进行分裂(在步骤s1045,将btsplitmode设置为no_split),并且不对与分裂有关的其他语法元素进行解码。

否则(允许二进制分裂),在步骤s1030从比特流解码第一标志(btsplitflag),其指示当前块是否被分裂。

在步骤s1040,接收器100检查当前块是否被分裂。如果当前块不被分裂(例如,在步骤s1040,btsplitflag为false),则不对与分裂有关的其他语法元素进行解码。在步骤s1045,将btsplitmode设置为no_split。

在当前块被分裂的情况下(步骤s1040,btsplitflag为true),接收器100在步骤s1050确定对于当前块是否允许水平、垂直、不对称水平和不对称垂直分裂模式。步骤s1050与图11的步骤s2050相同。

在步骤s1060,接收器100检查水平分裂模式和垂直分裂模式是否都被允许。如果是,则在步骤s1070对语法元素(btsplitorientation)进行解码以指示二进制分裂取向(水平或垂直)。如果不允许水平或垂直分裂,则不对该语法元素(btsplitorientation)进行解码。在后一种情况下,在步骤s1065推断二进制分裂取向。如果不允许水平分裂,则推断btsplitorientation等于ver。否则,如果不允许垂直分裂,则推断btsplitorientation等于hor。

然后,接收器100在步骤s1080(在水平分裂的情况下)或者在步骤s1090(在垂直分裂的情况下)检查沿着该取向是否允许不对称分裂模式。如果否,则不对与分裂有关的另外的语法元素进行解码。在后一种情况下,将二进制分裂模式推断为hor或ver,这取决于btsplitorientation值(在步骤s1085,将btsplitmode设置为btsplitorientation)。

否则,对语法元素(horasymmetricsplitflag或verasymmetricsplitflag)进行解码(在步骤s1082或s1092),其指示是否将不对称分裂用于当前块。在步骤s1084(相应地为s1094),接收器100检查当前块是否被水平地(相应地为垂直地)不对称分裂。

如果不使用不对称分裂(horasymmetricsplitflag或verasymmetricsplitflag不为true),则不对与分裂有关的另外的语法元素进行解码。如果使用不对称分裂(horasymmetricsplitflag或verasymmetricsplitflag为true),则对语法元素(horizontal_asymmetric_type或vertical_asymmetric_type)进行解码(在步骤s1086或s1096),其指示用于当前块的不对称分裂模式。

horizontal_asymmetric_type可以取值hor_up或hor_down,并且vertical_asymmetric_type可取值ver_left或ver_right。

如果horizontal_asymmetric_type取值hor_up,则将二进制分裂模式(btsplitmode)设置为等于hor_up。

如果horizontal_asymmetric_tupe取值hor_down,则将二进制分裂模式设置为等于hor_down。

如果vertical_asymmetrictype取值ver_left,则将二进制分裂模式设置为等于ver_left。

如果horizontal_asymmetric_e取值ver_left,则将二进制分裂模式设置为等于ver_left。

该方法在步骤s1100结束。

语法元素的熵编码和解码

可以以不同方式对新的语法元素verasymmetricsplitflag和horasymmetricsplitflag进行编码。在第一实施例中,verasymmetricsplitflag(相应地为horasymmetricsplitflag)在比特流中利用单个比特进行编码。这仅在对称分裂模式和不对称分裂模式具有相等概率(也就是说,verasymmetricsplitflag(相应地为horasymmetricsplitflag)具有0.5的概率等于真)的情况下是最佳的。在该情况下,分别由这些语法元素带来的平均信息量等于1比特,并且利用1比特的固定长度编码是最佳的。

在大多数实际情况中,对称分裂模式和不对称分裂模式可能不是等概率的。因此,根据另一实施例,使用基于上下文的算术编码对语法元素verasymmetricsplitflag和horasymmetricsplitflag进行编码。基于上下文的算术编码包括上下文建模和算术编码。在特定实施例中,它可以包括在上下文建模之前对语法元素的二值化。根据过去的编码方案(例如h.264和hevc),二值化和算术编码是众所周知的。上下文建模基于某个上下文来估计每个语法元素的概率,并且在编码器和解码器侧对称地应用。关于熵编码所公开的以下实施例也适用于熵解码。由此为新的语法元素horasymmetricflag和verasymmetricflag定义新的上下文。

在该实施例中,使用分别与每个语法元素horasymmetricflag和verasymmetricflag相关联的两个简单上下文。这些上下文中的每个上下文仅取决于由所涉及的语法元素本身在过去(即,当对编码顺序中当前块之前的块进行编码时)所采用的值。因此,能够通过平均信息量对该不对称分裂模式信息进行编码,该平均信息量接近由所考虑的语法元素表示的随机变量的一阶熵。因此,在这些标志的统计分布不均匀的情况下,通过平均少于一个比特对这些语法元素进行编码。在该基于上下文的编码的变型中,用于horasymmetricflag和verasymmetricflag的上下文是相同的。实际上,这两个语法元素的编码可以共享相同的上下文。如果我们假设horasymmetricflag为true或false的概率(知道当前块在水平取向上被二进制分裂)接近于verasymmetricflag为true或false的概率(知道当前块在垂直取向上被二进制分裂),则这将是有效的。

在第三实施例中,根据与已经在之前的相邻块中判定的分裂配置有关的某个上下文信息,对这些语法元素verasymmetricsplitflag和horasymmetricsplitflag进行熵编码。当不对称分裂用于当前块时,则两个子块中的一个子块在宽度或高度上具有等于当前块的大小的四分之一的大小。这意味着当前块中的原始信号包含一些空间活性或不连续性,并且分裂当前块在编码效率方面是有价值的。在编码顺序中当前块之前的相邻块中也可能存在这样的高空间活性或不连续性。

根据具有小于或等于当前块大小的四分之一的大小的子块的数量以及所考虑的分裂取向,定义上下文,以对不对称分裂语法元素进行编码。分别对于水平和垂直不对称分裂上下文,采用以下形式:

-确定nbquarterheightsubcu=左侧相邻块中具有小于或等于的高度的子块的数量,其中height=当前块的高度;

-确定

horasymmetricsplitctxt=(nbquarterheightsubcu>0?1:0)(1)

根据等式(1),使用两个不同的上下文对horasymmetricsplitflag语法元素进行编码。如果值nbquarterheightsubcu严格大于零,则使用第一上下文(具有索引0)对与horasymmetricsplitflag相对应的二进制符号进行编码。在相反的情况下,如果值nbquarterheightsubcu等于零,则使用第二上下文(具有索引1)对与horasymmetricsplitflag相对应的二进制符号进行编码。

左侧相邻块对应于具有大于或等于当前块高度的高度的块,并且其右侧边界具有等于当前块的左侧边界的x坐标减1的x坐标。可以在高度上将左侧相邻块分裂成一个或若干个子块。

-确定nbquarterwidthsubcu=顶部相邻块中具有小于或等于的宽度的子块的数量,其中width=当前块的宽度;

-确定verasymmetricsplitctxt=(nbquarterwidthsubc>0?1:0)(2)

根据等式(2),使用两个不同的上下文对verasymmetricsplitflag语法元素进行编码。如果值nbquarterwidthsubcu严格大于零,则使用第一上下文(具有索引0)对与verasymmetricsplitflag相对应的二进制符号进行编码。在相反的情况下,如果值nbquarterwidthsubcu等于零,则使用第二上下文(具有索引1)对与verasymmetricsplitflag相对应的二进制符号进行编码。

顶部相邻块对应于具有大于或等于当前块宽度的宽度的块,并且其底部边界具有等于当前块的顶部边界的y坐标减1的y坐标。可以在宽度上将顶部相邻块分裂成一个或若干个子块。

根据另一实施例,根据分别在宽度和高度上具有高于当前块的大小的一半的大小的相邻块的存在,确定用于对不对称分裂标志verasymmetricsplitflag和horasymmetricsplitflag进行编码的上下文。这采用以下形式。首先,如下确定用于对元素horasymmetricsplitflag的编码进行编码的上下文:

-确定位于当前cu左上角的左侧的块是否具有高于当前块高度的一半的高度。

-确定位于当前cu左下角的左侧的块是否具有大于当前块高度的一半的高度。

-如果以上测试之一为肯定的,则给定horasymmetricsplitctxt值0。

-否则,给定horasymmetricsplitctxt值1。

类似地,如下确定用于对元素verasymmetricsplitflag的编码进行编码的上下文:

-确定位于当前cu左上角的顶部的块是否具有高于当前块宽度的一半的宽度。

-确定位于当前cu右上角的顶部的块是否具有大于当前块宽度的一半的宽度。

-如果以上测试之一为肯定的,则给定verasymmetricsplitctxt值0。

-否则,给定verasymmetricsplitctxt值1。

根据另一实施例,根据切片类型(intra或inter),使用一些单独的上下文对horasymmetricsplitflag和verasymmetricsplitflag进行编码/解码。在inter切片中,使用以上上下文确定方法。在intra切片中,分别对horasymmetricsplitflag和verasymmetricsplitflag使用单个上下文来捕获这两个标志的统计行为,而不管在对这些标志进行编码/解码时可用的上下文块大小信息。

该实施例的优点是更好地对编码标志与相邻块信息之间的统计依赖性进行建模,尤其是在inter切片中,其降低与这些标志的编码相关联的速率成本。

根据另一实施例,根据与当前块相关联的四叉树加二叉树深度值,对在先前的实施例之一中提出的上下文加索引。因此,对于ctu的四叉树加二叉树表示中的每个深度级别,使用单独的上下文集合。有利地,使用更精确的上下文对被编码/解码的语法元素的统计行为进行建模。

在第三实施例中,使用两个不同上下文的集合来执行语法元素horasymmetricsplitflag和verasymmetricsplitflag的上下文自适应编码。因此,如下表示上下文集合:

·horasymmetricsplitflagctx[0..1]

·verasymmetricsplitflagctx[0..1]

在本实施例中,通过四叉树加二叉树ctu表示中的处理块的深度对上下文加索引。因此,基于深度级别进一步对两个以上上下文集合加索引:

·horasymmetricsplitflagctx[0...maxdepth][0..1]

·verasymmetricsplitflagctx[0...maxdepth][0..1]

其中maxdepth表示块的最大深度。这里通过深度意指当前块的四叉树深度和二叉树深度之和。

根据另一实施例,根据块的形状,即宽度和高度,对在先前的实施例之一中提出的上下文加索引。这意味着对于可能的编码大小的每个元组(w,h),使用单独的上下文集合。该实施例的优点是用于对被编码/解码的语法元素的统计行为进行建模的进一步改进的上下文。有利地,使用更精确的上下文对被编码/解码的语法元素的统计行为进行建模。

在本实施例中,通过块的宽度的log2和块的高度的log2对上下文加索引:

·horasymmetricsplitflagctx[0...maxlog2cuheight][0..1]

·verasymmetricsplitflagctx[0...maxlog2cuwidth][0..1]

其中maxlog2cuwidth和maxlog2cuheight表示等于2的幂的最大可能块宽度和块高度的log2。

上下文与等于2的幂的块大小相关联,因为不对称分裂可能仅适用于等于2的幂的块大小。

可以以不同方式对新的语法元素horizontal_asymmetric_type或vertical_asymmetric_type进行编码。在第一实施例中,horizontal_asymmetric_type(相应地为vertical_asymmetric_type)在比特流中利用单个比特进行编码。

这仅在horizontal_asymmetric_type或vertical_asymmetric_type语法元素具有相等概率的情况下是最佳的。

根据另一实施例,使用基于上下文的算术编码对语法元素horizontal_asymmetric_type或vertical_asymmetric_type进行编码。在该实施例中,使用分别与每个语法元素horizontal_asymmetric_type或vertical_asymmetric_type相关联的两个简单上下文。这些上下文中的每个上下文仅取决于由所涉及的语法元素本身在过去(即,当对编码顺序中之前的块进行编码时)所采用的值。在该基于上下文的编码的变型中,用于horizontal_asymmetric_type和vertical_asymmetric_type的上下文可以是相同的。因此,这两个语法元素的编码共享相同的上下文。如果我们假设horizontal_asymmetric_type为true或false的概率(知道当前块在水平取向上被不对称二进制分裂)接近于vertical_asymmetric_type为true或false的概率(知道当前块在垂直取向上被不对称二进制分裂),则这将是有效的。

在第三实施例中,如图16和图17上所示,根据与已经在之前的相邻块中判定的分裂配置有关的某个上下文信息,对这些语法元素horizontal_asymmetric_type或vertical_asymmetric_type进行熵编码。在水平不对称分裂中,如果当前块左侧的先前块中的分裂边界(图16上的f1)存在并且在空间上与通过选择水平不对称分裂将出现在当前块中的水平边界重合,则在当前块中使用该不对称分裂的概率增加。

在图16上示出了该原理。在该图的左侧,在当前块中评估候选hor_up分裂模式,而左侧的相邻块未被分裂。在该情况下对于当前块使用hor_up分裂模式的概率低于在图16的右侧描绘的情况。实际上,在后一种情况下,利用分裂配置对相邻块进行了编码,该分裂配置包含通过选择hor_up分裂模式将在当前块中传播的水平边界。在当前块中选择hor_up分裂模式更可能发生在该情况下,而不是在图16的左侧描绘的前一种情况下。

在垂直不对称分裂的情况下,也在图17上示出了该原理。比起在图17的左侧的情况下,在图17的右侧描绘的情况下ver_right分裂模式具有用于对当前块进行编码的更高概率,因为它将垂直边界f2从位于当前块上方的相邻块传播到当前块中。

基于该原理,使用以下上下文对语法元素horizontal_asymmetric_type进行编码和解码:

·确定左侧相邻块中是否存在与将从hor_up不对称类型中产生的边界对齐的边界。取决于结果,将hor_up_aligned_boundary设置为真或假。

·确定左侧相邻块中是否存在与将从hor_down不对称类型中产生的边界对齐的边界。取决于结果,将hor_down_aligned_boundary设置为真或假。

·如下在值(0,1,2)之中确定上下文索引:

hor_asymmetric_type_context

=hor_up_aligned_boundary?1:(hor_down_aligned_boundary:2?0)

(3)

根据等式(3),使用三个不同的上下文对horizontal_asymmetric_type语法元素进行编码。如果值hor_up_aligned_boundary等于true,则使用第一上下文(具有索引1)对与horizontal_asymmetric_type相对应的二进制符号进行编码。在相反的情况下,如果值hor_down_aligned_boundary等于true,则使用第二上下文(具有索引2)对与horizontal_asymmetric_type相对应的二进制符号进行编码。最后,如果值hor_up_aligned_boundary和hor_down_aligned_boundary都等于false,则使用第三上下文(具有索引0)对与horizontal_asymmetric_type相对应的二进制符号进行编码。

使用以下上下文对语法元素vertical_asymmetric_type进行编码和解码:

·确定上方相邻块中是否存在与将从ver_left不对称类型中产生的边界对齐的边界。取决于结果,将ver_left_aligned_boundary设置为真或假。

·确定上方相邻块中是否存在与将从ver_right不对称类型中产生的边界对齐的边界。取决于结果,将ver_right_aligned_boundary设置为真或假。

·如下在值(0,1,2)之中计算上下文索引:

ver_asymmetric_type_context

=ver_left_aligned_boundary?1:(ver_right_aligned_boundary:2?0)

(4)

根据等式(3),使用三个不同的上下文对vertical_asymmetric_type语法元素进行编码。如果值ver_left_aligned_boundary等于true,则使用第一上下文(具有索引1)对与vertical_asymmetric_type相对应的二进制符号进行编码。在相反的情况下,如果值ver_right_aligned_boundary等于true,则使用第二上下文(具有索引2)对与vertical_asymmetric_type相对应的二进制符号进行编码。最后,如果值ver_left_aligned_boundary和ver_right_aligned_boundary都等于false,则使用第三上下文(具有索引0)对与vertical_asymmetric_type相对应的二进制符号进行编码。

根据另一实施例,语法元素horizontal_asymmetric_type或vertical_asymmetric_type的编码采用分别如下确定的上下文。首先,如下确定用于对标志horizontal_asymmetric_type进行编码的上下文hor_asymmetric_type_context:

-获得位于当前块左上角的左侧的块的高度。这给定值topleftheight

-获得位于当前块左下角的左侧的块的高度。这给定值bottomleftheight

-如果topleftheight等于bottomleftheight,则给定hor_asymmetric_type_context值0

-否则,如果topleftheight<bottomleftheight,则给定hor_asymmetric_type_context值1

-否则(topleftheight>bottomleftheight的情况),给定hor_asymmetric_type_context值2

因此,使用3个上下文对标志horizontal_asymmetric_type进行编码/解码。

其次,如下确定用于对标志vertical_asymmetric_type进行编码的上下文ver_asymmetric_type_context:

-获得位于当前块左上角的顶部的块的宽度。这给定值topleftwidth

-获得位于当前块右上角的顶部的块的宽度。这给定值toprightwidth

-如果topleftwidth等于toprightwidth,则给定vertical_asymmetric_type_context值0

-否则,如果topleftwidth>toprightwidth,则给定ver_asymmetric_type_context值1

-否则(topleftwidth<toprightwidth的情况),给定ver_asymmetric_type_context值2

因此,使用3个上下文对标志vertical_asymmetric_type进行编码/解码。

根据另一实施例,根据切片类型(intra或inter),使用一些单独的上下文对horizontal_asymmetric_type和vertical_asymmetric_type进行编码/解码。在inter切片中,使用以上上下文确定方法。在intra切片中,分别标志horizontal_asymmetric_type和vertical_asymmetric_type使用单个上下文来捕获这两个标志的统计行为,而不管在对这些标志进行编码/解码时可用的上下文块大小信息。

该实施例的优点是更好地对编码标志与相邻块信息之间的统计依赖性进行建模,尤其是在inter切片中,其降低与这些标志的编码相关联的速率成本。

根据另一实施例,根据与当前块相关联的四叉树加二叉树深度值,对在先前的实施例之一中提出的上下文加索引。这意味着对于ctu的四叉树加二叉树表示中的每个深度级别,使用单独的上下文集合。与针对verasymmetricsplitflag和horasymmetricsplitflag语法元素定义的相同的原理适用。该实施例的优点是用于对被编码/解码的语法元素的统计行为进行建模的更精确的上下文。

根据另一实施例,根据编码单元的形状,即宽度和高度,对在先前实施例之一中提出的上下文加索引。这意味着对于可能的编码大小的每个元组(w,h),使用单独的上下文集合。与针对verasymmetricsplitflag和horasymmetricsplitflag语法元素定义的相同的原理适用。该实施例的优点是用于对被编码/解码的语法元素的统计行为进行建模的进一步改进的上下文。

表1和表2的语法的变型

在表3中描绘表1和表2中定义的语法的变型。它包括:

-对于当前块,识别其是否可以在空间上与相邻块合并以形成父块的不对称子块。父块可以是当前块的父块(情况1),或者是当前块的父块的父块(情况2)。在编码器侧和解码器侧以相同的方式执行该步骤。

在图18的顶部示出了情况1的示例。在该图上,以灰色填充的顶部子块可以与下一个子块合并以形成当前块的父块的不对称分割。

在图18的底部示出了情况2的示例。当前块是以灰色填充的块。在该图上,当前块可以与下一个子块(在图18上命名为nextsubcu)合并,以便形成图18上称为cu’的块的不对称分割。

-对称为merge_with_next_cu的语法元素进行编码,其对于当前块指示该当前块是否与处理顺序中的下一个块合并,以便形成具有为3·2n的大小的不对称块。

为了以初始qtbt编码语法的最小改变来支持该实施例,对于二叉树和二进制分裂模式的编码,qtbt语法不变。

表3

当块不被分裂时,在块编码的前面引入称为“merge_with_next_cu_flag”的新的语法元素。该标志指示所涉及的块尚未在比特流的该阶段被编码,但是它与扫描顺序中的下一个块合并。这使得可能形成具有等于(w*3/2,h)或(w,h*3/2)的大小的不对称块,其取决于当前二进制分裂取向。

该实施例的优点在于,它强有力地减少支持不对称编码单元所需的qtbt语法修改量。

关于图18公开的该实施例也适用于解码器侧。在该情况下,语法元素merge_with_next_cu_flag被解码以恢复不对称块。

在此描述的实现方式可以例如以方法或处理、装置、软件程序、数据流或信号来实现。即使仅在单一形式的实现方式的背景下进行了讨论(例如,仅作为方法或设备进行了讨论),但是所讨论的特征的实现方式也可以以其他形式(例如程序)来实现。装置可以在例如适当的硬件、软件和固件中实现。方法例如可以在诸如例如处理器(其一般涉及处理设备,包括例如计算机、微处理器、集成电路或可编程逻辑器件)之类的装置中实现。处理器还包括诸如例如计算机、蜂窝电话、便携/个人数字助理(“pda”)之类的通信设备,以及促成在最终用户之间进行信息通信的其他设备。

在此描述的各种处理和特征的实现方式可以以各种不同的装备或应用(特别地,例如装备或应用)来实施。这样的装备的示例包括编码器、解码器、处理来自解码器的输出的后处理器、向编码器提供输入的预处理器、视频编码器、视频解码器、视频编解码器、网络服务器、机顶盒、膝上型机、个人计算机、蜂窝电话、pda和其他通信设备。如应当清楚的那样,装备可以是移动的,并且甚至安装在移动交通工具中。

另外,该方法可以由处理器正执行的指令来实现,并且这样的指令(和/或由实现方式产生的数据值)可以存储在处理器可读介质上,诸如例如集成电路、软件载体或其他储存设备,诸如例如硬盘、压缩磁盘(“cd”)、光盘(诸如例如dvd,通常称为数字多功能盘或数字视频盘))、随机存取存储器(“ram”)或只读存储器(“rom”)。指令可以形成有形地包含在处理器可读介质上的应用程序。指令可以例如在硬件、固件、软件或组合中。指令可以存在于例如操作系统、单独的应用或两者的组合中。因此,处理器可以表征为例如被配置为执行处理的设备和包括具有用于执行处理的指令的处理器可读介质(诸如储存设备)的设备二者。此外,除了指令或者代替指令,处理器可读介质可以存储由实现方式产生的数据值。

如对于本领域技术人员将明显的那样,实现方式可以产生被格式化为携带例如可以被存储或传送的信息的各种信号。信息可以包括例如用于执行方法的指令或者由所描述的实现方式之一产生的数据。例如,可以将信号格式化为携带用于写入或读取所描述的实施例的语法的规则作为数据,或者携带由所描述的实施例写入的实际语法值作为数据。例如,这样的信号可以被格式化为电磁波(例如使用频谱的射频部分)或者基带信号。格式化可以包括例如对数据流进行编码以及以经编码的数据流调制载波。例如,信号携带的信息可以是模拟或数字信息。如已知的那样,可以通过各种不同的有线或无线链路来传送信号。信号可以存储在处理器可读介质上。

已经描述了多个实现方式。然而,将理解,可以进行各种修改。例如,可以对不同实现方式的元素进行组合、补充、修改或移除,以产生其他实现方式。另外,普通技术人员将理解,其他结构和处理可以替代所公开的那些结构和处理,并且所得到的实现方式将以与所公开的实现方式至少基本相同的方式来执行与所公开的实现方式至少基本相同的功能,以实现与所公开的实现方式至少基本相同的结果。因此,本申请考虑了这些以及其他实现方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1