使用像素距离的解块滤波转让专利

申请号 : CN201580012798.4

文献号 : CN106105201B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 金佑植陈建乐霍埃尔·索赖罗哈斯马尔塔·卡切维奇

申请人 : 高通股份有限公司

摘要 :

本发明描述解块滤波技术。视频译码器可以基于从像素到边界的几何距离和至少两个像素的像素值之间的像素值差来确定对所述像素的像素值进行解块滤波的量。所述视频译码器可随后基于所述所确定的量来对所述像素进行解块滤波。

权利要求 :

1.一种处理视频数据的方法,所述方法包括:

确定从第一块的第一像素到所述第一块与第二块之间的边界的几何距离,其中所述几何距离是基于所述第一像素与所述边界之间的像素的数目;

基于第二像素的像素值和第三像素的像素值确定像素值差;

基于所述几何距离和所述像素值差来确定对所述第一像素的像素值进行解块滤波的量;以及基于所述解块滤波的量来对所述第一像素的所述像素值进行解块滤波。

2.根据权利要求1所述的方法,其中确定所述像素值差包括确定所述第二像素的所述像素值与所述第三像素的所述像素值之间的差值,且将所述差值除以二。

3.根据权利要求1所述的方法,其中所述第二像素包括所述第一块的最靠近所述边界的像素,并且其中所述第三像素包括所述第二块的最靠近所述边界的像素。

4.根据权利要求1所述的方法,其中所述第二像素和所述第一像素是同一像素,并且其中所述第三像素包括在所述第二块中的与所述第一块中的所述第一像素到所述边界等距的像素。

5.根据权利要求1所述的方法,其中所述第二像素和所述第一像素是同一像素,并且其中所述第三像素包括所述第二块中最靠近所述边界的像素。

6.根据权利要求1所述的方法,其中所述第二像素包括所述第一像素的第一相邻像素,且所述第三像素包括所述第一像素的第二相邻像素。

7.根据权利要求1所述的方法,其进一步包括:

确定至少所述像素值差的加权,

其中确定所述解块滤波的量包括基于所述几何距离、所述像素值差以及所述像素值差的所述加权来确定所述解块滤波的量。

8.根据权利要求1所述的方法,其进一步包括:

确定所述解块滤波的量大于第一阈值或小于第二阈值;以及基于所述解块滤波的量大于所述第一阈值或小于所述第二阈值来确定经调整的解块滤波的量,其中对所述像素值进行解块滤波包括基于所述经调整的解块滤波的量来对所述第一像素的所述像素值进行解块滤波。

9.根据权利要求1所述的方法,其中确定所述解块滤波的量包括基于所述几何距离、所述像素值差以及待解块滤波的像素的数目来确定所述解块滤波的量。

10.根据权利要求1所述的方法,其进一步包括:确定所述第一块的一部分的梯度值,其中所述梯度值指示所述第一块的所述部分的平滑度,其中解块滤波包括基于所述梯度值小于或等于阈值梯度值来对所述像素值进行解块滤波。

11.根据权利要求1所述的方法,其进一步包括:确定用于产生所述第一块的第一变换块的第一块大小和用于产生所述第二块的第二变换块的第二块大小,其中解块滤波包括基于所述第一块大小和所述第二块大小中的较大者等于最大允许变换块大小或所述第一块大小和所述第二块大小中的较小者大于阈值块大小来对所述像素值进行解块滤波。

12.根据权利要求1所述的方法,其进一步包括:确定第三块中的像素的像素值与经解块滤波的像素值之间的差值;以及用信号发送指示所述第三块中的所述像素的所述像素值与所述经解块滤波的像素值之间的所述差值的信息,其中所述用信号发送的信息用于对所述第三块进行解码。

13.根据权利要求1所述的方法,其进一步包括:接收指示第三块中的像素的像素值与经解块滤波的像素值之间的差值的信息;以及基于所接收的信息对所述第三块进行帧间预测或帧内预测解码。

14.一种用于处理视频数据的装置,所述装置包括:视频数据存储器,其存储像素值;以及

视频译码器,其经配置以:

确定从第一块的第一像素到所述第一块与第二块之间的边界的几何距离,其中所述第二块的像素值存储在所述视频数据存储器中,且其中所述几何距离是基于所述第一像素与所述边界之间的像素的数目;

基于第二像素的像素值和第三像素的像素值来确定像素值差;

基于所述几何距离和所述像素值差来确定对所述第一像素的像素值进行解块滤波的量;以及基于所述解块滤波的量来对所述第一像素的所述像素值进行解块滤波。

15.根据权利要求14所述的装置,其中为确定所述像素值差,所述视频译码器经配置以确定所述第二像素的所述像素值与所述第三像素的所述像素值之间的差值,且将所述差值除以二。

16.根据权利要求14所述的装置,其中所述第二像素包括所述第一块的最靠近所述边界的像素,并且其中所述第三像素包括所述第二块的最靠近所述边界的像素。

17.根据权利要求14所述的装置,其中所述第二像素和所述第一像素是同一像素,并且其中所述第三像素包括在所述第二块中的与所述第一块中的所述第一像素到所述边界等距的像素。

18.根据权利要求14所述的装置,其中所述第二像素和所述第一像素是同一像素,并且其中所述第三像素包括所述第二块中最靠近所述边界的像素。

19.根据权利要求14所述的装置,其中所述第二像素包括所述第一像素的第一相邻像素,且所述第三像素包括所述第一像素的第二相邻像素。

20.根据权利要求14所述的装置,其中所述视频译码器经配置以:确定至少所述像素值差的加权,

其中为确定所述解块滤波的量,所述视频译码器经配置以基于所述几何距离、所述像素值差以及所述像素值差的所述加权来确定所述解块滤波的量。

21.根据权利要求14所述的装置,其中所述视频译码器经配置以:确定所述解块滤波的量大于第一阈值或小于第二阈值;以及基于所述解块滤波的量大于所述第一阈值或小于所述第二阈值来确定经调整的解块滤波的量,其中为对所述像素值进行解块滤波,所述视频译码器经配置以基于所述经调整的解块滤波的量来对所述第一像素的所述像素值进行解块滤波。

22.根据权利要求14所述的装置,其中为确定所述解块滤波的量,所述视频译码器经配置以基于所述几何距离、所述像素值差以及待解块滤波的像素的数目来确定所述解块滤波的量。

23.根据权利要求14所述的装置,其中所述视频译码器经配置以:确定所述第一块的一部分的梯度值,其中所述梯度值指示所述第一块的所述部分的平滑度,其中为进行解块滤波,所述视频译码器经配置以基于所述梯度值小于或等于阈值梯度值来对所述像素值进行解块滤波。

24.根据权利要求14所述的装置,其中所述视频译码器经配置以:确定用于产生所述第一块的第一变换块的第一块大小和用于产生所述第二块的第二变换块的第二块大小,其中为进行解块滤波,所述视频译码器经配置以基于所述第一块大小和所述第二块大小中的较大者等于最大允许变换块大小或所述第一块大小和所述第二块大小中的较小者大于阈值块大小来对所述像素值进行解块滤波。

25.根据权利要求14所述的装置,其中所述装置包括以下各者中的一者:微处理器;

集成电路IC;或

无线手持机装置。

26.一种用于处理视频数据的装置,所述装置包括:用于确定从第一块的第一像素到所述第一块与第二块之间的边界的几何距离的装置,其中所述几何距离是基于所述第一像素与所述边界之间的像素的数目;

用于基于第二像素的像素值和第三像素的像素值来确定像素值差的装置;

用于基于所述几何距离和所述像素值差来确定对所述第一像素的像素值进行解块滤波的量的装置;以及用于基于所述解块滤波的量来对所述第一像素的所述像素值进行解块滤波的装置。

27.一种计算机可读存储媒体,其具有存储于其上的指令,所述指令在被执行时使得用于处理的装置的一或多个处理器:确定从第一块的第一像素到所述第一块与第二块之间的边界的几何距离,其中所述几何距离是基于所述第一像素与所述边界之间的像素的数目;

基于第二像素的像素值和第三像素的像素值来确定像素值差;

基于所述几何距离和所述像素值差来确定对所述第一像素的像素值进行解块滤波的量;以及基于所述解块滤波的量来对所述第一像素的所述像素值进行解块滤波。

说明书 :

使用像素距离的解块滤波

[0001] 本申请案主张2014年3月14日申请的第61/953,503号美国临时申请案的权益,所述申请案的全部内容以全文引用的方式并入本文中。

技术领域

[0002] 本发明涉及视频译码。

背景技术

[0003] 数字视频能力可并入到广泛范围的装置中,包含数字电视、数字直播系统、无线广播系统、个人数字助理(PDA)、膝上型或桌上型计算机、数码相机、数字记录装置、数字媒体播放器、视频游戏装置、视频游戏控制台、蜂窝式或卫星无线电电话、视频电话会议装置及类似者。数字视频装置实施视频压缩技术,例如通过MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4第10部分、高级视频译码(AVC)、高效率视频译码(HEVC)标准和此类标准的扩展定义的标准中描述的技术,以便更有高地发射、接收和存储数字视频信息。
[0004] 视频压缩技术包含空间预测和/或时间预测,以减少或去除视频序列中固有的冗余。对于基于块的视频译码,视频帧或切片可以分割成多个块。每一块可被进一步分割。使用相对于同一帧或切片中的相邻块中的参考样本的空间预测来对经帧内译码(I)帧或切片中的块进行编码。经帧间译码(P或B)帧或切片中的块可使用相对于同一帧或切片中的相邻块中的参考样本的空间预测,或相对于其它参考帧中的参考样本的时间预测。空间或时间预测产生待译码块的预测性块。残余数据表示待译码的原始块与预测性块之间的像素差。
[0005] 根据指向形成预测性块的参考样本的块的运动向量及指示经译码块与预测性块之间的差值的残余数据来对经帧间译码块进行编码。根据帧内译码模式和残余数据对经帧内译码块进行编码。为了进一步压缩,可将残余数据从像素域变换到变换域,从而产生残余变换系数,随后可以对残余变换系数进行量化。可以用特定次序扫描初始地用二维阵列布置的经量化变换系数以产生变换系数的一维向量以用于熵译码。

发明内容

[0006] 本发明描述用于对图片的经重构块进行解块滤波的实例技术。视频译码器(例如,视频编码器或视频解码器)基于像素到块的边界的距离且基于像素的像素值之间的像素值差来确定对所述块的像素的像素值进行解块滤波的量。在一些实例中,视频译码器还可以将待解块滤波的像素的数目用于确定对所述像素的像素值进行解块滤波的量。
[0007] 在一个实例中,本发明描述一种处理视频数据的方法,所述方法包括:确定从第一块的第一像素到所述第一块与第二块之间的边界的几何距离;基于第二像素的像素值和第三像素的像素值来确定像素值差;基于几何距离和像素值差来确定对第一像素的像素值进行解块滤波的量;以及基于解块滤波的量来对第一像素的像素值进行解块滤波。
[0008] 在一个实例中,本发明描述一种用于处理视频数据的装置,所述装置包括:视频数据存储器,其存储像素值;以及视频译码器,其经配置以:确定从第一块的第一像素到所述第一块与第二块之间的边界的几何距离,其中第二块的像素值存储在视频数据存储器中;基于第二像素的像素值和第三像素的像素值来确定像素值差;基于几何距离和像素值差来确定对第一像素的像素值进行解块滤波的量;以及基于解块滤波的量来对第一像素的像素值进行解块滤波。
[0009] 在一个实例中,本发明描述一种用于处理视频数据的装置,所述装置包括:用于确定从第一块的第一像素到所述第一块与第二块之间的边界的几何距离的装置;用于基于第二像素的像素值和第三像素的像素值来确定像素值差的装置;用于基于几何距离和像素值差来确定对第一像素的像素值进行解块滤波的量的装置;以及用于基于解块滤波的量来对第一像素的像素值进行解块滤波的装置。
[0010] 在一个实例中,本发明描述一种计算机可读存储媒体,其具有存储在其上的指令,所述指令在被执行时使得一或多个处理器:确定从第一块的第一像素到所述第一块与第二块之间的边界的几何距离;基于第二像素的像素值和第三像素的像素值来确定像素值差;基于几何距离和像素值差来确定对第一像素的像素值进行解块滤波的量;以及基于解块滤波的量来对第一像素的像素值进行解块滤波。
[0011] 附图和以下描述中阐述一或多个实例的细节。其它特征、目标和优点将从描述和图式以及从权利要求书而显而易见。

附图说明

[0012] 图1是说明可利用本发明中描述的技术的实例视频编码和解码系统的实例的方块图。
[0013] 图2是说明可以实施本发明中描述的技术的实例视频编码器的方块图。
[0014] 图3是说明可实施本发明中描述的技术的实例视频解码器的方块图。
[0015] 图4是说明像素值相对于跨越块边界的像素位置的实例的概念图。
[0016] 图5是说明根据本发明中描述的技术的基于用信号发送的解块滤波器参数而界定的示例性解块滤波器的组件的方块图。
[0017] 图6是说明靠近子块之间的视频块的边缘的像素位置的概念图。
[0018] 图7是说明处理视频数据的实例技术的流程图。

具体实施方式

