取决于模式的帧内平滑(MDIS)与帧内内插滤波器切换的组合的制作方法

文档序号:23993985发布日期:2021-02-20 15:07阅读:259来源:国知局
取决于模式的帧内平滑(MDIS)与帧内内插滤波器切换的组合的制作方法
取决于模式的帧内平滑(mdis)与帧内内插滤波器切换的组合
[0001]
相关申请的交叉引用
[0002]
本专利申请要求于2019年7月1日提交的申请号为16/459,024的美国专利申请的优先权,该专利申请要求于2018年7月2日提交的申请号为62/693,266的美国临时专利申请、于2018年9月5日提交的申请号为62/727,341的美国临时专利申请以及于2018年9月14日提交的申请号为62/731,723的美国临时专利申请的权益,以上申请的全部内容通过引用并入本文。
技术领域
[0003]
本公开涉及视频编码和视频解码。


背景技术:

[0004]
数字视频功能可以结合在各种各样的设备中,包括数字电视、数字直播系统、无线广播系统、个人数字助理(pda)、便携式电脑或台式电脑、平板电脑、电子阅读器、数码相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏机、蜂窝无线电话或卫星无线电话、所谓“智能手机”、视频电话会议设备和视频流设备等。数字视频设备实施视频编码技术,诸如由mpeg-2、mpeg-4、itu-t h.263、itu-t h.264/mpeg-4、part 10、高级视频编码(avc)、高效视频编码(hevc)、itu-t h.265/高效视频编码定义的标准以及此类标准的扩展中所描述的那些视频编码技术。通过实施以上视频编码技术,视频设备可以更有效地发送、接收、编码、解码和/或存储数字视频信息。
[0005]
视频编码技术包括空域(图片内)预测和/或时域(图片间)预测,以减少或去除视频序列中固有的冗余。对于基于块的视频编码,可以将视频条带(如视频图片或视频图片的一部分)分割为视频块,这些视频块也可以称为编码树单元(ctu)、编码单元(cu)和/或编码节点。相对于图片中相邻块中的参考样点、使用空域预测来对同一图片的帧内编码(i)条带中的视频块进行编码。图片的帧间编码(p或b)条带中的视频块可以使用相对于图片中相邻块中的参考样点、空域预测或者相对于其他参考图片中参考样点的时域预测。图片可被称为帧,并且参考图片可被称为参考帧。


技术实现要素:

[0006]
总体上,本公开描述用于将方向模式帧内预测的两种平滑滤波操作组合的技术,即取决于模式的帧内平滑(mdis)滤波和高斯内插滤波。在一些示例中,可通过直接应用mdis条件以在两种内插滤波器之间进行决策并消除单独的内插滤波器条件来实现。
[0007]
在一示例中,本公开描述了一种解码视频数据的方法,方法包括:确定条件对于视频数据的当前图片的第一块是否为真;基于条件对于第一块为真,将非平滑内插滤波器应用于第一块的未经滤波的参考样点,以产生第一块的预测样点;确定条件对于当前图片的第二块是否为真;基于所条件对于所述第二块为假,将平滑内插滤波器应用于第二块的未经滤波的参考样点,以产述第二块的预测样点;基于第一块的预测样点重构第一块;以及基
于第二块的预测样点重构第二块。。
[0008]
在另一示例中,本公开描述了一种编码视频数据的方法,方法包括:确定条件对于视频数据的当前图片的第一块是否为真;基于条件对于第一块为真,将非平滑内插滤波器应用于第一块的未经滤波的参考样点,以产生第一块的预测样点;确定条件对于当前图片的第二块是否为真;基于条件对于第二块为假,将平滑内插滤波器应用于第二块的未经滤波的参考样点,以产生第二块的预测样点;基于第一块的预测样点产生第一块的残差数据;基于第二块的预测样点产生第二块的残差数据;以及在包括视频数据的编码表示的比特流中包括表示第一块的残差数据和第二块的残差数据的数据。
[0009]
在另一示例中,本公开描述了一种用于编码或解码视频数据的设备,设备包括:存储视频数据的存储器;以及一个或多个处理器,被配置成:确定条件对于视频数据的当前图片的块是否为真;基于条件对于块为真,将非平滑内插滤波器应用于块的未经滤波的参考样点,以产生块的预测样点;以及基于条件对于块为假,将平滑内插滤波器应用于块的未经滤波的参考样点以产生块的预测样点。
[0010]
在另一示例中,本公开描述了一种用于编码或解码视频数据的设备,设备包括:用于确定条件对于视频数据的当前图片的块是否为真的部件;用于基于条件对于块为真来将非平滑内插滤波器应用于块的未经滤波的参考样点以产生块的预测样点的部件;和用于基于条件对于块为假来将平滑内插滤波器应用于块的未经滤波的参考样点以产生块的预测样点的部件。
[0011]
在另一示例中,本公开描述了一种其上存储有指令的计算机可读存储介质,指令在被执行时使得一个或多个处理器:确定条件对于视频数据的当前图片的块是否为真;基于条件对于块为真,将非平滑内插滤波器应用于块的未经滤波的参考样点以产生所的预测样点;以及基于条件对于块为假,将平滑内插滤波器应用于块的未经滤波的参考样点以产生块的预测样点。
[0012]
附图和以下描述对一个或多个示例进行了详细阐述。其他特征、目的和优点在描述、附图和权利要求中将显而易见。
附图说明
[0013]
图1是示出可执行本公开技术的示例视频编码和解码系统的框图。
[0014]
图2是示出帧内预测模式的示例的概念图。
[0015]
图3是示出根据角度帧内预测模式产生视频数据块的预测样点的示例技术的概念图。
[0016]
图4a和图4b是示出示例四叉树二叉树(qtbt)结构和对应编码树单元(ctu)的概念图。
[0017]
图5是示出可执行本公开技术的示例视频编码器的框图。
[0018]
图6是示出可执行本公开技术的示例视频解码器的框图。
[0019]
图7是示出用于对当前块进行编码的示例方法的流程图。
[0020]
图8是示出用于对视频数据的当前块进行解码的示例方法的流程图。
[0021]
图9是示出根据本公开一种或多种技术、在视频数据块的帧内预测过程中由视频编码器执行的示例操作的流程图。
[0022]
图10是示出根据本公开一种或多种技术、由视频编码器执行以确定图9中的操作的条件是否为真的示例操作的流程图。
具体实施方式
[0023]
在视频编码中,视频编码器(如视频编码器或视频解码器)可对当前图片的当前块进行编码(如编码或解码)。作为对当前块进行编码的过程的一部分,视频编码器可使用帧内预测来产生当前块的预测块。为使用帧内预测来产生预测块,视频编码器可基于一组参考样点来确定预测块的样点值。一组参考样点可包括位于当前块左侧一列中的当前图片的样点以及位于当前块上方一行中的当前图片的样点。视频编码器可根据预测块的帧内预测模式以不同的方式使用参考样点来确定预测块的样点值。
[0024]
在基于一组参考样点确定预测块的样点值之前,视频编码器可将滤波器应用于参考样点。将滤波器应用于参考样点可提高压缩效率。多种技术已经开发,可将各种类型的滤波器应用于参考样点。例如,取决于模式的帧内平滑(mdis)就是一种将滤波器应用于参考样点的技术。在mdis中,视频编码器可根据帧内预测模式和预测块的尺寸而确定是否将某一滤波器应用于参考样点。另外,如果视频编码器确定将滤波器应用于参考图片,那么视频编码器可根据帧内预测模式和预测块的尺寸将不同滤波器应用于参考样点。视频编码器可存储原始的未经滤波的参考样点(例如,出于输出参考样点或在其他块的预测中重复使用的目的),并且可能需要存储滤波的参考样点。
[0025]
除了将滤波器应用于参考样点作为执行mdis的一部分之外,视频编码器可将内插滤波器应用于参考样点。视频编码器将内插滤波器应用于整数参考样点,以确定整数参考样点之间的参考样点值。整数参考样点是位于当前图片内整数值坐标处的参考样点。所述视频编码器可使用经内插的参考样点来确定预测块中的样点值。当应用内插滤波器时,视频编码器可将一组权重应用于整数参考样点。对于不同的子整数(sub-integer)位置可以有不同的权重。例如,在各个整数参考样点之间存在31个不同位置的示例中,可以存在32组不同的权重,即用于各个参考样点间位置的31组权重和用于整数参考样点的1组权重。因此,视频编码器可能需要存储所有32组不同的权重。此外,视频编码器可配置成在不同情况下应用不同类型的内插滤波器。例如,视频编码器可被配置成在某些情况下应用三次内插滤波器,在其他情况下应用高斯内插滤波器。因此,视频编码器还可能需要为各类型的内插滤波器存储多组权重。与作为执行mdis的一部分而应用的滤波器类似,高斯内插滤波器可提供平滑效应。因此,视频编码器实际上可应用连续两次平滑滤波器的操作。平滑滤波器是使低于截止频率的信号通过的低通滤波器。非平滑滤波器是全通滤波器或具其截止频率高于平滑滤波器截止频率的滤波器。
[0026]
存储多组权重以及存储滤波的和未经滤波的参考样点都会消耗宝贵的存储空间。此外,应用连续两次平滑滤波器的操作可增加编码过程的复杂度,从而增加建立电路以实施编码过程的成本。
[0027]
本发明描述了可减少存储要求和/或可降低编码过程复杂度的技术。例如,如本文所述,视频编码器可实施为进行方向帧内预测模式而组合mdis和高斯内插滤波的平滑滤波器操作的过程。如本文所述,可通过使用相同的条件而在mdis和高斯内插滤波中选择滤波器来实现。因此,在一示例中,视频编码器可被配置成确定条件对于视频数据的当前图片的
块是否为真。基于条件对于块为真,视频编码器可将非平滑内插滤波器应用于块的未经滤波的参考样点以产生块的预测样点。然而,基于条件对于块为假,视频编码器可将平滑内插滤波器应用于块的未经滤波的参考样点以产生块的预测样点。因此,根据储存mdis滤波样点的需求,视频编码器可将滤波器应用于未经滤波的参考样点,而非单独应用mdis滤波器和内插滤波器。
[0028]
图1是示出可执行本公开技术的示例视频编码和解码系统100的框图。本公开的技术一般地涉及对视频数据进行编码(编码和/或解码)。一般来说,视频数据包括用于处理视频的任何数据。因此,视频数据可包括未编码的原始视频、编码视频、解码(如重构)视频和诸如语法数据的视频元数据。
[0029]
如图1所示,在此示例中,系统100包括提供待由目的地设备116解码和显示的编码视频数据的源设备102。具体而言,源设备102经由计算机可读介质110向目的地设备116提供视频数据。源设备102和目的地设备116可为多种设备,如台式电脑、笔记本(即便携式)电脑、平板电脑、移动设备、机顶盒、智能手机等手持电话、电视、相机、显示设备、数字媒体播放器,视频游戏机、视频流设备等。在一些情况下,源设备102和目的地设备116可被配备用于无线通信,因此可被称为无线通信设备。
[0030]
在图1的示例中,源设备102包括视频源104、存储器106、视频编码器200和输出接口108。目的设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开,源设备102的视频编码器200和目的地设备116的视频解码器300可被配置成应用用于组合mdis和高斯内插滤波的技术。因此,源设备102表示一视频编码设备的示例,而目的地设备116表示一视频解码设备的示例。在其他示例中,源设备和目的地设备可包括其他组件或配置。例如,源设备102可以从外部像机等外部视频源接收视频数据。同样,目的地设备116可以与外部显示设备连接,无需内置集成显示设备。
[0031]
图1所示的系统100仅为一个示例。一般来说,任何数字视频编码和/或解码设备都可执行本公开用于组合mdis和高斯内插滤波的技术。源设备102和目的地设备116仅为此类编码设备的示例,其中源设备102生成编码的视频数据以传输到目的地设备116。本公开将“编码”设备称为执行数据编码(编码和/或解码)的设备。因此,视频编码器200和视频解码器300分别表示编码设备的示例,具体来说,就是视频编码器和视频解码器。在一些示例中,设备102、116实质上是以对称的方式操作,这样,设备102、116皆包括视频编码及解码组件。因此,系统100可支持视频设备102和116之间的单向或双向视频传输,如可用于视频流、视频回放、视频广播或视频电话通讯。
[0032]
一般来说,视频源104表示视频数据源(即未编码的原始视频数据)且将视频数据的连续系列图片(也称为“帧”)提供至视频编码器200,视频编码器200对图片的数据进行编码。源设备102的视频源104可包括视频捕获设备,如视频摄像机、包含先前捕获的原始视频的视频档案库和/或用于从视频内容提供者接收视频的视频馈送接口。作为另一可选方案,视频源104可产生基于计算机图形的数据作为源视频或实况视频、存档视频和计算机生成视频的组合。在每种情形下,视频编码器200对捕获的、预捕获的或计算机生成的视频数据进行编码。视频编码器200可将图片从接收时的次序(有时称为“显示次序”)重新排列成用于编码的编码次序。视频编码器200可产生包括编码视频数据的比特流。然后,源设备102可经输出接口108将编码视频数据输出至计算机可读介质110上,用于如目的地设备116的输
802.11规范、ieee 802.15规范(例如,zigbee
tm
)、蓝牙
tm
标准等其他无线标准来传送编码的视频数据等数据。在一些示例中,源设备102和/或目的地设备116可包括相应的片上系统(soc)设备。例如,源设备102可包括soc设备以执行视频编码器200和/或输出接口108的功能,目的地设备116可包括soc设备以执行归因于视频解码器300和/或输入接口122的功能。
[0038]
本公开的技术可应用于支持多种多媒体应用的视频编码,如无线电视广播,有线电视传输,卫星电视传输、基于http的动态自适应流等因特网流视频传输、编码到数据存储介质上的数字视频、存储于数据存储介质的数字视频的解码或其他应用。
[0039]
目的地设备116的输入接口122从计算机可读介质110(如存储设备112和文件服务器114等)接收编码的视频比特流。编码的视频比特流计算机可读介质110可包括由视频编码器200界定的信令信息,这些信令信息也由视频解码器300使用,如具有描述视频块或其他编码单元(如条带、图片、图片组和序列等)的性质和/或处理过程的值的语法元素。显示设备118向用户显示解码视频数据的解码图片。显示设备118可表示如阴极射线管(crt)、液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器或其他类型的显示设备等的各种显示设备。
[0040]
尽管图1中未展示,但在一些示例中,视频编码器200和视频解码器300可各自与音频编码器和/或音频解码器集成,且可包括适当的复用-解复用(mux-demux)单元或其他硬件和/或软件,以处理公共数据流中既包括音频也包括视频的多路复用流。如果适用,则mux-demux单元可符合itu h.223多路复用器协议或诸如用户数据报协议(udp)等其他协议。
[0041]
视频编码器200和视频解码器300都可被实现为任何合适的编码器电路和/或解码器电路,如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑元件、软件、硬件、固件或其任何组合。当技术部分地以软件实现时,设备可将用于软件的指令存储在合适的非暂时性计算机可读介质中,且使用一个或多个以上处理器在硬件中执行指令以执行本公开的技术。视频编码器200和视频解码器300都可包含在一个或多个编码器或解码器中,编码器或解码器中的任一者可集成为相应设备中的组合编码器/解码器(codec)的一部分。包括视频编码器200和/或视频解码器300的设备可包括集成电路、微处理器和/或蜂窝式电话等无线通信设备。
[0042]
视频编码器200和视频解码器300可根据视频编码标准来操作,例如根据itu-t h.265(也称为高效视频编码(hevc))等视频编码标准来操作,或根据多视图和/或可伸缩视频编码扩展等hevc的扩展来操作。可选地,视频编码器200和视频解码器300可根据其他专有或工业标准(如目前正在开发的联合探索测试模型(jem)或通用视频编码(vvc)标准)来操作。但本公开的技术不限于任何特定的编码标准。
[0043]
视频编码标准包括itu-t h.261、iso/iec mpeg-1 visual、itu-t h.262或iso/iec mpeg-2 visual、itu-t h.263、iso/iec mpeg-4 visual、itu-t h.264(也称为iso/iecmpeg-4avc),itu-t h.264包括

