基于神经网络的具有残差缩放的视频编解码环路滤波器的制作方法

文档序号:31464666发布日期:2022-09-09 20:21阅读:79来源:国知局
基于神经网络的具有残差缩放的视频编解码环路滤波器的制作方法
基于神经网络的具有残差缩放的视频编解码环路滤波器
1.相关申请的交叉引用
2.本专利申请要求lemon公司于2021年3月4日提交、标题为“基于神经网络的具有残差缩放的视频编解码环路滤波器”的美国临时专利申请no.63/156,726的优先权和利益,上述申请的全部公开内容作为本技术公开内容的一部分通过引用并入。
技术领域
3.本公开大致涉及视频编解码,并且特别地,涉及图像/视频编解码中的环路滤波器。


背景技术:

4.数字视频在互联网和其他数字通信网络上占据最大的带宽使用量。随着能够接收和显示视频的连接用户装置的数量增加,预计数字视频使用的带宽需求将继续增长。


技术实现要素:

5.本公开的方面/实施例提供一个或多个神经网络(neural network,nn)滤波器模型,该模型作为用于减少压缩期间产生的失真的在后处理阶段中所使用的环路滤波技术或滤波技术的一部分进行训练。此外,具有不同特性的样点由不同的nn滤波器模型进行处理。本公开还详细说明了如何缩放nn滤波器的输出以实现更好的性能,如何设置推理块尺寸,以及如何组合多个nn滤波器模型的输出。
6.第一方面涉及一种由编解码设备实施的方法。该方法包括:将神经网络(nn)滤波器的输出应用于视频单元的未滤波样点以生成残差;将缩放函数应用于所述残差以生成缩放残差;将另一个未滤波样点添加到所述缩放残差以生成滤波样点;以及基于生成的所述滤波样点在视频媒体文件和比特流之间进行转换。
7.可选地,在前述任一方面中,该方面的另一实施方式提供在生成所述残差之前,重构所述未滤波样点。
8.可选地,在前述任一方面中,该方面的另一实施方式提供根据y=x+f(r)生成所述滤波样点,其中,x表示所述未滤波样点,r表示基于所述nn滤波器的所述输出确定的所述残差,f表示所述缩放函数,并且y表示所述滤波样点。
9.可选地,在前述任一方面中,该方面的另一实施方式提供根据y=x+f(r,x)生成所述滤波样点,其中,x表示所述未滤波样点,r表示基于所述nn滤波器的所述输出确定的所述残差,f表示所述缩放函数,并且y表示所述滤波样点。
10.可选地,在前述任一方面中,该方面的另一实施方式提供根据y=x+f(r-x)生成所述滤波样点,其中,x表示所述未滤波样点,r表示基于所述nn滤波器的所述输出确定的所述残差,f表示所述缩放函数,并且y表示所述滤波样点。
11.可选地,在前述任一方面中,该方面的另一实施方式提供根据y=clip(x+f(r))生成所述滤波样点,其中,x表示所述未滤波样点,r表示基于所述nn滤波器的所述输出确定的
所述残差,f表示所述缩放函数,clip表示基于所述未滤波样点的位深度的裁剪(clipping)函数,并且y表示所述滤波样点。
12.可选地,在前述任一方面中,该方面的另一实施方式提供所述缩放函数是基于根据f(r)=α
×
r+β的线性模型,其中,r表示基于所述nn滤波器的所述输出确定的所述残差,f表示所述缩放函数,并且α和β表示一对系数候选(α,β)。
13.可选地,在前述任一方面中,该方面的另一实施方式提供确定当将所述nn滤波器应用于所述未滤波样点时要使用的推理块尺寸。
14.可选地,在前述任一方面中,该方面的另一实施方式提供从多个推理块尺寸候选中选择所述推理块尺寸,其中,所述多个推理块尺寸候选中的每个推理块尺寸候选均基于量化参数、条带类型、图片类型、分割树和颜色分量中的至少一个。
15.可选地,在前述任一方面中,该方面的另一实施方式提供解析所述比特流以获取指示符,其中,所述指示符指示当将所述nn滤波器应用于所述未滤波样点时要使用的推理块尺寸。
16.可选地,在前述任一方面中,该方面的另一实施方式提供所述推理块尺寸具有第一比特率的第一值和第二比特率的第二值,其中,所述第一值高于所述第二值,并且其中,所述第一比特率低于所述第二比特率。
17.可选地,在前述任一方面中,该方面的另一实施方式提供所述推理块尺寸具有第一精度的第一值和第二精度的第二值,其中,所述第一值高于所述第二值,并且其中,所述第一精度高于所述第二精度。
18.可选地,在前述任一方面中,该方面的另一实施方式提供所述nn滤波器为输出被应用于所述未滤波样点以生成所述残差的多个nn滤波器之一。
19.可选地,在前述任一方面中,该方面的另一实施方式提供当将所述多个nn滤波器的所述输出应用于所述未滤波样点时,所述多个nn滤波器中的一些nn滤波器使用不同的推理块尺寸。
20.可选地,在前述任一方面中,该方面的另一实施方式提供将所述多个nn滤波器的所述输出单独加权并应用于所述未滤波样点作为加权和。
21.可选地,在前述任一方面中,该方面的另一实施方式提供在所述比特流中信令通知与所述多个nn滤波器中的每个nn滤波器对应的模型和权重。
22.可选地,在前述任一方面中,该方面的另一实施方式提供对应于所述多个nn滤波器中的每个nn滤波器的权重基于量化参数、条带类型、图片类型、颜色分量、颜色格式和时域层中的一个或多个。
23.可选地,在前述任一方面中,该方面的另一实施方式提供对应于所述多个nn滤波器中的每个nn滤波器的权重基于所述未滤波样点的nn滤波器模型、推理块尺寸或者空域位置中的一个或多个。
24.第二方面涉及一种编解码视频数据的设备,包括处理器和其上具有指令的非暂时性存储器,其中,当所述处理器执行所述指令时使所述处理器:将神经网络(nn)滤波器的输出应用于视频单元的未滤波样点以生成残差;将缩放函数应用于所述残差以生成缩放残差;将另一个未滤波样点添加到所述缩放残差以生成滤波样点;以及基于生成的所述滤波样点,在视频媒体文件和比特流之间进行转换。
25.第三方面涉及一种非暂时性计算机可读介质,包括由编解码设备使用的计算机程序产品,所述计算机程序产品包括存储在所述非暂时性计算机可读介质上的计算机可执行指令,当一个或多个处理器执行所述计算机可执行指令时,使所述编解码设备:将神经网络(nn)滤波器的输出应用于视频单元的未滤波样点以生成残差;将缩放函数应用于所述残差以生成缩放残差;将另一个未滤波样点添加到所述缩放残差以生成滤波样点;以及基于生成的所述滤波样点,在视频媒体文件和比特流之间进行转换。
26.为了清楚起见,上述任意一个实施例均可以与上述其他实施例中的任意一个或多个相互结合,以在本公开的范围内得到新的实施例。
27.以下结合附图、说明书和权利要求的详细描述,将更清楚地理解本公开技术的以上和其他方面和特征。
附图说明
28.为了更全面地理解本公开,结合附图及详细描述,参考以下简要说明,其中,相同或相似的附图标记表示相同或相似的部件。
29.图1是图片的光栅扫描条带分割的示例。
30.图2是图片的矩形条带分割的示例。
31.图3是将图片分割为片、图块和矩形条带的示例。
32.图4a是跨底部图片边界的编解码树块(coding tree block,ctb)的示例。
33.图4b是跨右图边界的ctb的示例。
34.图4c是跨右下图片边界的ctb的示例。
35.图5是编码器框图的示例。
36.图6是8
×
8样点块内的样点的图示。
37.图7是涉及滤波器开/关决定和强/弱滤波器选择的像素的示例。
38.图8示出了eo样点分类的四个一维(1-d)定向模式。
39.图9示出了基于几何变换的自适应环路滤波器(geometry transformation-based adaptive loop filter,galf)滤波器形状的示例。
40.图10示出了用于5
×
5菱形滤波器支持的相对坐标的示例。
41.图11示出了用于5
×
5菱形滤波器支持的相对坐标的另一示例。
42.图12a是提出的cnn滤波器的示例架构。
43.图12b是残差块(resblock)的构造的示例。
44.图13a是使用残差缩放和神经网络滤波生成滤波样点的过程的示例。
45.图13b是使用残差缩放和神经网络滤波生成滤波样点的过程的另一示例。
46.图13c是使用残差缩放和神经网络滤波生成滤波样点的过程的另一示例。
47.图13d是使用残差缩放和神经网络滤波生成滤波样点的过程的另一示例。
48.图14是示出示例视频处理系统的框图。
49.图15是视频处理设备的框图。
50.图16是说明示例视频编解码系统的框图。
51.图17是说明视频编码器的示例的框图。
52.图18是说明视频解码器的示例的框图。
53.图19示出了根据本公开实施例的视频数据编解码方法。
具体实施方式
54.首先应当理解的是,尽管下文提供了一个或多个实施例的说明性实施方式,但是本公开的系统和/或方法可以使用任意数量的技术来实施,无论是目前已知的或者是已存在的。本公开不应仅限于以下说明的说明性实施方式、附图和技术,其包括在此说明和描述的示例性设计和实施方式,而是可以在所附权利要求的范围内及其全部等效范围内进行修改。
55.在一些描述中使用h.266术语仅是为了便于理解,而不是为了限制本公开技术的范围。因此,本公开描述的技术也适用于其他视频编解码器协议和设计。
56.视频编解码标准主要是通过开发众所周知的国际电信联盟-电信标准化部门(international telecommunication union

telecommunication,itu-t)和国际标准化组织(iso)/国际电工委员会(iec)标准而发展起来的。itu-t制定了h.261和h.263,iso/iec制定了mpeg-1和mpeg-4视觉,并且这两个组织联合制定了h.262/mpeg-2视频标准、h.264/mpeg-4高级视频编解码(advanced video coding,avc)标准和h.265/高效视频编解码(high efficiency video coding,hevc)标准。
57.自h.262以来,视频编解码标准基于混合视频编解码结构,其中采用了时域预测加变换编解码。为了探索hevc以外的未来视频编解码技术,vceg和mpeg于2015年联合成立了联合视频探索团队(joint video exploration team,jvet)。此后,jvet采纳了许多新方法,并将其引入到名为联合探索模型(joint exploration model,jem)的参考软件中。
58.在2018年4月,成立了vceg(q6/16)与iso/iec jtc1 sc29/wg11(mpeg)之间的联合视频专家小组(joint video expert team,jvet),以致力于目标在于相比hevc降低50%比特率的多功能视频编解码(versatile video coding,vvc)标准。vvc第一版已于2020年7月最终确定。
59.讨论了颜色空间和色度亚采样。颜色空间,也称为颜色模型(或者颜色系统),是一种抽象的数学模型,其简单地将颜色范围描述为数字元组,通常为3或4个值或颜色分量(例如rgb)。基本上来说,颜色空间是对坐标系和子空间的进一步详细说明。
60.对于视频压缩,最常用的颜色空间是ycbcr和rgb。y

