图像/视频压缩中的自适应滤波器帧内预测模式的制作方法

文档序号:26856029发布日期:2021-10-09 04:16阅读:132来源:国知局
图像/视频压缩中的自适应滤波器帧内预测模式的制作方法
图像/视频压缩中的自适应滤波器帧内预测模式


背景技术:

1.数字视频流可以使用帧或静止图像的序列来表示视频。数字视频能够被用于各种应用,包括例如视频会议、高清晰度视频娱乐、视频广告或用户生成的视频共享。数字视频流可以包含大量数据并且消耗计算设备的大量计算或通信资源以进行视频数据的处理、传输或存储。已经提出各种方法(包括压缩和其他编码技术)来减少视频流中的数据量。
2.可以通过将帧或图像分成基于同一帧或图像内的其他块预测的块来执行基于空间相似性的编码。在比特流中压缩和编码块和预测块之间的差(即残差)。解码器使用差和参考帧来重构帧或图像。


技术实现要素:

3.本文公开了使用帧内预测边缘滤波对块进行编码和解码的方面、特征、元素和实施方式。
4.所公开的实施方式的一个方面是一种使用帧内预测生成用于代码化帧的块的预测块的方法。该方法包括:使用训练区域确定用于生成预测块的滤波器系数,训练区域与块相邻并且包括多个重构像素,滤波器系数最小化差的函数,每个差是训练区域中的像素与训练区域中的该像素的预测之间的相应差,以及预测使用滤波器系数;以及使用所确定的滤波器系数生成预测块。
5.另一方面是一种使用帧内预测生成用于代码化帧的块的预测块的装置。该装置包括存储器和处理器。处理器被配置为执行存储在存储器中的指令以使用训练区域确定用于生成预测块的滤波器系数,训练区域与块相邻并且包括多个重构像素,滤波器系数最小化差的函数,每个差是训练区域中的像素与训练区域中的该像素的预测之间的相应差,以及预测使用滤波器系数;以及使用所确定的滤波器系数生成预测块。
6.另一方面是一种使用帧内预测生成用于解码帧的块的预测块的方法。该方法包括从压缩比特流中解码自适应帧内预测模式,自适应帧内预测模式指示训练区域,训练区域包括多个重构像素;使用训练区域确定用于生成预测块的滤波器系数;以及通过使用滤波器系数的递归外推生成用于块的预测块。
7.在下述实施例、所附权利要求和附图的详细描述中公开了本公开的这些和其它方面。
附图说明
8.本文的描述参考附图,其中,贯穿若干视图,相似的附图标记指代相似的部分。
9.图1是视频编码和解码系统的示意图。
10.图2是可以实现发送站或接收站的计算设备的示例的框图。
11.图3是待编码并随后解码的视频流的图。
12.图4是根据本公开的实施方式的编码器的框图。
13.图5是根据本公开的实施方式的解码器的框图。
14.图6是根据本公开的实施方式的用于使用帧内预测生成用于代码化帧的块的预测块的过程的流程图。
15.图7a是根据本公开的实施方式的训练区域的图。
16.图7b是根据本公开的实施方式的可能抽头的图。
17.图8是根据本公开的实施方式的最优自适应滤波器的图。
18.图9是根据本公开的实施方式的方向帧内预测模式的图。
19.图10a是具有90度预测角的帧内预测模式的图。
20.图10b是具有135度预测角的帧内预测模式的图。
21.图11是根据本公开的实施方式的递归外推的示例的图。
具体实施方式
22.如上所述,与代码化视频流相关的压缩方案可以包括使用一种或多种技术来将图像分成块并生成数字视频输出比特流(即,编码比特流)以限制包括在输出比特流中的信息。解码所接收的比特流以根据有限的信息重新创建块和源图像。编码视频流或其一部分(诸如帧或块)可以包括使用视频流中的空间相似性来提高代码化效率。例如,可以基于识别先前代码化的像素值之间的差或先前编码的像素值的组合与正在被编码的当前块中的像素值之间的差(例如,残差)来编码视频流的当前块。
23.使用空间相似性的编码可以被称为帧内预测。帧内预测尝试使用当前块外围的像素,即使用处于与当前块同一帧但在当前块之外的像素来预测视频流帧的当前块的像素值。可以沿着本文称为预测角的预测方向执行帧内预测,其中,每个方向可以对应于帧内预测模式。帧内预测模式可以由编码器发信号告知解码器。
24.可以支持许多不同的帧内预测模式(例如,可用)。一些帧内预测模式对使用至少一个外围像素生成的预测块内的所有像素使用单个值。可以被称为方向帧内预测模式的其他帧内预测模式每一个可以具有对应的预测角度。帧内预测模式可以包括例如水平帧内预测模式、垂直帧内预测模式和各种其他方向帧内预测模式。因此,预测角度可以是0到360度之间的任何角度。在一些实施方式中,预测角度可以是0到270度之间的任何角度。可用的预测角度也可以是所有可能的预测角度的子集。例如,编解码器可以具有对应于0到360个预测角度中的50

60个预测角度的可用预测模式。
25.在示例中,预测角度可以被编码为基本角和偏移量。例如,偏移量可以在距基本角[

3,+3]度的范围内。例如,av1编解码器包括八个基本方向帧内预测模式。因此,总共可以使用8*6=54个帧内预测角度。54个帧内预测角度对应于八个基本预测角度和用于每个基本预测角度的6个偏移量。
[0026]
各种方向帧内预测模式可以被用来沿角度线(包括水平、垂直以及从水平和/或垂直偏移的方向)传播来自先前编码块的像素值以预测块。例如,所传播的像素值可以包括同一帧中块的上方和/或左侧的外围像素(例如,当在编码中使用光栅扫描顺序时)。
[0027]
可以通过从外围像素投影参考像素来预测当前块。例如,外围像素可以包括在从水平和垂直线偏离的某一角度或方向上,当前块的左侧和上方(即,上方)边界的像素。参考像素可以是例如外围像素的实际像素值或一些外围像素的平均像素值(诸如加权平均),其在角度方向上传播以形成预测块。外围像素可以以其他方式组合以生成参考像素。
[0028]
图9是根据本公开的实施方式的方向预测模式的图900。图9图示了分别标记为区1、区2和区3的三个示例性方向预测模式902、904和906。所图示的方向预测模式902