其可伸缩视频编码(svc)扩展和多视点视频编码(mvc)扩展以及itu-th.265(也称为iso/iec mpeg-4hevc)及其扩展。在2018年4月联合视频专家组(jvet)会议期间,随着对提交至建议征集的视频压缩技术进行评估,通用视频编码标准化活动(也称为itu-t h.266)开启。视频编码器200和视频解码器300或其他编码解码器可根据h.266视频编码标准来操作。
[0044]
一般来说,视频编码器200和视频解码器300可执行图片的基于块的编码。术语“块”通常是指包括待处理的(如编码的、解码的或其他在编码和/或解码过程中使用的)数据的结构。例如,块可以包括亮度和/或色度数据样点的二维矩阵。一般来说,视频编码器200和视频解码器300可对以yuv(如y、cb、cr)格式表示的视频数据进行编码。即,视频编码器200和视频解码器300可对亮度和色度分量进行编码,而非对图片样点的红绿蓝色(rgb)数据进行编码,其中色度分量可包括红色色调和蓝色色调的色度分量。在一些示例中,视频编码器200在编码之前将接收的rgb格式化数据转换为yuv格式,且视频解码器300将yuv格式转换为rgb格式。可选地,前处理单元和后处理单元(未示出)可以执行这些转换。
[0045]
本公开通常可涉及对图片进行编码(如编码和解码)以包括对图片数据进行编码或解码的过程。类似地,本公开可涉及对图片的块进行编码以包括对块的数据进行编码或解码的过程,如预测和/或残差编码。编码视频比特流通常包括一系列用于语法元素的值,语法元素表示编码决策(如编码模式)以及将图片分割成块。因此,对图片或块进行编码的参考通常应理解为对形成图片或块的语法元素的值进行编码。
[0046]
hevc界定各种块,包含编码单元(cu)、预测单元(pu)和变换单元(tu)。根据hevc,视频编码器(如视频编码器200)根据四叉树结构将编码树单元(ctu)分割成cu。即,视频编码器将ctu和cu分割为四个相等的非重叠方块,且四叉树的每一节点具有零个或四个子节点。没有子节点的节点可被称为“叶节点”,且此类叶节点的cu可包括一个或多个pu和/或一个或多个tu。视频编码器可以进一步分割pu和tu。例如在hevc中,残差四叉树(rqt)表示对tu的分割。在hevc中,pu表示帧间预测数据,而tu表示残差数据。帧内预测的cu包括帧内模式指示等帧内预测信息。
[0047]
作为另一示例,视频编码器200和视频解码器300可被配置成根据jem操作。根据jem,视频编码器(例如视频编码器200)将图片分割成多个ctu。视频编码器200可根据四叉树二叉树(qtbt)结构等树结构分割ctu。jem的qtbt结构去掉了hevc的cu、pu和tu之间的分割等多种分割类型的概念。jem的qtbt结构包括两层:根据四叉树分割的第一层和根据二叉树分割的第二层。qtbt结构的根节点对应一个ctu。二叉树的叶节点对应编码单元(cu)。
[0048]
在一些示例中,视频编码器200和视频解码器300可使用单个qtbt结构来表示亮度分量和色度分量中的每一分量,而在其他示例中,视频编码器200和视频解码器300可使用两个或两个以上qtbt结构,如一个qtbt结构用于表示亮度分量,另一qtbt结构用于表示色度分量(或两个qtbt结构用于表示相应的色度分量)。
[0049]
视频编码器200和视频解码器300可被配置成在按照hevc使用四叉树分割,根据jem进行qtbt分割或使用其他分割结构。为了解释,本公开技术的描述就qtbt分割来呈现。但应该了解的是,本公开的技术还可应用于被配置成使用四叉树分割或其他分割类型的视频编码器。
[0050]
本公开可互换使用“n
×
n”和“n乘n”在垂直维度和水平维度(例如,16
×
16个样点或16乘16个样点)指代块(如cu或其他视频块)的样点规模。一般来说,16
×
16的cu在垂直方向上有16个样点(y=16),在水平方向上有16个样点(x=16)。同样,n
×
n的cu通常在垂直方向上有n个样点且在水平方向上有n个样点,其中n表示非负整数值。cu中的样点可以排列成行和列。此外,cu不必在水平方向上具有与垂直方向上相同数目的样点。例如,cu可包括n
×
m个样点,其中m不必等于n。
[0051]
视频编码器200对用于表示预测信息和/或残差信息及其他信息的cu的视频数据进行编码。预测信息指示如何预测cu以形成cu的预测块。残差信息通常表示编码前的cu的样点与预测块样点之间的逐样点差值。
[0052]
为预测cu,视频编码器200通常可通过帧间预测或帧内预测形成cu的预测块。帧间预测通常指根据先前的编码图片的数据来预测cu,而帧内预测通常指根据同一图片的先前编码的数据来预测cu。为执行帧间预测,视频编码器200可使用一个或多个运动向量来产生预测块。视频编码器200通常可执行运动搜索,如根据cu与参考块之间的差值来识别紧密匹配cu的参考块。视频编码器200可使用绝对差值和(sad)、差值平方和(ssd)、平均绝对差值(mad)、平均平方差值(msd)或其他此类差值计算来计算差值度量,以确定参考块是否与当前cu紧密匹配。在一些示例中,视频编码器200可使用单向预测或双向预测来预测当前cu。
[0053]
jem还提供仿射运动补偿模式,其可被认为是帧间预测模式。在仿射运动补偿模式中,视频编码器200可确定表示非平移运动(如放大或缩小、旋转、透视运动或其他类型的不规则运动)的两个或两个以上的运动向量。
[0054]
为执行帧内预测,视频编码器200可选择帧内预测模式以产生预测块。jem提供了67种帧内预测模式,包括平面模式、dc模式和各种方向模式。一般来说,视频编码器200选择描述当前块(如cu的块)的相邻样点的帧内预测模式,从中预测当前块的样点。假设视频编码器200以光栅扫描次序(从左到右,从上到下)对ctu和cu进行编码,这样的样点通常位于与当前块相同的图片中当前块的上方、上方和左侧、或左侧。
[0055]
图2是示出帧内预测模式的一个示例的概念图。在jem 7(j.chen,e.alshina等人,《联合探索测试模型7算法描述》,第7届jvet会议,意大利托里诺,2017年7月,jvet-g1001,以下简称“jem 7”)中,列出了用于亮度块帧内预测的67种模式,如图2所示,包括平面模式(即平面帧内预测模式)、dc模式和65种角度模式(即角度帧内预测模式)。
[0056]
图3是示出根据角度帧内预测模式产生视频数据块的预测样点的示例技术的概念图。例如,在图3示例中,视频编码器200可确定相邻样点l与r之间的分数位置α,相邻样点l与r是相邻于当前pu的两个重构样点。视频编码器200可通过沿着与选定的帧内预测模式相关联的预测方向将相应样点的坐标投影到包含两个相邻重构样点的相邻重构样点的行或列来确定分数位置。例如,在图3示例中,线130示出了与选定的帧内预测模式相关联的预测方向,并且(x,y)是相应样点62的坐标。在此示例中,视频编码器200可使用内插滤波器来计算相应样点的预测值,内插滤波器使用两个相邻重构样点的值来内插所确定分数位置处的值。在一些示例中,除在图3示例中所示的两个相邻重构样点外,视频编码器200可使用一个或多个相邻重构样点的值。该内插可以具有1/32像素精度。另外,在此示例中,作为对视频数据块进行编码的一部分,视频编码器200可产生表示当前块与预测性块之间像素差值的残差数据。视频编码器200可变换并量化残差数据,且在比特流中包括表示所得的量化变换系数的熵编码语法元素。视频解码器300可以以相同的方式产生预测样点。
[0057]
视频编码器200对表示当前块的预测模式的数据进行编码。例如,对于帧间预测模式,视频编码器200可对表示使用何种可用的帧间预测模式的数据以及对应模式的运动信息进行编码。例如,对于单向或双向帧间预测,视频编码器200可使用高级运动向量预测(amvp)或合并模式对运动向量进行编码。视频编码器200可使用类似模式对仿射运动补偿模式的运动向量进行编码。
[0058]
在预测(如块的帧内预测或帧间预测)之后,视频编码器200可计算块的残差数据。残差数据(如残差块)通过块与使用对应预测模式形成的块的预测块之间的逐样点差值来表示样点。视频编码器200可将一个或多个变换应用于残差块,以在变换域而非样点域中产生变换数据。例如,视频编码器200可将离散余弦变换(dct)、整数变换、小波变换或概念上的相似变换应用于残差视频数据。此外,视频编码器200可在第一变换之后应用二次变换,如取决于模式的不可分二次变换(mdnsst)、取决于信号的变换、卡洛变换(klt)等。视频编码器200在应用所述一个或多个变换之后产生变换系数。
[0059]
如上所述,在进行任何变换产生变换系数后,视频编码器200可执行变换系数的量化。量化通常是指对变换系数进行量化以尽可能地减少用于表示系数的数据量的过程,从而提供进一步的压缩。通过执行量化过程,视频编码器200可减小与一些或全部系数相关联的比特深度。例如,视频编码器200可在量化期间将n比特值舍入到m比特值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可对待量化的值执行逐比特右移。
[0060]
在量化之后,视频编码器200可扫描变换系数,从包括量化变换系数的二维矩阵产生一维向量。扫描可设计为在向量之前放置较高能量(因而频率较低)的系数且在向量之后放置较低能量(因而频率较高)的变换系数。在一些示例中,视频编码器200可利用预定义扫描顺序来扫描量化变换系数以产生串行化向量,然后对向量的量化变换系数进行熵编码。在其他示例中,视频编码器200可执行自适应扫描。在扫描量化变换系数以形成一维向量后,视频编码器200可根据上下文自适应二进制算术编码(cabac)等对一维向量进行熵编码。视频编码器200还可对语法元素的值进行熵编码,语法元素描述与编码视频数据相关联的元数据,以供视频解码器300在解码视频数据时使用。
[0061]
为执行cabac,视频编码器200可将上下文模型内的上下文指派给待传输的符号。上下文可以涉及如符号的相邻值是否为零值等。概率确定可以是基于指派给符号的上下文。
[0062]
视频编码器200可例如在图片标头、块标头、条带标头等中进一步产生对于视频解码器300的语法数据,例如基于块的语法数据、基于图片的语法数据和基于序列的语法数据,或者产生诸如序列参数集(sps)、图片参数集(pps)或视频参数集(vps)的其他语法数据。视频解码器300可同样解码此类语法数据以确定如何解码对应的视频数据。
[0063]
以此方式,视频编码器200可产生比特流,比特流包括编码的视频数据,如描述将图片分割为块(如cu)的语法元素和块的预测信息和/或残差信息。最终,视频解码器300可接收比特流并解码编码的视频数据。
[0064]
一般来说,视频解码器300执行与视频编码器200所执行过程互逆的过程,以解码比特流的编码视频数据。例如,视频解码器300可以以实质上类似于(尽管与视频编码器200的cabac编码过程互逆)的方式使用cabac来解码比特流的语法元素的值。语法元素可将图片的分割信息界定为ctu,并根据qtbt结构等相应的分割结构对每个ctu进行分割,以界定ctu的cu。语法元素可进一步界定视频数据的块(如cu)的预测信息和残差信息。
[0065]
残差信息可由例如量化变换系数表示。视频解码器300可对块的量化变换系数进行逆量化和逆变换以再现块的残差块。视频解码器300使用信令传输的预测模式(帧内或帧间预测)和相关预测信息(如用于帧间预测的运动信息)来形成块的预测块。视频解码器300可接着(在逐样点的基础上)组合预测块和残差块以再现原始块。视频解码器300可执行附
加处理,例如执行去块过程以减少沿着块边界的视觉伪像。
[0066]
在hevc中,在帧内预测之前,可能使用2抽头线性滤波器或3抽头(1,2,1)/4滤波器对相邻参考样点进行滤波。滤波器的抽头是滤波器用来确定输出值的输入值,如样点值。命名法(x,y,z)/α指示第一抽头具有权重x,第二抽头具有权重y,以及第三抽头具有权重z,权重的总和乘以相应的抽头除以α便是指派给第二抽头的滤波值。此过程称为帧内参考平滑或mdis。在mdis中,根帧内预测模式索引(predmodeintra)和块尺寸(ntbs),视频编码器(如视频编码器或视频解码器)判定是否执行参考平滑过程,且如果是,判定要使用哪个平滑滤波器。以下文本是hevc规范的相关段落:
[0067]
8.4.4.2.3相邻样点的滤波过程
[0068]
此过程的输入为:
[0069]
相邻样点p[x][y],其中x=-1,y=-1..ntbs*2-1,x=0..ntbs*2-1,y=-1,变量ntbs,指定变换块尺寸。
[0070]
此过程的输出为滤波的样点pf[x][y],x=-1,y=-1..ntbs*2-1,x=0..ntbs*2-1,y=-1。
[0071]
变量filterflag可得出如下:
[0072]
如果以下一个或多个条件为真,filterflag则设置为等于0:
[0073]
predmodeintra等于intra_dc。
[0074]
ntbs等于4。
[0075]
否则,应用以下设置:
[0076]
变量mindistverhor设置为等于min(abs(predmodeintra-26),abs(predmodeintra-10))。
[0077]
表8-3中指定变量intrahorverdistthres[ntbs]。
[0078]
变量filterflag得出如下:
[0079]
如果mindistverhor大于intrahorverdistthres[ntbs],filterflag则设置为等于1。
[0080]
否则,filterflag设置为等于0。
[0081]
表8-3用于各种变换块尺寸的intrahorverdistthres[ntbs]规范
[0082] ntbs=8ntbs=16ntbs=32intrahorverdistthres[ntbs]710
[0083]
当filterflag等于1时,应用以下设置:
[0084]
变量biintflag得出如下:
[0085]
如果以下所有条件都为真,biintflag则设置为等于1:
[0086]
strong_intra_smoothing_enabled_flag等于1
[0087]
ntbs等于32
[0088]
abs(p[-1][-1]+p[ntbs*2-1][-1]

2*p[ntbs-1][-1])<(1<<(bitdepthy-5))
[0089]
abs(p[-1][-1]+p[-1][ntbs*2-1]

2*p[-1][ntbs-1])<(1<<(bitdepthy-5))
[0090]
否则,biintflag设置为等于0。
[0091]
滤波执行如下:
[0092]
如果biintflag等于1,则滤波样点值pf[x][y],x=-1,y=-1..63和x=0..63,y
=-1得出如下:
[0093]
pf[-1][-1]=p[-1][-1]
ꢀꢀ
(8-30)
[0094]
pf[-1][y]=((63-y)*p[-1][-1]+(y+1)*p[-1][63]+32)>>6对于y=0..62
ꢀꢀ
(8 31)
[0095]
pf[-1][63]=p[-1][63]
ꢀꢀ
(8-32)
[0096]
对于x=0,pf[x][-1]=((63-x)*p[-1][-1]+(x+1)*p[63][-1]+32)>>6..62
ꢀꢀ
(8-33)
[0097]
pf[63][-1]=p[63][-1]
ꢀꢀ
(8-34)
[0098]
否则(biintflag等于0),则滤波样点值pf[x][y],x=-1,y=-1..ntbs*2-1,x=0..ntbs*2-1,y=-1得出如下:
[0099]
pf[-1][-1]=(p[-1][0]+2*p[-1][-1]+p[0][-1]+2)>>2
ꢀꢀꢀꢀꢀꢀꢀ
(8-35)
[0100]
pf[-1][y]=(p[-1][y+1]+2*p[-1][y]+p[-1][y-1]+2)>>2对于
[0101]
y=0..ntbs*2-2
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-36)
[0102]
pf[-1][ntbs*2-1]=p[-1][ntbs*2-1](8-37)
[0103]
pf[x][-1]=(p[x-1][-1]+2*p[x][-1]+p[x+1][-1]+2)>>2对于x=0..ntbs*2
–2ꢀꢀꢀ
(8-38)
[0104]
pf[ntbs*2-1][-1]=p[ntbs*2-1][-1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-39)”[0105]
在联合视频研究组(jvet)活动期间,jem 7得以界定,且为亮度块添加了mdis表的以下版本。
[0106]
表1
[0107]
sizeindexthreshold[sizeindex]020120214324052060
[0108]
另外,在jem7中块尺寸索引定义如下:
[0109]
sizeindex=(log2(blockwidth)

2+log2(blockheight)

2)/2+2
–1ꢀꢀ
(1)
[0110]
在等式(1)中,blockwidth是块的宽度,blockheight是块的高度,log2(.)是以2为底的对数函数。
[0111]
是否将[1 2 1]/4平滑滤波器应用于帧内参考样点确定如下:
[0112][0113]
在以上等式(2)中,hor_idx是用于水平帧内预测模式的索引,ver_idx是用于垂直帧内预测模式的索引。hor_idx等于18,ver_idx等于50,因为jem 7除了平面(intramodeidx=0)模式和dc(intramodeidx=1)模式外,还具有65种方向帧内模式(intramodeidx 2-66)。65种方向帧内预测模式的intramodeidx值在2-66的范围内。如果平面帧内预测模式为0,intramodeidx等于0。对于dc帧内预测模式,intramodeidx等于1。
[0114]
根据以下条件确定是否应用平滑滤波器:
[0115]
如果intramodediff>threshold[sizeindex]则“应用平滑滤波器
”ꢀꢀ
(3)
[0116]
在等式(3)中,视频编码器使用等式(1)来确定sizeindex的值,并使用表1的mdis表来确定threshold[sizeindex]的值。
[0117]
j.chen,e.alshina的《通用视频编码和测试模型1(vtm1)算法描述》(第10届jvet会议,美国圣地亚哥,2018年4月,jvet-j1002,以下简称“vtm1”)和benchmark模型版本1(“bms1”),包括以下mdis表:
[0118]
表2
[0119]
sizeindexthreshold[sizeindex]0201202203144250620或者070
[0120]
在vtm1和bms1中,块尺寸索引定义如下
[0121]
sizeindex=(log2(blockwidth)+log2(blockheight))/2
ꢀꢀꢀꢀꢀꢀꢀ
(4)
[0122]
此外,在vtm1和bms1中,是否对帧内参考样点应用[1 2 1]/4平滑滤波器确定如下:
[0123][0124]
在以上等式(5)中,hor_idx是用于水平帧内预测模式的索引,ver_idx是用于垂直帧内预测模式的索引。在vtm1和bms1中,hor_idx等于18,ver_idx等于50,因为除平面帧内预测模式和dc帧内预测模式(intramodeidx=1)模式之外,vtm1和bms1还具有65种方向帧内模式。65种方向帧内预测模式的intramodeidx值在2-66的范围内。如果平面帧内预测模式为0,intramodeidx等于0。对于dc帧内预测模式,intramodeidx等于1。
[0125]
如果intramodediff>threshold[sizeindex],则“应用平滑滤波器
”ꢀꢀꢀ
(6)
[0126]
等式(3)和等式(6)中表达的条件可以被称为mdis条件,因为这些条件可以控制是否将平滑滤波器应用于参考样点。在jem 7、vtm1和bms1中,如果将平滑滤波器应用于参考样点,则视频编码器先将平滑滤波器应用于参考样点,然后将内插滤波器应用于参考样点以确定参考样点之间子像素位置的值。
[0127]
在hevc中,2抽头线性内插滤波器用于在方向预测模式(即除了平面帧内预测模式和dc帧内预测模式之外的帧内预测模式)中生成帧内预测块。在jem 7(j.chen,e.alshina等人,《联合探索测试模型7算法描述》,第7届jvet会议,意大利托里诺,2017年7月,jvet-g1001,以下简称“jem7“)和j.chen,e.alshina的《通用视频编码和测试模型1(vtm1)算法描述》(第10届jvet会议,美国圣地亚哥,2018年4月,jvet-j1002,以下简称“bms1”或“vtm1”)中,4抽头帧内内插滤波器用于方向帧内预测滤波。使用两种类型的4抽头内插滤波器:
[0128]
·
4抽头三次内插滤波器,用于块宽度小于或等于8个样点的垂直方向预测模式(intramodeidx>=dia_idx(=34))。dia_idx表示帧内预测模式索引为34的帧内预测模式的索引。
[0129]
·
4抽头三次内插滤波器,用于块高度小于或等于8个样点的水平方向预测模式(intramodeidx<dia_idx(=34))
[0130]
·
4抽头高斯内插滤波器,用于块宽度大于8个样点的垂直方向预测模式(intramodeidx>=dia_idx(=34))
[0131]
·
4抽头高斯内插滤波器,用于块高度大于8个样点的水平方向预测模式(intramodeidx<dia_idx(=34))
[0132]
内插滤波器的相位可以指相对于可使用内插滤波器确定的整数位置的位置数目。在jem7和bms1中使用了以下4抽头三次(32相位)内插滤波器:
[0133]
[0134][0135]
在jem7和bms1中使用了以下4抽头高斯滤波器(32相位):
[0136]
[0137][0138]
可以通过以下matlab代码示例得出高斯内插滤波器。在此示例中,平滑强度sigma设置为0.9:
[0139]
表3
[0140]
[0141][0142]
在表3中,exp(.)表示指数函数,sigma表示标准差。
[0143]
在另一示例中,可以使用以下6抽头内插滤波器(64相位)代替4抽头内插滤波器:
[0144]
[0145]
[0146][0147]
在另一示例中,可以使用以下6抽头三次内插滤波器(32相位):
[0148]
[0149][0150]
取决于mdis条件,可以将取决于模式的帧内平滑(mdis)滤波器(例如,[1 2 1]/4)首先应用于帧内参考样点。这需要存储未经滤波的和滤波的帧内参考样点行以进行帧内预测。在使用方向帧内预测模式的情况下,根据与内插滤波相关联的不同条件,可将两个内插滤波器(如三次内插滤波器和高斯内插滤波器)应用于未经滤波或滤波的参考样点。若使用高斯内插,在mdis滤波的参考样点上应用滤波,即应用连续两次平滑滤波操作。这意味着复杂度增加,且未经滤波和滤波的帧内参考样点行的存储需要加倍。
[0151]
本公开提出将方向模式帧内预测的两种平滑滤波操作相组合,即,将mdis滤波和高斯内插滤波相组合,可通过直接应用mdis条件以在两种内插滤波器之间进行决策并消除单独的内插滤波器条件来实现。如此可以减少帧内参考样点行所需的存储空间。本公开技
术还可使视频编码器200或视频解码器300能更快地执行帧内预测,降低视频编码和解码的速度。
[0152]
在联合视频专家组(jvet)及其vvc测试模型版本1(vtm)、vvc测试模型版本2(vtm2)(j.chen,y.ye,s.kim,《通用视频编码和测试模型2(vtm2)算法描述》,第11届jvet会议,斯洛文尼亚卢布尔雅那,2018年7月,jvet-k1002)、benchmark模型版本1(bms1)软件和benchmark模型版本2(bms2)中包括以下mdis表:
[0153]
表4
[0154]
sizeindexmdisthreshold[sizeindex]0201202203144250620或者070
[0155]
块尺寸索引在vtm1、vtm2、bms1和bms2中定义如下:
[0156]
sizeindex=(log2(blockwidth)+log2(blockheight))/2
ꢀꢀꢀꢀꢀꢀꢀ
(7)
[0157]
定义方向帧内模式与各自的索引或与水平模式和垂直模式之间的最小索引差:
[0158][0159]
水平模式对应平行于图片顶部边缘和底部边缘的方向。垂直模式对应平行于图片左侧和右侧的方向。
[0160]
在方向帧内预测中切换内插滤波器的新条件如下:
[0161]
表5
[0162][0163]
如此,具有平滑性质的高斯内插滤波器用作唯一的平滑滤波步骤,且仅需存储未经滤波的参考样点行以用于方向帧内模式预测。因此,视频编码器可能无需存储滤波的参考样点以进行内插滤波。视频编码器的复杂性得以降低。
[0164]
因此,在此示例中,视频编码器可确定对于视频数据的当前图片的块的条件(例如intramodediff>mdisthreshold[sizeindex])是否为真。基于条件对块为真,视频编码器可将非平滑内插滤波器(如三次内插滤波器)应用于块的未经滤波的参考样点,以产生块的预测样点。基于条件对块为假,视频编码器可将平滑内插滤波器(如高斯插值滤波器)应用于块的未经滤波的参考样点,以产生块的预测样点。
[0165]
注意,vtm1和bms1中存在附加条件来控制帧内参考样点的平滑滤波,例如对亮度或色度的依赖性、取决于位置的帧内预测组合(pdpc)工具的使用、不可分二次变换(nsst)的使用等等。可以添加附加条件来控制mdis。
[0166]
在一些示例中,三次内插滤波器为intracubic6tapfilter32,而高斯滤波器是6抽头滤波器,通过[1 2 1]/4mdis滤波器和intragauss4tapfilter32滤波器的卷积而得到以下intragauss6tapfilter32:
[0167][0168]
[0169]
在另一示例中,三次内插滤波器为intracubic4tapfilter32(如上定义),高斯滤波器是4抽头滤波器,通过将sigma设置为1.3(请参见表3中的matlab代码)而具有提高了的平滑强度,得到以下intragauss4tapfilter32strong:
[0170]
[0171][0172]
在另一示例中,三次内插滤波器为intracubic4tapfilter32(如上定义),且在减少了存储滤波器系数所需的比特数(将9比特/系数减少至7比特/系数)后,得到intracubic4tapfilter32_7bitcoeff滤波器:
[0173]
[0174][0175]
在又一示例中,高斯内插滤波器为intragauss4tapfilter32strong(如上定义),且在减少了存储滤波器系数所需的比特数(将7比特/系数减少至5比特/系数)后,得到以下intragauss4tapfilter32strong_5bitcoeff滤波器:
[0176]
[0177][0178]
注意,计算整数参考样点位置时,使用两个滤波器的0相位。
[0179]
在一般情况下,如果mdis条件为真,视频编码器应用非平滑内插滤波器;如果mdis条件为假,视频编码器应用具有平滑性质的内插滤波器。滤波器抽头数也可能有所不同,例如:
[0180]
·
4抽头非平滑内插滤波器(如intracubic4tapfilter32或intracubic4tapfilter32_7bitcoeff)和4抽头平滑内插滤波器(如intragauss4tapfilter32或intragauss4tapfilter32strong或intragauss4tapfilter32strong_5bitcoeff)
[0181]
·
4抽头非平滑内插滤波器(如intracubic4tapfilter32或intracubic4tapfilter32_7bitcoeff)和6抽头平滑内插滤波器(如intragauss6tapfilter32)
[0182]
·
6抽头非平滑内插滤波器(如intracubic6tapfilter32)和4抽头平滑内插滤波器(如intragauss4tapfilter32或intragauss4tapfilter32strong或intragauss4tapfilter32strong_5bitcoeff)
[0183]
·
其他滤波器。
[0184]
另外,非平滑内插滤波器和平滑内插滤波器的相位数可以相同或不同,如32相位或64相位。
[0185]
在进一步的概括中,mdis条件能够确定两个以上具有不同平滑性质的内插滤波器的使用。例如,平滑强度可取决于帧内模式的种类、与块边界的距离、块维度等。例如,视频编码器可以选择平滑强度逐渐增大的内插滤波器,以用于确定距当前块的边界逐渐变远的参考样点的值。平滑强度较大的滤波器比平滑强度较小的滤波器更能减少样点值之间的差值。
[0186]
在进一步的概括中,多个帧内参考行可用于预测,并且内插滤波器及其性质的选择可取决于参考行索引。例如,视频编码器可基于mdis条件且基于参考样点的参考行索引来选择内插滤波器以应用于当前块的不同参考样点。例如,在一示例中,当mdis条件为真时,视频编码器可选择第一内插滤波器来确定第一参考行中参考样点的值,选择第二内插滤波器来确定第二参考行中参考样点的值,以此类推;当mdis条件为假时,视频编码器可选择第三内插滤波器来确定第一参考行中参考样点的值,选择第四内插滤波器来确定第二参考行中参考样点的值,以此类推。参考行索引是参考样点的行或列的索引
[0187]
在一些可选方案中,除了mdis条件或代替mdis条件,可以通过检查在一个或多个相邻块中使用的内插滤波器的性质来确定平滑滤波器的选择。例如,在一示例中,如果视频编码器使用具有相邻块的非平滑内插滤波器,视频编码器可确定条件对块是否为真(并因此应用非平滑内插滤波器)。在此示例中,如果视频编码器使用具有相邻块的平滑内插滤波器,则视频编码器可确定条件对于块为假(并因此应用平滑内插滤波器)。
[0188]
在其他可选方案中,可应用双向帧内预测编码(来自两个方向的两个或两个以上样点的预测),且内插滤波器及其性质的选择还可取决于是否应用双向帧内预测,且还可取决于与双向预测相关联的特定模式/方向。例如,在此示例中,当双向帧内预测应用于块且帧内模式差值大于阈值(如使用表4确定的阈值)时,视频编码器可确定条件为真;并且当未应用双向帧内预测或者帧内模式差值不大于阈值时,视频编码器可确定条件为假。
[0189]
本公开通常可涉及“信令通知”如语法元素等某些信息。术语“用信号表示”通常可指用于解码编码的视频数据的语法元素值和/或其他数据的通信。即,视频编码器200可用信号表示比特流中的语法元素的值。一般来说,用信号表示是指在比特流中生成值。如上所述,源设备102基本上可将比特流实时传输到目的地设备116,若在将语法元素存储到存储设备112以供目的地设备116进稍后检索等情况下,则可能无法实时传输。
[0190]
图4a和图4b是示出示例四叉树二叉树(qtbt)结构和对应编码树单元(ctu)的概念图。实线表示四叉树划分,虚线表示二叉树划分。在二叉树的每个划分(即非叶)节点中,用信号表示一个标记以指示使用了哪种划分类型(即水平类型或垂直类型),0指示水平划分,
1指示垂直划分。无需指示四叉树划分的划分类型,因为四叉树节点将块从水平方向和垂直方向分割成4个尺寸相等的子块。因此,视频编码器200和视频解码器300可对qtbt结构140(即实线)的区域树级的语法元素(如划分信息)和qtbt结构140(即虚线)的预测树级的语法元素(如划分信息)进行编码和解码。视频编码器200和视频解码器可对视频数据进行编码和解码,如由qtbt结构140的终端叶节点表示的cu的预测数据和变换数据。
[0191]
一般而言,图4b的ctu142可与界定了qtbt结构140中第一级和第二级上的节点对应的块尺寸的参数相关联。这些参数可包括ctu尺寸(表示样点中ctu 142的尺寸)、最小四叉树尺寸(minqtsiz,表示最小允许的四叉树叶节点尺寸)、最大二叉树尺寸(maxbtsize,表示最大允许的二叉树根节点尺寸)、最大二叉树深度(maxbtdepth,表示最大允许的二叉树深度)以及最小二叉树尺寸(minbtsize,表示最小允许的二叉树叶节点尺寸)。
[0192]
ctu对应的qtbt结构的根节点在qtbt结构的第一级可以有四个子节点,每个子节点可以根据四叉树分割进行分割。即第一级的节点为叶节点(没有子节点)或者有四个子节点。qtbt结构140的示例表示包括具有实线分支的父节点和子节点的此类节点。如果第一级的节点不大于最大允许的二叉树根节点尺寸(maxbtsize),则可用相应的二叉树进一步分割节点。可以迭代一个节点的二叉树划分,直到划分得到的节点达到最小允许的二叉树叶节点尺寸(minbtsize)或最大允许的二叉树深度(maxbtdepth)。qtbt结构140的示例表示具有用于分支的虚线的此类节点。二叉树叶节点被称为编码单元(cu),其用于预测(如图片内预测或图片间预测)和变换,无需任何进一步分割。如上所述,cu也可称为“视频块”或“块”。
[0193]
在qtbt分割结构的一个示例中,ctu尺寸设置为128
×
128(亮度样点和两个对应的64
×
64色度样点),minqtsize设置为16
×
16,maxbtsize设置为64
×
64,minbtsize(宽度和高度)设置为4,maxbtdepth设置为4。将所述四叉树分割应用于ctu以生成四叉树叶节点。四叉树叶节点的尺寸可从16
×
16(即minqtsize)到128
×
128(即ctu尺寸)。如果四叉树叶节点尺寸为128
×
128,则该节点不被二叉树进一步分割,因为该尺寸超过了maxbtsize(即此示示例中的16
×
64)的尺寸。否则,用二叉树进一步分割四叉树叶节点。因此,四叉树叶节点也是二叉树的根节点,且其二叉树深度为0。当二叉树深度达到maxbtdepth(在此示例中为4)时,不允许进行进一步分割。若二叉树节点的宽度等于minbtsize(在此示例中为4),不允许进行进一步的水平分割。类似地,若二叉树节点的高度等于minbtsize,不允许对此二叉树节点进行进一步的垂直分割。如上所述,二叉树的叶节点被称为cu,并且根据预测和变换进行进一步处理,而不进行进一步分割。
[0194]
图5是示出可执行本公开技术的示例视频编码器200的框图。提供图5是为了解释,不应将其视为对本公开中广泛例示和描述的技术的限制。为了解释,本公开在开发中的视频编码标准(如hevc视频编码标准和h.266视频编码标准)的上下文中描述视频编码器200。但本公开的技术不限于这些视频编码标准,且通常适用于视频编码和解码。
[0195]
在图5的示例中,视频编码器200包括视频数据存储器230、模式选择单元202、残差产生单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重构单元214、滤波器单元216、解码图片缓冲器(dpb)218和熵编码单元220。
[0196]
视频数据存储器230可存储待由视频编码器200组件编码的视频数据。视频编码器200可从视频源104(图1)等接收存储在视频数据存储器230中的视频数据。dpb 218可以用作参考图片存储器存储参考视频数据,以供视频编码器200预测后续的视频数据时使用。视
频数据存储器230和dpb 218可由多种存储器设备形成,如包括同步dram(sdram)、磁阻ram(mram)、电阻ram(rram)的动态随机存取存储器(dram)或其他类型的存储器设备。视频数据存储器230和dpb 218可以由同一存储设备或不同的存储设备提供。在各种示例中,视频数据存储器230可与视频编码器200的其他组件位于同一芯片,如所示,也可与其他组件不位于同一芯片。
[0197]
在本公开中,对视频数据存储器230的参考不应被解释为限于视频编码器200内部的存储器(除非如此具体描述)或限于视频编码器200外部的存储器(除非如此具体描述)。更确切地说,对视频数据存储器230的参考应理解为存储视频编码器200接收以用于编码的视频数据(如待编码的当前块的视频数据)的参考存储器。图1的存储器106还可为来自视频编码器200各单元的输出提供临时存储。
[0198]
图5中的各单元经示出以助理解由视频编码器200执行的操作。这些单元可实现为固定功能电路、可编程电路或两者的组合。固定功能电路是指提供特定功能并预先设置在可执行操作上的电路。可编程电路是指可经编程以执行多种任务并在可执行操作中提供灵活功能的电路。例如,可编程电路可执行使可编程电路以软件或固件的指令所界定的方式操作的软件或固件。固定功能电路可执行软件指令(来接收参数或输出参数等),但固定功能电路执行的操作类型通常是固定的。在一些示例中,一个或多个单元可以为不同的电路块(固定功能电路块或可编程电路块),且在一些示例中,一个或多个单元可以为集成电路。
[0199]
视频编码器200可包括算术逻辑单元(alu)、基本功能单元(efu)、数字电路、模拟电路和/或由可编程电路形成的可编程核心。在使用由可编程电路执行的软件来执行视频编码器200的操作的示例中,存储器106(图1)可存储视频编码器200接收并执行的软件的目标代码,或视频编码器200内的另一存储器(图中未示出)可存储此类指令。
[0200]
视频数据存储器230被配置成存储所接收的视频数据。视频编码器200可从视频数据存储器230检索视频数据的图片并将视频数据提供给残差产生单元204和模式选择单元202。视频数据存储器230中的视频数据可以是待编码的原始视频数据。
[0201]
模式选择单元202包括运动估计单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可包括用于根据其他预测模式执行视频预测的附加功能单元。作为示例,模式选择单元202可包括调色板单元、块内复制单元(可以为运动估计单元222和/或运动补偿单元224的一部分)、仿射单元和线性模型(lm)单元等。
[0202]
模式选择单元202通常协调多个编码通道以测试编码参数的组合以及由这些组合得到的速率失真值。编码参数可包括ctu到cu的分割、cu的预测模式、cu残差数据的变换类型、cu的残差数据的量化参数等。模式选择单元202可最终选择速率失真值比其他被测试组合更好的编码参数组合。
[0203]
视频编码器200可将从视频数据存储器230检索的图片分割成一系列ctu并将一个或多个ctu封装至条带内。模式选择单元202可以根据树结构(如上述的qtbt结构或hevc的四叉树结构)分割图片的ctu。如上所述,视频编码器200可通过根据树结构分割ctu来形成一个或多个cu。这样的cu通常也可称为“视频块”或“块”。
[0204]
一般来说,模式选择单元202还控制其组件(如运动估计单元222、运动补偿单元224和帧内预测单元226)以产生当前块(如当前cu或hevc中pu和tu的重叠部分)的预测块。对于当前块的帧间预测,运动估计单元222可执行运动搜索以识别一个或多个参考图片(如
dpb 218中存储的一个或多个编码图片)中的一个或多个紧密匹配的参考块。具体来说,运动估计单元222可根据绝对差值和(sad),差平方值和(ssd),平均绝对差值(mad),平均平方差值(msd)等来计算表示潜在参考块与当前块相似程度的值,运动估计单元222通常可使用当前块与所考虑的参考块之间的逐样点差值来执行这些计算。运动估计单元222可识别具有从这些计算产生的最低值的参考块,从而指示与当前块匹配最紧密的参考块。
[0205]
运动估计单元222可形成一个或多个运动向量(mv),这些运动向量界定参考图片中的参考块相对于当前图片中当前块位置的位置。运动估计单元222可接着将运动向量提供至运动补偿单元224。例如,对于单向帧间预测,运动估计单元222可提供单个运动向量,而对于双向帧间预测,运动估计单元222可提供两个运动向量。运动补偿单元224可接着使用运动向量产生预测块。例如,运动补偿单元224可使用运动向量来检索参考块的数据。作为另一示例,如果运动向量具有分数样点精度,那么运动补偿单元224可根据一个或多个内插滤波器对预测块进行插值。此外,对于双向帧间预测,运动补偿单元224可检索由相应运动向量识别的两个参考块的数据,并通过逐样点平均或加权平均等来组合检索的数据。
[0206]
作为另一示例,对于帧内预测或帧内预测编码,帧内预测单元226可从与当前块相邻的样点产生预测块。例如,对于方向模式,帧内预测单元226通常可数学地组合相邻样点的值,且在当前块上沿界定的方向填充这些计算值,以产生预测块。作为另一示例,对于dc模式,帧内预测单元226可计算与当前块相邻样点的平均值,且产生预测块以包括预测块每一样点的所得平均值。
[0207]
模式选择单元202将预测块提供至残差产生单元204。残差产生单元204从视频数据存储器230接收当前块的原始未编码版本,并从模式选择单元202接收预测块。残差生成单元204计算当前块和预测块之间的逐样点差值。所得到的逐样点差值界定当前块的残差块。在一些示例中,残差生成单元204还可确定残差块中的样点值之间的差值,以使用残差差分脉冲编码调制(rdpcm)来生成残差块。在一些示例中,残差生成单元204可通过执行二进制减法的一个或多个减法器电路来形成。
[0208]
在模式选择单元202将cu分割成pu的示例中,每一pu可与亮度预测单元和对应的色度预测单元相关联。视频编码器200和视频解码器300可支持各种尺寸不同的pu。如上所述,cu的尺寸可指cu的亮度编码块的尺寸,pu的尺寸可指pu的亮度预测单元的尺寸。假设特定cu的尺寸为2n
×
2n,则视频编码器200可支持用于帧内预测的2n
×
2n或n
×
n大小的pu,以及用于帧间预测的2n
×
2n、2n
×
n、n
×
2n、n
×
n或类似尺寸的对称pu。视频编码器200和视频解码器300还可支持对用于帧间预测的2n
×
nu、2n
×
nd、nl
×
2n和nr
×
2n尺寸的pu进行非对称分割。
[0209]
在模式选择单元不进一步将cu分割成pu的示例中,每一cu可与亮度编码块和对应的色度编码块相关联。如上所述,cu的尺寸可指cu的亮度编码块的尺寸。视频编码器200和视频解码器300可支持2n
×
2n、2n
×
n或n
×
2n尺寸的cu。
[0210]
对于帧内块复制模式编码、仿射模式编码和线性模型(lm)模式编码等其他视频编码技术,举例来说,模式选择单元202经由与编码技术相关联的相应单元产生正被编码的当前块的预测块。在一些示例中,如调色板模式编码,模式选择单元202可不产生预测块,而是产生指示根据选定调色板重构块的方式的语法元素。在这类模式中,模式选择单元202可将这些语法元素提供至熵编码单元220以进行编码。
[0211]
如上所述,残差生成单元204接收当前块的视频数据和对应的预测块的视频数据。残差生成单元204随后生成当前块的残差块。为产生残差块,残差生成单元204计算预测块和当前块之间的逐样点差值。
[0212]
变换处理单元206将一个或多个变换应用于残差块以产生变换系数的块(本文中称为“变换系数块”)。变换处理单元206可将各种变换应用于残差块以形成变换系数块。例如,变换处理单元206可将离散余弦变换(dct)、方向变换、卡洛变换(klt)或概念上的相似变换应用于残差块。在一些示例中,变换处理单元206可对残差块执行多个变换,例如,初级变换和次级变换,诸如旋转变换。在一些示例中,变换处理单元206不将变换应用于残差块。
[0213]
量化单元208可量化变换系数块中的变换系数,以产生量化变换系数块。量化单元208可根据与当前块相关联的量化参数(qp)值来量化变换系数块的变换系数。视频编码器200(如经由模式选择单元202)可通过调整与cu相关联的qp值来调整应用于与当前块相关联的系数块的量化程度。量化可能会导致信息丢失,因此量化后的变换系数其精度可能比由变换处理单元206生成的原始变换系数的精度低。
[0214]
逆量化单元210和逆变换处理单元212可分别将逆量化和逆变换应用于量化变换系数块,以从变换系数块重构残差块。重构单元214可基于重构的残差块和由模式选择单元202产生的预测块生成对应于当前块的重构块(尽管可能有某种程度的失真)。例如,重构单元214可将重构残差块的样点添加至来自模式选择单元202产生的预测块的相应样点,以生成重构块。
[0215]
滤波器单元216可对重构块执行一个或多个滤波器操作。例如,滤波器单元216可执行去块操作以减少沿cu边缘的块效应伪像。在一些示例中,滤波器单元216的操作可以跳过。
[0216]
视频编码器200将重构块存储于dpb 218。例如,在无需滤波器单元216操作的示例中,重构单元214可将重构块存储于dpb 218。在需要滤波器单元216操作的示例中,滤波器单元216可将滤波的重构块存储于dpb 218。运动估计单元222和运动补偿单元224可从dpb 218中检索由重构(且可能为滤波的)块形成的参考图片,以对随后编码的图片的块进行帧间预测。此外,帧内预测单元226可使用当前图片的dpb 218中的重构块来对当前图片中的其他块进行帧内预测。
[0217]
一般来说,熵编码单元220可对从视频编码器200的其他功能组件接收的语法元素进行熵编码。例如,熵编码单元220可对来自量化单元208的量化变换系数块进行熵编码。作为另一示例,熵编码单元220可对来自模式选择单元202的预测语法元素(如帧间预测的运动信息或帧内预测的帧内模式信息)进行熵编码。熵编码单元220可对语法元素(另一种视频数据)的执行一个或多个熵编码操作,以生成熵编码数据。例如,熵编码单元220可对数据执行上下文自适应可变长度编码(cavlc)操作、cabac操作、可变到可变(vh)长度编码操作、基于语法的上下文自适应二进制算术编码(sbac)操作、概率区间分割熵(pipe)编码操作、指数哥伦布编码操作或其他类型的熵编码操作。在一些示例中,熵编码单元220可以在语法元素未被熵编码的旁路模式中操作。视频编码器200可输出包括重构条带或图片的块所需的熵编码语法元素的比特流。
[0218]
以上描述的操作是关于块的。此描述应被理解为用于亮度编码块和/或色度编码块的操作。如上所述,在一些示例中,亮度编码块和色度编码块是cu的亮度分量和色度分
量。在一些示例中,亮度编码块和色度编码块是pu的亮度分量和色度分量。
[0219]
在一些示例中,无需对色度编码块重复对亮度编码块执行的操作。作为一个示例,识别亮度编码块的运动向量(mv)和参考图片的操作无需为了识别色度块的mv和参考图片而重复进行。可缩放亮度编码块的mv以确定色度块的mv,且参考图片可相同。作为另一示例,亮度编码块和色度编码块的帧内预测处理可以相同。
[0220]
视频编码器200表示被配置以对视频数据进行编码的设备的示例,设备包括:存储视频数据的存储器以及一个或多个处理单元,一个或多个处理单元在电路中实现且被配置成确定条件对于视频数据的当前图片的第一块是否为真。基于条件对于第一块为真,视频编码器200可将非平滑内插滤波器应用于第一块的未经滤波的参考样点以产生第一块的预测样点。另外,视频编码器200可确定条件对于当前图片的第二块是否为真。基于条件对于第二块为假,视频编码器200可将平滑内插滤波器应用于第二块的未经滤波的参考样点以产生第二块的预测样点。视频编码器200可基于第一块的预测样点产生第一块的残差数据。另外,视频编码器200可基于第二块的预测样点产生第二块的残差数据。视频编码器200可在包括视频数据的编码表示的比特流中包括表示第一块的残差数据和第二块的残差数据的数据。例如,视频编码器200可通过将一个或多个变换应用于残差数据形成变换系数、量化变换系数、对指示量化变换系数的语法元素进行熵编码等来产生表示残差数据的数据。
[0221]
在此示例中,视频编码器200可确定第一块的帧内模式差值并确定第二块的帧内模式差值。视频编码器200可至少部分地基于第一块的帧内模式差值是否大于阈值来确定条件对于第一块是否为真。视频编码器200可至少部分地基于第二块的帧内模式差值是否小于阈值来确定条件对于第二块是否为真。视频编码器200可将第一块的帧内模式差值确定为以下中的最小值:(1)第一块的帧内模式索引和水平帧内预测模式的帧内模式索引之间的差值的绝对值,和(2)第一块的帧内模式索引和垂直帧内预测模式的帧内模式索引之间的差值的绝对值。类似地,视频编码器200可将第二块的帧内模式差值确定为以下中的最小值:(1)第二块的帧内模式索引与水平帧内预测模式的帧内模式索引之间的差值的绝对值,和(2)第二块的帧内模式索引与垂直帧内预测模式的帧内模式索引之间的差值的绝对值。
[0222]
此外,在一些实例中,视频编码器200可基于一个或多个附加条件来确定条件对于第一块是否为真。同样,视频编码器200可基于一个或多个附加条件来确定条件对于第二块是否为真。一个或多个附加条件可包括以下中的一个或多个:对亮度或色度的依赖性、取决于位置的帧内预测组合工具的使用以及不可分二次变换的使用。在一些示例中,视频编码器200可至少部分地基于在第一块的一个或多个相邻块中使用的内插滤波器的性质来确定条件对于第一块是否为真,且可至少部分地基于在第二块的一个或多个相邻块中使用的内插滤波器的性质来确定条件对于第二块是否为真。在一些示例中,视频编码器200可至少部分地基于双向帧内预测编码是否应用于第一块来确定条件对于第一块是否为真,且可至少部分地基于双向帧内预测编码是否应用于第二块来确定条件对于第二块是否为真。
[0223]
在一些示例中,平滑内插滤波器为高斯内插滤波器。在一些示例中,非平滑内插滤波器为三次内插滤波器。在一些示例中,平滑内插滤波器和非平滑内插滤波器有不同数目的相位。在一些示例中,平滑内插滤波器和非平滑内插滤波器有不同数目的抽头。
[0224]
图6是示出可执行本公开技术的示例视频解码器300的框图。提供图6是为了解释,
而非是对在本公开中广泛示例和描述的技术的限制。为了解释,本公开描述了根据jem和hevc的技术来描述的视频解码器300。然而,本公开技术可由配置成其他视频编码标准的视频编码设备执行。
[0225]
在图6的示例中,视频解码器300包括编码图片缓冲器(cpb)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和解码图片缓冲器(dpb)314。预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可包括加法单元以根据其他预测模式执行预测。作为示例,预测处理单元304可包括调色板单元、块内复制单元(其可形成运动补偿单元316的一部分)、仿射单元、线性模型(lm)单元等。在其他示例中,视频解码器300可包括更多、更少或不同的功能组件。
[0226]
cpb存储器320可存储编码视频比特流等待由视频解码器300组件解码的视频数据。存储在cpb存储器320中的视频数据可从计算机可读介质110(图1)等处获得。cpb存储器320可包括存储来自编码视频比特流的编码视频数据(如语法元素)的cpb。且cpb存储器320可存储不同于编码图片语法元素的视频数据,如表示视频解码器300各个单元的输出的临时数据。dpb 314通常存储解码图片,当对编码视频比特流的后续数据或图片进行解码时,视频解码器300可将解码图片输出和/或用作参考视频数据。cpb存储器320和dpb 314可由多种存储器设备形成,如包括同步dram(sdram)、磁阻ram(mram)、电阻ram(rram)的动态随机存取存储器(dram)或其他类型的存储器设备。cpb存储器320和dpb 314可以由同一存储设备或不同的存储设备提供。在各种示例中,cpb存储器320可与视频解码器300的其他组件位于同一芯片,如所示,也可与其他组件不位于同一芯片。
[0227]
另外或可选地,在一些示例中,视频解码器300可从存储器120(图1)检索编码视频数据。即存储器120可如上所述用cpb存储器320来存储数据。同样,当视频解码器300的部分或全部功能在待由视频解码器300的处理电路来执行的软件中实现时,存储器120可存储待由视频解码器300执行的指令。
[0228]
图6中所示的各种单元经示出以帮助理解由视频解码器300执行的操作。这些单元可实现为固定功能电路、可编程电路或两者的组合。与图5类似,固定功能电路是指提供特定功能并预先设置在可执行操作上的电路。可编程电路是指可经编程以执行多种任务并在可执行操作中提供灵活功能的电路。例如,可编程电路可执行使可编程电路以软件或固件的指令所界定的方式操作的软件或固件。固定功能电路可执行软件指令(来接收参数或输出参数等),但固定功能电路执行的操作类型通常是固定的。在一些示例中,一个或多个单元可以为不同的电路块(固定功能电路块或可编程电路块),且在一些示例中,一个或多个单元可以为集成电路。
[0229]
视频解码器300可包括alu、efu、数字电路、模拟电路和/或由可编程电路形成的可编程核心。在视频解码器300的操作由在可编程电路上执行的软件执行的示例中,片上或片外存储器可以存储视频解码器300接收和执行的软件的指令(如目标代码)。
[0230]
熵解码单元302可从cpb接收编码视频数据并对视频数据进行熵解码以再现语法元素。预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310和滤波器单元312可基于从比特流提取的语法元素产生解码的视频数据。
[0231]
一般来说,视频解码器300逐块地重构图片。视频解码器300可对每一个块单独执
行重构操作,其中当前正被重构(即解码)的块可被称作“当前块”。
[0232]
熵解码单元302可对界定量化变换系数块的量化变换系数的语法元素以及量化参数(qp)和/或变换模式指示等变换信息进行熵解码。逆量化单元306可使用与量化变换系数块相关联的qp来确定量化程度,且同样可确定要应用的逆量化单元306的逆量化程度。例如,逆量化单元306可执行逐比特左移操作以对量化变换系数进行逆量化。逆量化单元306由此可形成包括变换系数的变换系数块。
[0233]
在逆量化单元306形成变换系数块之后,逆变换处理单元308可将一个或多个逆变换应用于变换系数块以产生与当前块相关联的残差块。例如,逆变换处理单元308可将逆dct、逆整数变换、逆卡洛变换(klt)、逆旋转变换、逆方向变换或其他逆变换应用于系数块。
[0234]
此外,预测处理单元304根据由熵解码单元302进行熵解码的预测信息语法元素产生预测块。例如,如果预测信息语法元素指示当前块是帧间预测的,则运动补偿单元316可产生预测块。在此情况下,预测信息语法元素可以指示dpb 314中的参考图片(从此参考图片中检索参考块),以及指示识别参考图片中的参考块相对于当前图片中当前块位置的位置的运动矢量。运动补偿单元316通常可以以基本上类似于关于运动补偿单元224(图5)所描述的方式来执行帧间预测过程。
[0235]
作为另一示例,如果预测信息语法元素指示对当前块进行帧内预测,则帧内预测单元318可根据由预测信息语法元素指示的帧内预测模式来产生预测块。同样,帧内预测单元318通常可以以基本上类似于关于帧内预测单元226(图5)所描述的方式来执行帧内预测过程。帧内预测单元318可从dpb314检索当前块相邻样点的数据。
[0236]
重构单元310可使用预测块和残差块重构当前块。例如,重构单元310可将残差块的样点添加至预测块的对应样点以重构当前块。
[0237]
滤波器单元312可对重构块执行一个或多个滤波器操作。例如,滤波器单元312可执行去块操作以减少沿重构块边缘的块效应伪像。滤波器单元312的操作不必在所有示例中执行。
[0238]
视频解码器300可将重构块存储在dpb 314中。如上所述,dpb 314可向预测处理单元304提供参考信息,如用于帧内预测的当前图片的样点和用于后续运动补偿的先前解码图片的样点。此外,视频解码器300可输出来自dpb的解码图片以供后续呈现在显示设备(如图1的显示设备118)上。
[0239]
以此方式,视频解码器300表示视频解码设备的示例,设备包括存储视频数据的存储器和一个或多个处理单元,一个或多个处理单元在电路中实现且被配置成确定条件对于视频数据的当前图片的第一块是否为真。基于条件对于第一块为真,视频解码器300可将非平滑内插滤波器应用于第一块的未经滤波的参考样点以产生第一块的预测样点。此外,视频解码器300可确定条件对于当前图片的第二块是否为真。基于条件对于第二块为假,视频解码器300可将平滑内插滤波器应用于第二块的未经滤波的参考样点以产生第二块的预测样点。视频解码器300可基于第一块的预测样点来重构第一块。此外,视频解码器300可基于第二块的预测样点来重构第二块。视频解码器300可通过将块的预测样点添加至块的残差数据来基于块的预测样点重构区块。
[0240]
在此示例中,视频解码器300可确定第一块的帧内模式差值并确定第二块的帧内模式差值。视频解码器300可至少部分地基于第一块的帧内模式差值是否大于阈值来确定
条件对于第一块是否为真。例如,当帧内模式差值大于阈值时,条件可为真,否则条件可为假。视频解码器300可至少部分地基于第二块的帧内模式差值是否小于阈值来确定条件对于第二块是否为真。视频解码器300可将第一块的帧内模式差值确定为以下中的最小值:(1)第一块的帧内模式索引和水平帧内预测模式的帧内模式索引之间的差值的绝对值,和(2)第一块的帧内模式索引和垂直帧内预测模式的帧内模式索引之间的差值的绝对值。类似地,视频解码器300可将第二块的帧内模式差值确定为以下中的最小值:(1)第二块的帧内模式索引与水平帧内预测模式的帧内模式索引之间的差值的绝对值,和(2)第二块的帧内模式索引与垂直帧内预测模式的帧内模式索引之间的差值的绝对值。
[0241]
此外,在一些示例中,视频解码器300可基于一个或多个附加条件确定条件对于第一块是否为真。同样,视频解码器300可基于所述一个或多个附加条件确定条件对于第二块是否为真。一个或多个附加条件可包括以下中的一个或多个:对亮度或色度的依赖性、取决于位置的帧内预测组合工具的使用以及不可分二次变换的使用。在一些示例中,视频解码器300可至少部分地基于在第一块的一个或多个相邻块中使用的内插滤波器的性质来确定条件对于第一块是否为真,且可至少部分地基于在第二块的一个或多个相邻块中使用的内插滤波器的性质来确定条件对于第二块是否为真。在一些示例中,视频解码器300可至少部分地基于双向帧内预测编码是否应用于第一块来确定条件对于第一块是否为真,且可至少部分地基于双向帧内预测编码是否应用于第二块来确定条件对于第二块是否为真。
[0242]
在一些示例中,平滑内插滤波器为高斯内插滤波器。在一些示例中,非平滑内插滤波器为三次内插滤波器。在一些示例中,平滑内插滤波器和非平滑内插滤波器有不同数目的相位。在一些实例中,平滑内插滤波器和非平滑内插滤波器有不同数目的抽头。
[0243]
图7是示出用于对当前块进行编码的示例方法的流程图。尽管关于视频编码器200(图1和图5)进行了描述,但应理解,其他设备可被配置成执行类似于图7方法的方法。
[0244]
在此示例中,视频编码器200先预测当前块(350)。例如,视频编码器200可形成当前块的预测块。视频编码器200可执行本公开的帧内滤波技术作为预测当前块的一部分。视频编码器200可接着计算当前块的残差块(352)。为计算残差块,视频编码器200可计算原始未编码块与当前块的预测块之间的差值。视频编码器200可接着对残差块的系数进行变换和量化(354)。接下来,视频编码器200可扫描残差块的量化变换系数(356)。在扫描期间或扫描后,视频编码器200可对系数进行熵编码(358)。例如,视频编码器200可使用cavlc或cabac对系数进行编码。视频编码器200可接着输出块的熵编码数据(360)。
[0245]
图8是示出用于对视频数据当前块进行解码的示例方法的流程图。当前块可为当前cu。尽管关于视频解码器300(图1和图6)进行了描述,但应理解,其他设备可被配置成执行类似于图8的方法的方法。
[0246]
视频解码器300可接收当前块的熵编码数据,例如对应于当前块残差块系数的熵编码预测信息和熵编码数据(370)。视频解码器300可对熵编码数据进行熵解码来确定当前块的预测信息且再现残差块的系数(372)。视频解码器300可通过使用当前块预测信息指示的帧内或帧间预测模式等来预测当前块(374),以计算当前块的预测块。视频解码器300可执行本公开的帧内滤波技术作为预测当前块的一部分。视频解码器300可接着对再现的系数进行逆扫描(376),以创建量化变换系数块。视频解码器300可接着对系数进行逆量化和逆变换以产生残差块(378)。视频解码器300可最终通过组合预测块和残差块来对当前块进
行解码(380)。
[0247]
图9是示出根据本公开一种或多种技术在视频数据块的帧内预测过程中由视频编码器执行的示例操作的流程图。图9的操作可由视频编码器200或视频解码器300执行。例如,在图5的上下文中,帧内预测单元226可执行图9的操作。在图6的上下文中,帧内预测单元318可执行图9的操作。在图7的上下文中,视频编码器200可在350中执行图9的操作作为预测块的一部分。在图8的上下文中,视频解码器300可在374中执行图9的操作作为预测块的一部分。
[0248]
如图9示例所示,视频编码器可确定条件对于视频数据的当前图片的块是否为真(400)。视频编码器可以以一种或多种方式来确定条件是否为真。例如,图10描述了确定条件是否为真的示例操作。本公开的其他地方对图10进行了详细描述。在一些示例中,如本公开其他地方所描述的,条件可基于一个或多个相邻块使用的内插滤波器的性质、是否应用双向帧内预测编码等等。
[0249]
在图9的示例中,基于对于块,条件为真(400的“是”分支),视频编码器可将非平滑内插滤波器应用于块的未经滤波的参考样点以产生块的预测样点(402)。例如,视频编码器可应用本公开其他地方描述的任一三次内插滤波器或其他滤波器。注意,图9中的视频编码器将非平滑内插滤波器应用于未经滤波的参考样点。这与jem7形成对比,在jem7中,视频编码器可在某些情况下将非平滑内插滤波器应用于滤波的参考样点,如应用于视频编码器已经应用了mdis滤波器的参考样点。根据本公开的技术,因为不存在视频编码器需要将非平滑内插滤波器应用于滤波的参考样点的情况,所以视频编码器无需存储或检索滤波的参考样点,视频编码器的复杂度可以降低。
[0250]
为了将非平滑内插滤波器应用于块的未经滤波的参考样点以产生块的预测样点,视频编码器可对块的每个样点使用非平滑内插滤波器来为两个整数参考样点间的分数位置内插值,如上文关于图3的描述。视频编码器可接着将所述内插值指派给块的样点,从而产生块的预测样点。在视频编码器应用双向帧内预测的示例中,块可具有两个帧内预测模式,且视频编码器可基于块的两个帧内预测模式为块的每个样点内插两个值。视频编码器可以按本公开其他地方描述的相同方式内插每个值。视频编码器可接着基于两个内插值产生样点的预测值。例如,视频编码器可产生样点的预测值作为两个内插值的平均值。
[0251]
然而,基于条件对于块为假(400的“否”分支),视频编码器可将平滑内插滤波器应用于块的未经滤波的参考样点以产生块的预测样点(404)。例如,视频编码器可应用本公开其他地方描述的任一高斯内插滤波器或其他内插滤波器。为了将平滑内插滤波器应用于块的未经滤波的参考样点以产生块的预测样点,视频编码器可对块的每一个样点使用平滑内插滤波器来为两个整数参考样点间的分数位置内插值,如上文关于图3的描述。视频编码器可接着将内插值指派给块的样点,从而产生块的预测样点。
[0252]
注意,图9中的视频编码器将平滑内插滤波器应用于未经滤波的参考样点。这与jem7形成对比,在jem7中,视频编码器可在某些情况下将平滑内插滤波器应用于滤波的参考样点,如应用于视频编码器已经应用了mdis滤波器的参考样点。根据本公开的技术,因为不存在视频编码器需要将平滑内插滤波器应用于滤波的参考样点的情况,所以视频编码器无需存储或检索滤波的参考样点,视频编码器的复杂度可以降低。
[0253]
在本公开中,关于用于确定是应用非平滑内插滤波器还是应用非平滑内插滤波器
的条件,“真”可对应于一个布尔值,“假”可对应于另一布尔值。在本公开的任何示例中,对“真”和“假”的参考可以互换。例如,在确定条件为假时,视频编码器可应用非平滑内插滤波器,在确定条件为真时,可应用平滑内插滤波器。
[0254]
随后,在视频编码器为视频编码器200的示例中,视频编码器200可基于第一块的预测样点产生块的残差数据。在这些示例中,视频编码器200可在包括视频数据的编码表示的比特流中包括表示块的残差数据的数据。例如,在图5的上下文中,视频编码器200的残差产生单元204可计算块与预测块(即块的预测样点)之间的逐样点差值。在图7的上下文中,视频编码器200可在352中产生残差数据。此外,在图7的上下文中,视频编码器200可包括表示比特流中块的残差数据的数据,作为360中输出系数的熵编码数据的一部分。
[0255]
在视频编码器是视频解码器300的示例中,视频解码器300可基于块的预测样点来重构块。例如,在图5的上下文中,视频解码器300的重构单元310可将残差块的样点添加至预测块的对应样点(即块的预测样点)以重构块。在图8的上下文中,视频解码器300可在380中将块重构为组合预测块与残差数据的一部分。
[0256]
视频编码器可对当前图片中的多个块执行图9的操作。因此,视频编码器可对当前图片的第一块、当前图片的第二块等执行图9的操作。对于当前图片的一些块,视频编码器可确定条件为真,且对于当前图片的其他块可确定条件为假。在视频编码器是视频编码器200的示例中,视频编码器200可在包括视频数据的编码表示的比特流中包括表示第一块的残差数据和第二块的残差数据的数据等。
[0257]
图10是示出根据本公开一种或多种技术由视频编码器执行以确定图9中的操作的条件是否为真的示例操作的流程图。在图10的示例中,视频编码器可确定块的帧内模式差值。视频编码器可将第一块的帧内模式差值确定为以下中的最小值:(1)第一块的帧内模式索引和水平帧内预测模式的帧内模式索引之间的差值的绝对值,和(2)第一块的帧内模式索引和垂直帧内预测模式的帧内模式索引之间的差值的绝对值。即,按照以上等式(2)和等式(8),视频编码器可确定块的帧内模式差值的。
[0258]
在图10的示例中,视频编码器可至少部分地基于块的帧内模式差值是否大于阈值来确定条件对于块是否为真(422)。例如,如果帧内模式差值大于阈值,例如如表5中所描述的,视频编码器可确定条件为真。同样,如果帧内模式差值不大于阈值,则视频编码器可确定条件为假。因此,在图10的示例中,如果确定帧内模式差值大于阈值(422的“是”分支),视频编码器可确定条件为真(424)。相反,如果确定帧内模式差值不大于阈值(422的“否”分支),视频编码器可确定条件不为真(426)。在一些示例中,视频编码器使用等式(7)和表4来确定阈值。
[0259]
在一些示例中,视频编码器可基于一个或多个附加条件(即除了块的帧内模式差值是否大于阈值外的条件)来确定条件对于块是否为真。例如,所述一个或多个附加条件可包括以下中的一个或多个:对亮度或色度的依赖性、取决于位置的帧内预测组合工具的使用以及不可分二次变换的使用。
[0260]
在一些示例中,视频编码器可至少部分地基于在块的一个或多个相邻块中使用的内插滤波器的性质来确定条件对于块是否为真。例如,在一示例中,如果视频编码器使用具有相邻块的非平滑内插滤波器,那么视频编码器可确定条件对于块是否为真(且因此应用非平滑内插滤波器)。在此示例中,如果视频编码器使用具有相邻块的平滑内插滤波器,那
么视频编码器可确定条件对块为假(且因此应用平滑内插滤波器)。
[0261]
在一些示例中,视频编码器可至少部分地基于双向帧内预测编码是否应用于块来确定条件对于块是否为真。例如,当双向帧内预测应用于块且帧内模式差值大于阈值(如使用表4确定的阈值)时,视频编码器可确定条件为真(且因此应用非平滑内插滤波器)。在此示例中,当未应用双向帧内预测或帧内模式差值不大于阈值时,视频编码器可确定条件为假(且因此应用平滑内插滤波器)。例如,在此示例中,当双向帧内预测应用于所述块且帧内模式差值大于阈值(如使用表4确定的阈值)时,视频编码器可确定条件为真;且当未应用双向帧内预测或者帧内模式差值不大于阈值时,视频编码器可确定条件为假。在另一示例中,视频编码器可在双向帧内预测未应用于块时确定条件为真(且因此应用非平滑内插滤波器),且在应用双向帧内预测时确定条件为假(且因此应用平滑内插滤波器)。
[0262]
应认识到,根据示例,本文中描述的任何技术的某些动作或事件可以以不同的顺序执行,可以被添加、合并或完全省去(如,并非所有描述的动作或事件对于实践所述技术是必要的)。此外,在某些示例中,动作或事件可通过多线程处理、中断处理或多个处理器同时执行,而非顺序执行。
[0263]
在一个或多个示例中,本文描述的功能可以在硬件、软件、固件或其任意组合中实现。如果以软件实现,这些功能可以作为一个或多个指令或代码存储在或传输到计算机可读介质上,且由基于硬件的处理单元执行。计算机可读介质可包括计算机可读存储介质,其对应于数据存储介质等有形介质或通信介质,通信介质包括根据通信协议等任何有助于将计算机程序从一个地方传输至另一地方的介质。以此方式,计算机可读介质通常可对应于(1)非暂时性的有形计算机可读存储介质或(2)信号或载波等通信介质。数据存储介质可以是可由一个或多个计算机或一个或多个处理器访问以检索用于实现本公开中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可包括计算机可读介质。
[0264]
作为示例而非限制,这种计算机可读存储介质可包括ram、rom、eeprom、cd-rom或其他光盘存储器、磁盘存储器或其他磁存储设备、闪存或可用于以指令或数据结构的形式存储期望的程序代码并可由计算机访问的任何其他介质。此外,任何连接都被恰当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线路(dsl)或无线技术(诸如红外线、无线电和微波)从网站、服务器或其他远程源传输指令,则同轴电缆、光纤电缆、双绞线、dsl或无线技术(诸如红外线、无线电和微波)包含在介质的定义中。然而应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂时性介质,而是非暂时性的、有形的存储介质。本文中使用的磁盘和盘包括压缩磁盘(cd)、激光盘、光盘、数字视频盘(dvd)、软盘和蓝光光盘,磁盘通常磁性地再现数据,盘用激光光学地再现数据。上述的组合也应该包括在计算机可读介质的范围内。
[0265]
指令可由一个或多个处理器执行,如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)或其他等效集成或离散逻辑电路。因此,本文中使用的术语“处理器”可指任何前述结构或适于实现本文中描述的技术的任何其他结构。另外,在一些方面,本文描述的功能可在被配置用于编码和解码的专用硬件和/或软件模块内提供,或结合在组合编码解码器中。或将本文中所描述的功能性并入组合编解码器中。同样,本文描述的技术可以在一个或多个电路或逻辑元件中完全实现。
[0266]
本公开的技术可在包括无线手持电话、集成电路(ic)或一组ic(如芯片集)等在内
的多种设备或装置中实现。各种组件、模块或单元在本公开中被描述以强调被配置为执行本公开技术的设备的功能,但未必需要由不同的硬件单元实现。而是,如上所述,各种单元可组合于编码解码硬件单元中,或者由与合适的软件和/或固件结合的互操作硬件单元(包括如上所述的一个或多个处理器)的集合来提供。
[0267]
本文中描述了各种示例。这些示例和其他示例在所附权利要求的范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1