cbcr或y pb/cb pr/cr,也写作ycbcr或y

cbcr,是用作视频和数字摄影系统中的颜色图像流水线的一部分的一类颜色空间。y

是亮度分量,cb和cr是蓝色差和红色差色度分量。y'(带有标符号)与y不同,y是亮度,其表示光强度基于伽马校正rgb原色进行非线性编码。
61.色度亚采样是利用人类视觉系统对色差的敏锐度低于对亮度的敏锐度,通过对色度信息实施比对亮度信息更低的分辨率来对图像进行编码的做法。
62.对于4:4:4色度亚采样,三个y'cbcr分量中的每一个都具有相同的采样率,因此没有色度亚采样。这种方案有时用于高端胶片扫描仪和电影后期制作中。
63.对于4:2:2色度亚采样,两个色度分量以亮度采样率的一半进行采样:水平色度分辨率减半。这将未压缩视频信号的带宽减少了三分之一,并且几乎没有视觉差异。
64.对于4:2:0色度亚采样,水平采样比4:1:1翻倍,但由于在此方案中仅在每条交替线上对cb和cr通道进行采样,因此垂直分辨率减半。因此数据速率是相同的。cb和cr均分别
在水平和垂直方向以因子2进行子采样。4:2:0方案有具有不同的水平和垂直定位的三种变体。
65.在mpeg-2中,cb和cr是水平共位的。cb和cr位于垂直方向上的像素之间(位于间隙)。在联合图像专家组(joint photographic experts group,jpeg)/jpeg文件交换格式(jpeg file interchange format,jfif)、h.261和mpeg-1中,cb和cr位于间隙,即位于间隔亮度样点的中间。在4:2:0dv中,cb和cr在水平方向上共位。在垂直方向上,它们共位于交替线上。
66.提供了视频单元的定义。一张图片被划分为一个或多个片行和一个或多个片列。片是覆盖图片的矩形区域的一系列编解码树单元(coding tree unit,ctu)。一个片被划分为一个或多个图块,每个图块由片内的若干ctu行组成。未被分割成多个图块的片也被称为图块。但是,一个图块如果是片的真子集,则不被称为片。条带包含图片的若干个片,或者包含片的若干个图块。
67.支持两种模式的条带,即光栅扫描条带模式和矩形条带模式。在光栅扫描条带模式中,条带包含图片的片光栅扫描中的一系列片。在矩形条带模式中,条带包含共同构成图片的矩形区域的图片的多个图块。矩形条带内的图块按照该条带的图块光栅扫描顺序排列。
68.图1是图片100的光栅扫描条带分割的示例,其中,图片被划分为12个片102和三个光栅扫描条带104。如图所示,每个片102和条带104包含若干个ctu 106。
69.图2是根据vvc规范对图片200进行矩形条带分割的示例,其中,图片被划分为24个片202(6个片列203和4个片行205)和9个矩形条带204。如图所示,每个片202和条带204包含若干个ctu 206。
70.图3是根据vvc规范将图片300分割为片、图块和矩形条带的示例,其中,图片被划分为4个片302(两个片列303和两个片行305)、11个图块304(左上方的片包含一个图块,右上方的片包含5个图块,左下方的片包含两个图块,右下方的片包含3个图块)、以及4个矩形条带306。
71.讨论了ctu尺寸和编解码树块(coding tree block,ctb)尺寸。在vvc中,在序列参数集(sequence parameter set,sps)中由语法元素log2_ctu_size_minus2信令通知的编解码树单元(ctu)尺寸可以小到4x4。
72.序列参数集原始字节序列载荷(raw byte sequence payload,rbsp)语法如下。
73.74.[0075][0076]
log2_ctu_size_minus2加2指定每个ctu的亮度编解码树块尺寸。
[0077]
log2_min_luma_coding_block_size_minus2加2指定最小亮度编解码块尺寸。
[0078]
变量ctblog2sizey、ctbsizey、mincblog2sizey、mincbsizey、mintblog2sizey、maxtblog2sizey、mintbsizey、maxtbsizey、picwidthinctbsy、picheightinctbsy、picsizeinctbsy、picwidthinmincbsy、picheightinmincbsy、picsizeinmincbsy、picsizeinsamplesy、picwidthinsamplesc和picheightinsamplesc推导如下。
[0079]
ctblog2sizey=log2_ctu_size_minus2+2(7-9)
[0080]
ctbsizey=1《《ctblog2sizey(7-10)
[0081]
mincblog2sizey=log2_min_luma_coding_block_size_minus2+2
[0082]
(7-11)
[0083]
mincbsizey=1《《mincblog2sizey(7-12)
[0084]
mintblog2sizey=2(7-13)
[0085]
maxtblog2sizey=6(7-14)
[0086]
mintbsizey=1《《mintblog2sizey(7-15)
[0087]
maxtbsizey=1《《maxtblog2sizey(7-16)
[0088]
picwidthinctbsy=ceil(pic_width_in_luma_samples
÷
ctbsizey)
[0089]
(7-17)
[0090]
picheightinctbsy=ceil(pic_height_in_luma_samples
÷
ctbsizey)
[0091]
(7-18)
[0092]
picsizeinctbsy=picwidthinctbsy*picheightinctbsy(7-19)
[0093]
picwidthinmincbsy=pic_width_in_luma_samples/mincbsizey
[0094]
(7-20)
[0095]
picheightinmincbsy=pic_height_in_luma_samples/mincbsizey
[0096]
(7-21)
[0097]
picsizeinmincbsy=picwidthinmincbsy*picheightinmincbsy
[0098]
(7-22)
[0099]
picsizeinsamplesy=pic_width_in_luma_samples*pic_height_in_luma_samples(7-23)
[0100]
picwidthinsamplesc=pic_width_in_luma_samples/subwidthc(7-24)
[0101]
picheightinsamplesc=pic_height_in_luma_samples/subheightc
[0102]
(7-25)
[0103]
图4a是跨底部图片边界的ctb的示例。图4b是跨右图边界的ctb的示例。图4c是跨右下图片边界的ctb的示例。在图4a-4c中,分别为k=m,l《n;k《m,l=n;k《m,l《n。
[0104]
参考图4a-4c讨论图片400中的ctu。假设ctb/最大编解码单元(largestcodingunit,lcu)尺寸由m
×
n表示(通常m等于n,如hevc/vvc中所定义),对于位于图片(或片或条带或其他类型,以图片边界为例)边界的ctb,k
×
l样点位于图片边界内,其中k《m或l《n。对于图4a-4c中描述的那些ctb402,ctb尺寸仍然等于m
×
n,然而,ctb的底部边界/右侧边界在图片400之外。
[0105]
讨论了典型的视频编码器/解码器(又称编解码器)的编解码流程。图5是vvc编码器框图的示例,其包含三个环路滤波块:去方块滤波器(deblockingfilter,df)、样点自适应偏移(sampleadaptiveoffset,sao)和自适应环路滤波器(adaptiveloopfilter,alf)。与使用预定义滤波器的df不同,sao和alf使用编解码的边信息信令通知偏移量和滤波器系数,利用当前图片的原始样点,分别通过添加偏移量和应用有限脉冲响应(finiteimpulseresponse,fir)滤波器来减少原始样点和重构样点之间的均方误差。alf位于每张图片的最后一个处理阶段,并且可以视为一种试图捕捉和修复前一阶段产生的伪影的工具。
[0106]
图5是编码器500的示意图。编码器500适用于实施vvc技术。编码器500包括三个环路滤波器,即去方块滤波器(df)502、样点自适应偏移(sao)504和alf506。与使用预定义滤波器的df502不同,sao504和alf506使用编解码的边信息信令通知偏移量和滤波器系数,利
用当前图片的原始样点,分别通过添加偏移量和应用fir滤波器来减少原始样点和重构样点之间的均方误差。alf506位于每张图片的最后一个处理阶段,并且可以视为一种试图捕捉和修复前一阶段产生的伪影的工具。
[0107]
编码器500还包括帧内预测组件508和配置为接收输入视频的运动估计/补偿(me/mc)组件510。帧内预测组件508配置为执行帧内预测,而me/mc组件510配置为利用从参考图片缓冲器512获得的参考图片来执行帧间预测。将来自帧间预测或帧内预测的残差块提供至变换组件514和量化组件516中以生成提供至熵编解码组件518中的量化的残差变换系数。熵编解码组件518对预测结果和量化的变换系数进行熵编解码,并向视频解码器(未示出)传输相同的内容。将从量化组件516输出的量化分量提供至逆量化组件520、逆变换组件522和重构(rec)组件524。rec组件524能够将图像输出到df 502、sao 504和alf 506,以在将这些图像存储在参考图片缓冲器512中之前进行滤波。
[0108]
df 502的输入是在环路滤波器之前的重构样点。首先对图片中的垂直边缘进行滤波。然后,用垂直边缘滤波过程修改的样点作为输入,对图片中的水平边缘进行滤波。在编解码单元的基础上对每个ctu的ctb中的垂直和水平边缘分别进行处理。从编解码块左侧的边缘开始,按照几何顺序通过边缘向编解码块的右侧对编解码单元中的编解码块的垂直边缘进行滤波。从编解码块顶部的边缘开始,按照几何顺序通过边缘向编解码块的底部对编解码单元中的编解码块的水平边缘进行滤波。
[0109]
图6是8
×
8样点块604内的样点602的图示600。如图所示,图示600分别包括8
×
8网格上的水平块边界606和垂直块边界608。此外,图示600描绘了可以并行去方块的8
×
8样点的非重叠块610。
[0110]
讨论了边界决定。将滤波应用于8
×
8块边界。此外,其必须是变换块边界或编解码子块边界(例如,由于使用仿射(affine)运动预测或者可选时域运动矢量预测(atmvp))。对于那些不属于此类边界的禁用滤波器。
[0111]
讨论了边界强度计算。对于变换块边界/编解码子块边界,如果其位于8
×
8网格中,则可以对变换块边界/编解码子块边界进行滤波,该边缘的bs[xdi][ydj](其中[xdi][ydj]表示坐标)的设置分别在表1和表2中定义。
[0112]
表1:边界强度(禁用sps ibc时)
[0113][0114]
表2:边界强度(启用sps ibc时)
[0115][0116][0117]
讨论了亮度分量的去方块决定。
[0118]
图7是涉及滤波器开/关决定和强/弱滤波器选择的像素的示例700。仅当condition 1、condition 2和condition 3均为true时,才使用更宽更强的亮度滤波器。condition 1是“大块条件”。该条件检测p侧和q侧的样点是否属于大块,分别由变量bsidepislargeblk和bsideqislargeblk表示。bsidepislargeblk和bsideqislargeblk定义如下。
[0119]
bsidepislargeblk=((edge type is vertical and p
0 belongs to cu
[0120]
with width》=32)||(edge type is horizontal and p
0 belongs to cu
[0121]
with height》=32))?true:false
[0122]
bsideqislargeblk=((edge type is vertical and q
0 belongs to cu
[0123]
with width》=32)||(edge type is horizontal and q
0 belongs to cu
[0124]
with height》=32))?true:false
[0125]
基于bsidepislargeblk和bsideqislargeblk,condition 1定义如下。
[0126]
condition 1=(bsidepislargeblk||bsidepislargeblk)?true:false
[0127]
接下来,如果condition 1为真,将进一步检查condition 2。首先,推导以下变量。
[0128]
在hevc中首先推导dp0、dp3、dq0和dq3:
[0129]
如果p边缘大于或等于32:
[0130]
dp0=(dp0+abs(p5
0-2*p40+p30)+1)》》1
[0131]
dp3=(dp3+abs(p5
3-2*p43+p33)+1)》》1
[0132]
如果q边缘大于或等于32:
[0133]
dq0=(dq0+abs(q5
0-2*q40+q30)+1)》》1
[0134]
dq3=(dq3+abs(q5
3-2*q43+q33)+1)》》1
[0135]
condition 2=(d《β)?true:false
[0136]
其中,d=dp0+dq0+dp3+dq3。
[0137]
如果condition 1和condition 2有效,则进一步检查是否有任何块使用子块。
[0138][0139]
最后,如果condition 1和condition 2都有效,则所提出的去方块方法将检查condition 3(大块强滤波条件),其定义如下。
[0140]
在condition 3strongfiltercondition中,推导以下变量。
[0141]
在hevc中推导dpq。
[0142]
在hevc中推导sp3=abs(p
3-p0)。
[0143]
如果p边缘大于或等于32:
[0144][0145][0146]
在hevc中推导sq3=abs(q
0-q3)。
[0147]
如果q边缘大于或等于32:
[0148][0149]
与hevc中相同,strongfiltercondition=(dpq小于(β>>2),sp3+sq3小于(3*β>>5),并且abs(p
0-q0)小于(5*tc+1)>>1)?true:false。
[0150]
讨论了更强的亮度去方块滤波器(设计用于更大的块)。
[0151]
当边界任一侧的样点属于大块时,使用双向线性滤波器。当垂直边缘的宽度大于或等于32,并且水平边缘的高度大于或等于32时,定义为属于大块的样点。
[0152]
以下列出了双向线性滤波器。
[0153]
然后,通过线性差值将上述hevc去方块中的i=0~sp-1的块边界样点pi和j=0~sq-1的块边界样点qi(pi和qi是滤波垂直边缘行中的第i个样点或滤波水平边缘列中的第i个样点)进行如下替换。
[0154]
pi′
=(fi*middle
s,t
+(64-fi)*ps+32)>>6),clipped to pi±
tcpdi[0155]
qj′
=(gj*middle
s,t
+(64-gj)*qs+32)>>6),clipped to qj±
tcpdj[0156]
其中,tcpdi和tcpdj项是如下描述的位置相关裁剪(clipping),并且gj、fi、middle
s,t
、ps和qs如下所示。
[0157]
讨论了色度的去方块控制。
[0158]
色度强滤波器用于块边界的两侧。这里,当色度边缘的两侧都大于或等于8(色度位置)时,选择色度滤波器,并且满足以下三个条件的决定:第一个是边界强度以及大块的决定。当与块边缘正交的块宽度或高度在色度样点域中等于或大于8时,可以应用所提出的滤波器。第二个和第三个与hevc亮度去方块决定基本相同,分别是开/关决定和强滤波器决定。
[0159]
在第一个决定中,针对色度滤波修改边界强度(boundary strength,bs),并依次检查条件。如果满足某个条件,则跳过优先级较低的其余条件。
[0160]
当检测到大块边界时,当bs等于2或bs等于1时,执行色度去方块。
[0161]
第二和第三个条件与如下所示的hevc亮度强滤波器决定基本相同。
[0162]
在第二个条件下:然后在hevc亮度去方块中推导出d。当d小于β时,第二个条件将为true。
[0163]
在第三个条件下,strongfiltercondition的推导如下。
[0164]
在hevc中推导sp3=abs(p
3-p0)。
[0165]
在hevc中推导sq3=abs(q
0-q3)。
[0166]
与hevc设计中相同,strongfiltercondition=(dpq小于(β》》2),sp3+sq3小于(β》》3),并且abs(p
0-q0)小于(5*tc+1)》》1)。
[0167]
讨论了色度的强去方块滤波器。定义了以下色度的强去方块滤波器。
[0168]
p2′
=(3*p3+2*p2+p1+p0+q0+4)》》3
[0169]
p1′
=(2*p3+p2+2*p1+p0+q0+q1+4)》》3
[0170]
p0′
=(p3+p2+p1+2*p0+q0+q1+q2+4)》》3
[0171]
所提出的色度滤波器在4
×
4色度样点网格上执行去方块。
[0172]
讨论了位置相关裁剪(position dependent clipping,tcpd)。将位置相关裁剪tcpd应用于涉及在边界处修改7、5和3个样点的强滤波器和长滤波器的亮度滤波过程的输出样点。假设量化误差分布,提出对预期具有较高量化噪声的样点增加裁剪值,因而预计重构样点值与真实样点值的偏差较大。
[0173]
对于使用非对称滤波器滤波的每个p或q边界,根据边界强度计算中的决定过程的结果,从作为边信息提供给解码器的两个表(即,下表列出的tc7和tc3)中选择位置相关阈
值表。
[0174]
tc7={6,5,4,3,2,1,1};tc3={6,4,2};
[0175]
tcpd=(sp==3)?tc3:tc7;
[0176]
tcqd=(sq==3)?tc3:tc7;
[0177]
对于使用短对称滤波器滤波的p或q边界,应用较低量级的位置相关阈值。
[0178]
tc3={3,2,1};
[0179]
定义阈值后,滤波后的p’i
和q’i
样点值根据tcp和tcq裁剪值进行裁剪。
[0180]
p”i
=clip3(p’i
+tcpi,p’i

tcpi,p’i
);
[0181]
q”j
=clip3(q’j
+tcqj,q’j

tcqj,q’j
);
[0182]
其中,p’i
和q’i
是滤波样点值,p”i
和q”i
是裁剪后的输出样点值,并且tcpitcpi是从vvc tc参数以及tcpd和tcqd推导的裁剪阈值。函数clip3是vvc中指定的裁剪函数。
[0183]
讨论了子块去方块调整。
[0184]
为了同时使用长滤波器和子块去方块来启用利于并行去方块,如在长滤波器的亮度控制中所示,将长滤波器限制为在使用子块去方块(affine或atmvp或解码器端运动矢量细化(decoder side motion vector refinement,dmvr))的一侧最多修改5个样点。此外,调整子块去方块以使得将靠近编解码单元(cu)或隐式(implicit)tu边界的8
×
8网格上的子块边界限制为在每侧最多修改两个样点。
[0185]
以下应用于不与cu边界对齐的子块边界。
[0186][0187]
其中,边缘等于0对应于cu边界,边缘等于2或等于orthogonallength-2对应于cu边界的子块边界8个样点,等等。其中,如果使用tu隐式划分,则隐式tu为真。
[0188]
讨论了样点自适应偏移(sao)。sao的输入是去方块(db)后的重构样点。sao的概念是通过先用选择的分类器将区域样点分类为多个类别,获得每个类别的偏移量,然后将偏移量添加到该类别的每个样点中,来减少区域的平均样点失真,其中将分类器索引和区域的偏移量编解码在比特流中。在hevc和vvc中,将区域(sao参数信令通知的单元)定义为ctu。
[0189]
hevc中采用了两种能够满足低复杂度要求的sao类型。这两种类型是边缘偏移
(edge offset,eo)和带偏移(band offset,bo),下面将进一步详细讨论。将sao类型的索引编解码(在[0,2]的范围内)。对于eo,样点分类是基于根据一维定向模式对当前样点和相邻样点之间的比较:水平、垂直、135
°
对角线和45
°
对角线。
[0190]
图8示出了eo样点分类的四个一维(1-d)定向模式800:水平(eo等级=0)、垂直(eo等级=1)、135
°
对角线(eo等级=2)和45
°
对角线(eo等级=3)。
[0191]
对于给定的eo等级,ctb内的每个样点都分类到五个类别中的一个。当前样点值(标记为“c”)与沿选择的一维模式的两个相邻样点值进行比较。每个样点的分类规则总结在表3中。类别1和4分别与沿所选择的一维模式的局部谷和局部峰相关联。类别2和3分别与所选择的一维模式的凹角和凸角相关联。如果当前样点不属于eo类别1-4,则为类别0,不应用sao。
[0192]
表3:边缘偏移的样点分类规则
[0193]
类别条件1c《a且c《b2(c《a&&c==b)||(c==a&&c《b)3(c》a&&c==b)||(c==a&&c》b)4c》a&&c》b5以上均不是
[0194]
讨论了联合探索模型(jem)中基于几何变换的自适应环路滤波器。db的输入是经过db和sao后的重构样点。样点分类和滤波过程基于db和sao后的重构样点。
[0195]
在jem中,应用了采用基于块的滤波器自适应的基于几何变换的自适应环路滤波器(galf)。对于亮度分量,基于局部梯度的方向和活动性,为每个2
×
2块选择25个滤波器中的一个。
[0196]
讨论了滤波器形状。图9示出了galf滤波器形状900的示例,其包括左侧的5
×
5菱形、中间的7
×
7菱形和右侧的9
×
9菱形。在jem中,可以为亮度分量选择多达三个菱形滤波器形状(如图9所示)。在图片级别上信令通知索引以指示用于亮度分量的滤波器形状。每个方块代表一个样点,ci(i为0~6(左)、0~12(中)、0~20(右))表示要应用于样点的系数。对于图片中的色度分量,始终使用5
×
5菱形形状。
[0197]
讨论了块分类。将每个2
×
2块分类为25个等级中的一个。分类索引c基于其方向性d和活动性的量化值进行推导,如下所示。
[0198][0199]
为了计算d和首先使用一维拉普拉斯计算水平、垂直和两个对角线方向的梯度。
[0200][0201]
[0202][0203][0204]
索引i和j指的是2
×
2块中左上样点的坐标,并且r(i,j)表示坐标(i,j)处的重构样点。
[0205]
然后设置水平和垂直方向的梯度的d最大值和最小值为:
[0206][0207]
并且将两个对角线方向的梯度的最大值和最小值设置为:
[0208][0209]
为了推导出方向性d的值,将这些值相互比较,并与两个阈值t1和t2进行比较:
[0210]
步骤1:如果和均为真,d设为0。
[0211]
步骤2:如果从步骤3继续;否则从步骤4继续。
[0212]
步骤3:如果d设为2;否则d设为1。
[0213]
步骤4:如果d设为4;否则d设为3。
[0214]
活动性值a的计算方法为:
[0215][0216]
a被进一步量化到包括0至4的范围,量化后的值记为
[0217]
对于图片中的两个色度分量,不应用分类方法,即对每个色度分量应用一组alf系数。
[0218]
讨论了滤波器系数的几何变换。
[0219]
图10示出了5
×
5菱形滤波器支持的相对坐标1000:分别是对角线、垂直翻转和旋转(从左到右)。
[0220]
在对每个2
×
2块进行滤波之前,取决于为该块计算的梯度值,对与坐标(k,l)相关联的滤波器系数f(k,l)应用诸如旋转或对角线和垂直翻转之类的几何变换。这相当于将这些变换应用于滤波器支持区域中的样点。这个想法是通过校准方向性使应用alf的不同块更加相似。
[0221]
介绍了三种几何变换,包括对角线、垂直翻转和旋转:
[0222]
对角线:fd(k,l)=f(l,k),
[0223]
垂直翻转:fv(k,l)=f(k,k-l-1),(9)
[0224]
旋转:fr(k,l)=f(k-l-1,k)。
[0225]
其中,k是滤波器的尺寸,并且0≤k,l≤k-1是系数坐标,因此位置(0,0)位于左上
角,位置(k-1,k-1)位于右下角。取决于为该块计算的梯度值,将变换应用于滤波器系数f(k,l)。变换与四个方向的四个梯度之间的关系总结在表4中。
[0226]
表4:为一个块计算的梯度和变换的映射
[0227]
梯度值变换g
d2
《g
d1
并且gh《gv没有变换g
d2
《g
d1
并且gv《gh对角线g
d1
《g
d2
并且gh《gv垂直翻转g
d1
《g
d2
并且gv《gh旋转
[0228]
讨论了滤波器参数信令通知。在jem中,为第一个ctu信令通知galf滤波参数,即在第一个ctu的条带头之后和sao参数之前。多达25组的亮度滤波器系数可以被信令通知。为了减少比特开销,可以合并不同分类的滤波器系数。此外,将参考图片的galf系数进行存储并允许其重新用作当前图片的galf系数。当前图片可以选择使用为参考图片存储的galf系数,并绕过galf系数信令通知。在这种情况下,仅信令通知参考图片之一的索引,并且当前图片继承所指示的参考图片存储的galf系数。
[0229]
为了支持galf的时域预测,维护了galf滤波器集的候选列表。在开始解码一个新的序列时,候选列表是空的。在解码一张图片后,相应的滤波器集可以被添加到候选列表中。一旦候选列表的尺寸达到最大允许值(即在当前的jem中为6),新的滤波器集将覆盖解码顺序中最旧的滤波器集,也就是说,应用先进先出(first-in-first-out,fifo)规则来更新候选列表。为了避免重复,只有当对应的图片不使用galf时域预测时,才可以将集合加入到列表中。为了支持时域可扩展性,有多个滤波器集的候选列表,每个候选列表都与时域层相关。更具体地说,由时域层索引(tempidx)分配的每个数组可以构成先前解码的具有等于较低tempidx的图片的滤波器集。例如,分配第k个数组与等于k的tempidx相关联,并且第k个数组只包含来自tempidx小于或等于k的图片的滤波器集。在对某张图片进行编解码后,将与该图片相关联的滤波器集用于更新那些与相等或更高的tempidx相关联的数组。
[0230]
galf系数的时域预测用于帧间编解码帧,以最小化信令通知开销。对于帧内帧,时域预测是不可用的,并且为每个等级分配一组16个固定滤波器。为了指示固定滤波器的使用,每个等级的标志都会被信令通知,并且如果需要,还会信令通知所选固定滤波器的索引。即使为给定等级选择了固定滤波器,仍然可以为该等级发送自适应滤波器f(k,l)的系数,在这种情况下,将应用于重构图像的滤波器系数是两组系数的和。
[0231]
亮度分量的滤波过程可以在cu级别进行控制。信令通知一个标志来指示galf是否应用于cu的亮度分量。对于色度分量,是否应用galf仅在图像级别指示。
[0232]
讨论了滤波过程。在解码器端,当对一个块启用galf时,块内的每个样点r(i,j)都会被滤波,得到如下所示的样点值r