[0019] 本发明涉及视频译码和压缩的领域。作为一个实例,本发明涉及高效视频译码(HEVC)标准及其范围扩展和屏幕内容译码扩展。然而,所述技术不应被认为限于HEVC标准或其范围扩展和屏幕内容译码扩展。为易于描述,所述技术关于HEVC标准来描述,但所述技术可以适用于其它视频译码标准,且大体上适用于视频译码技术。并且,本发明中描述的技术可变为将来开发的标准的一部分。换句话说,本发明中描述的技术可适用于先前开发的视频译码标准、当前正在开发的视频译码标准及即将出现的视频译码标准。
[0020] 作为视频译码的部分,视频编码器重构经编码视频块并将经重构视频块存储在视频编码器的经解码图片缓冲器(DPB)中,使得经重构视频块可以用于后一块的帧间预测或帧内预测。视频解码器接收经编码视频块的视频数据,并重构视频块以用于最终显示。
[0021] 在一些情况下,沿着块的边界可能存在块假象。当用于重构的块的块大小相对较大时,此类块假象可能对于观看者尤其明显。块假象大体上是指在块的边界处的中断,其使得观看者到视频内容中的不同视频块,而非从一个块到另一个块的混合过渡,使得观看者不能察觉到从一个块到另一个块的过渡。更一般地说,块假象可能是基于块的视频译码的结果,其造成在视频内容中从一个块到另一个块的可察觉中断。
[0022] 如本发明中所描述,为平滑块假象,视频译码器(例如,视频编码器或视频解码器)可以对接近于块边界的多个像素(例如,从块的边界延伸的N个像素)应用解块滤波。块假象的平滑使在相邻块之间的边界的相反侧上的像素之间的像素值中的跳跃达到平衡,使得从块的一侧发生的像素值的改变是跨越块边界的平滑过渡,而非像素值之间的突然跳跃。换句话说,平滑块假象引起接近于边界的像素值的变化的量减少,使得像素值中存在平滑过渡。
[0023] 本发明描述基于像素到块的边界的几何距离和像素值中的差值(即,像素值差)来确定对块中的像素的像素值进行解块滤波的量的实例。块中的像素的像素值可以是在亮度块中的像素的亮度值,或在色度块中的一者中的像素的色度值中的一者。在一些实例中,视频译码器还可以将待解块滤波的像素的数目用于确定对像素的像素值进行解块滤波的量。
[0024] 在一些情况下,对于相对较大的块尺寸(例如,作为一个实例,32×32),沿着块边界的块假象可以相当大。例如,视频译码器确定变换单元作为对块进行译码的部分。如果变换单元的块大小相对较大,那么块假象可以相当大。存在用以平滑块假象的当前技术,例如HEVC视频译码标准中和其它提议中的技术;然而,此类技术可能不能针对较大块尺寸充分地平滑块假象,或会大大增加实现块假象的充分平滑的计算和实施复杂性。
[0025] 本发明中描述的技术可以通过基于几何距离和像素值差来平滑块假象而改进视觉质量。例如,所述技术可以在根据像素距离进行滤波之前保持像素值,其中所述像素距离是几何距离和像素值差的函数。视频译码器还能够使用更少数目的像素来执行解块滤波,如一些其它技术,这样做促进处理和实施。
[0026] 图1是说明可以经配置以利用根据本发明的实例的技术的实例视频编码和解码系统10的方块图。如图1中所示,系统10包含经由通信信道16将经编码视频发射到目的地装置14的源装置12。经编码视频数据也可存储于存储媒体34或文件服务器36上,且在需要时可由目的地装置14存取。当存储到存储媒体或文件服务器时,视频编码器20可将经译码视频数据提供到另一装置,例如网络接口、压缩光盘(CD)、蓝光或数字视频光盘(DVD)烧录机或烫印设施装置,或其它装置,以用于将经译码视频数据存储到存储媒体。同样,与视频解码器30分离的装置(例如网络接口、CD或DVD读取器,或其类似者)可从存储媒体检索经译码视频数据,且将所检索数据提供到视频解码器30。
[0027] 源装置12和目的地装置14可以包括广泛多种装置中的任一者,包含桌上型计算机、笔记本型(即,膝上型)计算机、平板计算机、机顶盒、电话手持机(例如所谓的智能电话)、电视、相机、显示器装置、数字媒体播放器、视频游戏控制台、无线手持机装置或类似者。在许多情况下,此类装置可经配备用于无线通信。因此,通信信道16可包括无线信道、有线信道,或适合于发射经编码视频数据的无线和有线信道的组合。类似地,文件服务器36可由目的地装置14通过任何标准数据连接(包含因特网连接)进行存取。所述数据连接可包含适合于存取存储于文件服务器上的经编码的视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等)或两者的组合。
[0028] 根据本发明的实例的技术可应用于视频译码中以支持多种多媒体应用中的任一者,例如空中电视广播、有线电视发射、卫星电视发射、流式视频传输(例如经由因特网)、对数字视频进行编码以供存储在数据存储媒体上、对存储在数据存储媒体上的数字视频进行解码,或其它应用。在一些实例中,系统10可经配置以支持单向或双向视频传输,以支持例如视频流式传输、视频重放、视频广播和/或视频电话等应用。
[0029] 在一些实例中,本发明中描述的技术可以尤其可用于根据高效视频译码(HEVC)标准的视频译码。然而,本发明中描述的技术不应被视为限于任何特定的视频译码标准。本发明中描述的技术也可适用于非基于标准的视频译码。
[0030] 视频译码标准包含ITU-T H.261、ISO/IEC MPEG-1视觉、ITU-T H.262或ISO/IEC MPEG-2视觉、ITU-T H.263、ISO/IEC MPEG-4视觉和ITU-T H.264(也被称为ISO/IEC MPEG-4AVC),包含其可伸缩视频译码(SVC)和多视点视频译码(MVC)扩展。MVC的最新联合草案描述于2010年3月的“用于通用视听服务的高级视频译码(Advanced video coding for generic audiovisual services)”(ITU-T建议H.264)中。
[0031] 此外,存在一种新开发的视频译码标准,即高效视频译码(HEVC),其由ITU-T视频译码专家组(VCEG)及ISO/IEC动画专家组(MPEG)的视频译码联合合作小组(JCT-VC)开发出。布洛斯(Bross)等人在文件JCTVC-L1003v34“高效视频译码(HEVC)文本规范草案10(针对FDIS及最后呼叫)(High efficiency video coding(HEVC)text specification draft 10(for FDIS&Last Call)”(ITU-T SG16WP3及ISO/IEC JTC1/SC29/WG11视频译码联合合作小组(JCT-VC),第12次会议:瑞士日内瓦,2013年1月14日到23日)中描述了HEVC标准的最新的草案,被称作“HEVC工作草案10”或“WD10”,其可从以下链接获得:http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zip。
[0032] HEVC是由ITU-T WP3/16和ISO/IEC JTC1/SC29/WD11的视频译码(JCT-VC)联合合作小组最近开发出的用于视频译码的国际标准。HEVC的范围扩展包含扩展视频译码以用于除YCbCr 4:2:0外的色彩空间,例如YCbCr 4:2:2、YCbCr 4:4:4以及RGB。所述范围扩展草案是:D.弗林(D.Flynn)、M.纳卡瑞(M.Naccari)、C.罗斯瓦恩(C.Rosewarne)、J.索尔(J.Sole)、G.沙利文(G.Sullivan)以及T.铃木(T.Suzuki)的“高效视频译码(HEVC)范围扩展文本规范:草案3(High Efficiency Video Coding(HEVC)Range Extensions text specification:Draft 3)”,ITU-T SG16WP3和ISO/IEC JTC1/SC29/WG11,文件JCTVC-P1005,2014年1月。另外,已经进行了新标准化活动以改进屏幕内容译码的编码性能。新标准化的活动是:针对屏幕内容的译码的联合呼吁提议,ITU-T Q6/16和ISO/IEC JTC1/SC29/WG11,文件MPEG2014/N14175,2013年1月。
[0033] 在图1的实例中,源装置12包含视频源18、视频编码器20、调制器/解调器(调制解调器)22以及发射器24。在源装置12中,视频源18可以包含来源,例如摄像机等视频捕获装置、包含先前所捕获的视频的视频存档、用以从视频内容提供者接收视频的视频馈送接口,和/或用于产生计算机图形数据以作为源视频的计算机图形系统,或此类源的组合。作为一个实例,如果视频源18为摄像机,则源装置12与目的地装置14可形成可例如在智能电话或平板计算机内提供的所谓的相机电话或视频电话。然而,本发明中描述的技术可大体适用于视频译码,且可应用于无线和/或有线应用或其中经编码的视频数据存储在本地磁盘上的应用。
[0034] 所捕获的、所预先捕获的或计算机产生的视频可以通过视频编码器20编码。经编码视频信息可以通过调制解调器22根据通信标准(例如有线或无线通信协议)来调制,且经由发射器24发射到目的地装置14。调制解调器22可以包含各种混频器、滤波器、放大器或经设计用于信号调制的其它组件。发射器24可包含经设计以用于发射数据的电路,包含放大器、滤波器及(在无线通信的情况下)一或多个天线。
[0035] 通过视频编码器20编码的所捕获的、所预先捕获的或计算机产生的视频还可存储到存储媒体34或文件服务器36上,以供稍后耗用。存储媒体34可包含蓝光光盘、DVD、CD-ROM、快闪存储器,或用于存储经编码视频的任何其它合适的数字存储媒体。存储在存储媒体34上的经编码视频随后可通过目的地装置14存取以用于解码和重放。尽管在图1中未示出,但在一些实例中,存储媒体34和/或文件服务器36可存储发射器24的输出。
[0036] 并且,尽管存储媒体34和文件服务器36说明为从视频编码器20接收视频数据,但在一些实例中,存储媒体34和文件服务器36可以从发射器24或某一其它单元而非视频编码器20接收视频数据。类似地,尽管存储媒体34和文件服务器36说明为将视频数据输出到视频解码器30,但在一些实例中,存储媒体34和文件服务器36可以将视频数据输出到接收器26或某一其它单元,而非视频解码器30。在这些实例中,视频解码器30可以从接收器26或某一其它单元接收视频数据。
[0037] 文件服务器36可以是能够存储经编码视频且将所述经编码视频发射到目的地装置14的任何类型的服务器。实例文件服务器包含网络服务器(例如,用于网站)、FTP服务器、网络附接存储(NAS)装置、本地磁盘驱动器或能够存储经编码视频数据且将其发射到目的地装置的任何其它类型的装置。经编码的视频数据从文件服务器36的传输可以是流式传输、下载传输或两者的组合。文件服务器36可由目的地装置14通过任何标准数据连接(包含因特网连接)进行存取。所述数据连接可包含适合于存取存储于文件服务器上的经编码的视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器、以太网、USB等)或两者的组合。
[0038] 在图1的实例中,目的地装置14包含接收器26、调制解调器28、视频解码器30以及显示器装置32。目的地装置14的接收器26经由通信信道16接收信息,且调制解调器28对所述信息进行解调以产生经解调比特流以用于视频解码器30。经由通信信道16传送的信息可以包含通过视频编码器20产生的多种语法信息以供视频解码器30在对视频数据进行解码时使用。此类语法还可以与存储在存储媒体34或文件服务器36上的经编码视频数据包含在一起。视频编码器20和视频解码器30中的每一者可以形成能够对视频数据进行编码或解码的相应编码器-解码器(编解码器)的部分。
[0039] 显示器装置32可与目的地装置14整合在一起或在目的地装置14的外部。在一些实例中,目的地装置14可以包含整合式显示器装置且还可经配置以与外部显示器装置介接。在其它实例中,目的地装置14可以是显示器装置。一般来说,显示器装置32将经解码视频数据显示给用户,且可包括多种显示器装置中的任一者,例如液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或另一类型的显示器装置。
[0040] 在图1的实例中,通信信道16可包括任何无线或有线通信媒体,例如射频(RF)频谱或一或多个物理传输线,或无线与有线媒体的任何组合。通信信道16可形成分组网络(例如,局域网、广域网或因特网等全球网络)的部分。通信信道16大体上表示用于将视频数据从源装置12发射到目的地装置14的任何合适的通信媒体或不同通信媒体的集合,包含有线或无线媒体的任何合适的组合。通信信道16可包含路由器、交换机、基站或可以用于促进从源装置12到目的地装置14的通信的任何其它装备。
[0041] 视频编码器20和视频解码器30可根据视频压缩标准(例如HEVC和/或HEVC标准的扩展)来工作。HEVC范围扩展目前在开发中。此外,出于说明的目的提供对HEVC及其扩展的描述,且所述描述不应被视为具有限制性。一般来说,视频编码器20和视频解码器30可以经配置以执行本发明中所描述的实例技术,所述实例技术涉及视频译码,并且更确切地说涉及解块滤波,如更详细描述。
[0042] 尽管图1中未示出,但在一些方面中,视频编码器20和视频解码器30可各自与音频编码器和解码器整合,且可包含适当的多路复用器-多路分用器(MUX-DEMUX)单元或其它硬件和软件,以处置对共同数据流或单独数据流中的音频和视频两者的编码。如果适用,在一些实例中,多路复用器-多路分用器单元可遵守多路复用器协议。实例包含ITU H.223多路复用器协议或用户数据报协议(UDP)等其它协议。
[0043] 视频编码器20和视频解码器30各自可实施为多种合适的编码器电路中的任一者,例如一或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合。当所述技术部分用软件实施时,装置可将用于所述软件的指令存储于合适的非暂时性计算机可读媒体中,并使用一或多个处理器用硬件执行所述指令以执行本发明的技术。视频编码器20和视频解码器30中的每一者可包含在一或多个编码器或解码器中,所述编码器或解码器中的任一者可整合为相应装置中的组合编码器/解码器(编解码器)的部分。
[0044] 包含视频解码器30的装置的实例包含无线通信装置、集成电路(IC)及微处理器。类似地,包含视频编码器20的装置的实例包含无线通信装置、IC及微处理器。
[0045] 在一些实例中,视频编码器20及视频解码器30可各自包含经配置以实施本发明中描述的技术的一或多个处理器。包含视频编码器20或视频解码器30的装置还可包含存储器,所述存储器存储视频编码器20及视频解码器30所利用的视频数据。在包含视频编码器20及视频解码器30的装置是IC芯片或微处理器的实例中,存储器可为IC芯片或微处理器的局部存储器,或可为包含IC芯片或微处理器的设备(例如,智能电话或平板计算机等的无线通信装置)的系统存储器,或局部及系统存储器的组合。在包含视频编码器20及视频解码器
30的装置是无线通信装置(或其它此类装置)的实例中,存储器可为视频编码器20或视频解码器30的局部存储器,包含视频编码器20或视频解码器30的装置的系统存储器,或局部及系统存储器的组合。
[0046] 根据本发明,视频编码器20可以实施本发明的技术中的任一者或全部以用于解块滤波。同样地,视频解码器30可以实施这些技术中的任一者或全部以用于解块滤波。如本发明中所描述,视频译码器可指视频编码器或视频解码器。类似地,视频译码单元可以指视频编码器或视频解码器。同样地,视频译码可指视频编码或视频解码。举例来说,因为视频编码器20和视频解码器30可以各自执行本发明中所描述的实例技术,所以术语“视频译码器”一般用于表示视频编码器或视频解码器。在本发明的提及具体编码技术的部分中,视频译码器表示视频编码器20的实例,且在本发明的提及具体解码技术的部分中,视频译码器表示视频解码器30的实例。术语“译码(code)”或“译码(coding)”一般还用于相应地指代编码/解码(encode/decode)或编码/解码(encoding/decoding)。
[0047] 数字视频装置实施视频压缩技术以更高效地对数字视频信息进行编码和解码。视频压缩可应用空间(帧内)预测和/或时间(帧间)预测技术来减少或去除视频序列中固有的冗余。
[0048] HEVC兼容的视频解码装置支持相对于前代装置(例如,ITU-T H.264/AVC装置)的若干额外的功能。例如,尽管H.264提供九个帧内预测编码模式,但HEVC支持多至三十五个帧内预测编码模式。以下部分将更详细地论述HEVC的某些方面。
[0049] 对于根据HEVC标准的视频译码,可将视频帧分割成译码单元。译码单元(CU)大体上是指充当对其应用各种译码工具以进行视频压缩的基本单元的图像区域。CU通常具有表示为Y的亮度分量以及表示为U和V的两个色度分量。取决于视频取样格式,就样本数目而言,U和V分量的大小可与Y分量的大小相同或不同。
[0050] CU通常是正方形,且可被视为类似于所谓的宏块,例如,在ITU-T H.264等其它视频译码标准下。根据HEVC标准的当前提出的方面中的一些的译码将出于说明的目的在本申请案中描述。然而,本发明中描述的技术可适用于其它视频译码过程,例如,根据HEVC、H.264的范围扩展定义的过程或其它标准或专用视频译码过程。
[0051] 根据HEVC,CU可包含一或多个预测单元(PU)和/或一或多个变换单元(TU)。比特流内的语法数据可界定最大译码单元(LCU),其为在像素数目方面的最大CU。一般来说,除了CU并不具有大小区别外,CU具有类似于H.264的宏块的目的。因此,CU可以分成若干子CU。一般来说,本发明中提到CU可以指图片的最大译码单元或LCU的子CU。LCU可分成若干子CU,且每一子CU可进一步分成若干子CU。比特流的语法数据可以界定LCU可以分割的最大次数,这被称作CU深度。因此,比特流还可界定最小译码单元(SCU)。本发明还使用术语“块”或“部分”来指代CU、PU或TU中的任一者。一般来说,“部分”可指视频帧的任何子集。
[0052] LCU可与四叉树数据结构相关联。一般来说,四叉树数据结构包含每个CU一个节点,其中根节点对应于LCU。如果CU分成四个子CU,那么对应于所述CU的节点包含四个叶节点,所述叶节点中的每一者对应于所述子CU中的一者。四叉树数据结构中的每一节点可提供对应的CU的语法数据。例如,四叉树中的节点可包含分割旗标,其指示对应于所述节点的CU是否分成若干子CU。CU的语法元素可以递归地定义,且可以取决于所述CU是否分成若干子CU。如果CU未经进一步分割,那么将其称作叶CU。在本发明中,叶CU的4个子CU也将被称作叶CU,但不存在对原始叶CU的明确分割。例如,如果16×16大小的CU未进一步分割,那么四个8×8子CU也将被称作叶CU,但16×16的CU从未分割。
[0053] 叶CU可包含一或多个PU。一般来说,PU表示对应的CU的全部或一部分,且可包含用于检索PU的参考样本的数据。例如,在对PU进行帧间模式编码时,PU可包含界定PU的运动向量的数据。界定运动向量的数据可描述例如运动向量的水平分量、运动向量的垂直分量、运动向量的分辨率(例如,四分之一像素精度或八分之一像素精度)、运动向量指向的参考帧和/或运动向量的参考列表(例如,列表0或列表1)。界定PU的叶CU的数据还可描述例如将CU分割为一或多个PU。分割模式可取决于CU是未经译码、经帧内预测模式编码还是经帧间预测模式编码而不同。对于帧内译码,可将PU视为与下文所描述的叶变换单元相同。
[0054] HEVC标准允许根据变换单元(TU)的变换,所述变换单元对于不同的CU可能不同。TU的大小通常是基于针对经分割LCU界定的给定CU内的PU的大小而设置,但是情况可能并不总是如此。TU通常与PU大小相同或小于PU。在一些实例中,对应于CU的残余样本可以使用被称为“残余四叉树”(RQT)的四叉树结构细分成较小单元。RQT的叶节点可被称作变换单元(TU)。与TU相关联的像素差值可以经变换以产生变换系数,所述变换系数可以经量化。TU包含亮度变换块和两个色度变换块。因此,应用于TU的下文所论述的任何译码过程可实际上应用于亮度及色度变换块。
[0055] 一般来说,PU是指与预测过程相关的数据。例如,当对PU进行帧内模式编码时,PU可包含描述用于PU的帧内预测模式的数据。作为另一实例,当对PU进行帧间模式编码时,PU可以包含界定PU的运动向量的数据。
[0056] 一般来说,TU用于变换和量化过程。具有一或多个PU的给定CU还可包含一或多个TU。在预测后,视频编码器20可根据PU从由译码节点识别的视频块计算残余值。随后更新译码节点以参考残余值而非原始视频块。残余值包括像素差值,所述像素差值可使用TU中所指定的变换和其它变换信息来变换为变换系数、经量化且经扫描以产生串行化变换系数以用于熵译码。可再次更新译码节点,以参考这些串行化变换系数。本发明通常使用术语“视频块”来指代CU的译码节点。在一些特定情况下,本发明还可使用术语“视频块”来指代包含译码节点和PU以及TU的树块,即,LCU或CU。
[0057] 视频序列通常包含一系列视频帧或图片。图片群组(GOP)大体上包括一系列的一或多个视频图片。GOP可包含在GOP的标头、图片中的一或多者的标头中或其它处的语法数据,所述语法数据描述GOP中包含的多个图片。图片的每一切片可包含描述用于相应切片的编码模式的切片语法数据。视频编码器20通常对个别视频切片内的视频块进行操作以便对视频数据进行编码。视频块可对应于CU内的译码节点。所述视频块可具有固定的或变化的大小,且可根据指定的译码标准而大小不同。
[0058] 为对块(例如,视频数据的预测单元)进行译码,首先导出用于所述块的预测值。可通过帧内(I)预测(即空间预测)或帧间(P或B)预测(即,时间预测)来导出也称为预测性块的预测值。因此,一些预测单元可以使用相对于同一帧(或切片)中的相邻参考块中的参考样本的空间预测来进行帧内译码(I),并且其它预测单元可以相对于其它先前经译码帧(或切片)中的参考样本块进行单向帧间译码(P)或双向帧间译码(B)。在各种情况下,参考样本可用于形成待译码块的预测性块。
[0059] 在识别预测性块之后,确定原始视频数据块中的像素与其预测性块中的像素之间的差值。此差值可以被称作预测残余数据,并且指示待译码块中的像素值与经选定用于表示经译码块的预测性块中的像素值之间的像素差。为实现更好的压缩,可以例如使用离散余弦变换(DCT)、整数变换、卡亨南-洛维(K-L)变换或另一变换来变换预测残余数据以产生变换系数。
[0060] 变换块(例如TU)中的残余数据可以布置在驻留在空间像素域中的像素差值的二维(2D)阵列中。变换将残余像素值转换成变换域(例如频域)中的变换系数的二维阵列。
[0061] 为了进一步压缩,可以在熵译码之前对变换系数进行量化。熵译码器随后对经量化变换系数应用熵译码,例如上下文自适应可变长度译码(CAVLC)、上下文自适应二进制算术译码(CABAC)、概率区间分割熵译码(PIPE)或类似者。在一些实例中,视频编码器20可以利用预定义扫描次序来扫描经量化变换系数以产生可以经熵编码的串行化向量。在其它实例中,视频编码器20可以执行自适应扫描。在扫描经量化变换系数以形成一维向量之后,视频编码器20可对所述一维向量进行熵编码,视频编码器20还可对与经编码视频数据相关联的语法元素进行熵编码以供视频解码器30在对视频数据进行解码时使用。
[0062] 算术译码是在具有高译码效率的许多压缩算法中所使用的熵译码的形式,因为其能够将符号映射到非整数长度码字。CABAC译码可应用于某些信息且对于其它信息被绕过。
[0063] 视频解码器30执行视频编码器20的过程的反向过程以对块进行解码。例如,视频解码器30根据从比特流接收的系数数据来确定TU,且从来自比特流的运动向量信息或帧内译码模式信息识别预测值。视频解码器30随后将预测值叠加到TU以产生块。
[0064] 如上文所描述,视频编码器20和视频解码器30可以经配置以实施本发明中描述的实例解块滤波技术。举例来说,视频译码器(例如,视频编码器20或视频解码器30)可以沿着块边界执行解块滤波以去除块假象。块假象是指其中观看者可以看见视频块的边界的视频内容缺陷。解块滤波平滑接近于边界的像素的像素值,使得观看者不能察觉到视频块(即,在视频内容中不存在从一个块到另一个块的突然变化)。
[0065] 然而,解块滤波也不应过度平滑视频内容,因为此过度平滑降低视觉质量。此外,在某些情况下,视频内容自身可能包含突然的变化,且解块滤波不应过度平滑此类变化。举例来说,对于实际图像边缘(例如,作为说明性实例,在白色背景上形成有黑色前景对象的边缘),解块滤波不应平滑此类实际图像边缘。
[0066] 当前,HEVC标准使用较大的块大小变换(例如,相对较大的TU大小),所述较大的块大小变换可能造成沿着块边界的相当大的块假象。HEVC包含环路内解块滤波方案,其具有强滤波方法。然而,已经注意到,当块大小较大时,处置严重块假象的效率较低。
[0067] 为解决此问题,已经对HEVC作出许多提议。在Z.史(Z.Shi)、X.孙(X.Sun)以及J.许(J.Xu)的“CE12,子集1:较大大小的块的解块报告(CE12,Subset 1:Report of deblocking for large size blocks)”(ITU-T SG16WP3和ISO/IEC JTC1/SC29/WG11,文件JCTVC-G409,2011年11月)中,提出用于使更大变换块的边界变平滑的更长滤波器。在以下文件中,针对大变换块(例如,TU)大小来调整解块滤波参数:G.凡·德·乌拉(G.Van der Auwera)、R.乔希(R.Joshi)以及M.卡茨威兹(M.Karczewicz)的“非CE1:大块假象的解块(Non-CE1:
Deblocking of Large Block Artifacts)”,ITU-T SG16WP3和ISO/IEC JTC1/SC29/WG11,文件JCTVC-K138,2012年10月;S.陆(S.Lu)、O.中上(O.Nakagami)以及T.铃木(T.Suzuki)的“CE1:在解块滤波器上(CE1:On deblocking filter)”,ITU-T SG16WP3和ISO/IEC JTC1/SC29/WG11,文件JCTVC-K149,2012年10月;S.陆(S.Lu)、O.中上(O.Nakagami)以及T.铃木(T.Suzuki)的“非CE1:解块滤波器的简单改进(NonCE1:Simple improvement of Deblocking filter)”,ITU-T SG16WP3和ISO/IEC JTC1/SC29/WG11,文件JCTVC-K150,2012年10月;以及D.-K.权(D.-K.Kwon)和M.布达加威(M.Budagavi)的“非CE1:在大TU边界处的块假象的抑制(Non-CE1:Suppression of blocking artifacts at large TU boundaries)”,ITU-T SG16WP3和ISO/IEC JTC1/SC29/WG11,文件JCTVC-K269,2012年10月。
这些技术可以帮助减弱沿着较大变换块的边界的块假象。然而,并未在HEVC中做出改变。
[0068] 在谷歌VP9中,在A.格兰杰(A.Grange)和H.艾尔维斯特兰德(H.Alvestrand)的“A VP9比特流概述(A VP9Bitstream Overview)”(网络工作组,IETF,2013年2月)中,使用长滤波器来减少块假象,这类似于“CE12,子集1:较大大小的块的解块报告(CE12,Subset 1:Report of deblocking for large size blocks)”。“CE12,子集1:较大大小的块的解块报告(CE12,Subset 1:Report of deblocking for large size blocks)”和“非CE1:在大TU边界处的块假象的抑制(Non-CE1:Suppression of blocking artifacts at large TU boundaries)”都可以减少沿着大变换块的边界的块假象。然而,这些技术需要沿着块边界访问许多像素,这增加计算和实施复杂性。并且,这些技术中的滤波器是非常强的低通滤波器,所述低通滤波器可执行过度平滑,从而引起视觉质量下降。另一方面,通过修改解块滤波器参数(如在“非CE1:大块假象的解块(Non-CE1:Deblocking of Large Block Artifacts)”、“CE1:在解块滤波器上(CE1:On deblocking filter)”、“非CE1:解块滤波器的简单改进(NonCE1:Simple improvement of Deblocking filter)”以及“非CE1:在大TU边界处的块假象的抑制(Non-CE1:Suppression of blocking artifacts at large TU boundaries)”)实现的性能可能受限制,因为沿着边界修改的像素的数目不够多,且在一些情况下,这些方法可能造成实际图像边缘的平滑,这降低视觉质量。
[0069] 本发明中所描述的实例技术可以解决上文针对解块滤波所描述的问题中的一或多者。例如,本发明描述用以减少块假象的新滤波器设计。本发明中描述的技术通过在根据像素距离(例如,经界定的像素距离)进行滤波之前保留像素值来改进视觉质量。与上文所描述的其它技术(例如在“CE12,子集1:较大大小的块的解块报告(CE12,Subset 1:Report of deblocking for large size blocks)”和“非CE1:在大TU边界处的块假象的抑制(Non-CE1:Suppression of blocking artifacts at large TU boundaries)”中所描述的技术)中的至少一些(如果不是全部)相比,本发明中描述的技术还需要较少数目的像素,这促进处理和实施。
[0070] 在一些实例中,视频编码器20可以作为被编码的块的重构的部分执行解块滤波。举例来说,如上文所描述,视频编码器20确定TU,所述TU包含残余数据。TU随后经变换和量化。另外,视频编码器20反量化且反变换所述块以重构TU。视频编码器20将预测值叠加到经重构TU以产生经重构块。在本发明中描述的技术中,视频编码器20可以利用本发明中描述的技术对经重构块进行解块滤波,以产生经滤波的经重构块,视频编码器20将所述经滤波的经重构块存储在经解码图片缓冲器(DPB)中,使得所述块可以用于后一块的帧间或帧内预测编码。
[0071] 视频解码器30可以作为产生块的部分执行解块滤波。举例来说,视频解码器30接收块的系数、反量化且反变换块以重构TU。视频解码器30将预测值叠加到经重构TU以产生经重构块。视频解码器30可以利用本发明中描述的技术对经重构块进行解块滤波,以产生经滤波的经重构块,视频解码器30将所述经滤波的经重构块存储在其DPB中,使得所述块可以用于后一块的帧间或帧内预测解码且用于输出经解码视频以供显示。
[0072] 在本发明中描述的技术中,视频译码器(例如,视频编码器20或视频解码器30)可以确定从第一块的第一像素到所述第一块与第二块之间的边界的几何距离。视频译码器可以基于第二像素的像素值和第三像素的像素值来确定像素值差。视频译码器可以基于几何距离和像素值差来确定对第一像素的像素值进行解块滤波的量,且基于解块滤波的量来对第一像素的像素值进行解块滤波。解块滤波技术的实例与图4中所说明的实例一起提供。
[0073] 图4是说明像素值相对于跨越块边界的像素位置的实例的概念图。举例来说,图4说明块84A和块84B。图4说明一个实例,其中“|”是块84A和块84B之间的块边界86。块边界86可以是两个相邻TU之间的边界,但在一些实例中可以是两个相邻PU之间的边界。在其中边界86是两个TU之间的边界的实例中,块84A和块84B可以都是TU。在其中边界86是两个PU之间的边界的实例中,块84A和块84B可以都是PU。
[0074] 边界86可以是水平的块边界或竖直的块边界。出于实例的目的,边界86说明为竖直块边界。然而,所述实例技术同样适用于其中边界为水平的情况。
[0075] 块84B可以是被译码(例如,编码或解码)的当前块,且块84A可以是先前经译码块。例如,块84A可以存储在视频译码器的DPB中。在此实例中,块84B可以是在解块滤波之前的经重构块(例如,经重构TU加预测值)。
[0076] 并且,在此实例中,部分块84A可能已经解块滤波,但块84A的右端边界可能尚未经解块滤波(例如,像素p(0)到p(N-1))。举例来说,视频译码器可已用接近于在左侧与块84A相邻的块的右端边界的像素对接近于块84A的左端边界的像素进行解块滤波。视频译码器可已将所得块作为块84A存储在视频译码器的DPB中,且现在检索块84A以对接近于块84B的左端边界的像素(例如,像素q(0)到q(N-1))进行解块块滤波。类似地,当视频译码器对块84B右侧的块进行译码时,视频译码器对接近于块84B的右端边界的像素进行解块滤波。视频译码器可以基于块84B上方及下方的块来执行类似的解块滤波(例如,在边界是水平边界的情况下)。在一些实例中,作为解块的部分,视频译码器可以对块84A的像素p(0)到p(N-1)进行解块滤波,其中块84A的某一部分已经解块滤波;且对块84B的像素q(0)到q(N-1)进行解块滤波,其中块84B是被编码或解码的当前块。
[0077] 在图4中,块84A的像素是相应地具有像素值p(0)到P(N-1)的像素0到N-1,且块84B的像素是相应地具有像素值q(0)到q(N-1)的像素0到N-1。块中的像素的像素值可以是在亮度块中的像素的亮度值,或在色度块中的一者中的像素的色度值中的一者。例如,在其中块84A是亮度块的实例中,p(0)到p(N-1)可以对应于像素的亮度值,或在其中块84A是色度块中的一者的实例中,p(0)到p(N-1)可以对应于像素的色度值中的一者。类似地,在其中块
84B是亮度块的实例中,q(0)到q(N-1)可以对应于像素的亮度值,或在其中块84B是色度块中的一者的实例中,q(0)到q(N-1)可以对应于像素的色度值中的一者。
[0078] 具有像素值p(0)到p(N-1)的像素可以在同一行中,且具有像素值q(0)到q(N-1)的像素可以在同一行中,且与具有像素值p(0)到p(N-1)的像素在同一行中。变量“N”指示待解块滤波的像素的数目(即,块84A中的N-1个像素和块84B中的N-1个像素)。
[0079] 如图4中所说明,具有像素值p(0)到p(N-1)的像素全都接近于边界86,且逐渐地远离边界86。例如,块84A的具有像素值p(0)的像素最靠近边界86,且块84A的具有像素值p(1)的像素第二靠近,且块84A的具有像素值p(N-1)的像素最远离边界86。同样地,具有像素值q(0)到q(N-1)的像素全都接近于边界86,且逐渐地远离边界86。例如,块84B的具有像素值q(0)的像素最靠近边界86,且块84B的具有像素值q(1)的像素第二靠近,且块84B的具有像素值q(N-1)的像素最远离边界86。并且,具有像素值p(0)的像素和具有像素值q(0)的像素可以与边界86等距,具有像素值p(1)的像素和具有像素值q(1)的像素可以与边界86等距,等等。
[0080] 更一般地说,具有像素值p(i)的像素与边界86之间的距离等于具有像素值q(i)的像素与边界86之间的距离。换句话说,假设p(i)和q(i)指示在块边界86的每一侧处在位置i处的像素值,其中对于最接近边界86的像素i为0,且i随着位置远离边界86而增加。
[0081] 如图4中所说明,在像素值p(0)和q(0)之间存在突然的变化,所述像素值p(0)和q(0)相应地为在块84A和块84B中的最接近像素的像素值。像素值p(0)和q(0)之间的突然变化可能造成块84A和块84B之间的块假象。此类块假象造成视频内容的视觉质量的降低。本发明中描述的解块滤波技术可以计算高效的方式减少此类块假象,而不执行降低视觉质量的过度平滑。
[0082] 一般来说,视频译码器基于至少两个像素之间的像素值差和几何距离来确定对像素的像素值进行解块滤波的量。在本发明中,术语“像素距离”被界定为对像素的像素值进行解块滤波的量,且是像素值差和几何距离的函数。
[0083] 例如,像素距离l(例如,用于确定解块滤波的量的值)被界定为l(i)=f(n(i),d(i)),其中n指示待修改(例如,待解块滤波)的像素与块边界(例如,边界86)的位置之间的几何距离,且d指示像素值与块边界86之间像素值距离(例如,差值)。在一些实例中,l(i)的值等于对像素的像素值进行解块滤波的量。在一些实例中,l(i)的值可以经进一步修改以确定对像素的像素值进行解块滤波的量。
[0084] 在一些实例中,视频译码器可以基于某一像素与边界86之间的像素的数目来确定所述像素的几何距离。作为一个实例,几何距离n可以根据待修改(例如,待解块滤波)的像素与块边界86之间的像素的数目来设定。例如,对于p(0)和q(0),n是0;且对于p(1)和q(1),n是1,等等。这意味着等式:n(i)=i,i=0...N-1,其中i是像素索引。
[0085] 在以上实例中,忽略p(0)和q(0)之间的距离(即,所述距离设定为0)。几何距离n可以考虑p(0)和q(0)之间的距离来设定(即,在其中具有像素值p(0)的像素和具有像素值q(0)的像素与边界86之间的距离不为零的实例中)。例如,对于p(0)和q(0),将n设定为0.5。随后,对于p(1)和q(1),n是1.5,且对于p(2)和q(2),n是2.5等等。因此,即使是在此实例中,像素的几何距离也是基于像素和边界86之间的像素的数目。这意味着等式:n(i)=(2×i+
1)/2。
[0086] 上文描述确定待解块滤波的像素到边界86的几何距离所用的实例方式。可能存在用以确定像素到边界86的几何距离的其它方式。举例来说,出于说明的目的提供具有距边界86 0单位或0.5单位的像素值p(0)和q(0)的像素。具有像素值p(0)和q(0)的像素与边界86之间的距离可以不同于0或0.5。
[0087] 下文描述用以确定像素值差的实例方式。在一些实例中,像素值差可以在待解块滤波的像素与另一像素之间。然而,所述技术并不限于此。在一些实例中,像素值差可以在两个像素之间,这两个像素都不是待解块滤波的像素。
[0088] 视频译码器通过从一个像素值减去另一个像素值来将两个像素值p(i)和q(j)之间的像素值差计算为q(j)-p(i)。像素值距离d可以通过考虑像素p(N-1)p(N-2)…p(1)p(0)以及q(0)q(1)…q(N-2)q(N-1)中的全部或部分之间的像素值差来计算。
[0089] 作为一个实例,在位置i处的d,即d(i)可以设定为:d(i)=q(0)-p(0),或d(i)=(q(0)-p(0))/2。在此情况下,对于所有像素位置,d(i)相同。例如,视频译码器可以基于块84A的最靠近边界86的像素的像素值(例如,p(0))和块84B的最靠近边界86的像素的像素值(例如,q(0))来确定像素值差。
[0090] 在此实例中,视频译码器确定像素值差,但所述像素值差可以并非基于待解块滤波的像素。举例来说,假设将对具有像素值p(1)的像素(即,在最靠近边界86的像素之后的像素)进行解块滤波。在此实例中,具有像素值p(1)的像素的像素值差是基于q(0)和p(0)的像素值差。在此实例中,视频译码器确定两个像素之间的像素值差,其中所述像素值都未必是被滤波的像素的像素值;且将所述结果除以二以确定用于确定对像素值进行解块滤波的量的像素值差。
[0091] 并且,在此实例中,对于像素值差,像素中的一者来自块84A(具有像素值p(0)的像素),而另一个像素来自块84B(具有像素值q(0)的像素)。此外,在此实例中,尽管视频译码器可以不将待滤波的像素用于确定像素值差,但视频译码器可以将待滤波的像素用于确定几何距离(例如,使用上文所描述的关于n(i)的等式中的一者)。
[0092] 作为另一个实例,可以根据像素位置改变d。例如,可以针对在位置i处的每一像素将d(i)设定为d(i)=q(i)-p(i)或d(i)=((q(i)-p(i))/2。例如,视频译码器可以基于块84A中的像素的像素值和块84B中的像素的像素值来确定像素值差,其中在相应块84A和84B中的像素与边界86等距。换句话说,块84A中具有像素值p(i)的像素与块84B中具有像素值q(i)的像素与边界86等距。
[0093] 在此实例中,视频译码器确定像素值差,且所述像素值差是基于待解块滤波的像素。举例来说,假设将对具有像素值p(1)的像素(即,在最靠近边界86的像素之后的像素)进行解块滤波。在此实例中,具有像素值p(1)的像素的像素值差是基于q(1)和p(1)的像素值差。在此实例中,视频译码器确定两个像素之间的像素值差,其中所述像素值中的一者是被滤波的像素的像素值;且将所述结果除以二以确定用于确定对像素值进行解块滤波的量的像素值差。
[0094] 如上所述,在此实例中,对于像素值差,像素中的一者来自块84A(具有像素值p(i)的像素),而另一个像素来自块84B(具有像素值q(i)的像素),但用于确定像素值差的像素中的至少一者是待解块滤波的像素(例如,将对具有像素值p(i)的像素和具有像素值q(i)的像素进行解块滤波)。并且,基于待滤波的像素到边界86的距离来确定几何距离。
[0095] 在另一实例中,d(i)可以设定为d(i)=q(0)-p(i),d(i)=q(i)-p(0),(q(0)-p(i))/2,或d(i)=(q(i)-p(0))/2。在此实例中,视频译码器基于待滤波的像素的像素值(例如,p(i)或q(i))以及在另一个块中最靠近边界86的像素的像素值来确定像素值差。举例来说,块84A中的第i个像素的像素值差是基于p(i)和q(0),其中q(0)是最靠近边界86并在块84B中的像素的像素值。
[0096] 作为另一个实例,在位置i处的d,即d(i)可以使用相邻像素计算为d_p(i)=p(i+1)-p(i-1)或(p(i+1)-p(i-1))/2,以及d_q(i)=q(i+1)-q(i-1)或(q(i+1)-q(i-1))/2。在此情况下,p(-1)可以相应地设定为q(0)且q(-1)可以相应地设定为p(0)。在此实例中,视频译码器基于与待解块滤波的像素相邻的像素的像素值来确定像素值差。换句话说,视频译码器基于待解块滤波的像素的第一相邻像素和待解块滤波的像素的第二相邻像素来确定像素值差。两个相邻像素可以在同一行或列中。视频译码器可以不使用待解块滤波的实际像素的像素值,但利用待解块滤波的实际像素的像素值可以是可能的。
[0097] 并且,相邻像素可以与待解块滤波的像素在同一块中,除位于最靠近边界86处的像素以外。例如,假设将对具有像素值p(0)的像素进行解块滤波。具有像素值p(0)的像素的相邻像素是p(1)和q(0)。具有像素值p(1)的像素与具有像素值p(0)的像素在同一块(例如,块84A)中,但具有像素值q(0)的像素在不同的块(例如,块84B)中。
[0098] 在一些实例中,d可以通过组合多个像素值差而计算为加权和。例如,d(i)=Σj w(j)×d(j),其中Σj w(j)=1,j=0…N-1。在此实例中,像素值差是基于多个像素的像素值的像素值差的加权。在一些实例中,像素值差是基于所有待解块滤波的像素的像素值的像素值差的加权,例如在q(j)-p(j)等于d(j)的情况下。一般来说,d(j)的等式可以是上述d(i)的实例等式中的任一者的等式。
[0099] 在此实例中,视频译码器可以确定至少所述像素值差的加权(例如,针对d(j)的至少一个实例的加权,其中d(j)的等式等于上述d(i)的等式中的任一者)。在一些实例中,视频译码器可以确定像素值差中的每一者的加权(例如,d(j)的每一实例的加权)。Σj w(j)=1,j=0...N-1的加权等式是加权等式的一个实例,且视频译码器可以利用其它技术来确定像素值差的加权(即,d(j))。
[0100] 利用像素值差(例如,d(i))和待滤波的像素到边界86(例如,n(i))的几何距离,视频译码器可以确定对所述像素进行解块滤波的量(即,像素距离可以通过组合d(i)和n(i)而形成)。例如,l(i)可以通过将两项相乘来计算。视频译码器可以用以确定解块滤波的量的一个实例方式是:l(i)=d(i)×(N-n(i))/N。换句话说,视频译码器可以基于像素值差、像素距边界的几何距离以及(在一些实例中)待解块滤波的像素的数目(例如,N)来确定对像素的像素值进行解块滤波的量。
[0101] 视频译码器可以基于以下等式对像素值进行滤波(即,随后修改每一像素值):p'(i)=g1(l,p(i)),以及q'(i)=g2(l,q(i))。作为函数g1和g2的实例,视频译码器可以执行以下等式:p'(i)=p(i)+l(i),以及q'(i)=q(i)-l(i)。在这些等式中,p'(i)表示块84A中的第i个像素的经解块滤波像素值,且q'(i)表示块84B中的第i个像素的经解块滤波值。
[0102] 然而,在一些情况下,如果l(i)是正值,那么p'(i)有可能大于最大允许像素值,或q'(i)有可能小于最小容许像素值。如果l(i)是负值,那么p'(i)有可能小于最小容许像素值,且q'(i)有可能大于最大允许像素值。例如,最小像素值可以是0,且最大像素值可以是255。
[0103] 在一些实例中,为确保经解块滤波像素的像素值小于或等于最大允许像素值且大于或等于最小容许像素值,视频译码器可以执行以下等式(所述等式是g1和g2函数的额外实例):p'(i)=clip(Min,Max,p(i)+l(i)),以及q'(i)=clip(Min,Max,q(i)-l(i)),其中Min和Max表示最小和最大像素取样值。以此方式,如果p(i)+l(i)大于最大值或小于最小值,那么视频译码器相应地将经解块滤波像素的像素值削减至Max或Min。类似地,如果q(i)-l(i)大于最大值或小于最小值,那么视频译码器相应地将经解块滤波像素的像素值削减至Max或Min。
[0104] 此外,在一些实例中,有可能限制对像素的像素值进行解块滤波的量。举例来说,在HEVC下的解块滤波过程中,可修改像素值(例如,对像素的像素值进行滤波的量)受到限制且可以用信号发送用以设定所述限制的阈值。以相同的方式,l(i)可以使用阈值来削减。例如,视频编码器20可以用信号发送最大允许调整阈值(即,l(i)的绝对值小于或等于最大允许调整阈值),且视频解码器30可以接收此阈值。在一些实例中,HEVC解块滤波器的阈值可以通过使用常数值缩放它来使用,或可以在比特流中用信号发送单独值以确定最大允许调整阈值。应理解,限制可以修改的像素值(例如,对其进行滤波)的量在每一实例中不是必需的。
[0105] 以此方式,视频译码器可以基于像素到边界的像素距离(即,其中像素距离是基于像素值差和到块的边界的几何距离)来确定对像素的像素值进行解块滤波的量。例如,l(i)是作为像素到边界的距离的函数的值。在一些实例中,l(i)可以被认为是偏移值。在一些实例中,像素(n)的数目等于至少八。
[0106] 在一些实例中,对于较靠近边界的像素,l(i)可以较大,且对于较远离边界的像素,l(i)可以较小。举例来说,l(i)的等式的一个实例是d(i)x(N-n(i))/N。对于较远离边界86的像素,n(i)的值可以较大,且对于较靠近边界86的像素,n(i)的值可以较低。因此,对于远离边界86的像素,N-n(i)的值较小,且对于较靠近边界86的像素,N-n(i)的值较大。因此,对于较靠近边界86的像素,l(i)较大,且对于较远离边界86的像素,l(i)较小。
[0107] 以上描述提供视频译码器(例如,视频编码器20或视频解码器30)用以执行解块滤波(有时也称为长滤波过程)的方式的实例。然而,视频译码器可以并不在所有实例中执行解块滤波。下文描述调用长滤波过程时的情况(例如,视频译码器执行本发明中描述的解块滤波技术的实例)。
[0108] 举例来说,视频译码器可以仅对平滑区域应用长滤波器,使得具有锐边缘或纹理的区域不会被解块滤波器过度平滑。如上文所描述,通过解块滤波技术执行的平滑引起在边界的相反侧上的像素值改变的量的减少。然而,视频内容可以使得在视频内容中存在边缘。平滑(例如,过度平滑)这些边缘可能不利地影响视觉质量。
[0109] 例如,在视频块中,当在两个相邻像素的像素值中存在突然的改变时(作为一个实例,例如在某一块内黑色部分与白色部分相邻,但也存在程度较轻的边缘实例),边缘可出现,且平滑此类部分可降低视觉质量。在此实例中,如果解块滤波应用于其中块部分过渡到白色部分的部分,那么结果将是在边缘处的灰化(例如,过度平滑),从而造成视频质量的降低。因此,可能有益的是,不在其中存在急剧变化的自然边缘的部分(例如,其中视频内容自身包含像素值的突然变化的部分)中应用解块滤波技术,且在其中不存在急剧变化的自然边缘的部分(例如,相对较平滑的视频内容,使得去除添加为视频译码的部分的块假象而非视频内容自身)中应用解块滤波技术。
[0110] 在一些实例中,视频译码器可以通过梯度确定局部区域的平滑度。基于从梯度所确定的平滑度的结果,视频译码器可以执行解块滤波器。
[0111] 例如,对于具有X个像素的解块边界,假设在应用长滤波器时处理在边界的每一侧的X×M个像素。举例来说,如图4中所说明,对于边界86,X是指沿着边界86的竖直像素的数目,且M是指待解块滤波的水平像素的数目。对于水平边界,X将指代沿着水平边界的水平像素的数目,且M是指待解块滤波的竖直像素的数目。在针对梯度计算的以下描述中,变量“M”可被视为与上述变量“N”相同,其中N指示块中待解块滤波的像素的数目。
[0112] 在一些实例中,视频译码器可以确定在解块边界的每一侧(例如,边界86的每一侧)处的X×M'(M'大于或等于M)个像素区域的梯度,以确定是否应用长滤波器。基于确定解块边界的两侧的梯度都小于阈值梯度值,视频译码器可以应用长滤波器(即,本发明中描述的解块滤波技术的一或多个实例)。否则,视频译码器可以不应用长滤波器。以此方式,长滤波过程(例如,本发明中所描述的解块滤波过程)可以被认为是第一类型的滤波,而例如在上文引用的文件或HEVC标准中描述的技术等其它解块滤波技术中的任一者可以被认为是第二类型的滤波。在一些实例中,视频译码器可以基于相邻像素来确定梯度,且将所述梯度与阈值梯度值进行比较。在这些实例中,视频译码器可以基于所述比较来执行第一类型的滤波或第二类型的滤波。
[0113] 为减少计算复杂性,视频译码器可以选择仅部分像素来计算X×M'个像素的梯度。举例来说,可以基于两个连续像素之间的差值来计算梯度。然而,视频译码器可以使用多个像素(例如,或块中的所有像素)来确定梯度。举例来说,可以对平面进行建模且可以使用块中的像素来估计其斜率。
[0114] 作为实例,如下将交错的像素用于计算梯度:假设P(i,j),其中i=0,1,2…X-1,j=0,1,2…M'-1,指示在一个X×M'块中的像素,且所述块的梯度被计算为:gradientH=∑i,jabs(P(i,j)-P(i,min(M'-1,j+1))),其中i=0…X-1,j=0…M'-1,gradientV=∑i,jabs(P(i,j)-P(min(i+1,X-1),j))),其中i=0…X-1,j=0…M'-1,以及梯度=gradientH+gradientV。在此实例中,基于视频译码器确定梯度小于阈值,视频译码器可以执行本发明中描述的解块滤波技术。并且,基于视频译码器确定梯度大于阈值,视频译码器可以执行例如在HEVC标准中的滤波技术等滤波技术。
[0115] 在以上实例中,对于水平或竖直解块边界,考虑到视频译码器利用的水平和竖直梯度两者(例如,水平和竖直梯度两者)。在一些实例中,对于某一边界,视频译码器可以确定一个方向的梯度而无其它方向,并且考虑所述梯度(例如,当对水平边界进行滤波时使用竖直梯度且当对竖直边界进行滤波时使用水平梯度)。
[0116] 为计算梯度的计算量,视频译码器可以对X×M'区域进行子取样以计算梯度。例如,水平和竖直梯度可以被计算为:gradientH=∑i,jabs(P(i,j)-P(i,min(M'-1,j+1))),其中(i=0,2,4…X-2,j=0,2,4…M'-2)以及(i=1,3,5…X-1,j=1,3,5…M'-1),且gradientV=∑i,jabs(P(i,j)-P(min(i+1,X-1),j))),其中(i=0,2,4…N-2,j=0,2,4…M'-2)以及(i=1,3,5…X-1,j=1,3,5…M'-1)。
[0117] 在以上实例中,视频译码器确定包含块中待滤波的所有像素的X×M'区域的梯度值(即,注意,在以上实例中,对每一X×M'区域计算一个梯度值)。在一些实例中,每一区域都可以分割,且视频译码器可以确定(例如,计算)每一区域中的多个梯度以控制每一分区的滤波。作为实例,分区可以是X×M'的区域中的行。在以下实例中,将区域分段成每一行,其中视频译码器将在位置i处的水平梯度确定为:gradientH(i)=∑jabs(P(i,j)-P(i,min(M'-1,j+1)))(如果边界是竖直的),且将在位置j处的竖直梯度确定为:gradientV(j)=∑iabs(P(i,j)-P(min(i+1,X-1),j)))(如果边界是水平的)。随后,视频译码器可以通过gradientH(i)控制在竖直位置i处的像素的滤波,且在水平位置j处的像素的滤波可以通过gradientV(j)控制。
[0118] 在一些实例中,视频译码器也可能通过使用在每一像素位置处的梯度来控制每一像素的滤波。例如,如果视频译码器确定在某一像素位置处的梯度高于阈值,那么此位置可以被认为是真正的图像边缘,且视频译码器将避免对此像素进行滤波(或至少不使用本发明中描述的技术来对所述像素进行滤波)。
[0119] 此外,在一些实例中,视频译码器可以组合在所述块(例如,X×M')处的梯度确定、区段或行分区或像素以确定是否对像素进行解块滤波。换句话说,在以上实例中,块级、区段或行级以及像素级控制可以组合在一起以做出滤波决定。
[0120] 在一些实例中,视频译码器确定梯度并将所述梯度与阈值梯度比较。基于所述比较,视频译码器使用本发明中描述的技术来对像素的像素值进行解块滤波、使用其它技术来对像素的像素值进行解块滤波,或不对像素值进行解块滤波。例如,如果梯度小于阈值梯度,那么视频译码器可以使用本发明中描述的技术对像素的像素值进行解块滤波;否则,视频译码器可以使用其它技术进行解块滤波或不进行解块滤波。
[0121] 视频编码器20可以在SPS、PPS或切片标头中用信号发送梯度值的阈值(例如,阈值梯度),且视频解码器30可以在SPS、PPS或切片标头中接收阈值梯度。在一些实例中,对于帧内切片和非帧内切片,可以单独地用信号发送阈值。用信号发送的阈值可以应用于其它平滑度度量,包含现有方法中提到的变量,例如在“CE12,子集1:较大大小的块的解块报告(CE12,Subset 1:Report of deblocking for large size blocks)”中提到的变量。在一些实例中,阈值可以是在编码器侧(视频编码器20)和解码器侧(视频解码器30)相同的常数值,因此可以避免用信号发送。
[0122] 对于每一水平和竖直滤波方向,视频译码器可以应用相同的阈值梯度值,或可以将不同的阈值用于每一滤波方向。如果阈值梯度值对于不同方向是不同的,那么对于每一方向,视频编码器20可以用信号发送单独的值,视频解码器30接收所述单独的值。作为另一个实例,视频编码器20可以用信号发送一个值,且以不同方式缩放所述值以产生每一方向的梯度阈值。
[0123] 在一些实例中,视频编码器20和视频解码器30可以取决于可用于视频编码器20和视频解码器30两者的信息来调整梯度阈值,所述信息例如变换块大小(例如,用于块的编码或解码的变换块的大小)、译码模式(例如,帧内或帧间预测译码)、运动向量、经重构像素值等。在一些实例中,视频编码器20可以针对一组情况用信号发送不同的阈值梯度值,所述阈值梯度值可以通过视频编码器20和视频解码器30都可用的信息选定。
[0124] 基于前述度量,视频译码器可以控制解块滤波。作为一个实例,当梯度大于阈值梯度时,视频译码器可以切断解块滤波。在一些实例中,取决于梯度值的范围,可以应用具有不同强度的滤波。例如,视频译码器可以利用梯度来调整l(i)的值(例如,按所确定的梯度缩放l(i)的值)。换句话说,有可能根据梯度来减小像素距离l(i),使得对于具有大梯度的区域,用小l(i)来减少修改的量,或当梯度不够小时,视频译码器可以应用较弱滤波器(例如,在HEVC中界定的滤波器)。
[0125] 一般来说,在一些实例中,视频译码器可以确定块的包含一或多个像素(将对其像素值进行解块滤波)的部分的梯度值,其中梯度值指示所述块的所述部分的平滑度(即,指示在所述块的所述部分中是否存在图像边缘)。所述块的所述部分可以是包含所述块的待解块滤波的所有像素的区域(例如,X×M'区域)。在确定梯度值时,视频译码器可以利用所述区域中的像素的子取样以确定梯度值(即,不需要一定将所述区域中的所有像素都用于梯度值确定)。
[0126] 所述块的所述部分可以是所述块的包含待解块滤波的像素的一维行。在此实例中,视频译码器可以在逐线基础上确定梯度值(例如,每一行的梯度值),且不需要一定将所述行中的所有像素都用于梯度值确定。所述块的所述部分有可能是每一待滤波的像素(例如,在逐像素基础上的每一像素的梯度值)。
[0127] 视频译码器可以比较梯度值与阈值梯度值,且基于所述比较执行本发明中描述的解块滤波技术。举例来说,如果梯度值小于阈值梯度值,那么视频译码器可以执行如本发明中所描述的解块滤波技术,且如果梯度值大于阈值梯度值,那么视频译码器可以执行某一其它类型的解块滤波或可以不执行解块滤波。
[0128] 此外,在一些实例中,视频编码器20和视频解码器30都可能不需要确定梯度值。举例来说,视频编码器20可以确定梯度值,且确定是否执行如本发明中所描述的解块滤波。视频编码器20可以用信号发送语法元素(例如,旗标),其指示是否将使用本发明中描述的技术对块进行解块滤波。在此类情况下,视频解码器30可能不需要确定梯度值或基于梯度值确定是否执行如本发明中所描述的解块滤波。以此方式,视频解码器30可能不需要确定梯度值,所述梯度值有可能是计算上复杂的过程。
[0129] 然而,为了带宽效率,在一些实例中,视频解码器30可以执行梯度值计算且基于所确定的梯度值来确定是否执行本发明中描述的解块滤波技术。以此方式,将不需要指示是否执行本发明中描述的解块滤波技术的额外的语法元素,因为视频解码器30将做出此确定。
[0130] 上文描述一个实例,视频译码器可以利用所述实例来确定是否执行本发明中描述的解块滤波技术。然而,基于梯度值确定是否执行本发明中所描述的解块滤波是一个实例。下文描述所述滤波器如何结合现有HEVC解块滤波器来应用的额外实例。
[0131] 在一些实例中,当满足下文描述的实例条件中的一或多者时,视频译码器可以应用本发明中描述的解块滤波技术。否则,可以应用在其它提议(例如,HEVC规范)中界定的解块滤波过程。
[0132] 并且,在以下实例中,除了以下条件之外,视频译码器还可以使用梯度值确定来确定是否执行本发明中描述的解块滤波技术。例如,即使以下条件都不为真,但来自TU边界的两个8×8块的梯度小于某一阈值,视频译码器也可以执行本发明中描述的解块滤波技术。
[0133] 在一些实例中,视频译码器可以确定两个邻近(例如,相邻)TU的大小。同意,TU是通过视频编码器20变换和量化且通过视频解码器30反量化和反变换的块。应注意,在一些情况下,可以跳过块的变换和/或量化。对于TU,存在亮度分量的变换块、第一色度分量的变换块以及第二色度分量的变换块。在本发明中,TU的大小是指变换块的大小,所述变换块可以是亮度分量或任一色度分量的变换块。例如,视频译码器可以针对亮度分量和两个色度分量的块执行解块滤波技术。对于所述分量中的一或多者,视频译码器可以确定两个邻近变换块的大小。
[0134] 基于确定两个邻近TU(例如,所述分量中的一者的变换块)之间的较大变换大小等于最大允许变换块大小(例如,MaxTrafoSize),视频译码器可以执行本发明中描述的解块滤波技术。在一些实例中,最大允许变换块大小是32×32。
[0135] 在一些实例中,除了块中的一者等于最大允许变换块大小之外,视频译码器还可以确定相关的CU是否经帧内译码(帧内预测译码)或经帧间译码(帧间预测译码)。所述CU是经译码的块,且TU是所述块的一部分。
[0136] 如果视频译码器确定相关CU经帧内译码,那么邻近TU中的一者是最大允许变换块大小。视频译码器利用本发明中描述的技术对像素值进行解块滤波。如果视频译码器确定相关CU未经帧内译码,但CU的分区大小是2N×2N且TU的cbf等于1(跳过TU的变换),则视频译码器可以执行本发明中描述的解块滤波技术。
[0137] 在另一实例中,以下条件中的任一者或两者可以添加在上述两个条件顶部上。举例来说,如果最大变换单元大小(MaxTrafoSize)大于或等于16×16,那么视频译码器可以经配置以执行本发明中描述的解块滤波技术。
[0138] 并且,上述条件中的一者是基于邻近TU中的一者的大小是否等于最大允许TU大小。下文是基于邻近TU中的较小者的大小是否大于或等于特定大小的条件的实例。例如,如果视频译码器确定两个TU之间的较小变换大小大于或等于16×16,那么视频译码器可以执行本发明中描述的解块滤波技术。例如,如果相关CU经帧内译码,且两个TU之间的较小变换大小大于或等于16×16,那么视频译码器可以执行本发明中描述的解块滤波技术。作为另一个实例,如果相关CU未经帧内译码且CU的分区大小是2N×2N,且两个TU之间的较小变换大小大于或等于16×16,那么视频译码器可以执行本发明中描述的解块滤波技术。
[0139] 应理解,上述用于应用解块滤波技术的实例条件仅出于说明的目的提供。可能存在其它条件,视频译码器可以评估所述条件以确定是否执行本发明中描述的解块滤波技术。
[0140] 图2是说明可以使用如本发明中所描述的技术的视频编码器20的实例的方块图。出于说明的目的将在HEVC译码的背景下描述视频编码器20,但本发明关于利用解块滤波的其它译码标准或方法无限制性。视频编码器20可以对视频帧内的CU执行帧内和帧间译码。
帧内译码依赖于空间预测来减少或去除给定视频帧内的视频数据中的空间冗余。帧间译码依赖于时间预测来减少或去除视频序列的当前帧与先前经译码帧之间的时间冗余。帧内模式(I模式)可指若干基于空间的视频压缩模式中的任一者。例如单向预测(P模式)或双向预测(B模式)等帧间模式可以指若干基于时间的视频压缩模式中的任一者。
[0141] 如图2中所示,视频数据存储器39接收用于对视频帧内的当前视频块进行编码的视频数据。视频数据存储器39可存储待由视频编码器20的组件进行编码的视频数据(例如,经配置以存储视频数据)。存储在视频数据存储器39中的视频数据可以例如从视频源18获得。经解码图片缓冲器(DPB)64(也称为参考图片缓冲器或参考帧缓冲器)是存储参考视频数据以供视频编码器20在对视频数据进行编码(例如,在也称为帧内或帧间预测译码模式的帧内或帧间译码模式中)时使用的缓冲器的一个实例。视频数据存储器39和DPB 64可由多种存储器装置中的任一者形成,例如包含同步DRAM(SDRAM)的动态随机存取存储器(DRAM)、磁阻式RAM(MRAM)、电阻式RAM(RRAM),或其它类型的存储器装置。视频数据存储器39和DPB 64可由同一存储器装置或单独的存储器装置提供。在各种实例中,视频数据存储器39可与视频编码器20的其它组件一起在芯片上,或相对于那些组件在芯片外。
[0142] 在图2的实例中,视频编码器20包含运动补偿单元44、运动估计单元42、帧内预测处理单元46、经解码图片缓冲器(DPB)64、求和器50、变换处理单元52、量化单元54以及熵编码单元56。图2中所说明的变换处理单元52是对残余数据块应用实际变换或变换的组合的单元,且不应与变换系数块混淆,所述变换系数块还可以被称作CU的变换单元(TU)。为进行视频块重构,视频编码器20还包含反量化单元58、反变换处理单元60及求和器62。
[0143] 解块滤波器63可以对块边界进行解块滤波以从经重构视频去除方块效应假象。在一些实例中,解块滤波器63可以经配置以实施本发明中所描述的实例技术,且结合视频编码器20的其它单元来实施。例如,单独地或结合视频编码器20的其它单元,解块滤波器63可以确定从第一块的第一像素到所述第一块与第二块之间的边界的几何距离;基于第二像素的像素值和第三像素的像素值来确定像素值差;基于几何距离和像素值差来确定对第一像素的像素值进行解块滤波的量;且基于解块滤波的量来对第一像素的像素值进行解块滤波。
[0144] 尽管图2中未说明,但视频编码器20可以包含样本自适应偏移(SAO)滤波器和/或自适应环路滤波器(ALF)。SAO滤波器和/或ALF滤波器可以位于解块滤波器63之前或位于解块滤波器63之后。当解块滤波器63经配置以减少相邻块之间的成块效应时,SAO滤波器和/或ALF滤波器可以经配置以执行其它类型的滤波,使得视频内容呈现为与原始视频内容相同,或以便增加视频译码效率。解块滤波器63可能未必(但有可能)应用滤波以修改像素值,使得经重构块与原始块更相似。确切地说,解块滤波器63去除成块效应。并且,SAO和ALF滤波器可以仅基于同一块的视频数据,其中解块滤波器63利用来自不同块的视频数据。
[0145] 在编码过程期间,视频编码器20接收待译码的视频帧或切片。所述帧或片段可划分成多个视频块,例如,最大译码单元(LCU)。运动估计单元42及运动补偿单元44可相对于一或多个参考帧中的一或多个块执行所接收视频块的帧间预测性译码以提供时间压缩。帧内预测处理单元46可相对于在与待译码的块相同的帧或切片中的一或多个相邻块执行对所接收视频块的帧内预测译码以提供空间压缩。
[0146] 模式选择单元40可以例如基于每一模式的误差(即,失真)结果来选择译码模式(帧内或帧间)中的一者,且将所得经帧内或帧间预测块(例如,PU)提供到求和器50以产生残余块数据,并提供到求和器62以重构经编码块以用于参考帧。求和器62将经预测块与来自反变换处理单元60的用于所述块的经反量化、反变换的数据进行组合,以重构经编码块,如下文更详细地描述。一些视频帧可以被指定为I帧,其中I帧中的所有块都在帧内预测模式下编码。在一些情况下,帧内预测处理单元46可例如在运动估计单元42执行的运动搜索未产生对块的充分预测时执行P或B帧中的块的帧内预测编码。
[0147] 运动估计单元42及运动补偿单元44可以高度整合,但出于概念目的分别加以说明。运动估计(或运动搜索)为产生运动向量的过程,所述运动向量估计视频块的运动。例如,运动向量可以指示当前帧中的预测单元相对于参考帧的参考样本的位移。运动估计单元42通过比较预测单元与存储在DPB 64中的参考帧的参考样本来计算经帧间译码帧的预测单元的运动向量。参考样本可以是被发现就像素差而言紧密匹配CU的包含被译码的PU的部分的块,所述像素差可以通过绝对差总和(SAD)、平方差总和(SSD)或其它差值度量来确定。参考样本可出现在参考帧或参考切片内的任何地方,而未必出现在参考帧或切片的块(例如,译码单元)边界处。在一些实例中,参考样本可出现在分数像素位置处。
[0148] 为扩大运动估计单元42可以从其定位参考块的搜索空间,运动估计单元42可以对参考图片执行内插滤波。包含于参考图片中的像素被称作整数像素且位于整数像素位置处。作为执行内插滤波的部分,运动估计单元42可以将像素值内插在整数像素之间(即,计算新像素位置的新像素值)。这些内插像素被称作子像素或分数像素。为识别参考块,运动估计单元42可以搜索整数像素和分数像素两者以定位所希望的参考块。
[0149] 运动估计单元42将计算出的运动向量发送到熵编码单元56和运动补偿单元44。参考帧的通过运动向量识别的部分可以被称作参考样本。运动补偿单元44可以例如通过检索通过PU的运动向量识别的参考样本来计算当前CU的预测单元的预测值。
[0150] 帧内预测处理单元46可以对所接收块进行帧内预测,以作为通过运动估计单元42和运动补偿单元44执行的帧间预测的替代方案。帧内预测处理单元46可以相对于相邻的先前经译码块(例如,当前块的上方、右上方、左上方或左方的块,假设块的从左到右、从上到下的编码次序)来预测所接收块。帧内预测处理单元46可以配置有多种不同帧内预测模式。例如,基于被编码的CU的大小,帧内预测处理单元46可以配置有某一数目的方向预测模式,例如三十三个方向预测模式。
[0151] 帧内预测处理单元46可通过例如计算各种帧内预测模式的误差值且选择产生最低误差值的模式来选择帧内预测模式。方向预测模式可以包含用于组合空间相邻像素的值且对PU中的一或多个像素位置应用所述组合值的功能。一旦已计算PU中的所有像素位置的值,帧内预测处理单元46就可基于PU与待编码的所接收块之间的像素差来计算预测模式的误差值。帧内预测处理单元46可继续测试帧内预测模式,直到发现产生可接受的误差值的帧内预测模式为止。帧内预测处理单元46可随后将PU发送到求和器50。
[0152] 视频编码器20通过从正被译码的原始视频块减去通过运动补偿单元44或帧内预测处理单元46计算的预测数据来形成残余块。求和器50表示执行此减法运算的组件。残余块可对应于像素差值的二维矩阵,其中残余块中的值的数目与对应于所述残余块的PU中的像素的数目相同。残余块中的值可对应于PU中的相同位置像素与待译码的原始块中的相同位置像素之间的差,即误差。取决于经译码的块的类型,所述差值可为色度或亮度差。
[0153] 变换处理单元52可以从残余块形成一或多个TU。变换处理单元52从多个变换中选择变换。所述变换可基于例如块大小、译码模式或其类似者等一或多个译码特性来选定。变换处理单元52随后对TU应用选定变换,从而产生包括变换系数的二维阵列的视频块。
[0154] 变换处理单元52可以将所得变换系数发送到量化单元54。量化单元54可随后量化变换系数。熵编码单元56可随后根据扫描模式对矩阵中的经量化变换系数执行扫描。本发明将熵编码单元56描述为执行扫描。然而,应理解,在其它实例中,其它处理单元(例如量化单元54)可执行扫描。
[0155] 一旦将变换系数扫描为一维阵列,熵编码单元56就可对系数应用熵译码,例如CABAC、基于语法的上下文自适应二进制算术译码(SBAC)、概率区间分割熵(PIPE),或另一熵译码方法。熵编码单元56可经配置以对变换系数进行译码。为执行CABAC,熵编码单元56可选择上下文模型以应用于某一上下文以对待发射的符号进行编码。在通过熵编码单元56进行熵译码之后,可以将所得经编码视频发射到另一装置,例如视频解码器30,或将经编码视频存档以用于稍后发射或检索。
[0156] 反量化单元58和反变换处理单元60相应地应用反量化和反变换,以在像素域中重构残余块,例如以供稍后用作参考块。运动补偿单元44可通过将残余块叠加到DPB 64的帧中的一者的预测性块来计算参考块。运动补偿单元44还可将一或多个内插滤波器应用于经重构残余块来计算子整数像素值以供在运动估计中使用。
[0157] 求和器62将经重构残余块叠加到通过运动补偿单元44定位(可能具有内插滤波)的运动补偿预测块,以产生经重构视频块以用于存储于DPB 64中。经重构视频块可由运动估计单元42及运动补偿单元44用作参考块以对后一视频帧中的块进行帧间译码。
[0158] 以此方式,视频编码器20可以是包含一或多个处理器的视频编码器的实例,所述处理器经配置以基于像素到边界的像素距离来确定对像素的像素值进行解块滤波的量,且基于所确定的量进行解块滤波。在一些实例中,视频编码器20可以确定对至少八个像素的像素值进行解块滤波的量。在某一实例中,视频编码器20可以确定较靠近边界的像素的像素值比较远离边界的像素的像素值被修改得更多。在一些实例中,视频编码器20可以确定偏移值以确定解块滤波的量,所述偏移值是像素到边界的像素距离的函数。
[0159] 在一些实例中,视频编码器20可以确定是否执行第一类型的滤波器(例如,如本发明中所描述的长解块滤波)。如果确定不执行第一类型的滤波,那么视频编码器20可以执行第二类型的解块滤波(例如,如在基本HEVC标准中界定)。在一些实例中,视频编码器20可以基于相邻块来确定梯度,且可以将所述梯度与阈值进行比较。在此类实例中,视频编码器20可以基于所述比较来执行本发明中描述的解块滤波技术,或基于所述比较来执行例如在HEVC标准中的解块滤波技术或某一其它解块滤波技术等解块滤波技术。
[0160] 图3是说明视频解码器30的实例的方块图,所述视频解码器对经编码视频序列进行解码。视频解码器30表示经配置以执行用于解块滤波的方法的装置的实例。在图3的实例中,视频数据存储器69接收经编码视频。视频数据存储器69可以存储待通过视频解码器30的组件进行解码的视频数据(例如,经配置以存储视频数据),例如经编码视频比特流。存储在视频数据存储器69中的视频数据可以例如经由视频数据的有线或无线网络通信从本地视频源(例如,相机)获得,或通过存取物理数据存储媒体来获得。视频数据存储器69可形成存储来自经编码视频比特流的经编码视频数据的经译码图片缓冲器(CPB)。
[0161] 存储参考视频数据以供在通过视频解码器30对视频数据进行解码(例如,在帧内或帧间译码模式中)时使用的经解码图片缓冲器(DPB)82。视频数据存储器69和DPB 82可以通过多种存储器装置中的任一者形成,例如包含SDRAM的DRAM、MRAM、RRAM或其它类型的存储器装置。视频数据存储器69和DPB 82可由同一存储器装置或单独的存储器装置提供。在各种实例中,视频数据存储器69可与视频解码器30的其它组件一起在芯片上,或相对于那些组件在芯片外。
[0162] 视频解码器30包含熵解码单元70、运动补偿单元72、帧内预测处理单元74、反量化单元76、反变换处理单元78、经解码图片缓冲器(DPB)82以及求和器80。在一些实例中,图3的视频解码器30可以执行与关于视频编码器20(见图2)描述的编码遍次大体上互逆的解码遍次。
[0163] 熵解码单元70对经编码比特流执行熵解码过程以检索变换系数的一维阵列。所使用的熵解码过程取决于视频编码器20所使用的熵译码(例如,CABAC)。编码器所使用的熵译码过程可在经编码比特流中用信号发送或可为预定过程。熵解码单元70可经配置以对变换系数进行译码。
[0164] 在一些实例中,熵解码单元70(或反量化单元76)可以使用与由视频编码器20的熵编码单元56(或量化单元54)使用的扫描模式成镜像的扫描来扫描所接收值。尽管系数的扫描可以在反量化单元76中执行,但出于说明的目的,扫描将被描述为通过熵解码单元70执行。另外,尽管示出为单独的功能单元以便于说明,但熵解码单元70、反量化单元76以及视频解码器30的其它单元的结构和功能性可以彼此高度整合。
[0165] 反量化单元76对在比特流中提供且通过熵解码单元70解码的经量化变换系数进行反量化,即去量化。反量化过程可包含常规过程,例如,类似于针对HEVC所提议的过程或H.264解码标准所定义的过程。反量化过程可包含使用视频编码器20针对CU计算出的量化参数QP来确定量化程度,以及同样地,应该应用的反量化的程度。反量化单元76可在将变换系数从一维阵列转换为二维阵列之前或之后对所述系数进行反量化。
[0166] 反变换处理单元78对经反量化的变换系数应用反变换。在一些实例中,反变换处理单元78可基于来自视频编码器20的信令或通过从一或多个译码特性(例如,块大小、译码模式或类似者)推断出变换来确定反变换。在一些实例中,反变换处理单元78可基于在包含当前块的LCU的四叉树的根节点处的用信号发送的变换来确定将应用于当前块的变换。替代地,变换可在用于LCU四叉树中的叶节点CU的TU四叉树的根处用信号发送。在一些实例中,反变换处理单元78可应用级联反变换,其中反变换处理单元78将两个或两个以上反变换应用于正被解码的当前块的变换系数。帧内预测处理单元74可基于用信号发送的帧内预测模式以及来自当前帧的先前经解码块的数据来产生当前帧的当前块的预测数据。
[0167] 运动补偿单元72可从经编码比特流检索运动向量、运动预测方向及参考索引。参考预测方向指示帧间预测模式是单向(例如,P帧)还是双向(B帧)。参考索引指示候选运动向量是基于哪一参考帧。
[0168] 基于所检索的运动预测方向、参考帧索引以及运动向量,运动补偿单元产生当前部分的运动补偿块。这些运动补偿块基本上重建用于产生残余数据的预测性块。
[0169] 运动补偿单元72可以可能地通过执行与通过运动补偿单元44执行的内插滤波相同的内插滤波来产生运动补偿块。将用于运动估计的内插滤波器的识别符与子像素精度可以包含于语法元素中。运动补偿单元72可使用由视频编码器20在视频块的编码期间使用的内插滤波器来计算参考块的子整数像素的内插值。运动补偿单元72可根据接收的语法信息来确定由视频编码器20使用的内插滤波器且使用所述内插滤波器来产生预测性块。
[0170] 另外,在HEVC实例中,运动补偿单元72和帧内预测处理单元74可以使用一些语法信息(例如,由四叉树提供)来确定用于对经编码视频序列的帧进行编码的LCU的大小。运动补偿单元72和帧内预测处理单元74还可使用语法信息来确定分割信息,所述分割信息描述经编码视频序列的帧的每一CU如何分割(且同样地,子CU如何分割)。语法信息还可包含指示如何对每一分割进行编码的模式(例如,帧内或帧间预测,且对于帧内预测为帧内预测编码模式),用于每一经帧间编码的PU的一或多个参考帧(和/或包含参考帧的识别符的参考列表)以及用于对经编码视频序列进行解码的其它信息。
[0171] 求和器80将残余块与由运动补偿单元72或帧内预测处理单元74产生的对应预测块进行组合以形成经解码块。还可应用解块过滤器81以对经解码块进行滤波以便去除方块效应假象。解块滤波器81可以经配置以实施本发明中描述的实例解块滤波技术。例如,单独地或结合其它组件,解块滤波器81可以确定从第一块的第一像素到所述第一块与第二块之间的边界的几何距离;基于第二像素的像素值和第三像素的像素值来确定像素值差;基于几何距离和像素值差来确定对第一像素的像素值进行解块滤波的量;且基于解块滤波的量来对第一像素的像素值进行解块滤波。随后将经解码视频块存储在DPB 82中,所述DPB提供参考块以用于随后运动补偿并且还产生经解码视频以用于在显示器装置(例如图1的显示装置32)上呈现。
[0172] 类似于图2,尽管图3中未说明,视频解码器30可以包含样本自适应偏移(SAO)滤波器和/或自适应环路滤波器(ALF)。SAO滤波器和/或ALF滤波器可以位于解块滤波器81之前或位于解块滤波器81之后。当解块滤波器81经配置以减少相邻块之间的成块效应时,SAO滤波器和/或ALF滤波器可以经配置以执行其它类型的滤波,使得视频内容呈现为与原始视频内容相同,或以便增加视频译码效率。解块滤波器81可能未必(但有可能)应用滤波以修改像素值,使得经重构块与原始块更相似。确切地说,解块滤波器81去除成块效应。并且,SAO和ALF滤波器可以仅基于同一块的视频数据,其中解块滤波器81利用来自不同块的视频数据。
[0173] 以此方式,视频解码器30可以是包含一或多个处理器的视频解码器的实例,所述处理器经配置以基于像素到边界的像素距离来确定对像素的像素值进行解块滤波的量,且基于所确定的量进行解块滤波。在一些实例中,视频解码器30可以确定对至少八个像素的像素值进行解块滤波的量。在某一实例中,视频解码器30可以确定较靠近边界的像素的像素值比较远离边界的像素的像素值被修改得更多。在一些实例中,视频解码器30可以确定偏移值以确定解块滤波的量,所述偏移值是像素到边界的像素距离的函数。
[0174] 在一些实例中,视频解码器30可以确定是否执行第一类型的滤波器(例如,如本发明中所描述的长解块滤波)。如果确定不执行第一类型的滤波,那么视频解码器30可以执行第二类型的解块滤波(例如,如在基本HEVC标准中界定)。在一些实例中,视频解码器30可以基于相邻块来确定梯度,且可以将所述梯度与阈值进行比较。在此类实例中,视频解码器30可以基于所述比较执行本发明中描述的解块滤波技术,或基于所述比较执行例如在HEVC标准中的解块滤波技术或某一其它解块滤波技术等解块滤波技术。
[0175] 图5是说明基于本发明中描述的技术界定的示例性解块滤波器100的组件的方块图。一般来说,来自图2的解块滤波器63和来自图3的解块滤波器81中的任一者或两者可以包含与解块滤波器100的组件大体上类似的组件。其它视频译码装置,例如视频编码器、视频解码器、视频编码器/解码器(编解码器)及类似者,还可以包含与解块滤波器100大体上类似的组件。解块滤波器100可以用硬件、软件或固件或其任何组合来实施。当用软件或固件来实施时,还可提供对应的硬件(例如,一或多个处理器或处理器单元及用于存储用于软件或固件的指令的存储器)。
[0176] 在图5的实例中,解块滤波器100包含解块确定单元104、存储在存储器中的支持定义102、解块滤波单元106、存储在存储器中的解块滤波器定义108、边缘定位单元103以及边缘位置数据结构105。解块滤波器100的组件中的任一者或全部可以在功能上整合。仅用于说明的目的而单独说明解块滤波器100的组件。一般来说,解块滤波器100例如从组合预测数据与块的残余数据的求和组件接收经解码块(或经重构块)的数据。所述数据可进一步包含关于如何预测块的指示。在下文描述的实例中,解块滤波器100经配置以接收包含经解码视频块的数据,所述经解码视频块与LCU和所述LCU的CU四叉树相关联,其中CU四叉树描述如何将LCU分割成CU以及叶节点CU的PU和TU的预测模式。
[0177] 解块滤波器100可将边缘位置数据结构105维持于解块滤波器100的存储器中,或维持于由对应视频译码装置提供的外部存储器中。在一些实例中,边缘定位单元103可以接收对应于LCU的CU四叉树,其指示如何将LCU分割成CU。边缘定位单元103可随后分析CU四叉树以确定在与LCU中的CU的TU和PU相关联的经解码视频块之间的边缘(例如,边界),所述LCU是用于解块的候选者。例如,边缘定位单元103可以定位边界86。
[0178] 边缘位置数据结构105可包括具有水平尺寸、竖直尺寸及表示水平边缘及竖直边缘的尺寸的阵列。一般来说,视频块之间的边缘(例如,边界)可以出现在与LCU的最小大小的CU或所述CU的TU和PU相关联的两个视频块之间。假设LCU具有大小N×N,且假设LCU的最小大小的CU具有大小M×M,那么阵列可包括[N/M]×[N/M]×2的大小,其中“2”表示CU之间的边缘的两种可能方向(水平及竖直)。例如,假设LCU具有64×64个像素和一个8×8最小大小的CU,那么阵列可以包括[8]×[8]×[2]项。
[0179] 每一项可大体上对应于两个视频块之间的可能边缘。边缘可能并未实际上存在于LCU内的对应于边缘位置数据结构105的项中的每一者的位置中的每一者处。因此,可以将数据结构的值初始化为假。一般来说,边缘定位单元103可以分析CU四叉树以确定与LCU的CU的TU和PU相关联的两个视频块之间的边缘的位置,且将边缘位置数据结构105中的对应的值设定为真。
[0180] 一般来说,阵列的项可描述对应边缘是否作为用于解块的候选者存在于LCU中。也就是说,当边缘定位单元103确定与LCU的CU的TU和PU相关联的两个相邻视频块之间的边缘存在时,边缘定位单元103可以将边缘位置数据结构105中的对应的项的值设定成指示边缘存在(例如,设定成值“真”)。
[0181] 解块确定单元104大体上确定对于两个相邻块,所述两个块之间的边缘是否应被解块。解块确定单元104可以使用边缘位置数据结构105来确定边缘的位置。在一些实例中,当边缘位置数据结构105的值具有布尔值时,解块确定单元104可以确定“真”值指示边缘的存在,而“假”值指示不存在边缘。例如,解块确定单元104可以确定梯度且确定是否利用本发明中描述的技术来解块滤波。作为另一个实例,解块确定单元104可以确定变换大小,以及CU是经帧内译码还是未经帧内译码,且利用此类信息来确定是否利用本发明中描述的技术来解块滤波。
[0182] 一般来说,解块确定单元104配置有一或多个解块确定功能。所述功能可包含应用于跨越块之间的边缘的数行像素的多个系数。例如,可将函数应用于垂直于边缘的一行八个像素,其中所述像素中的四者在所述两个块中的一者中且另外四个像素在所述两个块中的另一者中。支持定义102定义对所述功能的支持。一般来说,“支持”对应于对其应用所述功能的像素。下文关于图6更详细地描述支持的集合的各种实例。
[0183] 解块确定单元104可以经配置以对一或多个支持集合(如由支持定义102定义)应用一或多个解块确定功能,以确定是否应对两个视频数据块之间的特定边缘进行解块。源自解块确定单元104的虚线表示经输出而未经滤波的块的数据。在解块确定单元104确定两个块之间的边缘不应被滤波的情况下,解块滤波器100可输出块的数据而不改变数据。也就是说,数据可以绕过解块滤波单元106。另一方面,当解块确定单元104确定应该对边缘进行解块时,解块确定单元104可以使得解块滤波单元106对靠近所述边缘的像素的值进行滤波以便对所述边缘进行解块。
[0184] 解块滤波单元106通过用于待解块的边缘的解块滤波器参数108来检索解块滤波器的定义,如通过解块确定单元104指示。一般来说,边缘的滤波使用来自待解块的当前边缘的邻域的像素的值。因此,解块决定功能及解块滤波器两者可在边缘的两侧上具有某一支持区。通过对边缘(例如,边界)的邻域中的像素应用解块滤波,解块滤波单元106可平滑所述像素的值,使得边缘附近的高频过渡得以抑制。以此方式,对靠近边缘(例如,边界)的像素应用解块滤波器可以减少靠近所述边缘的方块效应假象。
[0185] 图6是说明靠近子块130和132之间的视频块的边缘(即,边界)134的像素位置。作为一个实例,边界134可以包括内部CU边缘,例如在CU中界定的两个TU之间的TU边缘,或在CU中界定的两个PU之间的PU边缘。像素位置中的每一者使用格式[p|q]IJ来指定,其中p对应于子块130且q对应于子块132,I对应于距边缘134的距离,且J对应于子块130和132的从上到下的行指示符。在一些实例中,用于解块决定功能和解块滤波器的支持具有一行八个像素。在此类实例中,对于给定行X,其中0≤X≤7,可将像素p3X到q3X中的每一者用作支持。
[0186] 图7是说明处理视频数据的实例技术的流程图。出于说明的目的,关于图6详细地描述图7的实例。举例来说,为易于描述,以像素p43描述图7,所述像素是待解块滤波的像素。并且,以执行所述技术的视频译码器来描述图7的实例。所述视频译码器一般用于描述视频编码器20或视频解码器30。
[0187] 视频译码器可以确定从第一块的第一像素到所述第一块与第二块之间的边界的几何距离(140)。例如,视频译码器可以确定块130的像素p43到边界134的几何距离,其中边界134是块130与块132之间的边界。作为一个实例,视频译码器可以基于第一像素和边界之间的多个像素来确定几何距离。举例来说,像素p43的几何距离基于等式n(i)=i是4,或基于等式n(i)=(2i+1)/2是9/2。
[0188] 视频译码器可以基于第二像素的像素值和第三像素的像素值来确定像素值差(142)。举例来说,视频译码器可以确定第二像素的像素值与第三像素的第一像素值之间的差值,且将所述差值的结果除以二。
[0189] 在一些实例中,第二像素是第一块的最靠近边界的像素(例如,块130的最靠近边界134的p03),且第三像素是第二块的最靠近边界的像素(例如,块132的最靠近边界134的q03)。在一些实例中,第二像素和第一像素相同,且第三像素是第二块中的与第一块中的第一像素到边界等距的像素(例如,q43与到边界134与p43到边界134等距)。作为另一个实例,第二像素和第一像素相同,且第三像素是最靠近边界的像素(例如,q03最靠近边界134)。在一些实例中,第二和第三像素是相邻像素(例如,p53和p33)。
[0190] 视频译码器可以基于几何距离和像素值差来确定对第一像素的像素值进行解块滤波的量(144)。视频译码器可以使用上文所描述的实例技术中的一或多者来确定像素值差,且确定至少所述像素值差的加权。在这些实例中,视频译码器可以基于几何距离、像素值差以及像素值差的加权来确定解块滤波的量。在一些实例中,视频译码器可以基于几何距离、像素值差以及待解块滤波的像素的书面(像素的数目可以在比特流中用信号发送或被预存储)来确定解块滤波的量。
[0191] 视频译码器可以基于解块滤波的量来对第一像素的像素值进行解块滤波(146)。在一些情况下,视频译码器可以确定解块滤波的量大于第一阈值或小于第二阈值,且基于解块滤波的量大于第一阈值或小于第二阈值来确定经调整的解块滤波的量。视频译码器可以基于经调整的解块滤波的量来对像素值进行解块滤波。
[0192] 此外,在一些实例中,视频译码器可以确定是否使用本发明中描述的技术来解块滤波。例如,视频译码器可以确定第一块的一部分的梯度值,其中所述梯度值指示第一块的所述部分的平滑度。所述部分的实例包含所述块的包含除待解块滤波的像素外的额外像素的区域、所述块的行或甚至所述块的像素。视频译码器可以基于所述梯度值小于或等于阈值梯度值来对像素值进行解块滤波。
[0193] 作为另一个实例,视频译码器可以确定用于产生第一块的第一变换块的第一块大小,以及用于产生第二块的第二变换块的第二块大小。视频译码器可以基于第一块大小和第二块大小中的较大者等于最大允许变换块大小或第一块大小和第二块大小中的较小者大于阈值块大小来对像素值进行解块滤波。
[0194] 在一些实例中,视频译码器可以将经解块滤波的像素值用作后一块(例如,第三块)的帧间预测或帧内预测的部分。在视频译码器是视频编码器20的实例中,视频编码器20可以确定第三块中的像素的像素值与经解块滤波的像素值之间的差值(例如,作为对第三块进行帧间预测或帧内预测编码的部分)。视频编码器20可以用信号发送指示第三块中的像素的像素值与经解块滤波的像素值之间的差值的信息,其中用信号发送的信息用于对第三块进行解码。
[0195] 如果视频译码器是视频解码器30,那么视频解码器30可以接收指示第三块中的像素的像素值与经解块滤波的像素值之间的差值的信息。视频解码器30可以基于所接收的信息对第三块进行帧间预测或帧内预测解码。
[0196] 在一或多个实例中,所描述功能可用硬件、软件、固件或其任何组合来实施。如果用软件实施,则所述功能可以作为一或多个指令或代码在计算机可读媒体上存储或发射,并且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于有形媒体(例如,数据存储媒体),或包含促进将计算机程序从一处传送到另一处(例如,根据通信协议)的任何媒体的通信媒体。以此方式,计算机可读媒体大体上可对应于(1)有形计算机可读存储媒体,其是非暂时的,或(2)通信媒体,例如信号或载波。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可以包含计算机可读媒体。
[0197] 作为举例而非限制,此类计算机可读存储媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可用来存储呈指令或数据结构形式的所要程序代码并且可由计算机存取的任何其它媒体。并且,任何连接被恰当地称为计算机可读媒体。例如,如果使用同轴电缆、光纤缆线、双绞线、数字订户线(DSL)或例如红外线、无线电及微波等无线技术从网站、服务器或其它远程源传输指令,则同轴电缆、光纤缆线、双绞线、DSL或例如红外线、无线电及微波等无线技术包含在媒体的定义中。然而,应理解,计算机可读存储媒体及数据存储媒体并不包含连接、载波、信号或其它暂时性媒体,而是实际上针对于非暂时性的有形存储媒体。如本文所使用,磁盘及光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘及蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。以上各者的组合也应该包含在计算机可读媒体的范围内。
[0198] 指令可由一或多个处理器来执行,所述一或多个处理器例如一或多个DSP、通用微处理器、ASIC、FPGA或其它等效集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任何另一结构中的任一者。另外,在一些方面中,本文中所描述的功能性可以在经配置用于编码和解码的专用硬件和/或软件模块内提供,或者并入在组合编解码器中。并且,所述技术可完全实施于一或多个电路或逻辑元件中。
[0199] 应认识到,取决于实例,本文中所描述的方法中的任一者的某些动作或事件可用不同顺序执行、可添加、合并或全部省略(例如,实践所述方法并不需要所有的所描述动作或事件)。此外,在某些实施例中,可例如经由多线程处理、中断处理或多个处理器同时而非顺序地执行动作或事件。
[0200] 所属领域的技术人员将认识到,结合本文揭示的方法、系统和设备描述的各种说明性逻辑块、模块、电路和算法步骤可实施为电子硬件、由处理器执行的计算机软件,或两者的组合。为清楚地说明硬件与软件的此互换性,上文已大体就其功能性来描述了各种说明性组件、块、模块、电路以及步骤。此功能性是实施为硬件还是软件取决于特定应用及施加于整个系统的设计约束。熟练的技术人员可针对每一特定应用以不同方式来实施所描述的功能性,但此类实施决策不应被解释为会引起脱离本发明的范围。
[0201] 此外,本文中所揭示的实例可以用电子装置或电路来实施或执行,所述电子装置或电路例如通用处理器、DSP、ASIC、FPGA或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其经设计以执行本文中所描述的功能的任何组合。通用处理器可为微处理器,但在替代方案中,处理器可以为任何常规的理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器、结合DSP核心的一或多个微处理器,或任何其它此类配置。
[0202] 结合本文中所揭示的实施例而描述的方法或演算法的步骤可直接体现于硬件、由处理器执行的软件模块或其两者的组合中。软件模块可驻留在RAM存储器、闪存存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可装卸式磁盘、CD-ROM或所属领域中已知的任何其它形式的存储媒体中。示例性存储媒体耦合到处理器,使得处理器可以从存储媒体读取信息并且将信息写入到存储媒体。在替代方案中,存储媒体可与处理器成一体。处理器和存储媒体可驻留于ASIC中。ASIC可驻留于用户终端中。在替代方案中,处理器及存储媒体可作为离散组件驻留在用户终端中。
[0203] 本发明的技术可以在广泛多种装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本发明中描述各种组件、模块或单元以强调经配置以执行所揭示的技术的装置的功能性方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编解码器硬件单元中,或由互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。