906可以被用于生成具有符合当前块912的维度的预测块。方向预测模式902图示了具有在0度和90度之间的预测角度的帧内预测模式。方向预测模式904图示了具有在90度和180度之间的预测角度的帧内预测模式。方向预测模式906图示了具有在180度和270度之间的预测角度的帧内预测模式。
[0029]
图9还图示了当前块上方一行中的第一像素908和当前块的左侧的列中的第二像素910。第一像素908和第二像素910可以被用于生成预测块。在一些实施方式中,区1中的方向预测(即,预测角度在0和90之间的帧内预测模式)使用第一像素908但可能不使用第二像素910来生成预测块;区2中的方向预测(即预测角度在90
°
和180
°
之间的帧内预测模式)使用第一像素908和第二像素910来生成预测块;以及区3中的方向预测(即,预测角度在180
°
和270
°
之间的帧内预测模式)使用第二像素910但可能不使用第一像素908来生成预测块。
[0030]
图10a是具有90度预测角度的帧内预测模式的图。图10a图示了生成用于待预测的4x4块(也称为当前块)的预测块并且对应于图9的区2中的方向预测(即,方向预测模式904)。图10a的帧内预测模式沿预测块的列向下传播外围像素a至d,使得列中的每个像素的值被设置为等于在箭头方向上相邻的外围像素a至d的值。
[0031]
图10b是具有135度预测角度的帧内预测模式的图。图10b图示了生成用于4x4当前块的预测块并且对应于图9的区2中的方向预测。图10b的帧内预测模式沿135度线(即,线1006)向右和向下传播外围像素值以形成预测块。外围像素值可以包括例如来自与帧1010的4
×
4当前块相邻的块的外围像素1008(即,像素a至r)中的一些,以形成用于当前块的预测块1002。虽然图示了图10b中的135度帧内预测模式使用外围像素1008的像素值来生成预测块1002,例如,可以使用一些(例如,两个、三个或更多)外围像素的线性组合(例如,加权平均)来沿着延伸通过该块的线预测预测块的像素值。例如,将沿着线1006传播的像素值1004可以由像素值k、l和m的加权平均形成。
[0032]
如上所述,帧内预测主要由沿某些方向复制边界像素(或其线性组合)组成,这可能反映了潜在空间相关性的简单模型。作为替代方案,图像信号可以被视为二维不可分马尔可夫模型,其对应的相关模型可以更好地捕捉块内细微的方向性效应。因此,帧内预测的改进可以包括由三抽头外推滤波器表示的预测模式集合,以基于这些模型实现帧内预测。这样的模型在本文中被称为递归预测或递归外推。
[0033]
图11是根据本公开的实施方式的递归外推的示例1100的图。可以根据具有零均值和单位方差的二维不可分马尔可夫模型考虑图像的每个像素x(诸如像素1102),并且其演化递归可以被写为相邻垂直像素v(诸如像素1104)、相邻水平像素h(诸如像素1106)和相邻对角线像素d(诸如像素1108)的函数,如在公式(1)所示:
[0034]
x=c
v
v+c
h
h+c
d
d+∈
ꢀꢀꢀ
(1)
[0035]
在公式(1)中,v、h和d分别是x的指定垂直、水平和对角线近邻,以及∈表示创新项。
[0036]
系数c
v
、c
h
和c
d
有效地捕捉了二维空间中的相关梯度,或图像信号的“方向性”。令和分别表示像素v、h和d的编解码器重构。在编码器中,在下文中,参考图4描述重构像素。在解码器中,参考图5描述重构像素。简而言之,重构像素是原始(例如,源)像素的
解码像素值。至少在高比特率下,重构(即重构像素)非常接近原始值。即,重构像素和分别接近原始像素值v、h和d。因此,x(即,像素1102)的最优预测器可以通过来接近地近似。
[0037]
在基于块的视频和图像压缩中,与根据可用的相邻重构预测每个样本的上述差分脉冲编码调制(dpcm)设置不同,编解码器必须在给定边界像素集合(即,外围但在该块之外的像素)下预测整个块。如参考预测块1110所示,内部像素的预测不能使用其紧邻的近邻的重构。这个困难可以通过递归外推来规避,其中,近邻的预测值被馈送入3抽头滤波器。在递归帧内预测模式(在某些编解码器中可以被称为filter_intra模式)下,块的预测内容被定义为3抽头滤波器的结果,并且用作用于未来的相邻位置的3抽头滤波器的输入,从已知边界开始并递归地应用到块的远端。
[0038]
预测块1110图示了外围的、重构像素(即,阴影像素)。在块1110上方的重构像素(被称为上方相邻像素)被标记为xo,i至xo,4。块1110的左侧的重构像素(被称为左侧相邻像素)被标记为xi,o到x4,o.。标记为xo,o的像素称为左上相邻像素。
[0039]
可以将公式(1)用作val(l)=c
v
x
0,1
+c
h
x
1,0
+c
d
x
0,0.
来得出预测块1110中被标记为“1”的位置处的预测像素,其中,val(m)是指标记为“m”的位置处的像素值。可以将公式(1)用作val(2)=c
v
x
0,2
+c
h
val(1)+c
d
x
0,1
来得出预测块1110中标记为“2”的位置处的预测像素。即,在计算位置“2”处的值中,使用所计算的位置“1”处的像素的值。作为另一个示例,可以使用所计算的位置“6”、“7”和“10”处的值来得出标记为“11”的位置处的像素的预测值。因此,所计算的位置“11”处的像素的值是val(ll)=c
v
val(7)+c
h
val(10)+c
d
val(6)。
[0040]
在编解码器实施方式中,n个预定义的3抽头外推滤波器可用。即,n个系数集合(c
v
,c
h
,c
d
)可用。可以将待使用的n个集合中的哪一个从编码器传送到解码器,诸如通过将该集合的指示编码在压缩比特流中。可以通过对每个可能块大小离线训练来得出预定义的集合。
[0041]
如所述,使用递归外推对帧(例如,视频帧、图像)的图像块进行编码使用具有预定义系数的3抽头滤波器。因此,系数是独立的并且与图像块是其一部分的图像信号无关。此外,具有多于或少于3个抽头的滤波器可能比上述3抽头滤波器更合适(即产生更好的压缩)。
[0042]
当使用递归外推对图像块进行代码化时,本公开的实施方式可以基于该图像的信号得出滤波器系数。即,不是使用预定义的系数(即,权重),而是基于图像信号本身计算(例如,确定)在用于得出当前块的预测块的外推运算中使用的系数。另外,根据本公开的实施方式可以确定(例如,使用、选择等)具有适合于块的抽头数量的外推滤波器。例如,取决于图像信号,本公开的实施方式可以选择2抽头、3抽头或4抽头滤波器以用在外推中。此外,尽管上述递归外推总是使用上、左侧和对角相邻像素,但是根据本公开的实施方式可以在外堆运算中,从左下、左侧、左上、上方和右上相邻像素中选择。为了图示这些相邻像素,并且再次参考图11,位置“11”处的像素的左下、左侧、左上、上方、右上相邻像素分别为位置“14”、“10”、“6”、“7”和“8”处的像素。
[0043]
本文在首先描述可以实现本文公开的多级复合预测的环境之后,再来描述细节。
[0044]
图1是视频编码和解码系统100的示意图。发送站102可以是例如诸如在图2中所述
的、具有硬件的内部配置的计算机。然而,发送站102的其它适当的实施方式是可能的。例如,发送站102的处理可以分布在多个设备中。
[0045]
网络104可以连接发送站102和接收站106以编码和解码视频流。具体地,可以在发送站102编码视频流,并且可以在接收站106解码编码后的视频流。网络104可以是例如因特网。网络104也可以是局域网(lan)、广域网(wan)、虚拟专用网(vpn)、蜂窝电话网络,或将视频流从发送站102传送到该示例中的接收站106的任何其它装置。
[0046]
在一个示例中,接收站106可以是诸如图2中所述的、具有硬件的内部配置的计算机。然而,接收站106的其它合适的实施方式是可能的。例如,接收站106的处理可以分布在多个设备中。
[0047]
视频编码和解码系统100的其它实施方式是可能的。例如,一个实施方式可以省略网络104。在另一实施方式中,可以对视频流进行编码,并且然后存储以供在稍后的时间传输到接收站106或具有存储器的任何其它设备。在一个实施方式中,接收站106(例如,经由网络104、计算机总线和/或一些通信路径)接收编码视频流并且存储该视频流以供以后解码。在示例性实施方式中,实时传输协议(rtp)被用于通过网络104传输编码视频。在另一实施方式中,可以使用除rtp以外的传输协议(例如,基于超文本传输协议(http)的视频流媒体协议)。
[0048]
例如,当用在视频会议系统中时,发送站102和/或接收站106可以包括如下所述既对视频流进行编码又对视频流进行解码的能力。例如,接收站106可以是视频会议参与者,其从视频会议服务器(例如,发送站102)接收编码视频比特流以解码和查看,并且进一步对其自己的视频比特流进行编码并传输到视频会议服务器以由其它参与者解码和查看。
[0049]
图2是可以实现发送站或接收站的计算设备200的示例的框图。例如,计算设备200可以实现图1的发送站102和接收站106中的一者或两者。计算设备200可以以包括多个计算设备的计算系统的形式,或者以单个计算设备(例如,移动电话、平板计算机、膝上型计算机、笔记本计算机、台式计算机等)的形式。
[0050]
计算设备200中的cpu 202可以是中央处理单元。可替代地,cpu 202可以是另一类型的设备或多个设备,能够操纵或处理现有的或此后开发的信息。尽管所公开的实施方式可以如所示,通过单个处理器(例如,cpu 202)来实施,但是可以使用一个以上处理器来实现速度和效率上的优势。
[0051]
在实施方式中,计算设备200中的存储器204可以是只读存储器(rom)设备或随机存取存储器(ram)设备。可以将任何其它合适类型的存储设备用作存储器204。存储器204可以包括由cpu 202使用总线212来访问的代码和数据206。存储器204可以进一步包括操作系统208和应用程序210,应用程序210包括允许cpu 202执行在此所述的方法的至少一个程序。例如,应用程序210可以包括应用1至应用n,这些应用进一步包括执行在此所述的方法的视频代码化应用。计算设备200还可以包括辅助存储214,该辅助存储214例如可以是与移动的计算设备一起使用的存储卡。因为视频通信会话可能包含大量信息,所以可以将它们全部或部分地存储在辅助存储214中并且视需要加载到存储器204中以进行处理。
[0052]
计算设备200还可以包括一个或多个输出设备,诸如显示器218。在一个示例中,显示器218可以是将显示器与可操作来感测触摸输入的触敏元件组合在一起的触敏显示器。显示器218可以经由总线212耦合到cpu 202。除了显示器218之外或作为显示器218的替代
方案,还可以提供允许用户对计算设备200进行编程或以其它方式使用计算设备200的其它输出设备。当输出设备是显示器或包括显示器时,可以以各种方式,包括通过液晶显示器(lcd)、阴极射线管(crt)显示器、或发光二极管(led)显示器(诸如有机led(oled)显示器)实现该显示器。
[0053]
计算设备200还可以包括图像感测设备220或与之通信,该图像感测设备220例如为相机或现存的或此后开发的可以感测图像(诸如操作计算设备200的用户的图像)的任何其它图像感测设备220。图像感测设备220可以被定位为使得它朝向操作计算设备200的用户。在示例中,图像感测设备220的位置和光轴可以被配置为使得视场包括与显示器218直接相邻并且显示器218可见的区域。
[0054]
计算设备200还可以包括声音感测设备222或与之通信,该声音感测设备222例如为麦克风或现存的或此后开发的可以感测计算设备200附近的声音的任何其它声音感测设备。声音感测设备222可以被定位为使得它朝向操作计算设备200的用户,并且可以被配置成接收由该用户在该用户操作计算设备200的同时发出的声音,例如语音或其它话语。
[0055]
尽管图2将计算设备200的cpu 202和存储器204描绘为被集成到单个单元中,但是可以利用其它配置。cpu 202的操作可以分布在可以直接或跨局域网或其它网络耦合的多个机器(每个机器可以具有一个或多个处理器)之上。存储器204可以分布在多个机器(诸如基于网络的存储器或执行计算设备200的操作的多个机器中的存储器)之上。尽管在此被描绘为单一总线,但是计算设备200的总线212可以由多个总线组成。另外,辅助存储214可以直接耦合到计算设备200的其它组件或者可以经由网络访问并且可以包括单个集成单元(诸如存储卡)或多个单元(诸如多个存储卡)。因此可以以各种广泛的配置实现计算设备200。
[0056]
图3是要被编码并随后被解码的视频流300的示例的图。视频流300包括视频序列302。在下一级,视频序列302包括多个相邻帧304。虽然将三个帧描述为相邻帧304,但是视频序列302可以包括任何数量的相邻帧304。然后可以将相邻帧304进一步细分成单个帧(例如,帧306)。在下一级,可以将帧306分成一系列片段308或平面。例如,片段308可以是例如允许并行处理的帧的子集。片段308也可以是可以将视频数据分成单独颜色的帧的子集。例如,彩色视频数据的帧306可以包括亮度平面和两个色度平面。可以以不同的分辨率对片段308进行采样。
[0057]
无论帧306是否被划分成片段308,都可以将帧306进一步细分成块310,这些块310可以包含与例如帧306中的16
×
16个像素相对应的数据。块310还可以被布置成包括来自像素数据的一个或多个片段308的数据。块310还可以具有任何其它合适的大小,诸如4
×
4个像素、8
×
8个像素、16
×
8个像素、8
×
16个像素、16
×
16像素或更大。
[0058]
图4是根据本公开的实施方式的编码器400的框图。如上所述,可以诸如通过提供存储在存储器(例如存储器204)中的计算机软件程序来在发送站102中实现编码器400。计算机软件程序可以包括机器指令,这些机器指令当由诸如cpu 202的处理器执行时,使发送站102以本文所述的方式对视频数据进行编码。也可以将编码器400实现为包括在例如发送站102中的专用硬件。编码器400具有在(由实线连接线示出的)正向路径中执行各种功能以将视频流300用作输入来产生编码或压缩比特流420的下述阶段:帧内/帧间预测阶段402、变换阶段404、量化阶段406和熵编码阶段408。编码器400还可以包括(由虚线连接线示出
的)重构路径以重构用于对将来块进行编码的帧。在图4中,编码器400具有在重构路径中执行各种功能的下述阶段:去量化阶段410、逆变换阶段412、重构阶段414和环路滤波阶段416。编码器400的其它结构变型可以被用来对视频流300进行编码。
[0059]
当呈现视频流300以编码时,可以以块为单位处理视频流300。在帧内/帧间预测阶段402处,可以使用帧内预测(也被称为帧内预测)或帧间预测(也被称为帧间预测)或两者的组合来对块进行编码。在任何情况下,都可以形成预测块。在帧内预测的情况下,预测块的全部或部分可以由当前帧中的先前已经被编码和重构的样本形成。在帧间预测的情况下,预测块的全部或部分可以由使用运动矢量确定的一个或多个先前构建的参考帧中的样本形成。
[0060]
接下来,仍然参考图4,可以在帧内/帧间预测阶段402处从当前块减去预测块以产生残差块(也被称为残差)。变换阶段404使用基于块的变换来将残差变换成例如频域中的变换系数。这种基于块的变换包括例如离散余弦变换(dct)和非对称离散正弦变换(adst)。其他基于块的变换是可能的。此外,不同变换的组合可以应用于单个残差。在变换应用的一个示例中,dct将残差块变换为频域,其中,变换系数值基于空间频率。矩阵的左上角为最低频率(dc)系数和矩阵的右下角为最高频率系数。值得注意的是,预测块的大小以及由此产生的残差块可能与变换块的大小不同。例如,预测块可以被分成应用单独变换的更小块。
[0061]
量化阶段406使用量化器值或量化阶段来将变换系数转换成离散量子值,这些离散量子值被称为量化变换系数。例如,可以将变换系数除以量化器值并截断。然后由熵编码阶段408熵编码量化变换系数。可以使用多种技术,包括令牌和二叉树执行熵代码化。然后将熵编码的系数连同用来解码该块的其它信息(可以包括例如所使用的预测类型、变换类型、运动矢量、量化器值)输出到压缩比特流420。可以将解码该块的信息熵代码化成压缩比特流420内的块、帧、切片和/或区段报头。压缩比特流420也可以被称为编码视频流或编码视频比特流,在本文中将互换地使用这些术语。
[0062]
(由虚线连接线示出的)图4中的重构路径可以用于确保编码器400和(下文所述的)解码器500两者都使用相同的参考帧和块来对压缩比特流420进行解码。重构路径执行与在下文更详细论述的解码过程期间进行的功能类似的功能,包括在去量化阶段410处对量化变换系数进行去量化和逆变换阶段412处对去量化变换系数进行逆变换以产生导数残差块(也称作导数残差)。在重构阶段414处,可以将在帧内/帧间预测阶段402处预测的预测块添加到导数残差以创建重构块。环路滤波阶段416可以被应用于重构块以减少诸如块效应的失真。
[0063]
编码器400的其它变型可以用于对压缩比特流420进行编码。例如,基于非变换的编码器可以对某些块或帧在没有变换阶段404的情况下直接对残差信号进行量化。在另一实施方式中,编码器400可以使量化阶段406和去量化阶段410被组合成单一阶段。
[0064]
图5是根据本公开的实施方式的解码器500的框图。可以例如通过提供存储在存储器204中的计算机软件程序来在接收站106中实现解码器500。计算机软件程序可以包括机器指令,这些机器指令当由诸如cpu 202的处理器执行时,使接收站106以本文描述的方式对视频数据进行解码。也可以以例如发送站102或接收站106中包括的硬件来实现解码器500。与上文讨论的编码器400的重构路径类似,解码器500在一个示例中包括执行各种功能以从压缩比特流420产生输出视频流516的以下阶段:熵解码阶段502、去量化阶段504、逆变
换阶段506、帧内/帧间预测阶段508、重构阶段510、环路滤波阶段512和去块滤波阶段514。解码器500的其它结构变型可以用于对压缩比特流420进行解码。
[0065]
当呈现压缩比特流420以进行解码时,压缩比特流420内的数据元素可以由熵解码阶段502解码以产生量化变换系数集合。去量化阶段504(例如,通过将量化变换系数乘以量化器值)对量化变换系数进行去量化,并且逆变换阶段506使用所选择的变换类型对去量化变换系数进行逆变换以产生导数残差,该导数残差可以与由编码器400中的逆变换阶段412创建的导数残差相同。使用从压缩比特流420解码的报头信息,解码器500可以使用帧内/帧间预测阶段508来创建与在编码器400中(例如在帧内/帧间预测阶段402处)创建的预测块相同的预测块。在重构阶段510处,可以将预测块添加到导数残差以创建重构块。可以将环路滤波阶段512应用于重构块以减少块效应。可以对重构块应用其它滤波。在该示例中,去块滤波阶段514被应用于重构块以减少块失真,并且结果被输出为输出视频流516。也可以将输出视频流516称为解码视频流,将在本文中互换地使用这些术语。
[0066]
解码器500的其他变型可以被用来解码压缩比特流420。例如,解码器500可以在没有去块滤波阶段514的情况下产生输出视频流516。在解码器500的一些实施方式中,在环路滤波阶段512之前应用去块滤波阶段514。附加地或替代地,除了环路滤波阶段416之外,编码器400还包括去块滤波阶段。
[0067]
图6是根据本发明的实施方式的用于使用帧内预测来生成用于对帧的块进行代码化的预测块的过程600的流程图。在示例中,帧可以是视频序列的帧。在示例中,该帧可以是单个图像。该块可以是正在被代码化的当前块。更具体地,过程600通过递归外推为块生成预测块。该块可以是最大的代码化块。最大代码化块可以用不同的名称来称呼,诸如宏块、超块、最大代码化单元等。最大代码化块的大小可以是64
×
64、128
×
128、更小或更大。该块可以是最大代码化块的子块。因此,该块可以具有32
×
32、16
×
16、8
×
8或4
×
4的大小。该块可以是色度块。该块可以是亮度块。该块可以共同扩展有变换块。预测块可以具有与该块相同的大小。也就是说,如果块的大小为n
×
n,则预测块的大小也是n
×
n,其中,n为正整数。
[0068]
过程600可以在诸如图4的编码器400的编码器中实现。过程600可以在诸如图5的解码器500的解码器中实现。在下文中,参考图7和图8描述过程600。当在编码器中使用时,术语“代码化”是指编码。因此,为了确定要在压缩比特流中编码的残差的目的而对该块进行代码化。即,如上所述,为该块生成预测块。预测块用于生成残差块,该残差块是该块与预测块之间的差异。在压缩比特流中编码残差块。当在解码器中使用时,术语“代码化”是指“解码”。即,如上所述,为该块生成预测块。为了重构该块,预测块被添加到从压缩比特流解码的残差块中。
[0069]
过程600可以被实现为例如可以由诸如发送站102或接收站106的计算设备执行的软件程序。该软件程序可以包括可以被存储在存储器(诸如存储器204或辅助存储214)中并且可以由处理器(例如cpu 202)执行以使得计算设备执行过程600的机器可读指令。在至少一些实施方式中,过程600可以全部或部分由图4的编码器400的帧内/帧间预测阶段402执行。在其他实施方式中,过程600可以全部或部分地由图5的解码器500的帧内/帧间预测阶段508执行。
[0070]
过程600可以使用专门的硬件或固件来实现。一些计算设备可以具有多个存储器、多个处理器或两者都有。过程600的步骤或操作可以使用不同的处理器、存储器或两者来分
布。使用单数形式的术语“处理器”或“存储器”涵盖具有一个处理器或一个存储器的计算设备以及具有多个处理器或多个存储器的设备,这些处理器或多个存储器可以被用在执行一些或所有所述步骤中。
[0071]
过程600可以被用来利用基于分析正被预测的块(或变换块)的邻域的已经重构的像素的在线训练替换上文参考图11描述的预定义系数(c
v
,c
h
,c
d
)。在线训练导致确定(例如,计算、生成等)用在递归外推中的系数。
[0072]
在602,过程600使用与块相邻的训练区域来确定用于生成用于该块的预测块的滤波器系数。训练区域在该块的外围(例如,在该块之外)。训练区域包括多个重构像素。如参考图7a和7b所述,过程600可以使用训练区域来确定滤波器系数。训练区域可以是或可以包括一个或多个训练区域。如下文进一步描述,所确定的滤波器系数最小化差的函数。每个差是训练区域中的像素与训练区域中该像素的预测之间的相应差。
[0073]
如上所述,块的帧内预测使用该块外围的像素。该块外围的像素是重构像素。在编码器中,重构像素可以如参考图4的重构阶段414所述。在解码器中,重构像素可以参考图5的重构阶段510所述。
[0074]
图7a是根据本公开的实施方式的训练区域的图700。图700包括块702。块702可以是过程600为其确定预测块的块。块702仅仅是要预测的当前块的位置的图示。替代地或等效地,块702图示了要生成的预测块。块702可以是任何大小的块。例如,块702可以具有4
×
4、8
×
8、16
×
16、32
×
32、64
×
64、128
×
128或任何其他正方形或矩形块大小的大小(即尺寸)。块702可以是当前帧的块。
[0075]
块702的训练区域可以是或可以包括上方区域704(即,上方训练区域)、左侧区域706(即,左侧训练区域)或其组合中的至少一个。训练区域在本文中被称为上下文。上方区域704包括重构像素并且按光栅扫描顺序位于块702上方。左侧区域706包括重构像素并且按光栅扫描顺序位于块702的左侧。上方区域704和左侧区域706被示为重叠区域。分隔上方区域704和左侧区域706的特定分界和/或边界不是必要的,如下文进一步变得明显。如下文进一步所述,训练区域是上方区域704(即上方区域704的像素)、左侧区域706(即左侧区域704的像素)或两者(两个区域的像素)。
[0076]
上方区域704可以具有wi行的高度,其中wi>1。即,上方区域704可以包括wi(即,多于1)行重构像素。上方区域704可以扩展超过块702的大小达w3个附加列,其中,w3可以是等于或大于0的整数。扩展的w3个附加列在本文中被称为扩展上方区域。
[0077]
左侧区域706可以具有宽度w3/4,其中,w2>1。即,左侧区域706可包括w2(即,多于1)列重构像素。左侧区域706可以扩展超过块702的大小达w4个附加行,其中,w4可以是等于或大于0的整数。扩展的w4个附加行在本文中被称为扩展左侧区域。
[0078]
在示例中,wi、w2、w3和w4中的每一个都可以等于4。然而,wi、w2、w3和w4中的每一个都可以具有不同(相等或不相等)的值,如下文参考离线训练所述。
[0079]
扩展的重构像素(即,扩展的左侧区域和/或扩展的上方区域的重构像素)可用于待编码的一些块。通常,当对图像进行编码时,如上所述,图像被划分为最大的代码化块(例如,宏块、超级块等)或划分成特定大小的代码化块。可以对最大代码化块进行编码以确定速率