(i,j),其中,l表示滤波器长度,f
m,n
表示滤波器系数,f(k,l)表示解码后的滤波器系数。
[0233][0234]
图11示出了用于5
×
5菱形滤波器支持的相对坐标的示例,假设当前样点的坐标(i,j)为(0,0)。用相同颜色填充的不同坐标的样点乘以相同的滤波器系数。
[0235]
讨论了vvc中基于几何变换的自适应环路滤波器(galf)。在vvc测试模型4.0
(vtm4.0)中,执行如下自适应环路滤波器的滤波过程:
[0236]
o(x,y)=∑
(i,j)
w(i,j).i(x+i,y+j),(11)
[0237]
其中,样点i(x+i,y+j)是输入样点。o(x,y)是滤波后的输出样点(即滤波结果),并且w(i,j)表示滤波器系数。实际上,在vtm4.0中,其使用固定点精度计算的整数运算实施。
[0238][0239]
其中,l表示滤波器长度,并且其中w(i,j)是固定点精度的滤波器系数。
[0240]
与jem相比,vvc中galf目前的设计有以下主要变化:
[0241]
1)去除自适应滤波器形状。亮度分量只允许7
×
7滤波器形状,色度分量只允许5
×
5滤波器形状。
[0242]
2)alf参数的信令通知已从条带/图片级别移除至ctu级别。
[0243]
3)分类索引的计算在4
×
4级别进行,而不是2
×
2。此外,正如jvet-l0147中提出的,使用了子采样拉普拉斯计算方法进行alf分类。更具体地说,不需要为一个块内的每个样点计算水平/垂直/45度对角线/135度梯度。相反,利用了1∶2的子采样。
[0244]
就滤波重新制定,讨论了目前vvc中的非线性alf。
[0245]
在不影响编解码效率的情况下,方程(11)可以重新表述为以下表达式:
[0246]
o(x,y)=i(x,y)+∑
(i,j)≠(0,0)
w(i,j).(i(x+i,y+j)-i(x,y)),(13)
[0247]
其中,w(i,j)是与方程(11)中相同的滤波器系数[除了w(0,0)在方程(13)中等于1,而在方程(11)中则等于1-∑
(i,j)(0,0)
w(i,j)]。
[0248]
使用上述(13)的滤波器公式,vvc通过使用简单的裁剪函数来减少相邻样点值(i(x+i,y+j))的影响(当其与被滤波的当前样点值(i(x,y))相差太大时),引入非线性以使alf更有效。
[0249]
更具体地说,alf滤波器被修改如下:
[0250]o′
(x,y)=i(x,y)+∑
(i,j)≠(0,0)
w(i,j).k(i(x+i,y+j)-i(x,y),k(i,j))(14)
[0251]
其中,k(d,b)=min(b,max(-b,d))是裁剪函数,k(i,j)是裁剪参数,其取决于(i,j)滤波器系数。编码器执行优化以找到最佳的k(i,j)。
[0252]
在jvet-n0242的实施中,为每个alf滤波器指定裁剪参数k(i,j),每个滤波器系数信令通知一个裁剪值。这意味着在比特流中每个亮度滤波器最多可以信令通知12个裁剪值,色度滤波器最多可以信令通知6个裁剪值。
[0253]
为了限制信令通知成本和编码器的复杂性,只使用了对inter和intra条带相同的4个固定值。
[0254]
因为亮度的局部差异的方差通常比色度的高,所以对亮度和色度滤波器应用了两个不同的集。还引入了每个集中的最大样点值(此处1024表示10比特位深度),以便在不需要时可以禁用裁剪。
[0255]
表5提供了在jvet-n0242测试中使用的裁剪值集。这4个值是通过在对数域中对亮度的样点值(按10比特编解码)的整个范围以及对色度的从4到1024的范围进行大致均等划分来进行选择的。
[0256]
更确切地说,裁剪值亮度表已通过以下公式获得:
feng wu,“neural network-based arithmetic coding of intra prediction modes in hevc,”vcip.ieee,1