失真成本。然后可以将最大代码化块递归地划分为更小的块。例如,可以将64
×
64的块分成四个32
×
32的块;64
×
64块中的每一个可以进一步划分为32
×
32子块等等。可以对
子块确定速率

失真值。因此,对于至少一些子块,右侧相邻重构列和/或下方相邻重构行可用于包含该子块的块(或子块)。
[0080]
在示例中,在线训练可以是或可以包括使用(例如,分析)重构像素的训练区域。可以使用三个可能的训练区域(在此称为“上下文”):完整上下文、左侧上下文和上方上下文。
[0081]
完整上下文包括块702上方的wi个行和块702左侧的w2个列。完整上下文还可以包括w3个附加列(如果可用)和w4个附加左侧行(如果可用)。
[0082]
上下文708中所示的左侧上下文包括块702左侧的重构像素。更具体地,左侧上下文包括块702左侧的w2个列。左侧上下文还可以包括块702的左侧的wi个附加行(如果可用),以及块702下方的w4个附加行(如果可用)。
[0083]
上下文710中图示的上方上下文包括块702上方的重构像素。更具体地,上方上下文包括块702上方的wi个行。上方上下文还可以包括块702的左侧的w2个附加列(如果可用)和块702的右侧的w3个附加列(如果可用)。
[0084]
在示例中,训练区域可以是左侧区域706。在示例中,训练区域可以包括上方区域704和左侧区域706。上方区域704可以包括n个(其中n>1)个重构像素行。左侧区域706可以包括m(其中m>1)个重构像素列。在示例中,n可以等于m。
[0085]
拟合最优滤波器包括确定要用在外推运算中的最优系数。最优滤波器可以是2