4,以及j.pfaff,p.helle,d.maniry,s.kaltenstadler,w.samek,h.schwarz,d.marpe,and t.wiegand,“neural network based intra prediction for video coding,”applications of digital image processing xli,vol.10752.international society for optics and photonics,1075213。
[0268]
第一类通常采取类似自动编码器的结构,由卷积神经网络或递归神经网络实现。虽然纯粹依靠神经网络进行图像/视频压缩可以避免任何人工优化或手工设计,但压缩效率可能并不理想。因此,分布在第二类中的工作将神经网络作为一种辅助手段,并通过替换或增强一些模块来增强传统的压缩框架。通过这种方式,它们可以继承高度优化的传统框架的优点。例如,在hevc中提出了帧内预测的全连接网络,正如以下所讨论的:jiahao li,bin li,jizheng xu,ruiqin xiong,and wen gao,"fully connected network-based intra prediction for image coding,"ieee transactions on image processing 27,7(2018),p.3236-3247。
[0269]
除了帧内预测,深度学习也被用来增强其他模块。例如,hevc的环路滤波器被卷积神经网络取代,并在yuanying dai,dong liu,and feng wu,“a convolutional neural network approach for post-processing in hevc intra coding,”mmm.springer,28

39中取得了可喜的成果。rui song,dong liu,houqiang li,and feng wu,“neural network-based arithmetic coding of intra prediction modes in hevc,”vcip.ieee,1