抽头滤波器、3

抽头滤波器、4

抽头滤波器或5

抽头滤波器。在示例中,拟合最优滤波器可以是或可以包括确定诸如在优化问题(2)中给出的最小二乘问题的解:
[0086][0087]
本领域技术人员认识到“arg min”确定(例如,计算、查找等)所有可能的(a,β,γ)元组中、最小化函数值的(a,β,γ)元组。在优化问题(2)中,x
l
、x
tl
和x
t
分别表示像素x的左侧、左上和上方相邻像素,如参考图11所述。然而,如下文将变得更加显而易见的是,其他相邻像素也是可能的。在优化问题(2)中,r表示要为其确定最优滤波器系数(α,β,γ)的像素集合。即,集合r包括训练区域的一些重构像素,如下文进一步所述。使用系数(α,β,γ)代替如参考图11所述的预定义系数(c
v
,c
h
,c
d
)。因此,训练区域中的每个像素与训练区域中该像素的相应预测之间的差的函数是训练区域中的每个像素与训练区域中的该像素的相应预测之间的差的平方和的函数。
[0088]
参数λ表示正则化系数,其偏向更接近零的解,其他均相等。接近于零的解是指系数的绝对值是小值。也就是说,如果平方差之和(例如,∑
x∈r
(x

(axi+βχ
tl
+γxt))2)与正则化项(例如λ(α2+β2+y2))相同,则偏向(例如,选择)具有较小绝对值的系数。这种正则化通常可以降低过度拟合的风险。参数λ可以是预定值并且可以根据经验选择。可以使用这样的正则化使得优化问题(2)具有单一解;否则,当λ=0且x=常数(即训练区域中的所有像素值都相同)时,xer,例如,优化问题(2)可以有无限多个解。
[0089]
虽然在优化问题(2)中使用平方和,但更一般地,通过最小化第一重构像素(例如,像素值x)和第二重构像素(例如,像素值x
l
、x
tl
和x
t
)的相应(例如,连续)外推之间的差来生成滤波器系数。在示例中,差可以是绝对差之和。可以使用任何其他合适的误差度量(即差)。对于训练区域中的第一像素,第一像素的预测可以包括应用于相应第二像素的每个滤波器系数的总和,每个第二像素是训练区域中与第一像素相邻的像素。
[0090]
优化问题(2)是确定3抽头滤波器的最优系数的示例。然而,正如已经提到的,最优滤波器可以是2