4中的成果应用神经网络来改进算术编解码引擎。
[0270]
讨论了基于卷积神经网络的环路滤波。在有损图像/视频压缩中,重构帧是原始帧的近似值,因为量化过程是不可逆的,因此会导致重构帧失真。为了减轻这种失真,可以训练卷积神经网络来学习从失真帧到原始帧的映射。在实践中,必须在利用基于cnn的环路滤波之前进行训练。
[0271]
讨论了训练。训练处理的目的是为了找到包括权重和偏差在内的参数的最优值。
[0272]
首先,使用一个编解码器(如hm、jem、vtm等)用于压缩训练数据集以生成失真重构帧。然后,将重构帧送入cnn中,用cnn的输出和groundtruth帧(原始帧)计算成本。常用的成本函数包括绝对差值和(sum of absolution difference,sad)和均方误差(mean square error,mse)。接下来,通过反向传播算法推导出成本相对于每个参数的梯度。使用梯度,可以更新参数的值。重复上述过程,直到达到收敛标准。完成训练后,将推导出的最优参数保存起来,以供推理阶段使用。
[0273]
讨论了卷积过程。在卷积过程中,滤波器从左到右、从上到下在图像上移动,其中,先水平移动一个像素的列变化,然后垂直移动一个像素的行变化。滤波器应用在输入图像上的移动量被称为步幅,其在高度和宽度方面几乎都是对称的。高度和宽度移动的默认步幅或二维步幅是(1,1)。
[0274]
图12a是提出的cnn滤波器的示例架构1200,图12b是残差块(resblock)的构造1250的示例。在大多数深度卷积神经网络中,将残差块用作基本模块并堆叠多次以构建最终网络,其中在一个示例中,如图12b所示,残差块是通过组合卷积层、relu/prelu激活函数和卷积层获得的。
[0275]
讨论了推理。在推理阶段,将失真重构帧提供至cnn中并由cnn模型进行处理,其参
数在训练阶段已经确定。cnn的输入样点可以是db之前或之后的重构样点,或sao之前或之后的重构样点,或alf之前或之后的重构样点。
[0276]
目前基于cnn的环路滤波存在以下问题。首先,直接使用基于cnn的环路滤波器的输出。对于某些内容,使用线性模型来缩放输出可以提供更好的滤波强度。其次,对于不同的视频内容或在不同的压缩设置下,推理块尺寸是固定的。对于具有较低分辨率或较高比特率的序列,使用更精细的颗粒度可能是有益的。第三,如何结合几个模型的输出还没有被充分探讨。
[0277]
在此公开了解决一个或多个上述问题的技术。例如,本公开提供了一个或多个神经网络(nn)滤波器模型,其作为用于减少压缩期间产生的失真的在后处理阶段中所使用的环路滤波技术或滤波技术的一部分进行训练。此外,具有不同特性的样点由不同的nn滤波器模型进行处理。本公开还详细说明了如何缩放nn滤波器的输出以实现更好的性能,如何设置推理块尺寸,以及如何组合多个nn滤波器模型的输出。
[0278]
视频编解码是有损失的过程。可以训练卷积神经网络(cnn)来恢复压缩过程中丢失的细节。也就是说,人工智能(ai)过程可以基于训练数据创建cnn滤波器。
[0279]
不同的cnn滤波器在不同的情况下效果最佳。编码器和解码器可以使用已提前训练(又称预训练)好的多个cnn滤波器。本公开描述了允许编码器向解码器信令通知,说明对每个视频单元使用哪个cnn滤波器的方法和技术。视频单元可以是图片序列、图片、条带、片、图块、子图片、编解码树单元(ctu)、ctu行、编解码单元(cu)等。例如,不同的cnn滤波器可以用于不同的层、不同的分量(例如,亮度、色度、cb、cr等)、不同的特定视频单元等。可以信令通知标志和/或索引以指示每个视频项目应使用哪个cnn滤波器。可以基于相邻视频单元是否使用该滤波器对cnn滤波器进行信令通知。还提供了当树被用来分割视频单元时,父节点和子节点之间的cnn滤波器的继承性。
[0280]
下面列出的实施例应被视为解释一般概念的示例。不应狭义地解释这些实施例。此外,这些实施例可以以任何方式组合。
[0281]
在本公开中,nn滤波器可以是任何种类的nn滤波器,例如卷积神经网络(cnn)滤波器。在下面的讨论中,nn滤波器也可以被称为cnn滤波器。
[0282]
在下面的讨论中,视频单元可以是序列、图片、条带、片、图块、子图片、ctu/ctb、ctu/ctb行、一个或多个cu/编解码块(cb)、一个或多个ctu/ctb、一个或多个虚拟流水线数据单元(virtual pipeline data unit,vpdu)、一个图片/条带/片/图块中的子区域。父视频单元表示比视频单元更大的单元。通常,一个父单元将包含若干个视频单元,例如,当视频单元是ctu时,父单元可以是条带、ctu行、多个ctu等。在一些实施例中,视频单元可以是样点/像素。
[0283]
图13a-13d是使用残差缩放和神经网络滤波生成滤波样点的过程的示例。在图13a中,残差是nn滤波器的输出。在图13a所示的过程1300中,一些未滤波样点被输入到nn滤波器和求和装置中。在一个实施例中,未滤波样点是没有经过任何滤波的样点(例如像素)。nn滤波器的输出是残差(或用于生成残差)。将残差缩放函数(例如,线性/非线性)应用于残差。求和装置将缩放残差与一些未滤波样点(绕过了nn滤波器)组合并输出滤波样点。
[0284]
在图13b中,残差是nn滤波器的输出与未滤波样点之间的差值。在图13b所示的过程1320中,将一些未滤波样点输入到nn滤波器、差分装置和求和装置中。将nn滤波器的输出
输入到差分装置中。nn滤波器的输出和未滤波样点之间的差值是残差。将残差缩放函数(例如,线性/非线性)应用于残差。求和装置将缩放残差与一些未滤波样点(绕过了nn滤波器)组合并输出滤波样点。
[0285]
在图13c所示的过程1340中,将一些未滤波样点输入到nn滤波器和求和装置中。nn滤波器的输出是残差(或用于生成残差)。当开关处于图13c中所示的位置时,将残差缩放函数(例如,线性/非线性)应用于残差。此后,其中一个求和装置将缩放残差与一些未滤波样点组合并输出滤波样点。或者,可以定位开关以将残差直接提供给另一个求和装置,该求和装置将残差与一些未滤波样点组合以生成滤波样点。
[0286]
在图13d所示的过程1360中,将一些未滤波样点输入到nn滤波器、差分装置和求和装置中。将nn滤波器的输出输入到差分装置中。nn滤波器的输出和未滤波样点之间的差值是残差。当开关处于图13d中所示的位置时,将残差缩放函数(例如,线性/非线性)应用于残差。此后,其中一个求和装置将缩放残差与一些未滤波样点组合并输出滤波样点。或者,可以定位开关以将残差直接提供给另一个求和装置,该求和装置将残差与一些未滤波样点组合以生成滤波样点。
[0287]
提供了模型选择的讨论。
[0288]
示例1
[0289]
1.由nn滤波器的输出决定的残差值可以先根据函数进行修正(例如,进行缩放),然后添加到视频单元中对应的未滤波样点中,以生成最终的滤波样点。
[0290]
a.在一个示例中,未滤波样点是在nn滤波之前的重构。
[0291]
b.在一个示例中,如图13a所示,残差是nn滤波器的输出。将未滤波样点表示为x,将nn滤波器的输出表示为r,则滤波过程定义为:y=x+f(r),其中y为滤波样点,f表示函数(例如,残差缩放操作),后面会详细说明。
[0292]
c.在一个示例中,函数的输入可以至少包括nn滤波器和未滤波样点的输出。将未滤波样点表示为x,将nn滤波器的输出表示为r,则滤波过程定义为:y=x+f(r,x),其中y为滤波样点,f表示函数(例如,残差缩放操作),后面会详细说明。
[0293]
d.在一个示例中,如图13b所示,残差是nn滤波器的输出与未滤波样点之间的差值。将未滤波样点表示为x,将nn滤波器的输出表示为r,则滤波过程定义为:y=x+f(r-x),其中y为滤波样点,f表示函数(例如,残差缩放操作),后面会详细说明。
[0294]
e.在一个示例中,y=clip(x+f(r)),其中x和y分别是未滤波样点和滤波样点。f表示函数(例如,残差缩放操作)。clip是一种裁剪(clipping)操作。例如,clip(w)=max(0,min((1《《b)-1,w)),其中b是滤波样点的位深度。位深度(也称为颜色深度)描述了存储在每个数据像素中的信息量。在一个实施例中,位深度是位图图像或视频帧缓冲器中用于指示单个像素的颜色的位数,或者是用于单个像素的每个颜色分量的位数。
[0295]
f.在一个示例中,残差缩放的特征在于包含两个系数的线性模型,即f(residual)=α
×
residual+β,其中(α,β)对被称为一个系数候选,其可以被预先定义或被即时推导。
[0296]
i.在一个示例中,(α,β)可以设置为(1,0),如图13c-13d所示,这表明关闭/禁用残差缩放。
[0297]
ii.或者,f(residual)=α
×
residual+β可以替换为f(residual)=(residual》》α)+β。
[0298]
1)或者,f(residual)=α
×
residual+β可以替换为f(residual)=(residual《《α)+β。
[0299]
2)在一个示例中,(α,β)可以被设置为(0,0),如图13c-13d所示,这表明关闭/禁用残差缩放。
[0300]
iii.在一个示例中,(α,β)对于视频单元内的样点可以是固定的。
[0301]
1)或者,对于视频单元内的不同样点,(α,β)可以不同。
[0302]
iv.在另一个示例中,f(residual)=((α
×
residual+offset)》》s)+β,其中s是可以预定义的缩放因子,offset是整数,例如1《《(s-1)。
[0303]
v.在另一个示例中,f(residual)=((α
×
residual+β+offset)》》s),其中s是可以预定义的缩放因子,offset是整数,例如1《《(s-1)。
[0304]
vi.在一个示例中,可以将函数的输出裁剪至有效范围。
[0305]
vii.或者,此外,有n个预定义系数候选{α0,β0},{α1,β1},

,{α
n-1

n-1
}。
[0306]
viii.在一个示例中,对于视频单元,可以根据解码信息确定系数候选,例如qp信息/预测模式/重构样点信息/颜色分量/颜色格式/时域层/条带或图片类型。在一个实施例中,图片类型是指瞬时解码器刷新(instantaneous decoder refresh,idr)图片、断开链接访问(broken link access,bla)图片、清洗随机访问(clean random access,cra)图片、随机访问可解码引导(random access decodable leading,radl)图片、随机访问跳过引导(random access skipped leading,rasl)图片等。在一个实施例中,时域层是可缩放视频编解码中的分层(例如,第0层、第1层、第2层等)。
[0307]
ix.在一个示例中,对于视频单元,信令通知一个或多个系数(例如,索引)的指示符以指示从候选中选择。
[0308]
1)或者,此外,可以有条件地信令通知指示符,例如,根据nn滤波器是否应用于视频单元。
[0309]
x.在一个示例中,视频单元中的亮度和色度分量可以使用不同的系数候选集。
[0310]
xi.在一个示例中,对于亮度和色度分量允许相同数量的系数候选,但是对于亮度和色度分量的系数候选是不同的。
[0311]
xii.在一个示例中,视频单元中的色度分量(例如cb和cr或u和v)可以共享相同的系数候选。
[0312]
xiii.在一个示例中,对于不同的视频单元(例如,序列/图片/条带/片/图块/子图片/ctu/ctu行/cu),系数候选可以不同。
[0313]
xiv.在一个示例中,系数候选可以取决于树分割结构(例如,双树或单树)、条带类型或量化参数(qp)。在一个实施例中,qp确定用于将变换后的系数与一组有限的步骤相关联的步长。qp可以在例如0到51的范围内。在一个实施例中,条带类型例如是i条带(仅具有帧内预测的条带)、p条带(具有来自一个i或p条带的帧间预测的条带)和b条带(具有来自两个i或p条带的帧间预测的条带)。
[0314]
xv.在一个示例中,可以为一个视频单元使用和/或信令通知多个系数候选。
[0315]
xvi.在一个示例中,可以将一个视频单元中的样点分组成n个组并且每个组使用其自己的系数候选。在一个示例中,视频单元中的不同颜色分量(包括亮度和色度)可以共享相同的一个或多个信令通知系数索引。
[0316]
1)或者,对于视频单元中的每个颜色分量信令通知系数索引。
[0317]
2)或者,对于第一颜色分量(例如亮度)信令通知第一系数索引,并且对于第二和第三颜色分量(例如cb和cr,或u和v)信令通知第二系数索引。
[0318]
3)或者,信令通知指示符(例如,标志)以指示是否所有颜色分量将共享相同的系数索引。
[0319]
a.在一个示例中,当标志为真时,将一个系数索引信令通知视频单元。否则,根据上述项目符号信令通知系数索引。
[0320]
4)或者,信令通知指示符(例如,标志)以指示两个分量(例如,第二和第三颜色分量,或cb和cr,或u和v)是否将共享相同的系数索引。
[0321]
a.在一个示例中,当标志为真时,将一个系数索引信令通知两个分量。否则,将为两个分量中的每一个信令通知一个单独的系数索引。
[0322]
5)或者,信令通知指示符(例如,标志)以指示残差缩放是否将用于当前视频单元。
[0323]
a.在一个示例中,如果标志为假,则将不对当前视频单元应用残差缩放,这意味着不传输任何系数索引。否则,根据上述项目符号信令通知系数索引。
[0324]
6)或者,信令通知指示符(例如,标志)以指示是否将残差缩放用于当前视频单元中的两个分量(例如,第二和第三颜色分量,或cb和cr,或u和v)。
[0325]
a.在一个示例中,如果标志为假,则将不会对两个分量应用残差缩放,这意味着不会向两个分量传输任何系数索引。否则,根据上述项目符号信令通知系数索引。
[0326]
xvii.在算术编解码中,系数索引可以用一个或多个上下文来编解码。
[0327]
1)在一个示例中,可以将系数索引二值化为bin串,并且至少一个bin可以用一个或多个上下文编解码。
[0328]
2)或者,可以先将系数索引二值化为bin串,并且至少一个bin可以采用bypass模式编解码。
[0329]
3)上下文可以从当前单元和/或相邻单元的编解码信息中推导。
[0330]
xviii.系数索引可以用固定长度码,或一元码,或截断一元码,或指数哥伦布码(例如,第k个eg码,其中k=0),或截断指数哥伦布码,或截断二进制码进行二值化。
[0331]
xix.在一个示例中,可以以预测方式对系数索引进行编解码。
[0332]
1)例如,先前编码/解码的系数索引可以用作当前系数索引的预测。
[0333]
2)可以信令通知标志来指示当前系数索引是否等于先前编码/解码的系数索引。
[0334]
xx.在一个示例中,当前视频单元中的系数索引可以从先前编解码/相邻视频单元继承。
[0335]
1)在一个示例中,将先前编解码/相邻视频单元候选的数量表示为c。然后信令通知当前视频单元继承索引(范围从0到c-1)以指示要继承的候选。
[0336]
xxi.在一个示例中,当前视频单元的残差缩放开/关控制可以从先前编解码/相邻视频单元继承。
[0337]
xxii.在一个示例中,可以在父单元中信令通知第一指示符以指示将如何针对包含在父单元中的每个视频单元信令通知系数索引,或者将如何针对包含在父单元中的每个视频单元使用残差缩放。
[0338]
1)在一个示例中,第一指示符可用于指示父单元内的所有样点是否共享相同的
开/关控制。
[0339]
2)或者,此外,可以基于第一指示符有条件地信令通知父单元内的视频单元的第二指示符以指示残差缩放的使用。
[0340]
3)在一个示例中,第一指示符可用于指示哪些系数索引用于父单元内的所有样点。
[0341]
4)在一个示例中,第一指示符可用于指示是否进一步信令通知父单元内的视频单元的系数索引。
[0342]
5)在一个示例中,指示符可以具有k+2个选项,其中k是系数候选的数量。
[0343]
a)在一个示例中,当指示符为0时,对父单元中包含的所有视频单元禁用残差缩放。
[0344]
b)在一个示例中,当指示符为i(1≤i≤k)时,第i个系数将用于父单元中包含的所有视频单元。显然,对于刚刚提到的k个选项,不需要为父单元中包含的任何视频单元信令通知任何系数索引。
[0345]
c)在一个示例中,当指示符为k+1时,将为包含在父单元中的每个视频单元信令通知系数索引。
[0346]
示例2
[0347]
2.在第二个实施例中,对于视频单元(例如,条带/图片/片/子图片),可以隐式或显式地推导推理块尺寸(其指的是应用nn滤波器时的粒度)。推理应用来自训练后的神经网络模型的知识,并使用该知识来推理结果。在一个实施例中,推理块尺寸是基于cnn的知识确定的块尺寸。
[0348]
a.在一个示例中,对于视频单元(例如,条带/图片/片/子图片)存在多个推理块尺寸候选。
[0349]
i.在一个示例中,推理块尺寸候选可以是预定义的或与某些信息(例如,qp/条带或图片类型/分割树/颜色分量)相关联。分割树是通过递归地将视频单元分割成更小的视频单元(例如,将块分割成子块)而形成的分层数据结构。分割树可以包括一系列分支和叶。
[0350]
b.在一个示例中,信令通知视频单元至少一个指示符(例如,索引)以指示将使用哪个候选。
[0351]
c.在一个示例中,推理块尺寸可以即时推导。
[0352]
i.在一个示例中,其可以取决于视频序列的量化参数(qp)或/和分辨率。
[0353]
ii.在一个示例中,推理块尺寸在低比特率(即高qp)下设置得更大,反之亦然。
[0354]
iii.在一个示例中,对于高分辨率序列,推理块尺寸设置得更大,反之亦然。
[0355]
d.在一个示例中,不同的网络可以使用不同的推理块尺寸。
[0356]
i.网络可以共享某些部分,例如可以共享一些连接层。
[0357]
e.在一个示例中,一个网络可以使用不同的推理块尺寸。
[0358]
示例3
[0359]
3、在第三个实施例中,对于待滤波样点,可以应用多个nn滤波器模型而不是应用一个nn滤波器模型来推导滤波样点。
[0360]
a.在一个示例中,对多个nn滤波器模型的输出进行加权求和(例如,线性或非线性)以推导出样点的最终滤波输出。
[0361]
i.或者,可以先使用与多个nn滤波器模型关联的参数推导出新的nn滤波器模型,并利用新的nn滤波器模型推导出滤波样点。
[0362]
b.在一个示例中,可以在比特流中信令通知对于要应用的一个或多个权重和/或多个nn滤波器模型的指示。
[0363]
i.或者,权重可以在不被信令通知的情况下即时推导出。
[0364]
c.在一个示例中,不同的nn滤波器模型的权重相等。
[0365]
d.在一个示例中,权重取决于qp或/和条带或图片类型/颜色分量/颜色格式/时域层。
[0366]
e.在一个示例中,权重取决于nn滤波器模型。
[0367]
f.在一个示例中,权重取决于推理块尺寸。
[0368]
g.在一个示例中,不同空域位置的权重不同。在一个实施例中,空域位置是一个元素相对于另一个元素的位置(例如,图片内的像素的位置)。
[0369]
i.在一个示例中,有分别基于边界强度和其他信息进行训练的两个nn滤波器模型。对于基于边界强度训练的模型,边界样点的权重设置较高(例如,1),内部样点的权重设置较低(例如,0)。对于另一个模型,边界样点的权重设置较低(例如,0),内部样点的权重设置较高(例如,1)。
[0370]
图14是示出了示例视频处理系统1400的框图,其可以实施本公开提供的各种技术。各种实施方式可以包括视频处理系统1400的一些或所有组件。视频处理系统1400可以包括用于接收视频内容的输入1402。视频内容可以以原始或未压缩格式(例如,8或10位多分量像素值)接收,或者可以以压缩或编码格式接收。输入1402可以表示网络接口、外围总线接口或存储接口。网络接口的示例包括例如以太网、无源光网络(pon)等的有线接口和例如wi-fi或蜂窝接口的无线接口。
[0371]
视频处理系统1400可以包括编解码组件1404,其可以实施本文档中描述的各种编解码或编码方法。编解码组件1404可以降低从输入1402到编解码组件1404输出的视频平均比特率以生成视频的编解码表示。因此,编解码技术有时被称为视频压缩或视频转码技术。如组件1406所示,可以将编解码组件1404的输出存储或通过连接的通信传输。在输入1402处接收的视频的存储或通信的比特流(或编解码)表示可以由组件1408用于生成发送到显示接口1410的像素值或可显示视频。从比特流表示生成用户可见视频的过程有时被称为视频解压缩。此外,虽然某些视频处理操作被称为“编解码”操作或工具,应当理解的是,编解码工具或操作用于编码器,并且相应的将编解码结果反转的解码工具或操作将由解码器执行。
[0372]
外围总线接口或显示接口的示例可以包括通用串行总线(usb)或高清多媒体接口(hdmi)或显示端口等。存储接口的示例包括sata(串行高级技术附件)、pci、ide接口等。本文档中描述的技术可以体现在各种电子设备中,例如移动电话、笔记本电脑、智能电话或能够执行数字数据处理和/或视频显示的其他设备。
[0373]
图15是视频处理设备1500的框图。设备1500可用于实施本公开所述的一种或多种方法。设备1500可以体现在智能电话、平板电脑、计算机、物联网(iot)接收器等中。设备1500可以包括一个或多个处理器1502、一个或多个存储器1504和视频处理硬件1506(又称为视频处理电路)。处理器1502可以配置为实施本文档中描述的一种或多种方法。存储器
(memory)1504可用于存储用于实施在此描述的方法和技术的数据和代码。视频处理硬件1506可用于在硬件电路中实施本文档中描述的一些技术。在一些实施例中,硬件1506可以部分或全部位于处理器1502(例如,图形处理器)中。
[0374]
图16是说明可以利用本公开的技术的示例视频编解码系统1600的框图。如图16所示,视频编解码系统1600可以包括源装置1610和目标装置1620。源装置1610生成可以被称为视频编码装置的编码视频数据。目标装置1620可以解码由源装置1610生成的编码视频数据,其可以被称为视频解码装置。
[0375]
源装置1610可以包括视频源1612、视频编码器1614和输入/输出(i/o)接口1616。
[0376]
视频源1612可以包括诸如视频捕获装置、从视频内容提供者接收视频数据的接口、和/或用于生成视频数据的计算机图形系统之类的源,或这些源的组合。视频数据可以包括一幅或多幅图片。视频编码器1614对来自视频源1612的视频数据进行编码以生成比特流。比特流可以包括形成视频数据的编解码表示的位序列。比特流可以包括编解码图片和相关数据。编解码图片是图片的编解码表示。关联数据可以包括序列参数集、图片参数集和其他语法结构。i/o接口1616可以包括调制器/解调器(调制解调器)和/或发射器。编码的视频数据可以通过网络1630经由i/o接口1616直接传输到目标装置1620。编码的视频数据也可以存储在存储介质/服务器1640上以供目标装置1620访问。
[0377]
目标装置1620可以包括i/o接口1626、视频解码器1624和显示装置1622。
[0378]
i/o接口126可以包括接收器和/或调制解调器。i/o接口1626可以从源装置1610或存储介质/服务器1640获取编码的视频数据。视频解码器1624可解码编码的视频数据。显示装置1622可以向用户显示解码的视频数据。显示装置1622可以与目标装置1620集成,或者可以在配置为与外部显示装置接口的目标装置1620外部。
[0379]
视频编码器1614和视频解码器1624可以根据视频压缩标准操作,例如根据高效视频编解码(hevc)标准、多功能视频编解码(vvc)标准和其他当前和/或进一步的标准。
[0380]
图17是说明视频编码器1700的示例的框图,视频编码器1700可以是图16中所示的视频编解码系统1600中的视频编码器1614。
[0381]
视频编码器1700可以配置为执行本公开的任何或所有技术。在图17的示例中,视频编码器1700包括多个功能组件。本公开中描述的技术可在视频编码器1700的各种组件之间共享。在一些示例中,处理器可以配置为执行本公开中描述的任何或所有技术。
[0382]
视频编码器1700的功能组件可以包括分割单元1701、预测单元1702(可以包括模式选择单元1703、运动估计单元1704、运动补偿单元1705和帧内预测单元1706)、残差生成单元1707、变换单元1708、量化单元1709、逆量化单元1710、逆变换单元1711、重构单元1712、缓冲器1713和熵编码单元1714。
[0383]
在其他示例中,视频编码器1700可包括更多、更少或不同的功能组件。在一个示例中,预测单元1702可以包括帧内块复制(ibc)单元。ibc单元可以在ibc模式下执行预测,其中至少一个参考图片是当前视频块所在的图片。
[0384]
此外,诸如运动估计单元1704和运动补偿单元1705等一些组件可以高度集成,但是出于解释的目的而在图17的示例中单独表示。
[0385]
分割单元1701可将图片分割成一个或多个视频块。图16的视频编码器1614和视频解码器1624可以支持各种视频块尺寸。
[0386]
模式选择单元1703可以选择编解码模式之一(帧内或帧间,例如基于误差结果),并且将得到的帧内或帧间编解码块提供给残差生成单元1707以生成残差块数据,并提供给重构单元1712以重构编码块以用作参考图片。在一些示例中,模式选择单元1703可以选择帧内和帧间预测组合(ciip)模式,其中预测基于帧间预测信号和帧内预测信号。在帧间预测的情况下,模式选择单元1703还可以为块选择运动矢量(例如,子像素或整数像素精度)分辨率。
[0387]
为了对当前视频块执行帧间预测,运动估计单元1704可以通过将来自缓冲器1713的一个或多个参考帧与当前视频块进行比较来生成当前视频块的运动信息。运动补偿单元1705可以基于来自缓冲器1713的除了与当前视频块相关联的图片之外的图片的运动信息和解码样点来确定当前视频块的预测视频块。
[0388]
运动估计单元1704和运动补偿单元1705可以对当前视频块执行不同的操作,例如,取决于当前视频块是在i条带、p条带还是b条带中。i条带(或i帧)的可压缩性最低,但不需要其他视频帧进行解码。s条带(或p帧)可以使用来自先前帧的数据进行解压缩,并且比i帧更容易压缩。b条带(或b帧)可以同时使用先前帧和前向帧作为数据参考,以获得最高的数据压缩量。
[0389]
在一些示例中,运动估计单元1704可为当前视频块执行单向预测,且运动估计单元1704可搜索列表0或列表1的参考图片以寻找当前视频块的参考视频块。运动估计单元1704可接着生成指示列表0或列表1中包含参考视频块的参考图片的参考索引和指示当前视频块与参考视频块之间的空域位移的运动矢量。运动估计单元1704可输出参考索引、预测方向指示符和运动矢量作为当前视频块的运动信息。运动补偿单元1705可以基于由当前视频块的运动信息指示的参考视频块来生成当前块的预测视频块。
[0390]
在其他示例中,运动估计单元1704可为当前视频块执行双向预测,运动估计单元1704可以在列表0中的参考图片中搜索当前视频块的参考视频块,并且还可以在列表1中的参考图片中搜索当前视频块的另一参考视频块。运动估计单元1704可接着生成指示列表0和列表1中的参考图片的参考索引,其包含参考视频块和指示参考视频块与当前视频块之间的空域位移的运动矢量。运动估计单元1704可以输出当前视频块的参考索引和运动矢量作为当前视频块的运动信息。运动补偿单元1705可以基于由当前视频块的运动信息指示的参考视频块来生成当前视频块的预测视频块。
[0391]
在一些示例中,运动估计单元1704可以输出完整的运动信息集以用于解码器的解码处理。
[0392]
在一些示例中,运动估计单元1704可以不输出当前视频的完整的运动信息集。相反,运动估计单元1704可参考另一视频块的运动信息来信令通知当前视频块的运动信息。例如,运动估计单元1704可确定当前视频块的运动信息与相邻视频块的运动信息足够相似。
[0393]
在一个示例中,运动估计单元1704可在与当前视频块相关联的句法结构中指示一个值,该值向视频解码器1624指示当前视频块具有与另一视频块相同的运动信息。
[0394]
在另一示例中,运动估计单元1704可在与当前视频块相关联的语法结构中识别另一视频块和运动矢量差(motion vector difference,mvd)。运动矢量差指示当前视频块的运动矢量与指示的视频块的运动矢量之间的差值。视频解码器1624可以使用所指示的视频
块的运动矢量和运动矢量差来确定当前视频块的运动矢量。
[0395]
如上文所讨论,视频编码器1700可预测性地信令通知运动矢量。可由视频编码器1700实施的预测信令通知技术的两个示例包括高级运动矢量预测(advanced motion vector predication,amvp)和merge模式信令通知。
[0396]
帧内预测单元1706可以对当前视频块执行帧内预测。当帧内预测单元1706对当前视频块执行帧内预测时,帧内预测单元1706可以基于相同图片中的其他视频块的解码样点生成当前视频块的预测数据。当前视频块的预测数据可以包括预测视频块和各种语法元素。
[0397]
残差生成单元1707可通过从当前视频块中减去(例如,由减号指示)当前视频块的预测视频块来生成当前视频块的残差数据。当前视频块的残差数据可以包括残差视频块,该残差视频块对应于当前视频块中样点的不同样点分量。
[0398]
在其他示例中,例如在跳过模式中,对于当前视频块可以不存在残差数据,并且残差生成单元1707可以不执行减法运算。
[0399]
变换处理单元1708可以通过将一个或多个变换应用于与当前视频块相关联的残差视频块,为当前视频块生成一个或多个变换系数视频块。
[0400]
在变换处理单元1708生成与当前视频块相关联的变换系数视频块之后,量化单元1709可基于与当前视频块相关联的一个或多个量化参数(qp)值来量化与当前视频块相关联的变换系数视频块。
[0401]
逆量化单元1710和逆变换单元1711可以分别将逆量化和逆变换应用于变换系数视频块,以从变换系数视频块重构残差视频块。重构单元1712可将重构的残差视频块添加到来自由预测单元1702生成的一个或多个预测视频块的对应样点中,以生成与当前块相关联的重构视频块以存储在缓冲器1713中。
[0402]
在重构单元1712重构视频块之后,可以执行环路滤波操作以减少视频块中的视频块伪影。
[0403]
熵编码单元1714可以从视频编码器1700的其他功能组件接收数据。当熵编码单元1714接收数据时,熵编码单元1714可执行一个或多个熵编码操作以生成熵编码数据并输出包括熵编码数据的比特流。
[0404]
图18是说明视频解码器1800的示例的框图,视频解码器1800可以是图16中所示的视频编解码系统1600中的视频解码器1624。
[0405]
视频解码器1800可以配置为执行本公开任何或所有技术。在图18的示例中,视频解码器1800包括多个功能组件。本公开中描述的技术可以在视频解码器1800的各种组件之间共享。在一些示例中,处理器可以配置为执行本公开中描述的任何或所有技术。
[0406]
在图18的示例中,视频解码器1800包括熵解码单元1801、运动补偿单元1802、帧内预测单元1803、逆量化单元1804、逆变换单元1805、以及重构单元1806和缓冲器1807。在一些示例中,视频解码器1800可以执行通常与关于视频编码器1614(例如,图16)描述的编码通道(pass)相应的解码通道。
[0407]
熵解码单元1801可以检索编码比特流。编码比特流可以包括熵编解码视频数据(例如,编码视频数据块)。熵解码单元1801可以解码熵编解码视频数据,并且根据熵解码视频数据,运动补偿单元1802可以确定包括运动矢量、运动矢量精度、参考图片列表索引和其
他运动信息的运动信息。例如,运动补偿单元1802可以通过执行amvp和merge模式信令通知来确定该信息。
[0408]
运动补偿单元1802可以生成运动补偿块,其可能基于插值滤波器执行插值。以子像素精度使用的插值滤波器的标识符可以包括在语法元素中。
[0409]
运动补偿单元1802可使用由视频编码器1614在对视频块进行编码期间使用的插值滤波器来计算参考块的子整数像素的插值。运动补偿单元1802可根据接收的语法信息来确定由视频编码器1614使用的插值滤波器并且使用插值滤波器来生成预测块。
[0410]
运动补偿单元1802可以使用一些语法信息来确定用于对编码视频序列的帧和/或条带进行编码的块的尺寸、描述编码视频序列的图片的每个宏块如何分割的分割信息、指示每个分割如何编码的模式、每个帧间编码块的一个或多个参考帧(和参考帧列表)以及其他解码编码视频序列的信息。
[0411]
帧内预测单元1803可以使用例如在比特流中接收的帧内预测模式来从空域相邻块形成预测块。逆量化单元1803对在比特流中提供并由熵解码单元1801解码的量化视频块系数进行逆量化,即去量化。逆变换单元1805应用逆变换。
[0412]
重构单元1806可以将残差块与由运动补偿单元1802或帧内预测单元1803生成的对应预测块相加以形成解码块。如果需要,还可以应用去方块滤波器来对解码块进行滤波,以便去除块状伪影。然后将解码视频块存储在缓冲器1807中,缓冲器1807为随后的运动补偿/帧内预测提供参考块,并且还生成解码视频以在显示装置上显示。
[0413]
图19示出了根据本公开实施例的视频数据编解码方法1900。方法1900可以由具有处理器和存储器的编解码设备(例如,编码器)执行。可以实施方法1900来缩放nn滤波器的输出以实现更好的性能,设置推理块尺寸,以及组合多个nn滤波器模型的输出。
[0414]
在框1902中,编解码设备将神经网络(nn)滤波器的输出应用于视频单元的未滤波样点以生成残差。在一个实施例中,未滤波样点是没有经过任何滤波处理的样点(或像素)。例如,未滤波样点没有经过任何nn滤波器。作为另一个示例,未滤波样点没有经过nn滤波器、自适应环路滤波器(alf)、去方块滤波器(df)、样点自适应偏移(sao)滤波器或它们的组合。
[0415]
在框1904中,编解码设备将缩放函数应用于残差以生成缩放残差。在一个实施例中,缩放残差是已经经过缩放函数或缩放操作(例如,作为可缩放视频编解码(svc)的一部分等)的残差。svc标准化了还包含一个或多个子集比特流(例如,分层编解码的形式)的高质量视频比特流的编码。子集视频比特流通过从较大视频中丢弃数据包以减少子集比特流所需的带宽而推导出。子集比特流可以表示较低的空域分辨率(较小的屏幕)、较低的时域分辨率(较低的帧速率)或质量较低的视频信号。
[0416]
在框1906中,编解码设备将另一个未滤波样点添加到缩放残差以生成滤波样点。在一个实施例中,添加到缩放残差的未滤波样点不同于在框1902中经过nn滤波器的未滤波样点。在框1908中,编解码设备基于生成的滤波样点在视频媒体文件和比特流之间进行转换。
[0417]
当在编码器中实施时,转换包括接收媒体文件(例如,视频单元)并将滤波样点编码为比特流。当在解码器中实施时,转换包括接收包括滤波样点的比特流,以及解码比特流以获得滤波样点。
[0418]
在一个实施例中,方法1900可以利用或结合本公开的其他方法的一个或多个特征或过程。
[0419]
以下提供一些实施例优选的方案列表。
[0420]
以下方案示出了本公开中讨论的技术的示例实施例(例如,示例1)。
[0421]
1、一种视频处理方法,包括:对于包括视频单元的视频和视频的比特流表示之间的转换,生成视频单元的最终滤波样点,其中,视频单元的最终滤波样点对应于将修正后的残差值添加到视频单元的未滤波样点值的结果;其中,修正后的残差值对应于将函数应用于视频单元的残差值的输出;其中,残差值基于应用于视频单元的未滤波样点的神经网络(nn)滤波器的输出。参考图13a-13d进一步描述了下面列出的各种选项。这里,最终滤波样点可以用于进一步处理,例如存储或显示,和/或用作后续视频编解码的参考视频。
[0422]
2、如权利要求1所述的方法,其中,未滤波样点对应于视频单元的重构视频样点。
[0423]
3、如权利要求1所述的方法,其中,该生成表示为y=x+f(r),其中x表示未滤波样点值,r表示nn滤波器的输出,f表示函数,并且y表示最终滤波样点值。
[0424]
4、如权利要求1所述的方法,其中,该生成表示为y=x+f(r,x),其中x表示未滤波样点值,r表示nn滤波器的输出,f表示函数,并且y表示最终滤波样点值。
[0425]
5、如权利要求1所述的方法,其中,该生成表示为y=x+f(r-x),其中x表示未滤波样点值,r表示nn滤波器的输出,f表示函数,并且y表示最终滤波样点值。
[0426]
6、如权利要求1所述的方法,其中,该生成表示为y=clip(x+f),其中x表示未滤波样点值,f表示应用函数的输出,并且y表示最终滤波样点值。
[0427]
7、如权利要求6所述的方法,其中,f(residual)=α
×
residual+β,其中,(α,β)是预定义的或即时推导的数字。
[0428]
以下方案示出了上一节中讨论的技术的示例实施例(例如,示例2)。
[0429]
8、一种视频处理方法,包括:对于包括视频单元的视频和视频的比特流之间的转换,根据规则确定用于将神经网络滤波器应用于视频单元的未滤波样点的推理块尺寸,并基于该确定执行转换。
[0430]
9、如权利要求8所述的方法,其中,该规则指定在比特流中指示推理块尺寸。
[0431]
10、如权利要求8所述的方法,其中,该规则指定推理块尺寸基于块的编解码信息。
[0432]
11、如权利要求10所述的方法,其中,推理块尺寸取决于量化参数或图片类型的条带类型或分割树类型或视频单元的颜色分量。
[0433]
12、如权利要求8所述的方法,还包括对于与视频单元相关联的一个或多个附加神经网络滤波器确定一个或多个附加推理块尺寸。
[0434]
以下方案示出了上一节中讨论的技术的示例实施例(例如,示例3)。
[0435]
13、一种视频处理方法,包括:根据规则在包括视频单元的视频和视频的比特流之间执行转换,其中,该规则指定视频单元的重构样点从使用多个神经滤波器模型的滤波中确定。
[0436]
14、如权利要求13所述的方法,其中,该规则指定使用多个滤波的输出的加权和来确定重构样点。
[0437]
15、如权利要求14所述的方法,其中,在比特流中指示用于加权和的权重。
[0438]
16、如权利要求14所述的方法,其中,加权和将相等的权重用于多个神经网络模
arithmetic coding of intra prediction modes in hevc,”vcip ieee(2017),1