抽头滤波器、4

抽头滤波器、5

抽头滤波器或其他大小的滤波器。因此,在2抽头滤波器的情况下,过程600使用类似于优化问题(2)的公式来确定最优(α,β)系数;在4抽头滤波器的情况下,过程600使用类似于优化问题(2)的公式确定最优(a,β,γ,δ)系数等等。例如,如下文进一步变得更清楚,最优滤波器可以是使用左侧和左上近邻的2抽头滤波器。例如,如下文进一步变得更清楚,最优滤波器可以是使用左下、左侧、左上和上方近邻的4抽头滤波器。
[0091]
如上所述,过程600使用基于分析块的邻域中已经重构的像素的在线训练来得出(例如,计算、确定、推断等)递归外推的系数。过程600可以被比作将重构像素的部分(即,第一重构像素)用作外围像素,如参考例如图9的第一像素908和/或第二像素910所述;并且将重构像素的另一部分(即第二重构像素)用作图像块的源像素。上方区域704(即,上方训练区域)的部分712被用作图示。在该图示中,假设了3抽头滤波器。
[0092]
像素716

720是第一重构像素的部分。像素714是第二重构像素的部分。像素716、718、720分别是像素714的左侧、左上和上方相邻像素。对于像素714,x对应于源像素的值,并且总和(αx,+βχ
tl
+yx
t
)对应于使用相邻值x
/
、x
*
和x的系数(α,β,γ)的作为外推的x的预测。类似于参考图11描述的递归外推,对训练区域中的其余像素执行递归外推。
[0093]
如上所述,过程600可以确定用于最优滤波器的系数。因此,除了滤波器系数之外,过程600可以确定用于至少可能抽头组合的子集的最优系数。过程600然后可以选择对应于最小误差的那些系数和抽头组合。
[0094]
图7b是根据本公开的实施方式的可能抽头的图750。给定当前像素752(即,当前像素位置),过程600可以选择优化问题(2)中的可用相邻像素的组合。可用相邻像素可以包括标记为“0
”‑“
4”的像素。即,可用相邻像素可以包括左下像素(标记为“0”)、左侧像素(标记为“1”)、左上像素(标记为“2”)、上方像素(标记为“3”),以及右上像素(标记为“4”)。
[0095]
根据本公开的实施方式可以选择标记为“0
”‑“
4”的可用像素的任何组合。然而,在下文进一步描述的一些实施方式中,没有使用包括标记为“0”的像素和标记为“4”的像素两者的组合。也就是说,不允许同时包括左下和右上近邻两者的像素组合。由于使用右上像素需要以行为主的预测顺序,而使用左下像素需要以列为主的预测顺序,因此可能会施加限制。将右上像素和左下像素两者用于递归外推会产生依赖性,由此外推运算需要尚未被编码(例如,重构)的至少一个像素。
[0096]
图11结合图7b使用来图示依赖性。预测图11的位置“1”处的像素并且使用图7b的标记为“0”和“4”的像素将是指使用x2,o和xo,2,它们可能都可用。然而,预测图11的位置“5”处的像素并使用图7b中标记为“0”和“4”的像素需要x3,o和位置“2”处的像素值;以及预测图11的位置“2”处的像素并使用图7b中标记为“0”和“4”的像素将需要位置“5”和xo,3处的像素值。因此,预测位置“5”处的像素值需要位置“2”处的像素值,反之亦然,从而产生依赖性。
[0097]
在没有一起使用左下和右上近邻的情况下,总共有18种抽头组合是可能的:九个2抽头滤波器是可能的(即,使用像素组合(“0”,“1”)、(“0”,“2”)、(“0”,“3”)、(“1”,“2”)、(“1”,“3”)、(“1”,“4”)、(“2”,“3”)、(“2”,“4”)和(“3”,“4”));七个3

抽头滤波器是可能的(即,使用像素组合(“0”,“1”,“2”)、(“0”,“1”,“3”)、(“1”,“2”,“3”)、(“1”,“2”,“4”)、(“1”,

3”,“4”)和(“2”,“3”,“4”)),以及两个4抽头滤波器是可能的(即,使用像素组合(“0”,“1”,“2”,“3”)和(“1”,“2”,“3”,“4”))。
[0098]
如上所述,训练区域可以有三种可能性;即,使用上方区域、使用左侧区域,或使用左侧和上方区域两者。如上所述,存在18种可能的滤波器像素组合。因此,在实施方式中,总共有3*18=54种可能的滤波器类型和训练区域组合。这些组合可以被称为自适应滤波器模式。即,每个组合可以是自适应滤波器模式。自适应滤波器模式可以被编号,诸如从0到53。因此,在示例中,使用与块相邻的训练区域来确定用于生成块的预测块的滤波器系数可以包括确定(例如,挑选、选择等)自适应滤波器模式,该模式指示将在递归外推中使用的训练区域(即上方区域、左侧区域或两者)或相邻像素位置(即,左下、左侧、左上、上方和右上的组合中的哪一个)中的至少一个。
[0099]
当由解码器实现时,使用与块相邻的训练区域来确定用于生成块的预测块的滤波器系数可以包括从压缩比特流中解码自适应滤波器模式。压缩比特流可以是图5的压缩比特流420。例如,解码器可以接收自适应滤波器模式的索引并且可以使用将在递归外推中使用的所指示的训练区域和/或所指示的相邻像素位置来使用优化问题(2)计算最优滤波器系数。如上所述,取决于所指示的相邻像素位置,解码器可以计算2、3或4个滤波器系数。
[0100]
再次参考图6,在604,过程600使用所确定的滤波器系数生成预测块。使用递归外推生成预测块。递归外推类似于参考图11所描述的递归外推。然而,将理解到,虽然图11的递归外推使用3抽头滤波器,但是过程600可以使用如在602确定的抽头数量。还将理解到,虽然图11的递归外推可以在递归外推中使用左侧、左上和上方相邻像素,但是过程600可以使用如在602确定的并且如参考图7b的图750所述的像素的组合。
[0101]
当由编码器实现时,过程600可以包括将自适应滤波器模式编码在压缩比特流中。压缩比特流可以是图4的压缩比特流420。编码自适应滤波器模式可以包括或者可以是指编码自适应滤波器模式的指示(诸如索引)。可以使用累积分布函数来熵编码自适应滤波器模式。在示例中,无论块大小如何,都可以使用相同的累积分布函数来熵编码自适应滤波器模式。
[0102]
如上所述,54种滤波器类型和训练区域的组合是可能的。此外,使用固定的训练区域大小(即,wi和w2中的每一个可以等于4)。然而,如果左侧区域和/或上方区域的不同大小也是可变的,则组合的总数显著增加。增加的组合数量在计算上可能负担过高和/或可能需要大量的信令开销。例如,为了指示54种可能的组合之一,可能需要六比特。因此,在一些实施方式中,可以使用离线训练来减少滤波器类型、训练区域和训练区域大小的组合数量。
[0103]
离线训练被用于选择(例如,查找、确定、挑选等)最优自适应滤波器模式集合,其将由编码器和解码器使用。即,离线训练被用于选择所有可能的自适应滤波器模式集合的子集,使得相比于不使用所选择的自适应滤波器模式,子集的自适应滤波器模式导致最大增益(mse增益或rd成本增益,如下文进一步描述)。
[0104]
在实施方式中,训练区域大小可以是固定的,并且可以选择(例如,确定、计算等)滤波器和训练区域组合的最优数量。在示例中,可以选择七个最优滤波器和训练区域组合。因此,过程600只能使用(例如,测试)那些最优组合。
[0105]
为了确定最优滤波器和训练区域组合,离线训练过程可以考虑优化问题(3)的最小化问题:
[0106][0107]
在优化问题(3)中,f是所有可能的54个滤波器的集合,如上所述;b是足够大的可变大小块的训练集合。p
f
(f)是f的大小为k的子集集合。例如,如果希望找到5个滤波器的最优组合,则将k设置为5。s
k
是由优化问题(3)得到的k个最优滤波器的组合。mse
best_mode
(b)是当使用(如由编码器选择的)最优帧内预测模式预测训练块b时获得的均方差。mse
f
(b)是使用自适应帧内预测模式预测块b的均方差。最优帧内预测模式是为编码块b,将由帧内/帧间预测阶段(诸如图4的帧内/帧间预测阶段402)选择的可用帧内预测模式之一。可用帧内预测模式不包括本文描述的自适应滤波器模式。msef(b)是如果使用自适应滤波器对块b进行编码获得的均方差。
[0108]
优化问题(3)的解是当根据mse,对每一块选取最优模式时,为了最小化训练集合b中的预测块的平均mse的前k个自适应滤波器。“平均mse”是指所有训练块的整体mse,而不是最小化用于每个训练块的mse。
[0109]
图8是根据本公开的实施方式的最优自适应滤波器的图。曲线810图示了用于最小化由优化问题(3)给出的预测的mse的目的的最优自适应滤波器配置。注意,曲线810的每个自适应滤波器具有与图7b的图750的形状相同的形状。
[0110]
诸如点812的点表示在相应自适应滤波器组合中使用的抽头位置。标签(诸如滤波器配置上方的标签814(即“上方”))指示要使用的训练区域(即上下文)。因此,如果标签指示“上方”,则将使用上方区域(即上方上下文);如果标签指示“左侧”,则将使用左侧区域(即左侧上下文);以及如果没有指示标签,则训练区域包括左侧区域和上方区域两者(即完整上下文)。因此,例如,自适应滤波器816使得在递归滤波期间上方和右上像素将处于外推运算中,并且当诸如使用(即求解)优化问题(1)确定滤波器系数时,将使用上方区域和左侧区域两者(即,完整上下文)。例如,自适应滤波器818使得在递归滤波期间,将在外推运算中使用左侧和左上像素,并且当确定滤波器时,将仅使用上方区域(即,上方上下文)。
[0111]
因此,每个自适应帧内预测模式可以由三个变量表示;即抽头的数量、抽头的位置和训练区域。
[0112]
曲线810指示仅使用最优自适应滤波器(即,自适应滤波器820),则与不使用自适应滤波器820进行帧内预测相比,mse改进约为2.5%。使用前七个自适应滤波器(即,从自适应滤波器820到自适应滤波器822的所有滤波器)会导致12%的mse改进。
[0113]
代替求解基于mse的优化问题(诸如参考优化问题(3)所述)来确定最优自适应滤波器配置,优化问题可以基于与使用自适应滤波器编码块b相比,使用最优帧内预测模式编码训练集b的块b的速率

失真(rd)成本。因此,可以使用优化问题(4)代替优化问题(3):
[0114][0115]
在优化问题(4)中,f是所有可能的54个滤波器的集合,如上所述;b是足够大的可变大小的块的训练集合。rd
bestjnode
(b)是使用最优(如由编码器选择的)帧内预测模式预测训练块b时获得的速率

失真值。rd
f
(b)是使用自适应帧内预测模式预测块b时的速率