4.
[0458]
[6]j.pfaff,p.helle,d.maniry,s.kaltenstadler,w.samek,h.schwarz,d.marpe,and t.wiegand,“neural network based intra prediction for video coding,”applications of digital image processing xli,vol.10752.international society for optics and photonics,1075213(2018).
[0459]
本文档中描述的所公开的和其他解决方案、示例、实施例、模块和功能操作可以在数字电子电路或计算机软件、固件或硬件中实施,包括本文档中公开的结构及其结构等效物,或其中的一种或多种的组合。所公开的和其他实施例可以实施为一个或多个计算机程序产品,即,在计算机可读介质上编码的一个或多个计算机程序指令模块,由数据处理设备执行或控制操作。计算机可读介质可以是机器可读存储装置、机器可读存储基板、存储器装置、影响机器可读传播信号的物质组合,或者其中的一个或多个的组合。术语“数据处理设备”涵盖处理数据的所有装置、设备和机器,例如包括可编程处理器、计算机或多个处理器或计算机。除了硬件之外,该设备还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或其中一个或多个的组合的代码。传播信号是人工生成的信号,例如机器生成的电、光或电磁信号,其被生成是为了对信息进行编码以传输到合适的接收器设备。
[0460]
计算机程序(也称为程序、软件、软件应用程序、脚本或代码)可以以任何形式的编程语言(包括编译或解释语言)编写,并且可以以任何形式进行部署,包括独立程序或适合在计算环境中使用的模块、组件、子例程或其他单元。计算机程序不一定与文件系统中的文件相对应。程序可以存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所讨论程序的单个文件中或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)。可以部署计算机程序,以在一台计算机或位于一个位置上或分布在多个位置上并通过通信网络互连的多台计算机上执行。
[0461]
本文档中描述的过程和逻辑流程可以由一个或多个可编程处理器来执行,以执行一个或多个计算机程序,从而通过对输入数据进行操作并生成输出来执行功能。处理和逻辑流程也可以由专用逻辑电路执行,并且设备也可以实现为专用逻辑电路,例如现场可编程门阵列(field programmable gate array,fpga)或专用集成电路(application specific integrated circuit,asic)。
[0462]
例如,适合于执行计算机程序的处理器包括通用和专用微处理器,以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器装置。通常,计算机还将包括或可操作地耦合到一个或多个用于存储数据的大容量存储装置,例如,磁盘、磁光盘或光盘,以从中接收数据,或将数据传输到一个或多个大容量存储设备,或两者。但是,计算机不必具有这样的装置。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器装置,包括例如半导体存储装置,例如eprom、eeprom和闪存设备;磁盘,例如内置硬盘或可移动磁盘;磁光盘;以及cd rom和dvd-rom磁盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
[0463]
尽管本专利文档包含许多细节,但是这些细节不应解释为对任何发明或可要求保
护的范围的限制,而应解释为对特定发明的特定实施例可能特定的特征的描述。在单独的实施例的上下文中在本专利文档中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以分别在多个实施例中或以任何合适的子组合来实现。此外,尽管以上可以将特征描述为以某些组合起作用并且甚至最初如此要求保护,但是在某些情况下,可以从组合中剔除所要求保护的组合中的一个或多个特征,并且所要求保护的组合可以涉及子组合或子组合的变体。
[0464]
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应理解为要求以所示的特定顺序或以连续的顺序执行这样的操作,或者执行所有示出的操作以实现期望的效果。此外,在该专利文档中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这种分离。
[0465]
仅描述了一些实施方式和示例,并且可以基于本专利文档中描述和示出的内容进行其他实施方式、增强和变化。
[0466]
尽管本专利文档包含许多细节,但是这些细节不应解释为对任何发明或可要求保护的范围的限制,而应解释为对特定发明的特定实施例可能特定的特征的描述。在单独的实施例的上下文中在本专利文档中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以分别在多个实施例中或以任何合适的子组合来实现。此外,尽管以上可以将特征描述为以某些组合起作用并且甚至最初如此要求保护,但是在某些情况下,可以从组合中剔除所要求保护的组合中的一个或多个特征,并且所要求保护的组合可以涉及子组合或子组合的变体。
[0467]
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应理解为要求以所示的特定顺序或以连续的顺序执行这样的操作,或者执行所有示出的操作以实现期望的效果。此外,在该专利文档中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这种分离。
[0468]
仅描述了一些实施方式和示例,并且可以基于本专利文档中描述和示出的内容进行其他实施方式、增强和变化。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1