失真值。最优帧内预测模式是通过帧内/帧间预测阶段(诸如图4的帧内/帧间预测阶段402),为编码块b选择的可用帧内预测模式之一。可用帧内预测模式不包括本文描述的自适应滤波
器模式。
[0116]
无论使用优化问题(3)还是优化问题(4),都可以选择最优自适应滤波器。每个最优自适应滤波器都可以用作帧内预测模式(例如,自适应帧内预测模式)。在示例中,可以选择五个、七个、更少或更多的最优自适应滤波器来用作帧内预测模式。
[0117]
在上面的描述中,图7a的训练区域704

710被描述为具有固定大小。然而,在一些实施方式中,可以对每个选择的最优自适应滤波器确定训练区域的最优大小。例如,如果如上所述,选择七(7)个最优自适应滤波器,则可以求解优化问题(5)以对每个最优自适应滤波器确定相应的训练区域的最优大小;即,上方区域大小、左侧区域大小、右侧区域大小和下方区域大小。
[0118][0119]
在优化问题(5)中,(w1,...,w7)描述了用于所选的七个最优自适应滤波器中的每一个的训练区域大小;b表示具有一个固定大小的块的训练集合(例如,变换单元或预测单元);r^
dapt
(w
l
,b)是将具有w1的i
*
自适应滤波器帧内模式用作用于当前块b的训练区域参数的速率

失真成本。
[0120]
由于尝试(w1,...,w7)的每种可能组合的蛮力方法可能在计算上非常昂贵,因此在一些实施方式中,可以使用贪婪近似最小化算法。例如,从一些合理的初始近似值开始,可以迭代地选取模式,其中,该模式提供最佳改进。可以凭经验选择这种近似。例如,可以测试简单初始设置(诸如wi=w2=w3=w4=^),并且可以将简单初始设置中最好的一个选择为初始设置。然后可以修改模式的训练区域形状参数,同时保持所有其他模式固定。为了进一步缩小搜索空间,可以只考虑在给定模式下训练区域形状的当前近似周围的小邻域中的训练区域形状修改。然后可以重复该迭代过程,直到优化问题收敛到解为止。
[0121]
在实施方式中,表i列出了编码器(诸如图4的编码器400)和解码器(诸如图5的解码器500)使用的七种自适应帧内预测模式。表i的列“num”提供了用于易于引用自适应帧内预测模式的索引;列“滤波器大小”指示自适应帧内预测模式的抽头数量,列“相邻像素”是指在递归外推中使用的相邻像素(如参考图7b所述);以及列“训练上下文”是指用于(如参考优化问题(2)所述的)得出自适应帧内预测模式的系数值的上下文(如参考图7a所述)。
[0122]
表i
[0123]
num滤波器大小相邻像素训练上下文03抽头1,2,3完整上下文13抽头0,1,3完整上下文23抽头1,3,4完整上下文34抽头0,1,2,3左侧上下文44抽头1,2,3,4上方上下文53抽头0,2,3完整上下文63抽头1,2,4完整上下文
[0124]
下面的数组dapter_filter_intra_thickness_ver、adapt_filter_intra_thickness_hor、adapt_filter_intra_top_right_offset和adapt_filter_intra_bottom_left_offset分别对应于上文参考图7a所述的wi、w2、w3和w4。也就是说,数组定义了描述了
用于针对每个变换大小和自适应滤波器帧内模式拟合自适应滤波器的训练区域的大小的参数。
[0125]
数组adapt_filter_intra_thickness_ver、adapt_filter_intra_thickness_hor、adapt_filter_intra_top_right_offset和adapt_filter_intra_bottom_left_offset通过变换块大小描述了表i的每个自适应帧内预测模式的相应wi、w2、w3和w4大小。
[0126]
adapt_filter_intra_thicknes s_ver[tx_sizes_all][adapt_filter_intra_modes]=
[0127]
{
[0128]
{4,6,2,4,5,6,6},//tx_4x4
[0129]
{3,5,6,5,8,8,9},//tx_8x8
[0130]
{11,10,12,10,6,8,9},//tx_16x16
[0131]
{13,16,13,14,13,16,13},//tx_32x32
[0132]
{33,33,33,33,33,33,33},//tx_64x64
[0133]
{5,9,3,3,9,8,8},//tx_4x8
[0134]
{3,7,2,5,5,7,6},//tx_8x4
[0135]
{11,5,11,8,7,8,8},//tx_8x1 6
[0136]
{9,5,9,7,5,8,3},//tx_1 6x8
[0137]
{14,15,20,19,14,14,13},//tx_16x32
[0138]
{5,7,8,9,5,12,11},//tx_32x1 6
[0139]
{33,33,33,33,33,33,33},//tx_32x64
[0140]
{17,17,17,17,17,17,17},//tx_64x32
[0141]
{7,11,9,10,11,6,6},//tx_4x1 6
[0142]
{2,7,5,1,4,6,7},//tx_16x4
[0143]
{13,13,19,15,13,15,17},//tx_8x32
[0144]
{5,4,6,6,3,9,9},//tx_32x8
[0145]
{33,33,33,33,33,33,33},//tx_16x64
[0146]
{9,9,9,9,9,9,9}//tx_64x1 6
[0147]
};
[0148]
adapt_f ilter_int ra_thicknes s_hor[tx_sizes_all][adap t_filter_intra_modes]={
[0149]
{2,2,5,5,6,7,6},//tx_4x4
[0150]
{9,5,6,6,2,7,8},//tx_8x8
[0151]
{12,9,9,6,10,7,6},//tx_16x16
[0152]
{16,14,13,15,19,17,16},//tx_32x32
[0153]
{33,33,33,33,33,33,33},//tx_64x64
[0154]
{3,6,6,5,1,2,6},//tx_4x8
[0155]
{3,4,9,9,2,5,7},//tx_8x4
[0156]
{9,5,6,7,4,7,7},//tx_8x1 6
[0157]
{6,9,5,11,10,10,9},//tx_16x8
[0158]
{12,9,6,5,11,11,7},//tx_16x32
[0159]
{19,14,19,15,14,13,13},//tx_32x1 6
[0160]
{17,17,17,17,17,17,17},//tx_32x64
[0161]
{33,33,33,33,33,33,33},//tx_64x32
[0162]
{2,3,6,5,4,5,7},//tx_4x16
[0163]
{11,13,6,9,11,9,6},//tx_16x4
[0164]
{9,9,5,3,8,5,4},//tx_8x32
[0165]
{16,20,13,18,16,13,20},//tx_32x8
[0166]
{9,9,9,9,9,9,9},//tx_16x64
[0167]
{33,33,33,33,33,33,33}//tx_64x16
[0168]
};
[0169]
adapt_filter_int ra_top_right_of fset
[0170]
[tx_si zes_all][adap t_filter_intra_

modes]={
[0171]
{1,4,3,2,1,

4,0},//tx_4x4
[0172]
{2,1,7,

1,1,1,3},//tx_8x8
[0173]
{

2,

1,8,

3,5,2,5},//tx_16x16
[0174]
{

2,

3,17,

3,14,2,14},//tx_32x32
[0175]
{0,0,33,0,33,0,33},//tx_64x64
[0176]
{

3,1,4,2,1,3,6},//tx_4x8
[0177]
{0,1,6,2,5,

3,3},//tx_8x4
[0178]
{

1,0,8,

4,3,2,5},//tx_8x16
[0179]
{0,0,8,

3,7,0,11},//tx_16x8
[0180]
{0,

2,10,

2,6,

4,7},//tx_16x32
[0181]
{

1,

4,20,

3,16,

3,15},//tx_32x16
[0182]
{0,0,17,0,17,0,17},//tx_32x64
[0183]
{0,0,33,0,33,0,33},//tx_64x32
[0184]
{4,

1,2,

2,1,

3,2},//tx_4x1 6
[0185]
{2,3,11,3,7,

3,8},//tx_16x4
[0186]
{

1,

4,5,

2,2,

4,7},//tx_8x32
[0187]
{

2,2,15,

4,19,

1,17},//tx_32x8
[0188]
{0,0,9,0,9,0,9},//tx_16x64
[0189]
{0,0,33,0,33,0,33}//tx_64x16
[0190]
};
[0191]
adapt_f ilter_intra_bottom_lef t_of fset
[0192]
[tx_si zes_all][adap t_filter_intra_modes]={
[0193]
{

1,3,0,2,3,5,

3},//tx_4x4
[0194]
{1,7,1,1,2,7,

2},//tx_8x8
[0195]
{

1,6,

3,8,

1,10,

1},//tx_16x16
[0196]
{

1,13,

4,15,

2,15,

3},//tx_32x32
[0197]
{0,33,0,33,0,33,0},//tx_64x64
[0198]
{

3,8,

1,4,1,7,0},//tx_4x8
[0199]
{0,4,2,1,0,3,0},//tx_8x4
[0200]
{

4,10,

2,7,

1,9,0},//tx_8x16
[0201]
{

1,5,

3,4,2,7,4},//tx_16x8
[0202]
{

4,16,1,13,

3,15,

1},//tx_16x32
[0203]
{

3,8,1,7,

1,9,

1},//tx_32x16
[0204]
{0,33,0,33,0,33,0},//tx_32x64
[0205]
{0,17,0,17,0,17,0},//tx_64x32
[0206]
{

1,11,0,9,1,8,

2},//tx_4x16
[0207]
{2,4,1,1,2,0,

3},//tx_16x4
[0208]
{

1,18,

3,13,1,14,1},//tx_8x32
[0209]
{

2,5,0,4,

2,5,

1},//tx_32x8
[0210]
{0,33,0,33,0,33,0},//tx_16x64
[0211]
{0,9,0,9,0,9,0}//tx_64x16
[0212]
};
[0213]
现在使用adapt_filter_intra_thicknessjior的行“{12,9,9,6,10,7,6},//tx_16x16”来说明应当如何理解上述数组:对于大小为16
×
16的变换块,对于表i的自适应帧内预测模式0

7的每一个的w2的值分别为12、9、9、6、10、7和6。
[0214]
所公开的实施方式的另一方面是用于使用帧内预测生成用于解码帧的块的预测块的过程,该过程包括从压缩比特流解码自适应帧内预测模式,该自适应帧内预测模式指示将在外推运算中使用的重构像素的训练区域;使用训练区域确定用于生成预测块的滤波器系数;并且通过使用滤波器系数的递归外推来生成该块的预测块。可以将预测块添加到解码的残差块以重构块。
[0215]
如上所述,自适应帧内预测模式可以是通过求解优化问题,使用离线训练,从一组f个可能的自适应帧内预测模式中选择的多个自适应帧内预测模式s
k
之一。在示例中,优化可以是优化问题(3)。在另一个示例中,优化问题可以是优化问题(4)。在另一个示例中,优化问题可以包括优化问题(3)和优化问题(5)。在另一个示例中,优化问题可以包括优化问题(4)和优化问题(5)。
[0216]
表ii呈现了bjontegaard速率差(bd

速率)方面的比较结果,负值指示代码化性能增益。表ii比较了与不使用自适应帧内预测模式的基线相比,当使用具有最优训练区域大小的前七个最优自适应滤波器、使用具有最优训练区域大小的前五个最优自适应滤波器、使用具有最优训练区域大小的前三个最优自适应滤波器,以及使用具有固定训练区域大小的前七个最优自适应滤波器时获得的增益。
[0217][0218]
表iii比较了传统滤波器帧内模式与提出的自适应模式相比于基线的增益。标记为filter_intra的行说明了与不使用filter_intra模式相比,在使用模式filter_mode(即,使用预定义系数)时获得的增益。标记为adapt_filter_intra的行说明了与不使用自适应帧内预测模式相比,当使用本文描述的自适应帧内预测模式时获得的增益。标记为filter_intra+adapt_filter_intra的行说明了在使用filter_intro模式和自适应帧内预测模式时获得的增益。
[0219][0220]
上文所述的编码和解码的各方面图示一些编码和解码技术。然而,将理解到编码和解码,如在权利要求中使用那些术语,可以是指对数据的压缩、解压缩、变换或任何其它处理或改变。
[0221]
单词“示例”或“实施方式”在本文中用于意指用作示例、实例或图示。在本文中被描述为“示例”或“实施方式”的任何方面或设计不一定被解释为优于其它方面或设计或比其他方面或设计有利。相反,使用单词“示例”或“实施方式”旨在以具体方式呈现构思。如在本技术中所使用的,术语“或”旨在意指包括性“或”而不是排他性“或”。即,除非另有说明或者从上下文很明显,否则语句“x包括a或b”旨在意指其自然包含性排列中的任一种。即,如果x包括a;x包括b;或者x包括a和b两者,则在上述实例中的任一个下满足“x包括a或b”。此外,除非另有说明或者从上下文很明显针对单数形式,否则如本技术和所附权利要求中所使用的冠词“一”和“一个”通常应当被解释成意指“一个或多个”。此外,在全文中,使用术语“实施方式”或“一个实施方式”不应当旨在意指同一实施例或实施方式,除非被如此描述。
[0222]
发送站102和/或接收站106的实施方式(以及存储在其上并且/或者由此——包括由编码器400和解码器500——执行的算法、方法、指令等)可以用硬件、软件或其任何组合来实现。硬件可以包括例如计算机、知识产权(ip)核、专用集成电路(asic)、可编程逻辑阵列、光学处理器、可编程逻辑控制器、微码、微控制器、服务器、微处理器、数字信号处理器或任何其它适合的电路。在权利要求中,术语“处理器”应当被理解为单独地或相结合地覆盖上述硬件中的任一个。术语“信号”和“数据”可以可互换地使用。另外,发送站102和接收站106的各部分不一定必须被以相同的方式实现。
[0223]
另外,在一个方面中,例如,可以使用具有计算机程序的计算机或处理器来实现发送站102或接收站106,所述计算机程序当被执行时,执行本文描述的各个方法、算法和/或指令中的任何一个。此外或可替代地,例如,可利用专用计算机/处理器,所述专用计算机/处理器可以包含用于执行本文描述的方法、算法或指令中的任何一个的其它硬件。
[0224]
可以例如在视频会议系统中的计算机上实现发送站102和接收站106。可替代地,可以在服务器上实现发送站102,并且可以在与服务器分开的设备(诸如手持通信设备)上实现接收站106。在这种情况下,发送站102可以使用编码器400来将内容编码成编码视频信号并且将该编码视频信号发送到通信设备。进而,通信设备然后可以使用解码器500来对编码视频信号进行解码。可替代地,通信设备可对本地存储在通信设备上的内容(例如,不由发送站102发送的内容)进行解码。其它发送站102和接收站106实施方式方案是可用的。例如,接收站106可以是通常固定的个人计算机而不是便携式通信设备,和/或包括编码器400的设备也可以包括解码器500。
[0225]
另外,本公开的实施方式的全部或一部分可以采用例如可从有形计算机可用介质或计算机可读介质访问的计算机程序产品的形式。计算机可用介质或计算机可读介质可以是可以例如有形地包含、存储、传送或者输送程序以供任何处理器使用或者结合任何处理器使用的任何设备。介质可以是例如电子、磁、光学、电磁或半导体设备。其它适合的介质也是可用的。
[0226]
已经描述了上述实施例、实施方式和方面以便允许容易理解本公开并且不限制本公开。相反,本公开旨在涵盖包括在所附权利要求的范围内的各种修改和等同布置,该范围应被赋予最广泛解释以便包含如在法律容许下的所有这样的修改和等效结构。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1