掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及视频成分的块的编码或解码。本发明的实施例发现了在控制用于滤波这种成分的样本的滤波器时的特定但不排他的使用。特别地但不排他地,控制自适应环路滤波器。

背景技术

视频编码包括图像编码(图像等效于视频的单个帧)。在视频编码中,诸如变换系数的量化或运动补偿(通常使用插值滤波器来进行)等的一些编码工具经常引入失真偏置/效应(在给定上下文中看起来是规则的或至少是非随机的失真)。为了补偿这些偏差/伪像,并且提高(或至少维持良好水平的)编码效率,使用一些特定编码工具,称为后滤波器或环内滤波器。解块滤波器(DBF)、样本自适应位移(SAO)滤波器或自适应环路滤波器(ALF)是这种编码工具的一些示例。在编码环路内应用环内滤波器,使得它们提供给当前帧的图像质量增加,由此基于当前帧编码的下一帧的编码效率增加。例如,DCT系数的量化对于视频压缩是有效的,但是它经常在压缩的样本块的边界上引入块伪像(偏差)。解块滤波器减少了由这种伪像引起的不期望的影响。与在编码环路外(例如,就在显示帧之前)对帧进行解块相比,在编码环路内(在帧用作另一帧的运动补偿的参考帧之前)对解码帧进行解块(使用DBF)显著地增加了运动补偿的编码效率。

本发明特别涉及自适应环路滤波器(ALF),该自适应环路滤波器也用作环内滤波器以减少解码帧/图像中的不期望的压缩伪像。ALF已经由视频编码专家组/运动图片专家组(VCEG/MPEG)标准化组研究,并且正考虑在通用视频编码(VVC)标准中使用,例如在VVC测试模型软件的第三版本(VTM-3.0或VVC草稿版本3)中使用。

发明内容

本发明的实施例的目的在于解决视频成分的块的前述编码或解码的一个或多个问题或缺点。

虽然ALF是高效的编码工具,但其线性滤波是提高图像质量的次优解。本发明使得利用ALF的非线性滤波能够提高其效率和/或性能。

根据本发明的方面,提供了如所附权利要求中所阐述的设备/装置、方法、程序、计算机可读存储介质和信号。根据从属权利要求和说明书,本发明的其它特征将是明显的。

根据本发明的第一方面,提供针对图像的一个或多个图像部分控制自适应环路滤波器的方法,所述方法包括基于图像部分的第一样本值的一个或多个邻近样本值来控制对第一样本的滤波,其中所述控制使用具有一个或多个邻近样本值作为变量的非线性函数。适当地,非线性函数的变量包括两个或更多个邻近样本值。适当地,非线性函数的变量还包括第一样本值和取决于一个或多个邻近样本值的位置的第一变量。适当地,第一变量取决于两个或更多个邻近样本值的位置。适当地,非线性函数的输出被用作自适应环路滤波器的输入(或输入参数)。

根据本发明的第二方面,提供用于针对图像的一个或多个图像部分控制滤波器的方法,所述方法包括基于图像部分的第一样本值的一个或多个邻近样本值来控制对第一样本的滤波,其中所述控制使用具有包括第一样本值、一个或多个邻近样本值和第一变量的多个变量的非线性函数,所述第一变量取决于一个或多个邻近样本值的位置。适当地,多个变量包括两个或更多个邻近样本值。适当地,第一变量取决于两个或更多个邻近样本值的位置。适当地,滤波器是自适应环路滤波器。

根据本发明的第三方面,提供用于针对图像的一个或多个图像部分控制滤波器的方法,所述方法包括基于图像部分的第一样本值的一个或多个邻近样本值来控制对第一样本的滤波,其中所述控制使用一个或多个限幅函数,限幅函数具有基于第一样本值、两个或更多个邻近样本值和限幅参数的一个或多个控制参数。适当地,一个或多个控制参数基于第一样本值、两个或更多个邻近样本值和限幅参数。适当地,滤波器是自适应环路滤波器。适当地,一个或多个限幅函数中的各个限幅函数是以下各项之一:max(-b,min(b,d))、min(b,max(-b,d))、max(c-b,min(c+b,n))或min(c+b,max(c-b,n));以及c是第一样本值,n是邻近样本值,d=n-c,并且b是限幅参数。

根据本发明的第四方面,提供用于针对图像的一个或多个图像部分控制自适应环路滤波器的方法,所述方法包括基于图像部分的第一样本值的一个或多个邻近样本值来控制对第一样本的滤波,其中所述控制使用第一样本值以及一个或多个邻近样本值的非线性组合作为自适应环路滤波器的输入参数。适当地,自适应环路滤波器如VTM3.0中所指定。

根据本发明的第五方面,提供用于针对图像的一个或多个图像部分控制自适应环路滤波器的方法,所述方法包括基于图像部分的第一样本值的两个或更多个邻近样本值来控制对第一样本的滤波,其中所述控制使用两个或更多个邻近样本值的非线性组合作为自适应环路滤波器的输入参数。适当地,自适应环路滤波器如VTM3.0中所指定。

对于本发明的第四和第五方面,可以根据其实施例提供以下特征。适当地,非线性组合是非线性函数的一部分。适当地,自适应环路滤波器的输入参数还包括第一变量,该第一变量取决于一个或多个邻近样本值的位置。适当地,第一变量取决于两个或更多个邻近样本值的位置。适当地,非线性组合是第一样本值、一个(或两个或更多个)邻近样本值和第一变量。

根据本发明的第六方面,提供处理图像的一个或多个部分的方法,图像部分具有与其相关联的色度样本和亮度样本,其中所述方法包括基于从位流获得的信息或者图像部分的第一样本值及其一个或多个邻近样本值确定以下各项至少之一:使用或不使用利用根据第一方面、第二方面、第三方面、第四方面或第五方面的方法所控制的滤波器;启用或禁用所述滤波器的使用;或者在对第一样本值进行滤波时与所述滤波器一起使用的滤波参数。适当地,从位流可获得的信息包括标志或索引。适当地,从位流可获得的信息包括以下各项中的一个或多个:用于识别所述滤波器的信息;用于指示使用或不使用的标志;用于指示启用或禁用的标志;关于与所述滤波器一起使用的第一变量的信息;或者关于用于指定值范围的限幅参数的信息。适当地,关于第一变量的信息用于指定值或者识别第一函数作为第一变量。适当地,第一变量取决于一个或多个邻近样本值的位置(或者能够基于一个或多个邻近样本值的位置而变化)。适当地,第一变量取决于两个或更多个邻近样本值的位置。

根据本发明的第七方面,提供对一个或多个图像进行编码的方法,所述方法包括针对图像的一个或多个部分,根据第一方面、第二方面、第三方面、第四方面或第五方面控制滤波器,或者根据第六方面进行处理。适当地,该方法还包括:接收图像;对所接收的图像进行编码并生成位流;以及处理编码图像,其中处理包括根据第一方面、第二方面、第三方面、第四方面或第五方面进行控制或者根据第六方面进行处理。适当地,当从属于第六方面时,该方法还包括在位流中提供所述信息。适当地,该方法还包括:从多个可用函数中选择非线性函数或者一个或多个限幅函数;在处理编码图像时使用所选择的函数;以及在位流中提供用于识别所选择的函数的信息。

根据本发明的第八方面,提供对一个或多个图像进行解码的方法,所述方法包括针对图像的一个或多个部分,根据第一方面、第二方面、第三方面、第四方面或第五方面控制滤波器或者根据第六方面进行处理。适当地,该方法还包括:接收位流;从所接收的位流中解码信息以获得图像;以及处理所获得的图像,其中处理包括根据第一方面、第二方面、第三方面、第四方面或第五方面进行控制,或者根据第六方面进行处理。适当地,当从属于第六方面时,该方法还包括从位流获得所述信息。适当地,该方法还包括:从位流获得用于从多个可用函数识别非线性函数或者一个或多个限幅函数的信息;以及在处理所获得的图像时使用所识别的函数。

根据本发明的第九方面,提供用于针对图像的一个或多个部分控制滤波器的装置,所述装置包括控制器,所述控制器被配置为进行根据第一方面、第二方面、第三方面、第四方面、第五方面或第六方面的方法。

根据本发明的第十方面,提供用于对图像进行编码的装置,该装置包括根据第九方面的控制装置。适当地,该装置被配置成进行根据第七方面的方法。

根据本发明的第十一方面,提供用于对图像进行解码的装置,该装置包括根据第九方面的控制装置。适当地,该装置被配置成进行根据第八方面的方法。

根据本发明的第十二方面,提供用于针对图像的一个或多个图像部分控制自适应环路滤波器的方法,所述方法包括基于图像部分的第一样本值的多个邻近样本值来控制第一样本的滤波,其中所述控制包括使用非线性函数,非线性函数具有基于邻近样本值中的一个或多个的一个或多个变量。应当理解,邻近样本(值)不限于相邻样本(值),而是还包括第一样本(值)周围或附近的样本(值)。适当地,控制包括将未用于确定或作为非线性函数中的变量的一个或多个其它邻近样本中的一个或多个邻近样本值用作自适应环路滤波器的输入参数。适当地,值用于确定或作为一个或多个(或该)非线性函数中的变量的邻近样本布置成如下形状:与第一样本在交叉点处的交叉;或者平行四边形。适当地,值用于确定或作为一个或多个(或该)非线性函数中的变量的邻近样本被布置成如下形状:当8个邻近样本的值用于确定或作为非线性函数中的变量时,与第一样本在交叉点处的高5个样本和宽5个样本的交叉,或者各个边长度为3个样本的中空平行四边形;或者当12个邻近样本的值被用于确定或作为一个或多个(或该)非线性函数中的变量时,各个边长度为3个样本的平行四边形。适当地,与第一样本在交叉点(和/或中心)处的交叉是以下各项之一:垂直和水平线的交叉“+”;或斜线的交叉“X”(对角线交叉)。适当的,(中空)平行四边形是以下各项之一:正方形;矩形;或者菱形形状。适当地,(中空)平行四边形围绕或包围位于中心的第一样本。可选地,其值用于确定或作为一个或多个(或该)非线性函数中的变量的邻近样本被布置成第一样本在中心处的如下形状:垂直线“|”;水平线“-”;从左上到右下的对角/斜线“\”;或者从右上到左下的对角线/斜线“/”。可选地,值用于确定或作为一个或多个(或该)非线性函数中的变量的邻近样本布置成(中空)多边形的形状。适当地,(中空)多边形围绕或包围位于中心处的第一样本。可选地,值用于确定或作为一个或多个(或该)非线性函数中的变量的邻近样本被布置成上述形状的任意组合的形状。适当地,滤波器变量在两个或更多个邻近样本之间共用。适当地,相邻样本的布置形状具有关于中心的对称。适当地,交叉形状、平行四边形形状或多边形形状具有关于中心的对称。可选地,邻近样本的布置形状不具有关于中心的对称。适当地,交叉形状或平行四边形形状不具有关于中心的对称。适当地,第一样本和多个邻近样本值中的邻近样本以如下形状排列:与第一样本在交叉点处交叉;或者平行四边形或中空平行四边形。适当地,第一样本值和多个邻近样本值中的邻近样本以如下的平行四边形的形状布置:当多个邻近样本值由24个邻近样本的样本值构成时,各个边长度为4个样本;或者,当多个邻近样本值由12个邻近样本的样本值构成时,各个边长度为3个样本。适当地,与第一样本在交叉点(和/或中心)处交叉是以下各项之一:垂直和水平线的交叉“+”;或斜线的交叉“X”(对角线交叉)。适当的,(中空)平行四边形是以下各项之一:正方形;矩形;或者菱形形状。适当地,(中空)平行四边形围绕或包围位于中心的第一样本。可选地,第一样本和多个邻近样本值中的邻近样本以第一样本位于中心布置为如下形状布置:垂直线“|”;水平线“-”;从左上到右下的对角线/斜线“\”;或从右上到左下的对角线/斜线“/”。可选地,第一样本和多个邻近样本值中的邻近样本布置成(中空)多边形的形状。适当地,(中空)多边形围绕或包围位于中心处的第一样本。可选地,第一样本和多个邻近样本值中的邻近样本以前述形状的任意组合的形状布置。适当地,滤波器变量在两个或更多个邻近样本之间共用。适当地,相邻样本的布置形状具有关于中心的对称。适当地,交叉形状、平行四边形形状或多边形形状具有关于中心的对称。可选地,邻近样本的布置形状不具有关于中心的对称。适当地,交叉形状、平行四边形形状或多边形形状不具有关于中心的对称。适当地,第一样本和所述邻近样本是亮度成分样本。可选地,第一样本和所述邻近样本是色度成分样本。适当地,该(或者一个或多个)非线性函数的变量还包括第一样本值,以及该(或者一个或多个)非线性函数被应用于第一样本值和一个或多个邻近样本值中的各个邻近样本值之间的差。适当地,该(或者一个或多个)非线性函数的变量还包括第一样本值和取决于一个或多个邻近样本的位置的一个或多个滤波器变量,各个滤波器变量对于两个或更多个邻近样本是相同的;并且该(或者一个或多个)非线性函数被应用于以下的差之和:该差为第一样本值与具有相同滤波器变量的两个或更多个邻近样本中的两个或更多个邻近样本值的各邻近样本值之间的两个或更多个差。适当地,该(或者一个或多个)非线性函数的输出被用作自适应环路滤波器的输入(或输入参数)。适当地,非线性函数包括一个或多个限幅函数,并且一个或多个限幅函数中的各个限幅函数是以下各项之一:max(-b,min(b,d))、min(b,max(-b,d))、max(c-b,min(c+b,n))、min(c+b,max(c-b,n))、max(-b,min(b,d1+d2))、min(b,max(-b,d1+d2))、max(2*c-b,min(2*c+b,n1+n2))或min(2*c+b,max(2*c-b,n1+n2)),其中c是第一样本值,n或n1或n2是邻近样本值,d=n-c,d1=n1-c,d2=n2-c,以及b是限幅参数。

根据本发明的第十三方面,提供处理图像的一个或多个部分的方法,图像部分具有与其相关联的色度样本和亮度样本,其中所述方法包括基于从位流获得的信息或者第一样本值及其一个或多个邻近样本值,确定以下各项至少之一:使用或不使用利用第十二方面的方法控制的滤波器;启用或禁用所述滤波器的使用;或者在滤波第一样本值时与所述滤波器一起使用的滤波参数或滤波器变量。适当地,从位流获得的信息包括针对亮度或色度成分之一提供的标志,该标志指示该成分的以下各项至少之一:使用或不使用利用第十二方面的方法控制的滤波器;或者启用或禁用所述滤波器的使用。适当地,在自适应参数集中提供标志。适当地,从位流获得的信息包括针对一个或多个图像部分提供的标志,该标志指示针对一个或多个图像部分的以下各项至少之一:使用或不使用利用第十二方面的方法控制的滤波器;或者启用或禁用所述滤波器的使用。适当地,在自适应参数集中提供标志。

根据本发明的第十四方面,提供对一个或多个图像进行编码的方法,该方法包括,针对图像的一个或多个部分,根据第十二方面的方法控制滤波器,或根据第十三方面的方法进行处理。适当地,该方法还包括:接收图像;对所接收的图像进行编码并生成位流;以及处理编码图像,其中处理包括根据第十二方面的方法进行控制或根据第十三方面的方法进行处理。适当地,该方法(当从属于第十三方面时)还包括在位流中提供所述信息。适当地,非线性函数包括一个或多个限幅函数;该(或者一个或多个)非线性函数的变量还包括取决于值被用作该(或者一个或多个)非线性函数中的变量的一个或多个邻近样本的位置的一个或多个滤波器变量;提供所述信息包括在位流中提供一个或多个限幅参数;以及当针对位置的滤波器变量为零时,在位流中不提供与应用于该位置处的邻近样本的邻近样本值的限幅函数一起使用的限幅参数。适当地,该方法还包括:从多个可用函数中选择非线性函数或者一个或多个限幅函数;在处理编码图像时使用所选择的函数;以及在位流中提供用于识别所选择的函数的信息。

根据本发明的第十五方面,提供对一个或多个图像进行解码的方法,该方法包括,针对图像的一个或多个部分,根据第十二方面的方法控制滤波器,或者根据第十三方面的方法进行处理。适当地,该方法还包括:接收位流;解码来自所接收的位流的信息以获得图像;以及处理所获得的图像,其中处理包括根据第十二方面的方法进行控制,或者根据第十三方面的方法进行处理。适当地,该方法(当从属于第十三方面时)还包括从位流获得所述信息。适当地,非线性函数包括一个或多个限幅函数;该(或者一个或多个)非线性函数的变量还包括取决于值被用作该(或者一个或多个)非线性函数中的变量的一个或多个邻近样本的位置的一个或多个滤波器变量;以及当用于一个位置的滤波器变量为零时,限幅函数不应用于该位置处的邻近样本的邻近样本值。适当地,该方法还包括:从位流获得用于从多个可用函数识别非线性函数或者一个或多个限幅函数的信息;以及在处理所获得的图像时使用所识别的函数。

根据本发明的第十六方面,提供一种装置,该装置包括:控制器,其被配置为进行第十二方面或第十三方面的方法;编码器,其被配置为进行第十四方面的方法;或者解码器,其被配置为进行第十五方面的方法。

根据本发明的第十七方面,提供一种用于针对图像的一个或多个部分控制滤波器的装置,所述装置包括控制器,所述控制器被配置为进行第十二方面或第十三方面的方法。

根据本发明的第十八方面,提供一种用于对图像进行编码的装置,该装置包括第十七方面的控制装置。适当地,该装置被配置为进行第十四方面的方法。

根据本发明的第十九方面,提供一种用于对图像进行解码的装置,该装置包括第十七方面的控制装置。适当地,该装置被配置为进行第十五方面的方法。

根据本发明的第二十方面,提供当在计算机或处理器上运行时使计算机或处理器执行根据第一方面、第二方面、第三方面、第四方面、第五方面、第六方面、第七方面、第八方面、第十二方面、第十三方面、第十四方面或第十五方面的方法的程序。

根据本发明的第二十一方面,提供一种存储根据第二十方面的计算机程序的计算机可读存储介质。

根据本发明的第二十二方面,提供一种信号,该信号携带用于使用根据第七方面或第十四方面的方法编码的并由位流表示的图像的信息数据集,图像包括可重建样本集合,各个可重建样本具有样本值,其中信息数据集包括用于基于第一可重建样本的邻近样本的样本值来控制对第一可重建样本的滤波的控制数据。

对于本发明的上述方面,可以根据其实施例提供以下特征。适当地,非线性函数包括限幅函数、锯齿核函数、三角核函数或高斯核函数中的一个或多个。适当地,非线性函数包括一个或多个限幅函数,并且一个或多个限幅函数中的各个限幅函数是以下各项之一:max(-b,min(b,d))、min(b,max(-b,d))、max(c-b,min(c+b,n))、min(c+b,max(c-b,n))、max(-b,min(b,d1+d2))、min(b,max(-b,d1+d2))、max(2*c-b,min(2*c+b,n1+n2))或min(2*c+b,max(2*c-b,n1+n2)),其中c是第一样本值,n或n1或n2是邻近样本值,d=n-c,d1=n1-c,d2=n2-c,以及b是限幅参数。适当地,(多个)变量是(数学)非线性函数的自变量,非线性函数的输出是其因变量。适当地,邻近样本的位置被定义为与第一样本的位置的相对距离或相对位移。适当地,邻近样本的位置被定义为其在(光栅)扫描顺序中的位置(适当地,在(光栅)扫描顺序中相对于第一样本的位置)。适当地,自适应环路滤波器使用非线性函数进行滤波。适当地,非线性函数的输出被用作自适应环路滤波器的输入(或输入参数)。适当地,对一个或多个这样的输入(参数)应用自适应环路滤波器包括使用以一个或多个输入(参数)作为其变量的线性函数。适当地,自适应环路滤波器如VTM3.0中所指定。

本发明的又一方面涉及当由计算机或处理器执行时使计算机或处理器执行上述方面的任何方法的程序。该程序可以是单独提供的,或者可以是在载体介质上、通过载体介质或在载体介质中携带的。载体介质可以是非暂时性的,例如存储介质,特别是计算机可读存储介质。载体介质也可以是暂时的,例如信号或其它传输介质。该信号可以经由包括因特网的任何合适的网络传送。

本发明的又一方面涉及包括根据前述装置方面中的任一个的装置的照相机。根据本发明的又一方面,提供一种移动装置,该移动装置包括根据前述装置方面中的任一个的装置和/或体现上述照相机方面的照相机。

本发明的一个方面中的任何特征可以以任何适当的组合应用于本发明的其它方面。特别地,方法方面可应用于设备方面,反之亦然。此外,在硬件中实现的特征可以在软件中实现,反之亦然。这里对软件和硬件特征的任何引用都应相应地解释。这里描述的任何设备特征也可以提供为方法特征,反之亦然。如这里所使用的,装置加功能特征可以根据它们的相应结构来替代地表示,诸如适当编程的处理器和相关联的存储器等。还应当理解,可以独立地实现和/或提供和/或使用在本发明的任何方面中描述和限定的各种特征的特定组合。

附图说明

现在将仅通过示例并参考以下附图描述本发明的实施例,其中:

图1显示了在VTM-3.0的典型解码环路中发生ALF的位置;

图2是概述针对ALF在VTM-3.0中存在的语法元素的流程图;

图3-a是示出根据本发明实施例的用于滤波色度(Chroma)成分的步骤的流程图;

图3-b提供根据本发明实施例的色度滤波器的滤波形状和系数布置;

图4-a是示出根据本发明实施例的用于滤波亮度(Luma)成分的步骤的流程图;

图4-b提供根据本发明实施例的亮度滤波器的滤波形状和四种可能的系数布置;

图5是概述根据本发明实施例的修改后的语法元素的流程图;

图6是VTM-3.0中的ALF中的线性滤波器的框图;

图7是根据本发明实施例的非线性滤波器的框图;

图8是根据本发明实施例的当图7中的滤波器的非线性部分被禁用时获得的线性滤波器的框图;

图9是示出根据本发明实施例的ALF编码处理的流程图;

图10是示出根据本发明实施例的编码方法的步骤的流程图;

图11是示出根据本发明实施例的解码方法的步骤的流程图;

图12是示意性地示出可以实现本发明的一个或多个实施例的数据通信系统的框图;

图13是示出可以实现本发明的一个或多个实施例的处理装置的组件的框图;

图14是示出可以实现本发明的一个或多个实施例的网络照相机系统的图;

图15是示出可以实现本发明的一个或多个实施例的智能电话的图;

图16-a提供根据本发明实施例的具有减少数量的限幅位置的7×7菱形滤波形状;以及

图16-b提供根据本发明实施例的具有减少数量的限幅位置的5×5菱形滤波形状。

具体实施方式

下面描述的本发明的实施例涉及改进图像的编码和解码。

在本说明书中,“用信号通知”可以指将与用于控制滤波器的一个或多个参数有关的信息(例如使用、不使用、启用或禁用模式/方案或其它滤波控制相关信息)插入到(提供/包括/编码在)位流中或者从位流提取/获得(解码)该信息。

在本说明书中,术语“片”用作图像部分的示例(这种图像部分的其它示例将是区块或区块组(其是区块的组/集合)。应当理解,本发明的实施例也可以代替基于片而基于图像部分(例如,区块或区块组)以及适当修改的参数/值/语法(诸如图像部分/区块/区块组的头部(代替片头部)、图像部分/区块/区块组的类型(代替片类型)、以及图像部分/区块/区块组的统计信息(代替片统计信息))来实现。还应当理解,在本发明的实施例中,也可以使用自适应参数集(APS)或区块(组)头部代替片头部或序列参数集(SPS),来用信号通知ALF参数(或用于使用ALF滤波的信息)。当APS用于用信号通知ALF参数(或用于使用ALF滤波的信息)时,片头部或区块组头部可以用于例如通过指示自适应集标识符(aps_id)来指示必须使用哪个APS以获得ALF参数(或用于使用ALF滤波的信息)。还应当理解,片、区块组、区块、编码树单元(CTU)/最大编码单元(LCU)、编码树块(CTB)、编码单元(CU)、预测单元(PU)、变换单元(TU)或像素/样本块中的任一个可以被称为图像部分。

还应当理解:当滤波器或工具被描述为“有效”时,滤波器/工具“启用”或“可供使用”或“已使用”;当被描述为“无效”时,滤波器/工具“禁用”或“不可使用”或“未使用”;并且“类”是指一个或多个元素的组、分组、类别或分类。此外,还应当理解,当标志被描述为“有效”时,意味着该标志指示相关滤波器/工具是“有效”的。

自适应环路滤波器(ALF)

图1示出在VTM-3.0的典型解码环路中存在ALF的位置。在101中,以编码树单元(CTU:VVC中的最大编码单元,通常为128×128样本/像素大小)为单位对图像部分(例如,片)进行解码。CTU被拆分成矩形块或编码单元(CU),所述矩形块或编码单元使用特定预测方案/模式进行编码,并且通常是残差块的有损编码。由于基于块的编码的使用,块伪像可能在编码块之间的边界处可见。在102中,然后由DBF处理解码图像部分以减少/去除这些伪像。典型地,为了对用于块预测的残差(块)进行编码,使用类DCT变换来变换残差值(以在几个系数中压缩残差能量),并且变换后的系数被量化以降低编码成本。这种量化通常在重建块(即存储在帧缓冲器106中的参考帧中的块)中引入一些振铃(ringing)伪像。在103中,然后由SAO滤波器处理DBF的输出图像部分,这有助于以较低的计算成本减少这些伪像中的一些伪像。在104中,然后由ALF处理SAO滤波器的输出图像部分。ALF可以进一步减少例如“振铃”等的伪像。ALF具有较高阶误差建模能力,但计算成本较高。然后,ALF的输出图像部分被发送到输出(例如显示器或用于与显示器通信的通信接口)105。ALF的输出图像部分还可以放入帧缓冲器106中(作为存储在其中的参考帧的一部分),使得其可以用于时间预测(当使用时间预测工具时)。这就是DBF、SAO滤波器和ALF被称为“环内”滤波器的原因。编码器可以禁用一些环内滤波器,使得在解码处它们可以被旁路(即,不进行滤波,并且与所禁用的工具相对应的步骤的输出与其输入相同)。此外,在一些情况下,所处理的图像部分不限于片,而是可以是包含一个或多个片的全帧,具有跨越片边界(如果存在多于一个)应用滤波器的可能性,以减少这些边界上的伪像。对于多成分图像(例如,YCrCb格式的图像),DBF、SAO滤波器或ALF处理分别应用于各个成分,并且可能不同(例如,使用与其它成分不同的滤波参数)。

图2提供针对ALF的VTM-3.0中存在的语法元素的概述。序列参数集(SPS)使用标志指示ALF工具针对视频序列(201)是否有效(即,启用),并且如果是,片头部指示ALF针对片(202)是否有效,并且提供用于控制ALF的滤波器参数(203至207)。当在202中ALF有效时,它至少针对亮度成分有效,并且片头部进一步指示ALF针对各个色度成分是否有效(203)。

ALF可以对亮度成分使用多于一个滤波器。可以使用多于一个的滤波器系数表,这是因为不同的滤波器配置可以共用相同的滤波器系数(稍后将描述)。在VTM-3.0软件的语法元素方案中,这些不同的滤波器配置不能被单独区分,并且具有不同配置的滤波器被认为是相同的滤波器。在下面的描述中,使用对单个滤波器的相同参考,除非明显参考不同的系数表。语法元素方案中的对单个滤波器的这种共用是通过考虑到对于旋转的正交和/或镜像配置对滤波图像的统计是相同的来减少分配给滤波器的位数的有效方式:即,针对参考样本配置设计的一个参考滤波器被指定为被旋转和/或镜像以滤波正交和/或镜像样本配置。片头部包含编码的亮度滤波器的数量(204)(是一个或多个)。

当滤波亮度样本时,ALF将样本(根据邻近样本的配置)局部分类(归类)为25个可能类(类别/分类/组)中的一个来选择滤波器(其与该特定类/类别/分类/组相关联/分配给该特定类/类别/分类/组)以局部应用于这些样本。这里使用术语“局部”分类和“局部”应用,这是因为样本以块(通常为4×4个样本,例如在VTM-3.0中)或以CU为单位进行处理。然后,例如使用用于识别所选亮度滤波器的索引/信息,在位流中用信号通知所选亮度滤波器。当在编码处理期间所使用的亮度滤波器的数量大于1时,片头部还包含用于识别/选择这些亮度滤波器的一个或多个索引(例如,用于25个类的最多25个滤波器的索引,各个索引与用于这些类之一的亮度滤波器相对应)(205)。在编码处理中使用的亮度滤波器的数量为1的情况下,该单个亮度滤波器应用于所有类。

然后,片头部包含每个亮度滤波器(206)的所有滤波器系数(或滤波器参数)(即,在编码处理期间使用的各个亮度滤波器的系数表),接着是色度滤波器(207)的滤波器系数。注意,在VTM-3.0中,当ALF针对两个色度成分都有效(即启用)时,两个色度成分共用相同的色度滤波器。

当ALF有效时,对于ALF有效的每个成分,可以逐个CTU启用滤波。在编码位流的内部,对于各个CTU,编码片数据针对ALF有效的每个成分包括一个熵编码的标志以指示针对该CTU的成分是否启用ALF(208、209和210),并且因此指示是否必须使用ALF滤波该CTU的该成分的样本。使用上下文自适应二进制算术编码(CABAC)对该标志进行编码。

在VTM-3.0中,用信号通知亮度滤波器206的系数进行如下:

[1]首先用信号通知“alf系数增量标志”,该标志指示是否可以禁用某些滤波器,并且如果“alf系数增量标志”为零并且如果亮度滤波器的数量大于1,则用信号通知“coeff增量预测模式标志”,指示滤波器系数编码将使用预测(稍后将更详细描述)。

[2]在VTM-3.0中,为了使用(exp-)Golomb码编码亮度系数,我们使用3(2用于色度)(exp-)Golomb配置。(exp-)Golomb编码的唯一参数是(exp-)Golomb指数(常记为“k”)。各个配置具有(exp-)Golomb索引。使用(exp-)Golomb码的“最小指数”的可变长度码(VLC)来用信号通知滤波器系数的(exp-)Golomb编码的参数,然后对于各个(exp-)Golomb索引,如果针对该索引和接下来的索引,(exp-)Golomb指数必须增加(以针对第一索引的“最小指数”开始),则用信号通知标志。

[3]然后,如果“alf系数增量标志”指示某些滤波器被启用,则针对各个滤波器用信号通知标志,从而指示是否禁用该滤波器(且因此不编码)。

[4]然后,使用(针对带符号整数)(exp-)Golomb码针对各个(未禁用)滤波器用信号通知滤波器系数,其中(exp-)Golomb码具有取来自存储(exp-)Golomb参数的表的与(在固定表中的)滤波器系数索引相关联的(exp-)Golomb索引的(exp-)Golomb指数。

在用信号通知“coeff增量预测模式标志”的情况下,其指示滤波器系数编码使用预测。这意味着具有大于或等于1的滤波器索引(即,标识各个滤波器的索引)的“当前”滤波器的滤波器系数被编码为“当前”滤波器的滤波器系数与先前处理的滤波器的滤波器系数之间的差(例如,使用先前处理的滤波器的滤波器系数作为滤波器系数预测子-即,使用预测,编码为滤波器系数残差值)。第一个滤波器(具有滤波器索引零)在没有预测的情况下被编码。

用信号通知色度滤波器207的系数与针对亮度滤波器类似地进行,除了没有“alf系数增量标志”,没有“coeff增量预测模式标志”,以及具有两个(exp-)Golomb索引而非3个之外。

图3-a是示出根据本发明实施例的用于滤波色度成分的步骤的流程图,并且图3-b提供根据本发明实施例的色度滤波器的滤波形状和系数布置。

在图3-a中,ALF滤波在亮度和色度成分之间应用不同。以简单的样本开始,图3-a提供用于滤波色度成分的主要步骤。输入图像部分301(例如区块或区块组)包含要滤波的色度样本。输入滤波参数302包括参考图2中的ALF语法元素描述的ALF参数(例如,“alf系数增量标志”、“coeff增量预测模式标志”、滤波器系数或者ALF的任何其它标志或滤波器参数)。使用色度滤波器的编码滤波器系数,在303中导出/获得色度滤波器。

在变型中,色度滤波具有大小为5×5(即,5个样本高和5个样本宽(参见图3-b中的306))的菱形形状/图案/掩模/支撑。色度滤波器的滤波器系数被组织成使得色度滤波器具有关于中心的对称性。针对该色度滤波器具有6个编码滤波器系数,其中索引编号为从0到5,它们位于图中所示的相应的系数位置处。提供索引编号的上标符号(“+”或“-”),使得在共用同一滤波器系数的不同系数位置之间进行区分,即,当参考两个对称的(在它们共用同一滤波器系数的意义上)相邻位置时:i

对于ALF有效(即应用)的各个色度成分样本,如下进行步骤304中的滤波以获得输出图像部分305:对于输入图像部分的各个当前样本,

如果当前样本属于ALF被启用的CTU,并且如果获得Chroma滤波器的菱形形状中的系数位置(其中当前样本位于菱形形状的中心)的滤波器系数所需的当前样本的邻近样本可用(例如,使用图片边界上的边界扩展,或者如果邻近片样本在片边界上可用,则使用邻近片样本);然后,与位置(x,y)处的当前样本I(x,y)相同位置处的输出滤波样本等于:

O(x,y)=((1<<(N-1))+∑

其中,i&j是相对于滤波形状的中心(即,在(x,y)处的当前样本的位置)的两个整数位移(水平和垂直),w(i,j)是位移(i,j)处的滤波器系数,N=7是在位移(i,j)处的滤波器系数w(i,j)的表示中使用的实数(定点表示)小数部分的整数近似的位数,I(x+i,y+j)是相对于当前样本位置(x,y)的位移(i,j)处的输入样本值,O(x,y)是位置(x,y)的输出滤波样本值。a<

否则,照原样输出当前位置处的当前样本值(即,不应用该ALF)。

根据该实施例的变型,对于具有关于中心对称的滤波形状的ALF滤波器,为了减少在实现滤波器时进行的乘法运算的数量,并且为了简化符号,可以将等式(1)重新表示为:

其中O

图4-a是示出根据本发明实施例的用于对亮度成分进行滤波的步骤的流程图,并且图4-b提供根据本发明实施例的亮度滤波器的滤波形状和四种可能的系数布置。

图4-a示出亮度成分的滤波处理的主要步骤。输入图像部分401包含要滤波的亮度样本。输入滤波参数402包括参考图2中的ALF语法元素描述的ALF参数(例如,“alf系数增量标志”、“coeff增量预测模式标志”、滤波器系数或ALF的任何其它标志或滤波器参数)。在滤波之前,在403中分析图像部分的内容。该分析的主要目标是允许/使得能够确定局部内容方位和活动级别(参见步骤405)。这允许/使得能够对内容是均匀还是具有任何锐变(大致上为内容的强度或对比度)、以及内容是否具有主要方位(例如基于边缘或方位纹理)以及该主要方位(orientation)是哪种方位进行局部评价/评估。例如,在VTM-3.0中,分析包括局部梯度分析,该局部梯度分析使用针对水平和垂直的每两个样本(即,四分之一样本)计算4个方位(水平、垂直和两个对角线)的拉普拉斯值。通过将输入图像部分的样本分割成块404(例如,VTM-3.0中的4×4个样本),并使用分析的结果,在步骤405中,将各个块分类为25个可能类中的一个,根据针对块中的样本计算的拉普拉斯值,使用索引(即,将块归类为25个类别/分类/组中的一个)来识别各个类。例如,在VTM-3.0中,与使用16个拉普拉斯值(4个样本上的4个方位)相对应。该分类实现了活动、方向性强度的分区,并将水平和垂直方位与对角线方位分离。此外,在步骤405中,各个块与转置索引相关联。该转置索引(例如,“transposeIdx”)可被视为分类的补充/附加信息,以完全表示/指示内容的方位。有四种可能的转置索引。当块的类指示该块为水平或垂直时,转置索引进一步指示方位是北到南、东到西、西到东还是南到北。当块的类指示该块为对角线时,转置索引进一步指示该块的方位是西北到东南、东北到西南、西南到东北还是东南到西北。

可以将类索引和转置索引看作给定样本块的自适应环路滤波器参数。步骤406采用这些参数来导出将用于对块的每一个样本进行滤波的亮度滤波器。如前文参考图2所述,在402中,每个类与亮度滤波器的系数表的索引相关联。为了导出4×4块的亮度滤波器,转置索引允许/使得能够选择图4-b中所示的四个形状/图案409、410、411或412中的一个。该图案指示如何组织编码滤波器系数(例如,基于扫描(中)顺序)以构建亮度滤波器,这些系数与块的类相关联,如针对204至206的描述中所说明的。亮度滤波器具有大小为7×7的菱形形状。针对各个亮度滤波器存在12个编码滤波器系数(索引编号0至11)。以与上述色度滤波器的中心系数相同的方式从其它滤波器系数中推导/导出滤波形状的中心的第13个系数(索引编号12)。

以与色度滤波器如何进行滤波相同的方式进行步骤407中的滤波以获得输出图像部分408,即对于各个当前样本块,将在406中针对当前块导出/获得的亮度滤波器应用于当前块的各个当前样本。

当滤波亮度样本时,由于基于方位的分类(类)和相关转置(transposeIdx),各个类的最佳ALF滤波器(即,根据局部方位(例如基于局部梯度)选择的“基于方位的滤波器”)、特别是具有高活动(例如,高局部梯度)的滤波器倾向于是定向滤波器。对于具有最低活动的区域,即具有属于局部梯度相对较小的类的块的区域,这种方位将不那么明显,并且这种块的基于方位的滤波器倾向于不是定向滤波器。

基于方位的滤波器非常适合在边缘周围进行滤波,而不会对边缘的锐度造成太大的影响。如下所述,可以将类分组在一起以降低滤波器的用信号通知成本。即使使用类的这种分组,滤波器优化通常也会使得获得定向滤波器。在这种基于方位(ALF)的滤波器的情况下,当局部梯度沿着水平方向时,滤波方位通常是垂直的(即,最高的系数(绝对值)通常将位于中心的上方和下方的位置,而中心的左侧和右侧的系数通常将接近零)。类似地,当局部梯度沿着垂直方向时,滤波方位通常是水平的,并且当局部梯度沿着对角线方向时,滤波方位通常沿着与局部梯度的对角线方向垂直的方向。

当在VTM-3.0中滤波色度样本时,与亮度样本滤波相反,这是因为没有使用分类(并且由于色度通常是平滑的),所使用的滤波器通常对所有方位更敏感、并且不是定向滤波器(或者不是基于方位的滤波器)。

在图3-b和图4-b这两者中,滤波形状是关于中心像素对称的。在VTM软件的ALF的设计中已经选择了这种对称性,但是在实施例的变型中,也可以使用非对称形状。然后,代替针对13个输入样本共用7个系数,与图3-b中的相同的滤波器支撑/掩模可以使用多达13个系数。并且代替针对25个输入样本共用13个系数,与图4-b中的相同的滤波器支撑/掩模可以使用多达25个系数。在其它变型中,滤波器支撑/掩模甚至是非对称的。在变型中,滤波器的形状/图案/支撑/掩模与ALF参数一起传输。

在其它变型中,滤波形状/图案/支撑/掩模与菱形形状不同。例如,在一个变型中,它是正方形,在另一变型中,它是矩形,在又一变型中,它是六边形,并且在另一个变型中,它是八边形。

在一些变型中,对于所有类方位,滤波形状/模式/支撑/掩模不相同。在一个变型中,形状是用于水平类/transposeIdx方位配置的水平矩形(例如“-”)、用于垂直类/transposeIdx方位配置的垂直矩形(例如“-”)、用于西北东南(NW-SE,例如“\”)和东南西北(SE-NW)类/transposeIdx方位配置的NW-SE矩形、用于东北西南(NE-SW,例如“/”)和SW-NE类/transposeIdx方向配置的NE-SW矩形。在其它变型中,滤波形状/图案/支撑件/掩模是水平-垂直交叉(“+”)、对角线交叉(“X”)、垂直段(“|”)、水平段(“-”)、从左上到右下的对角线段(“\”)、从右上到左下的对角线段(“/”)、或上述滤波形状/图案/支撑件/掩模的任何组合。

图6提供ALF中的线性滤波器的框图。其与滤波函数对应于等式(1)的ALF的示例实现相对应,其中“C”601与作为当前样本的样本值的I(x,y)相对应,“S0”602至“Sn”603与作为邻近样本值的I(x+i,y+j)(各个(i,j)≠(0,0))相对应,“wC”604与作为当前样本的滤波器系数的w(0,0)相对应,“w0”605至“Wn”606与作为在位置(x+i,y+j)的邻近样本的滤波器系数的w(i,j)(各个(i,j)≠(0,0))相对应,并且“O”607与ALF滤波器的输出相对应,即当前样本的滤波样本值。该处理将整数输入样本值(即“C”和“S0”至“Sn”)的表和输入权重(即“wC”和“w0”至“Wn”)的表(或滤波器系数-注意,该表具有与整数输入样本值表相同数量的元素)作为输入,以得到具有定点精度的实数的整数表示。这两个表具有相同数量的元素,并且被逐个元素相乘,并且这些相乘的结果被加和在一起(即获得这两个表的元素的线性组合)。该运算的结果是实数的定点精度近似。该定点值四舍五入为整数值,其结果是一个输出样本值“O”。

从编码器的角度来看,ALF的灵感来自Wiener滤波器。Wiener滤波器是线性滤波器(通常用作信号/图像处理中的线性卷积滤波器),其使以下两者之间的均方误差最小化:1)所估计的随机处理/变量(Wiener滤波器的输出),其是有限数量的观察到的处理/变量(Wiener滤波器的输入)的线性组合,和2)期望的处理/变量(Wiener滤波器的目标,即在伪像发生之前的原始图像)。在信号/图像处理中,例如有限脉冲响应(FIR)Wiener滤波器在源分离或去噪中具有应用。在图像编码的情况下,目标是(在通过压缩/量化改变之前的)原始图像,而输入是来自我们希望通过应用滤波器来改进的压缩图像的样本。

X(其是观察到的随机处理的实现的输入矩阵,各个列包含针对每个随机处理的一个实现)和y(其是输出行矢量,其包含针对相同列索引处的观察到的随机处理的期望处理的实现)的最小二乘解是

Wiener波器系数对应于

应当理解,“实现”是随机变量的观察值或观察到的值,即实践中实际上观察到的值。

在VTM-3.0ALF编码器中,使用FIR Wiener滤波器(或功能上等效的最小二乘解)来优化ALF参数的编码成本(主要由编码FIR滤波器系数的成本决定)与通过使用编码的ALF参数(即使用FIR滤波器)对图片进行滤波而获得的失真增益之间的速率/失真(R/D)折衷。如果编码ALF参数的速率(即,编码成本)不是问题,并且如果将给定帧的峰值信噪比(PSNR)最大化是唯一目标(不考虑时间影响),则Wiener滤波器将能够实现VTM-3.0中的ALF滤波设计的最佳解决方案。因此,根据本发明的实施例的ALF编码器可以使用与其一起提供的线性ALF滤波器相同或相似的滤波器。

图9示出根据本发明实施例的ALF编码处理的流程图,该实施例通过修改参考图6描述的VTM-3.0的ALF来实现。应当理解,根据本发明的其它实施例,可以以相同的方式修改其它ALF以实现所述其它实施例。

ALF编码处理通过确定亮度样本901的各个4×4块的类索引和转置索引来开始。

然后,在902提取/获得用于导出Wiener滤波器的统计。这些统计是与等式(3)的XX

对于给定的CTU/类/成分,X如下获得。由于滤波的形状被认为是对称的,因此X中的行的数量与滤波器的滤波器系数的数量相对应。X的一行(最后行)包含滤波形状中的中心样本的实现(其中滤波形状的中心属于给定CTU/类/成分),而具有索引i的各个其它行包含滤波形状中的具有索引i的两个对称样本的和(其中对称样本是属于给定CTU/类/成分的滤波形状的中心的相邻位置)。在亮度成分样本的情况下,转置索引也用于根据图4-b的不同形状来转置滤波形状的样本位置,使得X的各个行i包含属于滤波形状的索引为i的样本的样本统计。例如,对于图4-b的形状,X

矢量y包含所有目标样本值(即y

不实际构建/计算X矩阵。代替地,通过迭代加和

也不实际构建/计算y矢量。代替地,通过迭代加和X

在VTM-3.0中,ALF编码器试图降低R/D成本,这等于速率失真折衷的拉格朗日优化D+λR。这里,D是失真(二次误差),R是速率,并且λ由编码器主要基于VTM-3.0编码器量化参数(QP)、片类型(帧内或帧间)和压缩成分的类型(亮度或色度)来确定。ALF编码器首先试图通过最小化该拉格朗日R/D成本来优化ALF参数。

如果ALF降低了亮度成分的成本,即当ALF无效时的输出片的失真大于当ALF有效时的失真加上用信号通知ALF参数所需的速率的λ倍数,则编码器将ALF确定为针对亮度成分有效。然后,如果针对亮度成分有效,则试图优化针对色度成分的ALF参数,以查看是否能够改进用信号通知这些色度成分的R/D成本。基于此,编码器可以确定是否更好地针对这些成分中的各个成分使ALF有效/启用。

根据本发明的实施例,ALF编码器对其ALF参数进行相同或功能上等效的优化处理。根据这种实施例的变型,在ALF参数优化处理的开始,ALF被设置为对于所有CTU有效903。用于构建协方差矩阵和互协方差矩阵的片级别的统计是通过聚合针对ALF有效/启用的各个CTU的统计来获得的。使用针对被分类为属于该类的4×4样本块的所有样本获得的统计,针对亮度成分的各个类计算一个矩阵904;并且通过聚合(加和)针对色度的两个色度成分的统计来计算一个矩阵912。

针对亮度的滤波器优化处理开始于寻找25组滤波器以将类组合/合并在一起,即第一组25个滤波器、第二组24个滤波器等等,直到最后一组1个滤波器(针对各个可能的滤波器数量有一个组)905。编码器以针对各个类1个滤波器开始(因此总共25个滤波器),该滤波器是根据该类中块的样本的协方差和互协方差计算的Wiener滤波器。这是第一组25个滤波器。它试图通过将滤波器合并在一起(即,将滤波器的相关类合并在一起以更精确)来迭代地减少滤波器的数量(逐个地,直到只有一个剩余,以获得所有期望的组)。编码器使最初与两个不同的滤波器关联的类共用一个公共滤波器(即编码器合并这两个类以共用一个关联的滤波器)。为了确定要合并的滤波器(即要合并的类),针对各个滤波器确定协方差和互协方差统计。编码器针对与一个或多个类(索引)相关联的各个滤波器估计/评估在使用滤波器对与该类相关联的所有样本块进行滤波之后获得的总残差。然后,对于各对滤波器(及其关联的类),编码器计算合并协方差和互协方差统计以确定针对合并类的Wiener滤波器以及用所确定的Wiener滤波器滤波与类索引关联的所有样本块之后获得的总残差。然后,编码器确定两个滤波器,对于该两个滤波器,合并滤波器的总残差(从与类相关联的统计中导出,类与这两个滤波器相关联)与这两个滤波器的总残差的和(通过将一个滤波器的总残差与另一个滤波器的总残差相加)之间的差是最小的,并且合并这两个滤波器(使得该合并滤波器准备用于下一个滤波器合并迭代)。简而言之,编码器合并(a,b)使下式最小化的一对不同的滤波器统计:

到目前为止,使用双精度浮点值来估计统计、滤波器和误差。现在编码器试图找到编码亮度滤波器的最佳R/D成本折衷906。一旦确定了25组滤波器/类(从25个滤波器开始到1个滤波器),对于各个组,ALF编码器导出各个滤波器的整数滤波器系数(针对整数值编码和定点精度计算)。然后,在使用不同替代编码方案时就R/D成本折衷方面寻找最佳滤波器。第一种替代方案是使用(exp-)Golomb编码对所有滤波器的所有系数进行编码。第二种替代方案是使用滤波器的增量编码,其中各个滤波器的滤波器系数被编码为与先前滤波器的滤波器系数的不同(使用(exp-)Golomb编码)。第三种替代方案(R/D优化)允许利用一个标志禁用一些滤波器,并对未禁用的滤波器的所有滤波器系数(使用(exp-)Golomb编码)进行编码。前两种替代方案可能导致位率降低,而第三种替代方案可能为了位率降低更少而导致更多的失真。

编码器采用/选择/选取最小化R/D成本的滤波器组和编码折衷。

一旦由编码器确定/选择了使用的亮度滤波器,则针对各个CTU,编码器使用CTU统计来查看滤波CTU的亮度样本的R/D成本是否更好于不滤波相同CTU的亮度样本的R/D成本。如果不是更好,则针对该CTU的亮度样本禁用ALF 907。然后,编码器可以在908处再循环到针对亮度的亮度滤波器优化步骤,同时更新关于CTU(ALF被启用)的协方差和互协方差统计的片统计904。例如,在VTM-3.0中,编码器再循环4次。

根据对亮度成分样本应用ALF或不应用ALF之间的R/D成本差异,编码器在909确定是否针对亮度成分使ALF有效/启用。

如果要针对亮度成分使ALF有效/启用,则编码器进入910处的色度成分的处理。如果针对亮度成分使ALF无效/禁用,则在911处用信号通知ALF为非有效/禁用,并且ALF编码处理结束。

针对色度成分的ALF编码处理从两个色度成分的组合统计开始912,条件是针对片的所有CTU使ALF有效/启用。

然后编码器确定色度滤波器913。编码器首先使用两个色度成分的CTU统计确定(浮点)Wiener滤波器。它导出整数滤波器系数。然后,对于各个色度成分,编码器使用CTU统计来查看滤波CTU的色度成分的R/D成本是否更好于不滤波CTU的色度成分的R/D成本。如果不是更好,则针对该CTU的色度成分样本禁用ALF 914。如果编码器确定对于给定色度成分的所有CTU不应使ALF有效(即应该被禁用),则针对该色度成分禁用ALF,并且因此不需要针对“启用标志”为0的各个CTU进行编码915。

然后,编码器可以在916处再循环到色度滤波器优化步骤,同时更新关于CTU(启用ALF)的色度成分的协方差和互协方差统计的片统计。例如,在VTM-3.0中,编码器再多循环2次。

然后,编码器在917处将根据本发明的实施例的ALF与所确定的ALF参数一起应用(即,使用来自步骤913的所确定的色度滤波器)。根据编码器配置,结果图像可以被输出和/或放入参考帧缓冲器中。编码器最后编码最佳R/D成本参数,即ALF启用标志以及(如果ALF启用标志指示有效/启用)所确定的ALF参数918。

应当理解,根据变型,可进行用于其它ALF参数的优化处理以优化ALF的这些参数。

具有非线性滤波能力的ALF

根据本发明的实施例,可以修改在步骤304和407中使用的线性滤波,这引入非线性并改进滤波结果(在滤波质量和编码效率之间获得更好的折衷)。ALF滤波的目标是去除编码工具引入的一些“噪声”(例如量化噪声/误差)。为了去除这种噪声,通常使用低通线性滤波器来平滑信号并减少小的局部变化。这种类型的滤波器可能在滤波输出中引入模糊,特别是在对比度较强的区域,例如在边缘附近。非线性滤波器(例如双边滤波器)已经被开发以允许更高效的去噪,同时引入更少的模糊或振铃效应,甚至在边缘周围也是如此。为此,这些非线性滤波器如线性滤波器那样通常依赖于基于局部邻近(即邻近样本)对样本滤波,但是与具有非常不同的值的样本相比更注意(或加权)具有与要滤波的样本相似的值的样本。邻近值的加权通常使用非线性函数(即非线性映射)来进行。这种非线性滤波器通常比线性滤波器更复杂,并且可能难以优化它们的参数,以及/或者如果想要在新的ALF设计中使用这种类型的滤波器,它们可能比线性滤波器具有更小的灵活性。

根据本发明的实施例,通过引入具有涉及保持ALF的可并行化设计的操作的相对低复杂性的非线性来修改VTM-3.0的ALF(或前述实施例中的任何实施例或其变型)。

看看VTM-3.0中的ALF,通过使用实数重新表示等式(1)来简化等式,我们具有(删除与定点表示和整数舍入相关的操作):

O(x,y)=∑

对于这个ALF,满足条件

这意味着ALF的所有滤波器系数之和是1。然后可以看出等式(4)可以被重新表示为:

O(x,y)=I(x,y)+∑

然后,输出样本O(x,y)是将输入样本I(x,y)(在相同位置处)加到滤波器系数矢量和局部梯度矢量(作为输入样本的邻近样本和输入样本本身之间的差计算的局部梯度的矢量)之间的标量积的结果。换句话说,输出样本(即,滤波样本值)是将输入样本加到滤波器系数和局部梯度的线性组合的结果。

代替对滤波器使用这种通常的线性公式,根据本发明的实施例,修改ALF滤波处理以在ALF滤波器中引入非线性。该非线性是使用多变量函数K(d,b)来实现的,该多变量函数K(d,b)将偏移(i,j)处的局部梯度d作为第一参数,并且其值根据第二参数b=k(i,j)而变化。代替在等式(6)的标量积中使用偏移(i,j)的局部梯度,在标量积中使用K(d,b),从而得到输出样本O(x,y),其随局部梯度以非线性方式变化:

O(x,y)=I(x,y)+∑

其中K(d,b)是将d=I(x+i,y+j)-I(x,y)作为其第一参数/变量(作为位置(x+i,y+j)处的邻近样本值与位置(x,y)处的当前样本值之间的差计算的偏移(i,j)处的局部梯度)并且将b=k(i,j)作为其第二参数/变量(附加滤波参数)的函数。附加滤波参数同时被确定为w(i,j)。在实现中,确定k(i,j)和w(i,j)的值以优化滤波和用信号通知处理(例如,以最小化失真)。该优化处理由使用ALF的编码器进行。将在稍后的描述中提供这种优化处理的示例。

因此,根据本发明的实施例,通过使用输入样本本身和作为输入样本的邻近的输入样本的自适应非线性变换的线性组合来滤波输入样本值。自适应非线性变换取决于邻近输入样本相对于正在滤波的输入样本的位置的相对位置。

利用这种修改后的ALF,对于特定K仍然可以实现线性滤波,其中K满足如下条件:存在b,并且存在不等于0的α,使得针对所有d,K(d,b)等于α乘以d,即:

因此,对于某些值b选择表现为类似于线性函数(即,线性映射)的函数K(d,b)(即,函数K(d,b)满足条件(8)),确保实施例的修改后的ALF滤波处理仍然可以至少如使用标准线性ALF那样高效(即,在最坏情况下,修改后的ALF可以实现与VTM-3.0中的ALF相同的效率水平)。例如,当使用限幅函数时,参数b可以被设置为最大可能整数值(理想地,它应该被设置为无穷大,但是我们可以使用有限整数精度方案中的最大可能整数值来实现相同的效果),以使其表现为线性函数。

注意,在本发明的一些实施例中,ALF滤波使用替代方案/滤波方案。采用局部梯度和附加参数/变量的多变量函数K(d,b)由另一个采用如下三个参数/变量的多变量函数代替:邻近样本值、要滤波的样本值和附加参数/变量。它使用等式(7)同时使用与等式(4)类似的记号法并满足条件(5)被重新表示:

O(x,y)=w(0,0).I(x,y)+∑

其中K′(n,c,b)是采用邻近样本值(n)、要滤波的当前样本值(c)和附加滤波参数/变量(b)作为其参数/变量的函数。

根据本发明的实施例,对色度成分(304)和亮度成分(407)这两者的滤波步骤进行修改,以使用具有使用整数算术(如参考等式(1)所述)实现的非线性公式的滤波(优选地使用等式(7),但也可替代地使用等式(9))。

根据替代实施例,其中任何选择都是基于复杂性,例如,仅对两个滤波步骤中的一个(304)或(407)进行修改以使用具有非线性公式的滤波器。

根据一些实施例,参数/变量b=k(i,j)具有多于一个维度,例如,它可以是K(d,b=(S

S

使用具有多于一个维度的参数/变量/函数通常允许改进滤波,但是用信号通知滤波器参数的成本较高。此外,在编码器处优化较高维度空间中的滤波器参数时引入了更多的复杂性,并且在解码器处计算函数常常更复杂(滤波器参数越多,使用这些函数就意味着操作越多)。在实施例中,b具有单个维度,其可以实现对于许多ALF应用的良好折衷。

根据一些实施例,函数K还可以是包括用于不同偏移(i,j)的多于一个不同函数的函数。在一些实施例中,滤波形状/图案中的函数的配置/布置在编码器和解码器这两者处都是预定义的。可选地,从预定义配置集合中选择/选定函数的配置,并且传输/用信号通知用于所选择的配置的索引。在其它实施例中,从滤波形状/图案(除了中心位置之外)中的各个系数索引的预定义函数集合中选择函数,并且传输/用信号通知其索引。在这样的实施例的变型中,各个函数是单变量函数(即K函数不再具有附加参数/变量),因此代替用信号通知b参数,而用信号通知函数索引。这种变型可以被认为是使用多变量公式,例如K(d,b)=K

根据一些实施例,对于亮度滤波器和色度滤波器,函数K是不同的。根据一些实施例,对于各个亮度滤波器,函数K是不同的。在这些实施例中的一些实施例中,对于各个滤波器,在片头部中提供所选择的函数的索引。

根据本发明的实施例,K被选择以简化计算(不引入太多解码复杂性)。例如,在这样的实施例中,K仅仅是限幅函数:

K(d,b)=max(-b,min(b,d)) (11)

或等效于:

K(d,b)=min(b,max(-b,d)) (12)

与下面描述的一些替代函数相反,对于局部梯度的高值,限幅函数不会消失(换句话说,限幅函数f(x)不会随着x接近零而向零收敛)。但是已经实验地观察到,使用这种简单函数的压缩结果通常与使用更复杂函数的压缩结果一样高效,并且甚至可以比使用更复杂函数更好。实际上,对于局部梯度的高值,限幅函数不会消失,而只是限幅它们,可以允许继续考虑锐度边缘过渡,同时限制存在于该锐度边缘过渡区域周围的高方差的影响。由于伪像通常在锐度过渡周围变得更强,因此这是有意义的。

使用等式(9)的滤波公式的该限幅函数K的等效函数K′是

K′(n,c,b)=max(c-b,min(c+b,n)) (13)

或等效于:

K′(n,c,b)=min(c+b,max(c-b,n))

限幅函数满足等式(8),只要b大于或等于最大可能样本值(例如,2的图像位深度次幂)即可。

在以下描述中,“限幅范围”或“限幅参数”用于指K或K′的b参数/变量。可以理解,这种术语可以被认为是用于指非线性函数参数的通用术语。类似地,“限幅”或“限幅函数”可用于指上述K或K′或者其功能等效函数。

在替代实施例中,K可以是另一非线性函数。在变型中,K是反对称函数,例如一个锯齿周期,对应于:

根据实施例,使用非线性ALF代替线性ALF来减少进行ALF滤波所需的样本行缓冲器的数量(即,减少在(例如解码器处)进行滤波时需要处理/访问/保持在存储器中的输入图像成分的样本的数量)。

根据变型,作为权衡/折衷,用于亮度滤波器的滤波形状/图案的大小从7×7菱形形状减小到更小的滤波形状/图案。例如,针对亮度滤波器使用5×5菱形形状(例如,与图3-b中的色度滤波器的形状相同,但仍使用转置索引变型)。这仍然可以实现与具有7×7菱形形状亮度滤波器(例如,图4-b中所示的滤波器)的仅线性ALF类似的编码增益,但是要处理/访问/存储的样本数量减少(例如,样本行缓冲器的数量减少),并且还降低了计算复杂性:即,处理ALF滤波器所需的乘法数量针对各个滤波输入样本减少6,同时实现良好的编码增益。

根据变型,当对样本进行ALF滤波时,基于将被用于线性ALF的所有邻近样本来使用非线性ALF。根据另一变型,当对样本进行ALF滤波时,邻近样本中的仅将与线性ALF一起使用的一些邻近样本与非线性ALF一起使用,并且其余邻近样本与线性ALF一起使用。根据又一变型,当对样本进行ALF滤波时,邻近样本中的仅将与线性ALF一起使用的一些邻近样本与非线性ALF一起使用,并且其余邻近样本也不与线性ALF一起使用。

根据变型,通过利用这些滤波形状/图案中的对称性,使用与等式(2)相同的符号来简化线性和/或非线性ALF滤波器实现,等式(4)中的线性函数可以被重新表示为:

对于ALF,其满足条件:

等式(6)中的线性函数也可以重新表示为:

并且等式(7)中的非线性函数变为:

其中,k

最后,等式(9)中的非线性函数可以重新表示为:

根据该实施例的变型,K′函数或K函数是限幅函数。

根据实施例,为了与用于处理等式(17)中的函数K的计算量相比减少处理非线性函数所涉及的计算量,在至少两个邻近的差的和上引入非线性(即,可以使用具有两个或更多个局部梯度的和作为变量的非线性函数):

等式(19)并不总是等效于等式(17),使用等式(19)的滤波器可能不太高效,但它降低了计算复杂性。根据变型,例如当是K限幅函数时,用信号通知/编码的限幅参数/值的数量相对于等式(17)的参数/值不变。

应当理解,根据另一变型,可以使用基于具有降低的复杂性的等式(18)的类似导出的等式,其中K′函数具有两个或更多个邻近差值(局部梯度)的和作为其变量:

图7提供根据本发明实施例的非线性滤波器的框图,其可以是VTM-3.0中ALF中的线性滤波器的替代(或者是除了ALF中的线性滤波器之外的附加非线性滤波器)。它对应于使用等式(11)的限幅函数、具有整数定点算法的等式(7)的实现。“C”701对应于I(x,y),“S0”702至“Sn”703对应于I(x+i,y+j)(各个(i,j)≠(0,0)),“k0”704至“kn”705对应于k(i,j)(各个(i,j)≠(0,0)),“w0”706至“wn”707对应于w(i,j)(各个(i,j)≠(0,0)),并且708对应于O(x,y)。

图5是根据本发明实施例的修改后的语法元素的概述的流程图,其提供了可用于实现上述及其相关实施例/变型的非线性函数(及其参数)的语法元素的示例。在该实施例中,等式(7)(或(9))的各个滤波器的编码滤波器系数与其自身的限幅范围相关联,因此k(i,j)可以具有随偏移(i,j)而变化的不同值。大多数语法元素与VTM-3.0中已经使用的语法元素相同,并参考图2进行说明:图5中的501、502、503、504、505、506、507、508、509、510具有与图2中的201、202、210、204、205、206、207、208、209、210相同的用信号通知方式和语义。新语法元素是各个亮度滤波器的限幅参数511、亮度滤波器的所有滤波器系数(506)和各个亮度滤波器的所有限幅参数(511),这些参数可以例如在片头部中用信号通知。该信号通知之后是用信号通知色度滤波器的所有滤波器系数(507)和色度滤波器的所有限幅参数(512)。

根据实施例,对于任何滤波器,用信号通知的限幅参数的数量与用信号通知的滤波器系数的数量相同。以与相同位置(x+i,y+j)处的滤波器系数相同的方式获得偏移(i,j)的限幅参数。对于色度,以与图3-a的步骤303中描述的滤波器系数导出处理相同的方式处理它们(但使用色度限幅参数);并且对于亮度,以与图4-a的步骤406中描述的滤波器系数导出处理相同的方式处理它们(但使用亮度滤波器限幅参数)。

在替代实施例中,每个滤波器仅有一个限幅参数,该限幅参数用于所有滤波器(i,j)≠(0,0)位置。

在替代实施例中,限幅参数的数量低于滤波器系数的数量。在该实施例的变型中,这些限幅参数用于具有偏移(i,j)的滤波器位置的子集(其可以是预定义的或确定的)。对于其它滤波器位置,进行通常的线性滤波(或者换句话说,在那些其它滤波器位置处,K被认为是恒等函数)或者替代地,使用预定义的限幅参数值。

参考图16-a和图16-b描述这种实施例的变型。在这些变型中,限幅函数应用于滤波器位置的子集,即限幅图案/形状/支撑/掩模仅包括滤波形状/图案中的滤波器位置的子集,使得在滤波处理期间仅限幅邻近样本值/位置的子集(例如,非线性函数仅应用于来自该子集的样本值)。由于限幅操作可能是计算上昂贵的,以这种方式减少滤波中涉及的限幅操作的数量可以降低滤波处理的复杂性和计算成本。

图16-a提供具有减少数量的被限幅/限幅位置的7×7菱形滤波形状,示出了用于减少当使用7×7滤波形状(例如针对亮度的ALF)进行滤波时所需的限幅操作的数量的被限幅/限幅位置的三种可能布置/配置。通过使用图16-a所示的限幅图案,减少了用于进行滤波的限幅操作的数量,这是因为限幅操作不应用于所有滤波(输入)位置,即仅滤波位置的子集(其可以是预定义的、或用信号通知的或推断的)用于限幅操作(即与非线性函数一起使用)。在图16-a中,限幅的样本位置在限幅图案1601、1602和1603中用“X”标志。限幅图案1601和1602将限幅操作的数量减少三分之二,而限幅图案1603将该数量减少一半。当使用7×7菱形滤波形状时,这些限幅图案1601、1602和1603在滤波处理中的输出精度和涉及的复杂性之间达成良好的折衷。限幅图案1601、1602和1603对于根据基于方位的ALF的非线性ALF(即,为基于局部内容方位和活动级别的分类而构建的滤波器,例如,VTM3.0中的亮度滤波器)工作良好。但是,如果不使用分类,则优选使用图案1602或1603。

应当理解,根据其它变型,可以使用或多或少的限幅位置。例如,可以代替限幅图案1601(即,除了中心位置之外,从上到下和从左到右的交叉)来限幅整列和整行(除了中心位置之外),或者可以代替限幅图案1602来限幅外边缘上的位置(即,较大的菱形/平行四边形限幅图案)。在限幅位置的其它变型中,限幅图案/形状/支撑/掩模形成对角线交叉“X”(除了中心位置之外)、垂直段“X”(除了中心位置之外)、水平段“-”(除了中心位置之外)、从左上到右下的对角线段“\”(除了中心位置之外)、从右上到左下的对角线段“/”(除了中心位置之外),或上述限幅图案/形状/支撑/掩模的任意组合。

图16-b提供具有减少数量的被限幅/限幅位置的5×5菱形滤波形状,示出了用于减少使用5×5滤波形状进行滤波时所需的限幅操作的数量的被限幅/限幅位置的两种可能布置/配置。如在图16-a中,通过使用图16-b中所示的限幅图案,即限幅图案1604和1605,当使用5×5菱形滤波形状进行滤波时,可以减少在该滤波处理中涉及的限幅操作的数量。限幅图案1604和1605对于根据基于方位的ALF(即,针对基于局部内容方案和活动级别的分类而构建的滤波器,例如,VTM3.0中的亮度滤波器)的非线性ALF工作良好。但是,如果不使用分类,则优选使用模式1605。

限幅图案1602和1605对于不使用基于方位的分类的滤波器更好(例如,与VTM-3.0中的取决于水平、垂直或对角线方位的分类的亮度滤波器相比,它们对于色度滤波器更好),这是因为水平和垂直方向邻近在统计上比对角线邻近更可靠(因为它们更大的欧几里德距离)。因此,与在更可靠的水平和垂直方向上邻近样本的滤波位置上相比,仅在较不可靠的对角邻近样本的滤波位置上使用限幅操作是更有利的。

利用基于方位的滤波器,(即针对基于方位的分类获得的滤波器)限幅操作通常应用于垂直于滤波方位的滤波位置处的样本。例如,与使用针对具有对角线方位的类的滤波器相比,使用针对具有水平或垂直方位的类的滤波器,1601中的限幅图案将进行得更好。对于四个类的方位,限幅图案1602将大致同样地进行,但是对于水平和垂直方位,限幅图案1602将比图案1601效率低。因此,对于使用7×7滤波图案的亮度滤波器,1601和1602中的限幅图案的平均性能几乎相等,对于使用5×5滤波图案的亮度滤波器,1604和1605中的限幅图案的平均性能几乎相等。

根据变型,为了改进基于方位的滤波器,基于滤波方位从预定义模式中选择限幅图案。例如,限幅图案1601用于水平或垂直滤波,而限幅图案1602用于对角线滤波。在又一变型中,针对垂直滤波选择的限幅图案不同于针对水平滤波选择的限幅图案(例如,每一个是另一个的90°旋转版本),并且两个对角线滤波方位的限幅图案也不同(例如,每一个是另一个的90°旋转版本)。在又一变型中,根据各个4×4块样本值的转置索引(tranposeIdx)来选择限幅图案。

根据变型,针对各个滤波器存在一个预定的限幅图案。根据另一变型,存在可用于使用的多个(例如,预定数量)限幅图案,并且对于各个滤波器索引,例如在APS或区块组头部中利用ALF参数对所选限幅图案的(限幅图案)索引进行编码/用信号发送。根据又一变型,利用ALF参数来用信号通知限幅图案。例如,可以通过对标志序列进行编码/解码来进行用信号通知限幅图案,每个滤波器(模式)位置索引(例如,等效于编码/解码的滤波器系数索引)一个标志,每个标志指示是否对相应索引应用限幅,或者实际上不应用限幅。可替代地,可以通过对被限幅的位置索引本身进行编码/解码,或者通过对不被限幅的位置的滤波(图案)位置索引进行编码解码(优选地,用信号通知需要较少位数的任一个)来进行用信号通知限幅图案。

根据变型,当使用限幅图案(预定或非预定)时,仅针对应用限幅操作的滤波(图案)位置用信号通知限幅参数。

在一些变型中,为了不中断单指令、多数据(SIMD)并行实现,对所有滤波位置应用限幅,但是对于没有提供限幅参数的位置的限幅参数被认为具有线性输出(例如,在变型中,标识函数的输出)。

在替代实施例中,限幅参数的数量低于滤波器系数的数量,这是因为共用一个或多个限幅参数。例如,在图3-b和图4-b的滤波形状中,一些系数索引可以共用相同的限幅参数。根据变型,在包含多个元素的表中指示限幅参数的索引,所述数量等于形状大小的一半(因为对称)减去1(因为对于中心系数位置没有限幅参数)。该表允许将限幅参数索引与各个滤波器系数关联。根据变型,该表由编解码器固定/预设。根据变型,定义多个固定/预设表,并且例如在片头部中用信号通知用于从该表识别限幅参数的索引。在替代变型中,例如在片头部中用信号通知这样的表的内容,并且内容由所有亮度滤波器共用。

在实施例中,限幅参数可以取的值的数量被限制为小(相对于小的质量益处,降低编码器复杂性和编码成本)。用整数值索引对被授权用于限幅参数的值优选地以递增或递减的顺序进行编索引。然后,这些索引可以映射到限幅参数表的各个元素。然后,代替用信号通知限幅参数值,用信号通知表中相关限幅参数值的索引(p)。在p是表中的滤波器索引的实施例中,不需要使用中间表来减少p的可能值的数量。可以直接减少函数表中可用的函数的数量,从而减小其大小。

在一个实施例中,限幅参数值被限制为二的幂:2

在实施例中,色度滤波器的授权/允许/可用限幅参数值与亮度滤波器的不相同。

根据实施例,在片头部中提供用于片中的限幅参数的表中的最小索引p

根据替代实施例,对于亮度和色度成分这两者,在片头部中用信号通知经授权的限幅参数值的一个表,或者替代地,两个表:一个用于亮度,并且一个用于色度。

在本发明的实施例中,限幅参数511和512不在片头部中用信号通知。代替地,在编码器/解码器处使用量化参数(QP)来确定限幅参数,该量化参数用于用信号通知滤波样本,并且基于滤波器的类索引。

在替代实施例中,在片头部中用信号通知限幅参数511和512。但在滤波处理中,不直接使用它们。代替地,根据用于用信号通知滤波样本的量化参数(QP)来缩放限幅参数。

在实施例中,不针对各个滤波器提供亮度滤波器的限幅参数。只有两个限幅参数表由所有的亮度滤波器共用,并在片头部中用信号通知。一个表用于水平/垂直类,而另一个表用于对角线类。根据类方位,使用图4-b的系数布置,并且相应地将限幅参数缩放(即乘以)从类的活动级别确定的固定值,从这两个表导出各个类的限幅参数。在对4x4块进行分类时,缩放会考虑活动级别。例如,对于活动级别高的区域(例如,近边缘),当与活动级别低的区域(例如,在同质区域)相比时,可以使用更高的限幅值。

在实施例中,片头部中的一个位用信号通知对于各个滤波器的各个滤波器限幅索引启用/禁用限幅。在针对每个限幅参数仅有一个允许的限幅值的实施例中,如果位指示限幅是有效的,则使用该限幅值(即对于该限幅参数值没有用信号通知任何事物)。可替代地,当允许多于一个限幅值时,如果一个限幅索引的位指示针对该滤波器限幅索引禁用限幅,则不用信号通知限幅值,而在其它情况下用信号通知限幅值。

这里,滤波器限幅索引对应于与滤波形状中的滤波器系数索引相关联的限幅参数的索引。

在实施例中,允许的限幅值取决于片类型(例如可以是帧内、B或P)。

在实施例的变型中,允许的限幅值为:针对B或P片中的亮度的{6,32,181,1024};针对B或P片中的色度的{4,25,161,1024};针对帧内片中的亮度的{10,102,1024};或/和针对帧内片中的亮度的{4,24,1024}。因此,任何限幅参数都可以取属于这些集合之一的值(根据片类型和滤波成分)。并且,针对各个滤波,针对各个限幅参数,在片头部中编码集合中该值的索引。

在变型中,所允许的限幅值的表定义如下:

其中N是表中的限幅值的数量(即表的大小),M是最大限幅值(它是表中的最新条目,例如,M=2

在变型中,所允许的限幅值的表定义如下:

其中N是表中的限幅值的数量(即表的大小),M是最大限幅值(它是表中的最新条目,例如,M=2

在实施例中,对于各个滤波器限幅索引,所允许的限幅值不相同。

在使用关于差值的限幅函数的实施例的变型中,即,将等式(11)或等式(12)的函数K应用于邻近样本值和中心值之间的差,定义最大允许限幅值,使得限幅输出处的位数减少。这允许限制根据这些变型进行滤波的硬件实现所需处理的位数。因此这允许例如减少芯片中逻辑门/晶体管的数量。对减少乘法运算符输入端处的位数特别感兴趣,这是因为乘法需要许多逻辑门。例如,将最大允许限幅值设置为2的样本位深度减1次幂,再减去1;(即,最大限幅等于2^(位深度-1)-1)允许在限幅的输出端因而在乘法运算符的输入端将最大位数减少1。并且使用样本位深度减去2(即最大限幅等于2^(位深度-2)-1)允许将最大位数减少2。

在使用APS的实施例中,在限幅值导出期间可能无法在帧内片和帧间片(或帧内和帧间图片/图像部分/区块组)之间做区分,这是因为APS由帧内和帧间片/图片/区块组/图像部分共用。然后,允许限幅值的预定义表不能再取决于片/图像部分/区块组类型。因此,所有片/图片/区块组/图像部分类型共用一个默认限幅值表。在变型中,然后由编码器决定(然后用信号通知给解码器)限幅值是否被限制为来自默认限幅值表的限幅值的子集(例如针对复杂性降低考虑)。

在变型中,在APS中以ALF参数用信号通知可用限幅值的限幅值表。因此,编码器(和解码器)可以使用任何限幅值,并以其自身的限幅值表用信号通知所使用的限幅值。

在变型中,存在多于一个默认限幅值表,例如,一个用于帧间片,并且另一个用于帧内片。然后在APS中以ALF参数提供用于识别所使用的表的信息,例如所使用的表的索引。在变型中,对于亮度和对于色度,默认限幅值表不同。

在实施例中,滤波器的输出值也根据输入样本值和附加限幅参数(其可以被添加到限幅参数表)来限幅。

根据实施例,除了ALF有效标志之外,NLALF(非线性ALF)有效标志被置于序列级别(例如SPS中),或者替代地,置于帧级别(例如图片头部中),以指示非线性ALF有效/使用/启用。如果该标志有效(即指示非线性ALF有效),则ALF的语法元素包括用于非线性滤波器(例如图5中的滤波器)的滤波器参数。如果标志无效(即不指示非线性ALF有效),则ALF的语法元素仅包含线性滤波器(例如图2中的滤波器)的滤波器参数。

根据实施例,如果在片头部中ALF标志是有效的,则NLALF有效标志被置于片头部中。如果该NLALF标志是有效的,则在片头部中存在针对各个亮度滤波器语法元素511的限幅参数和针对色度滤波器512的限幅参数。如果该NLALF标志无效,则在片头部中不存在语法元素511和512,并且ALF使用通常的线性滤波。

根据替代实施例,针对各个成分类型亮度和色度提供单独的NLALF有效标志,并且这些标志中的任一个或两个用于指示是否对特定成分的样本使用非线性ALF(例如,在与NLALF有效标志相同的位置(诸如在序列级别或在片头部中等)提供它们)。在变型中,对亮度使用非线性ALF,并且对色度使用线性ALF。在替代变型中,对色度使用非线性ALF,并且对亮度使用线性ALF。

在变型中,在片头部中提供NLALF亮度有效标志和NLALF色度有效标志。NLALF亮度有效标志指示是否对亮度成分使用非线性自适应环路滤波器,因此指示是否针对各个亮度滤波器用信号通知非线性ALF的限幅参数。NLALF色度有效标志指示是否对色度成分使用非线性自适应环路滤波器,因此指示是否针对色度滤波器用信号通知非线性ALF的限幅参数。

在变型中,不用信号通知NLALF色度有效标志,但是如果NLALF亮度有效标志等于零,则推断为等于零,因此不能仅对色度使用非线性ALF。

在变型中,总是对亮度使用非线性ALF(默认-因此NLALF亮度有效标志可以不使用或假定为相应的默认值),并且NLALF色度有效标志用于指示对色度使用非线性ALF还是线性ALF。在另一变型中,总是对亮度使用线性ALF(默认-因此NLALF亮度有效标志可以不使用或假定为相应的默认值),并且NLALF色度有效标志用于指示对色度使用非线性ALF还是线性ALF。在变型中,NLALF亮度有效标志用于指示对亮度使用非线性ALF还是线性ALF,并且对色度始终使用非线性ALF(默认-因此NLALF亮度有效标志可以不使用或假定为相应的默认值)。在变型中,NLALF亮度有效标志用于指示对亮度使用非线性ALF还是线性ALF,并且对色度始终使用线性ALF(默认-因此NLALF亮度有效标志可以不使用或假定为相应的默认值)。

在一个实施例中,仅当NLALF标志在SPS中有效时,将NLALF有效标志(或NLALF亮度有效标志或NLALF色度有效标志)置于片头部中。在不存在NLALF有效标志(或NLALF亮度有效标志或NLALF色度有效标志)的情况下,则默认将其视为无效。

在一个实施例中,在SPS和片头部中,NLALF标志代替ALF标志。经典(仅线性)ALF不能再使用,除了在限幅函数允许针对所允许的限幅参数值的线性输出的实施例中之外。

根据实施例,以与针对滤波器系数类似的方式进行用信号通知限幅参数。首先用信号通知限幅参数的(exp-)Golomb编码参数:使用VLC码来用信号通知(exp-)Golomb码的最小指数,然后对于各个(exp-)Golomb索引(例如针对亮度滤波器的3个索引和针对色度的2个索引),使用标志来用信号通知是否针对当前索引和下一索引必须增加(exp-)Golomb指数(从最小指数开始)。

然后,使用(针对无符号整数)(exp-)Golomb码,针对各个(非禁用)滤波器用信号通知限幅参数,其中采用(exp-)Golomb索引的(exp-)Golomb指数与来自存储(exp-)Golomb参数的表的系数索引(在固定表中,例如与针对滤波器系数相同)相关联。

根据替代实施例,对于各个编码滤波器,例如在片头部中用信号通知(exp-)Golomb编码参数值,并且使用所提供的针对无符号整数(exp-)Golomb编码的(exp-)Golomb编码参数值对各个限幅参数值进行编码。

根据实施例,将(exp-)Golomb编码参数值作为可用(exp-)Golomb编码参数值的表中的索引来用信号通知。

根据实施例,例如,在片头部中用信号通知标志,该标志指示是否使用增量模式用信号通知针对亮度滤波器的限幅参数。当增量模式有效时,第一滤波器限幅参数如前所述被编码,但是各个随后滤波器限幅参数被编码为随后滤波器限幅参数和先前编码的滤波器限幅参数之间的差。在这种情况下,使用带符号整数(exp-)Golomb编码对差进行编码。

根据实施例,例如,在片头部中用信号通知标志,该标志指示滤波器的限幅参数是否可以使用增量模式。根据实施例,当增量模式有效时,针对各个滤波器用信号通知标志,该标志指示滤波器的限幅参数是否使用增量模式。根据实施例,当增量模式有效以对给定滤波器的限幅参数进行编码时,限幅参数被逐一编码,第一个限幅参数使用无符号(exp-)Golomb编码,并且随后的限幅参数使用限幅参数与先前编码的限幅参数的值之间的差的带符号(exp-)Golomb编码。

根据替代实施例,限幅参数可以取的值的数量被限制为两个不同的值。然后使用单个位来用信号通知必须使用哪个限幅参数值(不需要提供(exp-)Golomb参数)。

根据实施例,进行限幅参数的条件信号通知,使得不必要数据(例如,在滤波器系数为零或等于在解码器侧的滤波器的已知值的情况下)的信号通知被最小化。在变型中,例如在片头部中,在用信号通知限幅参数之前,用信号通知滤波器系数,并且对于滤波器的等于零的每个第i个滤波器系数,不用信号通知其对应的第i个限幅参数。这是因为第i个限幅对于滤波器不是有用的,因为其结果将乘以零系数,使得第i个限幅对滤波输出没有影响。在一个变型中,限幅被设置为默认值(例如,根据样本位深度的最大可能值)。在另一变型中,滤波处理不对然后期望乘以零系数的输入样本应用限幅。

根据实施例,针对各个亮度滤波器用信号通知标志以指示非线性滤波器是否与该亮度滤波器一起使用。在变型中,仅当针对该亮度滤波器使用非线性滤波器(即,如果标志是有效的)时,才用信号通知亮度滤波器的限幅参数/值。

根据实施例,针对色度滤波器用信号通知标志以指示非线性滤波器是否与色度滤波器一起使用。在变型中,仅当针对该色度滤波器使用非线性滤波器(即,如果标志是有效的)时,才用信号通知色度滤波器的限幅参数/值。

根据实施例,使用以下各项中的一个或多个来进行用信号通知ALF相关信息,诸如ALF参数和标志等):APS语法(表1);区块组头部语法(表2);编码树单元语法(表3);和/或下面所示的非线性ALF数据语法(表4),其使用与VVC草案版本3中相同的语法命名约定。根据变型,所有四个语法(例如,表1-4)被用于用信号通知ALF相关信息。根据替代变型,四个语法的子集被用于用信号通知ALF相关信息。

表1和表2提供高级语法元素以提供/用信号通知ALF参数,例如alf_data()。

表1–自适应参数集(APS)语法

表2–区块组头部语法

相对于其它实施例(或其变型)描述的片(头部)被(如由表2的区块组头部语法所示)区块组(头部)替代。因此,“tile_group_alf_enabled_flag”对应于图2中的202和图5中的502的语法元素,并且其指示ALF针对区块组是否有效。此外,ALF数据语法元素不被提供在区块组头部中(在具有片的其它实施例中,其可以被提供在片头部中)。代替地,ALF数据语法元素提供在称为自适应参数集(APS)的特定参数集(如表1所示)中。ALF数据包括ALF语法元素,并且在APS中提供ALF数据语法元素使得能够在多于一个区块组之间共用ALF参数,例如在相同和/或不同解码图片中的多个区块组之间共用ALF参数。

表1的自适应参数集(APS)语法用于定义用信号通知任何自适应参数集。在变型中,APS包括在非“视频编码层”(VCL)“网络抽象层”(NAL)单元(例如,称为“APS_NUT”或APSNAL单元类型)中。

APS的各个语法元素的语义如下:

自适应参数集语义

adaptation_parameter_set_id标识供其它语法元素参考的APS。adaptation_parameter_set_id的值应在0至63(包含)的范围内。

表2的区块组头部语法用于定义各个区块组头部。针对各个区块组提供区块组头部。区块组包括区块集合,各个区块包括CTU集合。

区块组头部的语法元素的语义如下:

区块组头部语义

tile_group_aps_id指定区块组参考的APS的adaptation_parameter_set_id。tile_group_aps_id的值应在0至63(包含)范围内。adaptation_parameter_set_id等于tile_group_aps_id的APS NAL单元的TemporalId应小于或等于编码的区块组NAL单元的TemporalId。

表3提供用于在CTU级别处用信号通知ALF有效的各个成分所使用的ALF(启用)标志的语法元素。其对应于图2中的208、209和210以及图5中的508、509和510中使用的语法元素。

表3–编码树单元语法

表3的编码树单元语法用于定义(经编码的)编码树单元。编码树单元的各个语法元素的语义如下:

编码树单元语义

CTU是编码四叉树结构的根节点。

alf_ctb_flag[cIdx][xCtb>>Log2CtbSize][yCtb>>Log2CtbSize]等于1指定自适应环路滤波器应用于亮度位置(xCtb,yCtb)处由编码树单元的cIdx指示的颜色成分的编码树块。alf_ctb_flag[cIdx][xCtb>>Log2CtbSize][yCtb>>Log2CtbSize]等于0指定自适应环路滤波器不应用于亮度位置(xCtb,yCtb)处由编码树单元的cIdx指示的颜色成分的编码树块。

当alf_ctb_flag[cIdx][xCtb>>Log2CtbSize][yCtb>>Log2CtbSize]不存在时,推断等于0。

表4提供用于用信号通知非线性ALF参数的语法元素(即,非线性ALF数据语法),其建立在VVC草案版本3的ALF数据语法元素上。这些语法元素建立在本文参考图5的非线性ALF语法元素(其建立在图2的语法元素上)所描述的变型中使用的语法元素上。

表4–非线性ALF数据语法

表4的非线性自适应环路滤波器(ALF)数据语法用于定义自适应参数集(表1所示)。非线性ALF数据语法元素的语义如下:

自适应环路滤波器数据语义

alf_chroma_idc等于0指定自适应环路滤波器不应用于Cb和Cr颜色成分。alf_chroma_idc等于1指定自适应环路滤波器应用于Cb颜色成分。alf_chroma_idc等于2指定自适应环路滤波器应用于Cr颜色成分。alf_chroma_idc等于3指示自适应环路滤波器应用于Cb和Cr颜色成分。

截断的一元二值化tu(v)的最大值maxVal被设置为等于3。

指定不同自适应环路滤波器的数量的变量NumAlfFilters被设置为等于25。

alf_luma_num_filters_signalled_minus1加1指定可以用信号通知亮度系数的自适应环路滤波器类的数量。alf_luma_num_filters_signalled_minus1的值应在0至NumAlfFilters-1(包含)的范围内。

截断的二进制二值化tb(v)的最大值maxVal被设置为等于NumAlfFilters-1。

alf_luma_coeff_delta_idx[filtIdx]指定用信号通知的由filtIdx指示的滤波器类的自适应环路滤波器亮度系数增量的索引,iltIdx在0至NumAlfFilters-1的范围内。当alf_luma_coeff_delta_idx[filtIdx]不存在时,推断等于0。

截断的二进制二值化tb(v)的最大值maxVal被设置为等于alf_luma_num_filters_signalled_minus1。

alf_luma_coeff_delta_flag等于1指示不用信号通知alf_luma_coeff_delta_prediction_flag。alf_luma_coeff_delta_flag等于0指示可以用信号通知alf_luma_coeff_delta_prediction_flag。

alf_luma_coeff_delta_prediction_flag等于1指定从先前亮度系数的增量预测用信号通知的亮度滤波器系数增量。alf_luma_coeff_delta_prediction_flag等于0指定不从先前亮度系数的增量预测用信号通知的亮度滤波器系数增量。当不存在时,推断alf_luma_coeff_delta_prediction_flag等于0。

alf_luma_min_eg_order_minus1加1指定用信号通知亮度滤波器系数的exp-Golomb码的最小指数。alf_luma_min_eg_order_minus1的值应在0至6(包含)的范围内。

alf_luma_eg_order_increase_flag[i]等于1指定用信号通知亮度滤波器系数的exp-Golomb码的最小指数递增1。alf_luma_eg_order_increase_flag[i]等于0指定用信号通知亮度滤波器系数的exp-Golomb码的最小指数不递增1。

用于解码alf_luma_coeff_delta_abs[sigFiltIdx][j]值的exp-Golomb码的指数expGoOrderY[i]导出如下:expGoOrderY[i]=alf_luma_min_eg_order_minus1+1+alf_luma_eg_order_increase_flag[i]

alf_luma_coeff_flag[sigFiltIdx]等于1指定用信号通知由sigFiltIdx指示的亮度滤波器的系数。alf_luma_coeff_flag[sigFiltIdx]等于0指定由sigFiltIdx指示的亮度滤波器的所有滤波器系数被设置为等于0。当不存在时,将alf_luma_coeff_flag[sigFiltIdx]设置为等于1。

alf_luma_coeff_delta_abs[sigFiltIdx][j]指定由sigFiltIdx指示的用信号通知的亮度滤波器的第j个系数增量的绝对值。当不存在alf_luma_coeff_delta_abs[sigFiltIdx][j]时,推断为等于0。

exp-Golomb二值化uek(v)的指数k导出如下:

golombOrderIdxY[]={0,0,1,0,0,1,2,1,0,0,1,2}

k=expGoOrderY[golombOrderIdxY[j]]

alf_luma_coeff_delta_sign[sigFiltIdx][j]指定由sigFiltIdx指示的滤波器的第j个亮度系数的符号如下:

如果alf_luma_coeff_delta_sign[sigFiltIdx][j]等于0,则相应的亮度滤波器系数具有正值。

否则(alf_luma_coeff_delta_sign[sigFiltIdx][j]等于1),相应的亮度滤波器系数具有负值。

当不存在alf_luma_coeff_delta_sign[sigFiltIdx][j]时,推断等于0。

变量filterCoefficients[sigFiltIdx][j](其中igFiltIdx=0…alf_luma_num_filters_signalled_minus1,j=0…11)初始化如下:

filterCoefficients[sigFiltIdx][j]=alf_luma_coeff_delta_abs[sigFiltIdx][j]*(1-2*alf_luma_coeff_delta_sign[sigFiltIdx][j])

当alf_luma_coeff_delta_prediction_flag等于1时,filterCoefficients[sigFiltIdx][j](其中igFiltIdx=0…alf_luma_num_filters_signalled_minus1,j=0…11)修改如下:filterCoefficients[sigFiltIdx][j]+=filterCoefficients[sigFiltIdx-1][j]

具有元素AlfCoeffL[filtIdx][j](其中igFiltIdx=0…alf_luma_num_filters_signalled_minus1,j=0…11)的亮度滤波器系数推导如下

AlfCoeffL[filtIdx][j]=filterCoefficients[alf_luma_coeff_delta_idx[filtIdx]][j]

对于最后滤波器系数AlfCoeffL[filtIdx][12](filtIdx=0...NumAlfFilters-1)推导如下:

AlfCoeffL[filtIdx][12]=128

位流一致性的一个要求是AlfCoeffL[filtIdx][j](其中,filtIdx=0...NumAlfFilters-1,j=0…11)的值应在-2^7至2^7-1(包含)的范围内,并且AlfCoeffL[filtIdx][12]的值应在0至2^8-1(包含)的范围内。

alf_chroma_min_eg_order_minus1加1指定用信号通知的色度滤波器系数的exp-Golomb码的最小指数。alf_chroma_min_eg_order_minus1的值应在0至6(包含)的范围内。

alf_chroma_eg_order_increase_flag[i]等于1指定用信号通知的色度滤波器系数的exp-Golomb码的最小指数递增1。alf_chroma_eg_order_increase_flag[i]等于0指定用信号通知的色度滤波器系数的exp-Golomb码的最小指数不递增1

用于解码alf_chroma_coeff_abs[j]值的exp-Golomb码的指数expGoOrderC[i]导出如下:

expGoOrderC[i]=alf_chroma_min_eg_order_minus1+1+alf_chroma_eg_order_increase_flag[i]

alf_chroma_coeff_abs[j]指定第j个色度滤波器系数的绝对值。当alf_chroma_coeff_abs[j]不存在时,推断为等于0。位流一致性的要求是alf_chroma_coeff_abs[j]的值应在0至2^7-1(包含)的范围内。

exp-Golomb二值化uek(v)的指数k导出如下:

golombOrderIdxC[]={0,0,1,0,0,1}

k=expGoOrderC[golombOrderIdxC[j]]

alf_chroma_coeff_sign[j]指定第j个色度滤波器系数的符号如下:

如果alf_chroma_coeff_sign[j]等于0,则相应的色度滤波器系数具有正值。

否则(alf_chroma_coeff_sign[j]等于1),相应的色度滤波器系数具有负值。

当alf_chroma_coeff_sign[j]不存在时,推断等于0。

具有元素cC[j]的色度滤波器系数AlfCoeffC(其中j=0…5)导出如下:

AlfCoeffC[j]=alf_chroma_coeff_abs[j]*(1-2*alf_chroma_coeff_sign[j])

j=6的最后滤波器系数导出如下:

AlfCoeffC[6]=128

位流一致性的要求是AlfCoeffC[j](其中j=0…5)应在-2^7-1至2^7-1(包含)范围内,并且AlfCoeffC[6]的值应在0至2^8-1(包含)范围内。

alf_luma_clip等于0指定线性自适应环路滤波器应用于亮度成分。alf_luma_clip等于1指定非线性自适应环路滤波器可以应用于亮度成分。

alf_chroma_clip等于0指定线性自适应环路滤波器应用于色度成分;alf_chroma_clip等于1指示非线性自适应环路滤波器应用于色度成分。如果不存在alf_chroma_clip,则推断为0。

alf_luma_clip_default_table等于1指定默认alf_luma_clipping_value表用于将限幅索引转换为限幅值。alf_luma_clip_default_table等于0指示alf_data()中存在alf_luma_clipping_value[]表。

alf_luma_num_clipping_values_minus1加1指示alf_luma_clipping_value[]表的大小。如果不存在,则推断为等于bitDepthY。

alf_luma_clipping_value[clipIdx]指定在alf_luma_clip_idx[][]表中用信号通知限幅索引clipIdx时使用的限幅值。当不存在时,推断为alf_luma_clipping_value[]={1<

为方便起见,推断alf_luma_clipping_value[alf_luma_num_clipping_values_minus1+1]等于1<<(bitDepthY-1)。

alf_chroma_clip_default_table等于1指定默认alf_chroma_clipping_value[]表用于将限幅索引转换为限幅值;alf_chroma_clip_default_table等于0指示alf_data()中存在alf_chroma_clipping_value[]表。

alf_chroma_num_clipping_values_minus1加1指示alf_chroma_clipping_value[]表的大小。如果不存在,则推断为等于bitDepthC。

alf_chroma_clipping_value[clipIdx]指定在alf_chroma_clip_idx[][]表中用信号通知限幅索引clipIdx时使用的限幅值。当不存在时,推断为alf_chroma_clipping_value[]={1<

为方便起见,推断alf_chroma_clipping_valuee[alf_chroma_num_clipping_values_minus1+1]等于1<

alf_luma_filter_clip[sigFiltIdx]等于0指定与由sigFiltIdx指示的亮度滤波器一起应用线性自适应环路滤波器。alf_luma_filter_clip[sigFiltIdx]等于1指定与由sigFiltIdx指示的亮度滤波器一起应用非线性自适应环路滤波器。

alf_luma_clip_min_eg_order_minus1加1指定用信号通知的亮度滤波器系数的exp-Golomb码的最小指数。alf_luma_clip_min_eg_order_minus1的值应在0至6(包含)范围内。

alf_luma_clip_eg_order_increase_flag[i]等于1指定用信号通知的亮度滤波器系数的exp-Golomb码的最小指数递增1。alf_luma_clip_eg_order_increase_flag[i]等于0指定用信号通知的亮度滤波器系数的exp-Golomb码的最小指数不递增1。

用于解码alf_luma_clip_idx[sigFiltIdx][j]的值的exp-Golomb码的指数expGoOrderYClip[i]导出如下:

expGoOrderYClip[i]=alf_luma_clip_min_eg_order_minus1+1+alf_luma_clip_eg_order_increase_flag[i]

alf_luma_clip_idx[sigFiltIdx][j]指定在乘以由sigFiltIdx指示的用信号通知的亮度滤波器的第j个系数之前使用的限幅的限幅索引。当不存在alf_luma_clip_idx[sigFiltIdx][j]时,推断为等于alf_luma_num_clipping_values_minus1+1(无限幅)。

exp-Golomb二值化uek(v)的指数k导出如下:

golombOrderIdxYClip[]={0,0,1,0,0,1,2,1,0,0,1,2}

k=expGoOrderYClip[golombOrderIdxYClip[j]]

变量filterClips[sigFiltIdx][j](其中sigFiltIdx=0...alf_luma_num_filters_signalled_minus1,j=0…11)初始化如下:

filterClips[sigFiltIdx][j]=alf_luma_clipping_value[

alf_luma_clip_idx[sigFiltIdx][j]]

具有元素AlfClipL[filtIdx][j](其中filtIdx=0..NumAlfFilters-1并且j=0…11)的亮度滤波器限幅值AlfClipL导出如下

AlfClipL[filtIdx][j]=filterClips[alf_luma_coeff_delta_idx[filtIdx]][j]

alf_chroma_clip_min_eg_order_minus1加1指定用信号通知的色度滤波器系数的exp-Golomb码的最小指数。alf_chroma_clip_min_eg_order_minus1的值应在0至6(包含)范围内。

alf_chroma_clip_eg_order_increase_flag[i]等于1指定用信号通知的色度滤波器系数的exp-Golomb码的最小指数递增1。alf_chroma_clip_eg_order_increase_flag[i]等于0指定用信号通知的色度滤波器系数的exp-Golomb码的最小指数不递增1。

用于解码alf_chroma_coeff_abs[j]值的exp-Golomb码的指数expGoOrderC[i]导出如下:

expGoOrderC[i]=alf_chroma_clip_min_eg_order_minus1+1+alf_chroma_clip_eg_order_increase_flag[i]

alf_chroma_clip_idx[j]指定在乘以色度滤波器的第j个系数之前要使用的限幅的限幅索引。当alf_chroma_clip_idx[j]不存在时,推断为等于alf_chroma_num_clipping_values_minus1+1(无限幅)。

exp-Golomb二值化uek(v)的指数k导出如下:

golombOrderIdxC[]={0,0,1,0,0,1}

k=expGoOrderC[golombOrderIdxC[j]]

具有元素AlfClipC[j](其中j=0…5)的亮度滤波器限幅值AlfClipC导出如下:AlfClipC[j]=alf_chroma_clipping_value[alf_chroma_clip_idx[j]]

根据变型,alf_luma_num_clipping_values_minus1由alf_luma_num_clipping_values_minus2代替,并且提供从索引=1至alf_luma_num_clipping_values_minus2+1的限幅值,并且alf_luma_clipping_value[]的第一值被推断为alf_luma_clipping_value[0]=1<

根据变型,自适应环路滤波处理使用上述语法元素。这种变型使用下面VVC草案规范的符号约定来描述。

自适应环路滤波处理

总述

该处理的输入是在自适应环路滤波器之前的重建图片样本阵列recPictureL、recPictureCb和recPictureCr。

该处理的输出是自适应环路滤波之后的修改的重建图片样本阵列alfPictureL、alfPictureCb和alfPictureCr。

自适应环路滤波之后的修改后的重建图片样本阵列alfPictureL、alfPictureCb和alfPictureCr中的样本值初始设置为分别等于自适应环路滤波之前的重建图片样本阵列recPictureL、recPictureCb和recPictureCr中的样本值。

当tile_group_alf_enabled_flag等于1时,对于具有亮度编码树块位置(rx,ry)的每个编码树单元(其中rx=0…PicWidthInCtbs-1且ry=0…PicHeightInCtbs-1),以下适用:

当alf_ctb_flag[0][rx][ry]等于1时,以recPictureL、alfPictureL和设置为等于(rx<

当alf_ctb_flag[1][rx][ry]等于1时,以recPicture设置为等于recPictureCb、alfPicture设置为等于alfPictureCb、并且色度编码树块位置(xCtbC,yCtbC)设置为等于(rx<<(CtbLog2SizeY-1),ry<<(CtbLog2SizeY-1))作为输入来调用子句“色度样本的编码树块滤波处理”中指定的色度样本的编码树块滤波处理,并且输出是修改后的滤波图片alfPictureCb。

当alf_ctb_flag[2][rx][ry]等于1时,以recPicture设置为等于recPictureCr、alfPicture设置为等于alfPictureCr、并且色度编码树块位置(xCtbC,yCtbC)设置为等于(rx<<(CtbLog2SizeY-1),ry<<(CtbLog2SizeY-1))作为输入来调用子句“色度样本的编码树块滤波处理”中指定的色度样本的编码树块滤波处理,并且输出是修改后的滤波图片alfPictureCr。

亮度样本的编码树块滤波处理

该处理的输入是:自适应环路滤波处理之前的重建亮度图片样本阵列recPictureL、滤波后的重建亮度图片样本阵列alfPictureL、指定针对当前图片的左上方样本的当前亮度编码树块的左上方样本的亮度位置(xCtb,yCtb)。

该处理的输出是修改的滤波重建亮度图片样本阵列alfPictureL。

以位置(xCtb,yCtb)和重建的亮度图片样本阵列recPictureL为输入并且filtIdx[x][y]和transposeIdx[x][y](其中x,y=0…CtbSizeY-1)作为输出来调用滤波器索引子句“亮度样本的ALF转置和滤波器索引的导出处理”的导出处理。

对于滤波后的重建亮度样本alfPictureL[x][y]的导出,当前亮度编码树块内的各个重建亮度样本recPictureL[x][y](其中x,y=0…CtbSizeY-1)被如下滤波:

与由filtIdx[x][y]指定的滤波器相对应的亮度滤波器系数阵列f[j]和亮度滤波器限幅阵列c[j](其中j=0…12)如下导出:

f[j]=AlfCoeffL[filtIdx[x][y]][j]

c[j]=AlfClipL[filtIdx[x][y]][j]

根据transposeIdx[x][y]导出亮度滤波器系数filterCoeff和滤波器限幅值filterClip如下:

如果transposeIndex[x][y]==1,

filterCoeff[]={f[9],f[4],f[10],f[8],f[1],f[5],f[11],f[7],f[3],f[0],f[2],f[6],f[12]}

filterClip[]={c[9],c[4],c[10],c[8],c[1],c[5],c[11],c[7],c[3],c[0],c[2],c[6],c[12]}

否则,如果transposeIndex[x][y]==2,

filterCoeff[]={f[0],f[3],f[2],f[1],f[8],f[7],f[6],f[5],f[4],f[9],f[10],f[11],f[12]}

filterClip[]={c[0],c[3],c[2],c[1],c[8],c[7],c[6],c[5],c[4],c[9],c[10],c[11],c[12]}

否则,如果transposeIndex[x][y]==3,

filterCoeff[]={f[9],f[8],f[10],f[4],f[3],f[7],f[11],f[5],f[1],f[0],f[2],f[6],f[12]}

filterClip[]={c[9],c[8],c[10],c[4],c[3],c[7],c[11],c[5],c[1],c[0],c[2],c[6],c[12]}

否则

filterCoeff[]={f[0],f[1],f[2],f[3],f[4],f[5],f[6],f[7],f[8],f[9],f[10],f[11],f[12]}

filterClip[]={c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8],c[9],c[10],c[11],c[12]}

给定亮度样本阵列recPicture内的各个相应亮度样本(x,y)的位置(hx,vy)导出如下:

hx=Clip3(0,pic_width_in_luma_samples-1,xCtb+x)

vy=Clip3(0,pic_height_in_luma_samples-1,yCtb+y)

变量curr导出如下:curr=recPictureL[hx,vy]

变量总和导出如下:

sum=filterCoeff[0]*(Clip3(-filterClip[0],filterClip[0],recPictureL[hx,vy+3]-curr)+Clip3(-filterClip[0],filterClip[0],recPictureL[hx,vy-3]-curr))

+filterCoeff[1]*(Clip3(-filterClip[1],filterClip[1],recPictureL[hx+1,vy+2]-curr)+Clip3(-filterClip[1],filterClip[1],recPictureL[hx-1,vy-2]-curr))

+filterCoeff[2]*(Clip3(-filterClip[2],filterClip[2],recPictureL[hx,vy+2]-curr)+Clip3(-filterClip[2],filterClip[2],recPictureL[hx,vy-2]-curr))

+filterCoeff[3]*(Clip3(-filterClip[3],filterClip[3],recPictureL[hx-1,vy+2]-curr)+Clip3(-filterClip[3],filterClip[3],recPictureL[hx+1,vy-2]-curr))

+filterCoeff[4]*(Clip3(-filterClip[4],filterClip[4],recPictureL[hx+2,vy+1]-curr)+Clip3(-filterClip[4],filterClip[4],recPictureL[hx-2,vy-1]-curr))

+filterCoeff[5]*(Clip3(-filterClip[5],filterClip[5],recPictureL[hx+1,vy+1]-curr)+Clip3(-filterClip[5],filterClip[5],recPictureL[hx-1,vy-1]-curr))

+filterCoeff[6]*(Clip3(-filterClip[6],filterClip[6],recPictureL[hx,vy+1]-curr)+Clip3(-filterClip[6],filterClip[6],recPictureL[hx,vy-1]-curr))

+filterCoeff[7]*(Clip3(-filterClip[7],filterClip[7],recPictureL[hx-1,vy+1]-curr)+Clip3(-filterClip[7],filterClip[7],recPictureL[hx+1,vy-1]-curr))

+filterCoeff[8]*(Clip3(-filterClip[8],filterClip[8],recPictureL[hx-2,vy+1]-curr)+Clip3(-filterClip[8],filterClip[8],recPictureL[hx+2,vy-1]-curr))

+filterCoeff[9]*(Clip3(-filterClip[9],filterClip[9],recPictureL[hx+3,vy]-curr)+Clip3(-filterClip[9],filterClip[9],recPictureL[hx-3,vy]-curr))

+filterCoeff[10]*(Clip3(-filterClip[10],filterClip[10],recPictureL[hx+2,vy]-curr)+Clip3(-filterClip[10],filterClip[10],recPictureL[hx-2,vy]-curr))

+filterCoeff[11]*(Clip3(-filterClip[11],filterClip[11],recPictureL[hx+1,vy]-curr)+Clip3(-filterClip[11],filterClip[11],recPictureL[hx-1,vy]-curr))

+filterCoeff[12]*recPictureL[hx,vy]

sum=(sum+64)>>7

修改后的滤波重建亮度图片样本alfPictureL[xCtb+x][yCtb+y]导出如下:

alfPictureL[xCtb+x][yCtb+y]=Clip3(0,(1<

亮度样本ALF转置和滤波器索引的导出处理

该处理的输入是:指定针对当前图片的左上方样本的当前亮度编码树块的左上方样本的亮度位置(xCtb,yCtb),自适应环路滤波处理之前的重建亮度图片样本阵列recPictureL。

该处理的输出为分类滤波器索引陈列filtIdx[x][y](其中x,y=0...CtbSizeY-1),

转置索引阵列transposeIdx[x][y](其中x,y=0...CtbSizeY-1)。

给定亮度样本阵列recPicture内的各个相应亮度样本(x,y)的位置(hx,vy)导出如下:

hx=Clip3(0,pic_width_in_luma_samples-1,x)

vy=Clip3(0,pic_height_in_luma_samples-1,y)

分类滤波器索引阵列filtIdx和转置索引阵列transposeIdx通过以下有序步骤导出:

1)变量filtH[x][y]、filtV[x][y]、filtD0[x][y]和filtD1[x][y](其中x,y=-2…CtbSizeY+1)导出如下:

如果x和y这两者都是偶数或者x和y这两者都是奇数,则以下适用:

filtH[x][y]=Abs((recPicture[hxCtb+x,vyCtb+y]<<1)-recPicture[hxCtb+x-1,vyCtb+y]-recPicture[hxCtb+x+1,vyCtb+y])

filtV[x][y]=Abs((recPicture[hxCtb+x,vyCtb+y]<<1)-recPicture[hxCtb+x,vyCtb+y-1]-recPicture[hxCtb+x,vyCtb+y+1])

filtD0[x][y]=Abs((recPicture[hxCtb+x,vyCtb+y]<<1)-recPictur e[hxCtb+x-1,vyCtb+y-1]-recPicture[hxCtb+x+1,vyCtb+y+1])

filtD1[x][y]=Abs((recPicture[hxCtb+x,vyCtb+y]<<1)-recPicture[hx Ctb+x+1,vyCtb+y-1]-recPicture[hxCtb+x-1,vyCtb+y+1])

否则,filtH[x][y]、filtV[x][y]、filtD0[x][y]和filtD1[x][y]设置为等于0。

2)变量varTempH1[x][y]、varTempV1[x][y]、varTempD01[x][y]、varTempD11[x][y]和varTemp[x][y](其中x,y=0...(CtbSizeY-1)>>2)导出如下:

sumH[x][y]=ΣiΣj filtH[(x<<2)+i][(y<<2)+j](其中i,j=-2…5)

sumV[x][y]=ΣiΣj filtV[(x<<2)+i][(y<<2)+j](其中i,j=-2…5)

sumD0[x][y]=ΣiΣj filtD0[(x<<2)+i][(y<<2)+j](其中i,j=-2…5)

sumD1[x][y]=ΣiΣj filtD1[(x<<2)+i][(y<<2)+j](其中i,j=-2…5)

sumOfHV[x][y]=sumH[x][y]+sumV[x][y]

3)变量dir1[x][y]、dir2[x][y]和dirS[x][y](其中x,y=0...CtbSizeY-1)导出如下:

变量hv1、hv0和dirHV导出如下:

如果sumV[x>>2][y>>2]大于sumH[x>>2][y>>2],则以下适用:

hv1=sumV[x>>2][y>>2]

hv0=sumH[x>>2][y>>2]

dirHV=1

否则,以下适用:

hv1=sumH[x>>2][y>>2]

hv0=sumV[x>>2][y>>2]

dirHV=3

变量d1、d0和dirD导出如下:

如果sumD0[x>>2][y>>2]大于[x>>2][y>>2],则以下适用:

d1=sumD0[x>>2][y>>2]

d0=sumD1[x>>2][y>>2]

dirD=0

否则,以下适用:

d1=sumD1[x>>2][y>>2]

d0=sumD0[x>>2][y>>2]

dirD=2

变量hvd1、hvd0导出如下:

hvd1=(d1*hv0>hv1*d0)?d1:hv1

hvd0=(d1*hv0>hv1*d0)?d0:hv0

变量dirS[x][y]、dir1[x][y]和dir2[x][y]导出如下:

dir1[x][y]=(d1*hv0>hv1*d0)?dirD:dirHV

dir2[x][y]=(d1*hv0>hv1*d0)?dirHV:dirD

dirS[x][y]=(hvd1>2*hvd0)?1:((hvd1*2>9*hv d0)?2:0)

4)变量avgVar[x][y](其中x,y=0…CtbSizeY-1)导出如下:

varTab[]={0,1,2,2,2,2,2,3,3,3,3,3,3,3,3,4}

avgVar[x][y]=varTab[Clip3(0,15,(sumOfHV[x>>2][y>>2]*64)>>(3+BitDepthY))]

5)分类滤波器索引阵列filtIdx[x][y]和转置索引阵列transposeIdx[x][y](其中x=y=0…CtbSizeY-1)导出如下:

transposeTable[]={0,1,0,2,2,3,1,3}

transposeIdx[x][y]=transposeTable[dir1[x][y]*2+(dir2[x][y]>>1)]

filtIdx[x][y]=avgVar[x][y]

当dirS[x][y]不等于0时,filtIdx[x][y]修改如下:

filtIdx[x][y]+=(((dir1[x][y]&0x1)<<1)+dirS[x][y])*5

色度样本的编码树块滤波处理

该处理的输入是:自适应环路滤波处理之前的重建色度图片样本阵列recPicture、滤波后的重建色度图片样本阵列alfPicture、指定针对当前图片的左上方样本的当前色度编码树块的左上方样本的色度位置(xCtbC,yCtbC)。

该过程的输出是修改后的滤波重建色度图片样本阵列alfPicture。

当前色度编码树块的大小ctbSizeC导出如下:

ctbSizeC=CtbSizeY/SubWidthC

对于滤波后的重建色度样本alfPictur[x][y]的导出,当前色度编码树块内的各个重建色度样本recPicture[x][y](其中x,y=0…ctbSizeC-1)被如下滤波:

给定色度样本阵列recPicture内的各个相应色度样本(x,y)的位置(hx,vy)导出如下:

hx=Clip3(0,pic_width_in_luma_samples/SubWidthC-1,xCtbC+x)

vy=Clip3(0,pic_height_in_luma_samples/SubHeightC-1,yCtbC+y)

变量curr导出如下:

curr=recPicture[hx,vy]

变量总和导出如下:

sum=AlfCoeffC[0]*(Clip3(-AlfClipC[0],AlfClipC[0],recPicture[hx,vy+2]-curr)+Clip3(-AlfClipC[0],AlfClipC[0],recPicture[hx,vy-2]-curr))

+AlfCoeffC[1]*(Clip3(-AlfClipC[1],AlfClipC[1],recPicture[hx+1,vy+1]-curr)+Clip3(-AlfClipC[1],AlfClipC[1],recPicture[hx-1,vy-1]-curr))

+AlfCoeffC[2]*(Clip3(-AlfClipC[2],AlfClipC[2],recPicture[hx,vy+1]-curr)+Clip3(-AlfClipC[2],AlfClipC[2],recPicture[hx,vy-1]-curr))

+AlfCoeffC[3]*(Clip3(-AlfClipC[3],AlfClipC[3],recPicture[hx-1,vy+1]-curr)+Clip3(-AlfClipC[3],AlfClipC[3],recPicture[hx+1,vy-1]-curr))

+AlfCoeffC[4]*(Clip3(-AlfClipC[4],AlfClipC[4],recPicture[hx+2,vy]-curr)+Clip3(-AlfClipC[4],AlfClipC[4],recPicture[hx-2,vy]-curr))

+AlfCoeffC[5]*(Clip3(-AlfClipC[5],AlfClipC[5],recPicture[hx+1,vy]-curr)+Clip3(-AlfClipC[5],AlfClipC[5],recPicture[hx-1,vy]-curr))

+AlfCoeffC[6]*recPicture[hx,vy]

sum=(sum+64)>>7

修改后的滤波重建色度图像样本alfPicture[xCtbC+x][yCtbC+y]导出如下:

alfPicture[xCtbC+x][yCtbC+y]=Clip3(0,(1<

在上述变型中,将限幅操作应用于邻近样本和滤波样本之间的差(即,使用等式(7))。在使用等式(9)的另一变型中,其语义和滤波处理被修改如下(基于上述变型的语义和滤波处理的修改):

AlfCoeffL[filtIdx][12]导出为:

AlfCoeffL[filtIdx][12]=128-Σ

AlfCoeffC[6]导出为:

AlfCoeffC[6]=128-Σ

对AlfCoeffL[filtIdx][12]和AlfCoeffC[6]的位深度的限制(即它们应该在0至2^8-1(包含)的范围内)被放宽到0至2^9-1的范围内或者甚至是0至2^10-1的范围内,以获得更好的滤波性能。

这是因为,对于限幅操作,经常发生与邻近样本位置相关联的系数必须更高(绝对值)以获得更好的效率(因为一旦应用非线性函数,滤波器输入样本就更可靠,即更有可能提供更好的滤波)。结果,经常出现这些系数的总和(因此,不包括中心系数)低于-128(在定点表示中),使得中心系数必须高于256(在定点表示中)。因此,将中心系数限制在0至2^8–1的标准范围内意味着编码器需要通过降低其动态/幅度来找到次优系数,从而导致效率较低的滤波。通过对中心系数使用10位精度的标准范围(即0至2^10-1的范围),编码器必须使用次优滤波器系数的频率低得多,因此与8位精度相比,总体滤波质量增加。对于ALF线性滤波,对中心系数的8位的限制不会对滤波效率产生太大的影响,这是因为邻近滤波器输入样本通常具有更小的权重(即,更小的系数)。然而,对于限幅,即ALF非线性滤波,最优滤波器可能会给邻近样本赋予更大的权重,一旦限幅就更可靠。

“亮度样本的编码树块滤波处理”中的变量总和导出如下:

sum=filterCoeff[0]*(Clip3(curr-filterClip[0],curr+filterClip[0],recPictureL[hx,vy+3])+Clip3(curr-filterClip[0],curr+filterClip[0],recPictureL[hx,vy-3]))

+filterCoeff[1]*(Clip3(curr-filterClip[1],curr+filterClip[1],recPictureL[hx+1,vy+2])+Clip3(curr-filterClip[1],curr+filterClip[1],recPictureL[hx-1,vy-2]))

+filterCoeff[2]*(Clip3(curr-filterClip[2],curr+filterClip[2],recPictureL[hx,vy+2])+Clip3(curr-filterClip[2],curr+filterClip[2],recPictureL[hx,vy-2]))

+filterCoeff[3]*(Clip3(curr-filterClip[3],curr+filterClip[3],recPictureL[hx-1,vy+2])+Clip3(curr-filterClip[3],curr+filterClip[3],recPictureL[hx+1,vy-2]))

+filterCoeff[4]*(Clip3(curr-filterClip[4],curr+filterClip[4],recPictureL[hx+2,vy+1])+Clip3(curr-filterClip[4],curr+filterClip[4],recPictureL[hx-2,vy-1]))

+filterCoeff[5]*(Clip3(curr-filterClip[5],curr+filterClip[5],recPictureL[hx+1,vy+1])+Clip3(curr-filterClip[5],curr+filterClip[5],recPictureL[hx-1,vy-1]))

+filterCoeff[6]*(Clip3(curr-filterClip[6],curr+filterClip[6],recPictureL[hx,vy+1])+Clip3(curr-filterClip[6],curr+filterClip[6],recPictureL[hx,vy-1]))

+filterCoeff[7]*(Clip3(curr-filterClip[7],curr+filterClip[7],recPictureL[hx-1,vy+1])+Clip3(curr-filterClip[7],curr+filterClip[7],recPictureL[hx+1,vy-1]))

+filterCoeff[8]*(Clip3(curr-filterClip[8],curr+filterClip[8],recPictureL[hx-2,vy+1])+Clip3(curr-filterClip[8],curr+filterClip[8],recPictureL[hx+2,vy-1]))

+filterCoeff[9]*(Clip3(curr-filterClip[9],curr+filterClip[9],recPictureL[hx+3,vy])+Clip3(curr-filterClip[9],curr+filterClip[9],recPictureL[hx-3,vy]))

+filterCoeff[10]*(Clip3(curr-filterClip[10],curr+filterClip[10],recPictureL[hx+2,vy])+Clip3(curr-filterClip[10],curr+filterClip[10],recPictureL[hx-2,vy]))

+filterCoeff[11]*(Clip3(curr-filterClip[11],curr+filterClip[11],recPictureL[hx+1,vy])+Clip3(curr-filterClip[11],curr+filterClip[11],recPictureL[hx-1,vy]))

+filterCoeff[12]*recPictureL[hx,vy]

sum=(sum+64)>>7

“色度样本的编码树块滤波处理”中的变量总和导出如下:

sum=AlfCoeffC[0]*(Clip3(curr-AlfClipC[0],curr+AlfClipC[0],recPicture[hx,vy+2])+Clip3(curr-AlfClipC[0],AlfClipC[0],recPicture[hx,vy-2]))

+AlfCoeffC[1]*(Clip3(curr-AlfClipC[1],curr+AlfClipC[1],recPicture[hx+1,vy+1])+Clip3(curr-AlfClipC[1],curr+AlfClipC[1],recPicture[hx-1,vy-1]))

+AlfCoeffC[2]*(Clip3(curr-AlfClipC[2],curr+AlfClipC[2],recPicture[hx,vy+1])+Clip3(curr-AlfClipC[2],curr+AlfClipC[2],recPicture[hx,vy-1]))

+AlfCoeffC[3]*(Clip3(curr-AlfClipC[3],curr+AlfClipC[3],recPicture[hx-1,vy+1])+Clip3(curr-AlfClipC[3],curr+AlfClipC[3],recPicture[hx+1,vy-1]))

+AlfCoeffC[4]*(Clip3(curr-AlfClipC[4],curr+AlfClipC[4],recPicture[hx+2,vy])+Clip3(curr-AlfClipC[4],curr+AlfClipC[4],recPicture[hx-2,vy]))

+AlfCoeffC[5]*(Clip3(curr-AlfClipC[5],curr+AlfClipC[5],recPicture[hx+1,vy])+Clip3(curr-AlfClipC[5],curr+AlfClipC[5],recPicture[hx-1,vy]))

+AlfCoeffC[6]*recPicture[hx,vy]

sum=(sum+64)>>7

在使用用于亮度滤波器的5×5菱形滤波形状的另一变型中(为了减少应用ALF所需的缓冲行的数量),该变型还使用应用于邻近样本值和中心样本值之间的差的限幅,表4的非线性ALF数据语法被如下修改(对先前呈现的ALF数据语法所做的改变都带有下划线和粗体,并且尽可能省略重复部分):

表5–非线性ALF数据语法的修改部分

亮度滤波器的ALF系数的数量变为13,因此最后的系数滤波器初始化处理变为:

对于filtIdx=0..NumAlfFilters-1的最后的滤波器系数AlfCoeffL[filtIdx][

AlfCoeffL[filtIdx][

位流一致性的要求是AlfCoeffL[filtIdx][j](其中iltIdx=0…NumAlfFilters–1,j=0…11)应在-2^7至2^7-1(包含)范围内,并且AlfCoeffL[filtIdx][

对于“亮度样本的编码树块滤波处理”,滤波器索引子句“亮度样本的ALF转置和滤波器索引的导出处理”的导出处理修改如下(对先前呈现的ALF数据语法所做的改变都带有下划线和粗体,并且尽可能省略重复部分):

滤波器索引子句“亮度样本的ALF转置和滤波器索引的导出处理”的导出处理以位置(xCtb,yCtb)和重建的亮度图片样本阵列recPictureL作为输入、并且filtIdx[x][y]和transposeIdx[x][y](其中x,y=0…CtbSizeY-1)作为输出来调用。

对于滤波后的重建亮度样本alfPictureL[x][y]的导出,当前亮度编码树块内的各个重建亮度样本recPictureL[x][y](其中x,y=0…CtbSizeY-1)被如下滤波:

与由filtIdx[x][y]指定的滤波器相对应的亮度滤波器系数阵列f[j]和亮度滤波器限幅阵列c[j](其中j=0…

f[j]=AlfCoeffL[filtIdx[x][y]][j]

c[j]=AlfClipL[filtIdx[x][y]][j]

根据transposeIdx[x][y]如下导出亮度滤波器系数filterCoeff和滤波器限幅值filterClip:

如果transposeIndex[x][y]=1,

filterCoeff[]=

filterClip[]=

否则,如果transposeIndex[x][y]==2,

filterCoeff[]=

filterClip[]=

否则,如果transposeIndex[x][y]==3,

filterCoeff[]=

filterClip[]=

否则,

filterCoeff[]=

filterClip[]=

给定亮度样本阵列recPicture内的各个相应亮度样本(x,y)的位置(hx,vy)导出如下:

hx=Clip3(0,pic_width_in_luma_samples-1,xCtb+x)

vy=Clip3(0,pic_height_in_luma_samples-1,yCtb+y)

变量curr导出如下:curr=recPictureL[hx,vy]

变量总和导出如下:

sum=filterCoeff[0]*(Clip3(-filterClip[0],filterClip[0],recPictureL[hx,vy+2]-curr)+Clip3(-filterClip[0],filterClip[0],recPictureL[hx,vy-2]-curr))

+filterCoeff[1]*(Clip3(-filterClip[1],filterClip[1],recPictureL[hx+1,vy+1]-curr)+Clip3(-filterClip[1],filterClip[1],recPictureL[hx-1,vy-1]-curr))

+filterCoeff[2]*(Clip3(-filterClip[2],filterClip[2],recPictureL[hx,vy+1]-curr)+Clip3(-filterClip[2],filterClip[2],recPictureL[hx,vy-1]-curr))

+filterCoeff[3]*(Clip3(-filterClip[3],filterClip[3],recPictureL[hx-1,vy+1]-curr)+Clip3(-filterClip[3],filterClip[3],recPictureL[hx+1,vy-1]-curr))

+filterCoeff[4]*(Clip3(-filterClip[4],filterClip[4],recPictureL[hx+2,vy]-curr)+Clip3(-filterClip[4],filterClip[4],recPictureL[hx-2,vy]-curr))

+filterCoeff[5]*(Clip3(-filterClip[5],filterClip[5],recPictureL[hx+1,vy]-curr)+Clip3(-filterClip[5],filterClip[5],recPictureL[hx-1,vy]-curr))

+filterCoeff[6]*recPictureL[hx,vy]

sum=(sum+64)>>7

修改后的滤波重建亮度图像样本alfPictureL[xCtb+x][yCtb+y]导出如下:alfPictureL[xCtb+x][yCtb+y]=Clip3(0,(1<

在不使用邻近和中心之间的差的变型中,使用AlfCoeffL[filtIdx][

在另一变型中,使用7×7菱形形状作为滤波器,但使用图16-a的限幅图案1601作为亮度滤波器,以及使用图16-b的限幅图案1605作为色度滤波器,表4的非线性ALF数据语法被修改如下(对表4的先前呈现的ALF数据语法所做的改变都带有下划线和粗体,并且尽可能省略重复部分):

表6–非线性ALF数据语法的修改部分

AlfClipPatL[]是亮度滤波器的恒定限幅图案表,并且设置如下:AlfClipPatL[]={0,0,1,0,0,0,1,0,0,0,1,1}

AlfClipPatC[]是色度滤波器的恒定限幅图案表,并且设置如下:AlfClipPatC[]={1,1,0,1,1,0}

部分语义修改如下:

“亮度样本的编码树块滤波处理”中的变量总和导出如下:

sum=filterCoeff[0]*(recPictureL[hx,vy+3]-curr+recPicture L[hx,vy-3]-curr)

+filterCoeff[1]*(recPictureL[hx+1,vy+2]-curr)+recPictur eL[hx-1,vy-2]-curr)

+filterCoeff[2]*(Clip3(-filterClip[2],filterClip[2],recPictureL[hx,vy+2]-curr)+Clip3(-filterClip[2],filterClip[2],recPictureL[hx,vy-2]-curr))

+filterCoeff[3]*(recPictureL[hx-1,vy+2]-curr+recPicture L[hx+1,vy-2]-curr)

+filterCoeff[4]*(recPictureL[hx+2,vy+1]-curr+recPicture L[hx-2,vy-1]-curr)

+filterCoeff[5]*(recPictureL[hx+1,vy+1]-curr+recPicture L[hx-1,vy-1]-curr)

+filterCoeff[6]*(Clip3(-filterClip[6],filterClip[6],recPictureL[hx,vy+1]-curr)+Clip3(-filterClip[6],filterClip[6],recPictureL[hx,vy-1]-curr))

+filterCoeff[7]*(recPictureL[hx-1,vy+1]-curr+recPicture L[hx+1,vy-1]-curr)

+filterCoeff[8]*(recPictureL[hx-2,vy+1]-curr+recPicture L[hx+2,vy-1]-curr)

+filterCoeff[9]*(recPictureL[hx+3,vy]-curr)+recPictureL[hx-3,vy]-curr)

+filterCoeff[10]*(Clip3(-filterClip[10],filterClip[10],recPictureL[hx+2,vy]-curr)+Clip3(-filterClip[10],filterClip[10],recPictureL[hx-2,vy]-curr))

+filterCoeff[11]*(Clip3(-filterClip[11],filterClip[11],recPictureL[hx+1,vy]-curr)+Clip3(-filterClip[11],filterClip[11],recPictureL[hx-1,vy]-curr))

+filterCoeff[12]*recPictureL[hx,vy]

sum=(sum+64)>>7

“色度样本的编码树块滤波处理”中的变量总和导出如下:sum=AlfCoeffC[0]*(Clip3(-AlfClipC[0],AlfClipC[0],recPicture[hx,vy+2]-curr)+Clip3(-AlfClipC[0],AlfClipC[0],recPicture[hx,vy-2]-curr))

+AlfCoeffC[1]*(Clip3(-AlfClipC[1],AlfClipC[1],recPicture[hx+1,vy+1]-curr)+Clip3(-AlfClipC[1],AlfClipC[1],recPicture[hx-1,vy-1]-curr))

+AlfCoeffC[2]*(recPicture[hx,vy+1]-curr+recPicture[hx,vy-1]-curr)

+AlfCoeffC[3]*(Clip3(-AlfClipC[3],AlfClipC[3],recPicture[hx-1,vy+1]-curr)+Clip3(-AlfClipC[3],AlfClipC[3],recPicture[hx+1,vy-1]-curr))

+AlfCoeffC[4]*(Clip3(-AlfClipC[4],AlfClipC[4],recPicture[hx+2,vy]-curr)+Clip3(-AlfClipC[4],AlfClipC[4],recPicture[hx-2,vy]-curr))

+AlfCoeffC[5]*(recPicture[hx+1,vy]-curr+recPicture[hx-1,vy]-curr)

+AlfCoeffC[6]*recPicture[hx,vy]

应当理解,根据上述变型以及使用减少的限幅数量的其它变型(即,减少的限幅位置的数量,例如,对于亮度成分,不对当前(中心)样本值“curr”应用限幅以使得不存在“f[12]”、不存在“c[12]”,不存在“filterCoeff[12]”,并且“sum=curr+((sum+64)>>7)”(如等式(17)和图7)和/或不使用邻近样本和中心样本之间的差,可以容易地导出使用其它限幅图案的其它变型。

图8是根据本发明实施例的当图7中的滤波器的非线性部分被禁用时获得的线性滤波器的框图。根据实施例,当ALF有效且非线性ALF无效时,线性ALF用于滤波。在这种实施例的变型中,非线性ALF如由等式(7)定义且如图7所示那样使用,而不是使用如由等式(4)定义且如图6所示那样的线性ALF,线性滤波如由等式(6)定义且如图8所示那样进行。在硬件设计中,允许在非线性滤波器和线性滤波器之间共用公共电路部分。当比较图7和图8时,最小/最大(min/max)操作就被旁路,直接进行到样本值。使用这种方法的另一个优点是,当编码器设计其滤波器时,它不必确保各个滤波器的所有滤波器系数之和为1。这种设计的结果是,除了当前样本之外,针对每个系数添加一个减法,并且去除当前样本的一个乘法。

当限幅参数可取的最大值足够低时,图7的设计还具有节省用于实现乘法的硬件位的优点。

根据实施例,在图5中的片头部中用信号通知的ALF的语法元素不再在片头部中用信号通知,而是在例如图片头部中的帧级别用信号通知。然后,在片头部中存在一个或多个标志/语法元素,以用信号通知在帧级别提供的参数直接用于片中;或者在帧级别提供的参数必须在片级别“刷新”(即更新)。片级别的刷新在片头部中完成。滤波器系数和/或限幅参数的刷新通过编码在帧级别指示的值和在片中使用的值之间的差来完成。根据实施例,片头部中的附加语法元素指示滤波器系数和/或限幅参数的值是否在片头部中编码为差,或者指示是否对它们的值编码。

根据实施例,可以以更细粒度级别(例如针对各个CTU)更新在片级别(在片头部中)定义的滤波器系数和/或限幅参数。指示是否必须进行更新的语法元素以及当语法元素指示必须进行更新时的更新数据被熵编码在片数据中。在一个实施例中,在编码位流中,对于各个CTU,编码片数据包括一个熵编码标志,该标志指示是否必须更新亮度滤波器/限幅参数。如果标志指示应进行更新,则对于各个滤波器系数表,熵编码标志指示是否必须更新滤波器。如果必须更新滤波器,则对系数的偏移(与片中的参考值的差或者与属于同一片的先前编码的CTU中的参考值的差)和/或限幅参数的偏移进行熵编码。

根据实施例,从编码器的角度来看,保持参考图9描述的VTM-3.0的ALF编码处理的主要逻辑步骤。主要变化是为了构建滤波器而提取的统计的性质,以及确定滤波器的方式。代替简单的Wiener滤波计算,迭代优化限幅参数以找到最佳限幅参数和相关联的非线性Wiener滤波器系数。

根据实施例,我们定义了一个限幅参数可取的值的数量的限制N

限幅协方差矩阵E

限幅互协方差矩阵y

因此,当我们需要使用等于c

在步骤904中,代替对协方差和互协方差矩阵的统计进行组合,编码器组合各个限幅协方差和限幅互协方差矩阵的统计(这里也是通过对统计加和来进行组合)。

在步骤905中,用于找到优化的滤波器组(即,优化的合并滤波器)的方法与之前类似。主要区别在于,对于各个测试/比较的滤波器,代替仅计算一个Wiener滤波器而是迭代地优化限幅参数,各个步骤针对特定限幅参数计算Wiener滤波器,以最小化滤波器的输出误差(基于统计矩阵计算)。简单的优化算法是从所有限幅参数值(c

对步骤906、907、908、909、910和911没有实际改变。

在步骤912中,组合统计变化与步骤904中描述的相同。在步骤913中对色度滤波器的确定与针对步骤905描述的滤波器优化相对应。除了步骤918之外,其它步骤不改变,在步骤918中,ALF参数包括针对各个滤波器确定的限幅参数。

注意,在具有“正常”ALF的VTM-3.0中,当编码器从浮点值导出整数滤波器系数时,它首先进行浮点值到定点值的量化:对于各个滤波器系数,它将滤波器系数乘以定点精度舍入到最近的整数值。然后试图通过迭代地调整滤波器系数(以补偿舍入误差)来提高滤波器效率。编码器还必须确保所有滤波器系数的总和等于1(乘以定点精度),并且中心样本的滤波器系数不超过最大值(以确保其在乘法中的使用不会最终使用太多位)。

在本发明的实施例中,其中与邻近样本的差被用作滤波器的输入,这是因为中心系数总是1,因此不需要确保其不超过最大值。此外,不需要总是跟踪所有滤波器系数的总和的值。

这些实施例的优点是提高编码效率。

这些实施例的描述提到亮度和色度成分,但是可以容易地调整适用于其它成分(诸如单个亮度成分或RGB成分)。

在前述实施例或变型中,本发明使得修改图3-a和图4-a中的304和407中的滤波以对滤波器输入使用非线性函数来获得非线性滤波效果。还修改了图2以添加用于用信号通知非线性函数的附加参数的新语法元素(参考图5描述了实施例的示例)。隐含地,修改302和402中的输入滤波参数以进一步包括用于非线性函数的附加参数。最后,修改303和406中的滤波器推导以导出滤波器的非线性函数(即导出“非线性滤波器”)。因此,在大多数情况下,输出图像部分305和408与在VTM-3.0中产生的输出图像部分不同,并且对于等效/可比较输入样本具有更高的质量,以及/或者在输出图像质量和编码效率之间实现更好的折衷。应当理解,在另一实施例/变型中,ALF本身被修改,使得其使用任何前述非线性函数来操作以进行滤波。

本发明实施例的实现

一个或多个前述实施例可以以进行一个或多个前述实施例的方法步骤的编码器或解码器的形式来实现。下面的实施例示出这种实现。

例如,根据前述任何实施例的自适应环路滤波器可以用于由图10中的编码器进行的后滤波9415或由图11中的解码器进行的后滤波9567。

图10示出根据本发明实施例的编码器的框图。编码器由连接的模块表示,各个模块适于例如以由装置的中央处理单元(CPU)执行的编程指令的形式实现根据本发明的一个或多个实施例的实现对图像序列的图像进行编码的至少一个实施例的方法的至少一个相应步骤。

由编码器9400接收数字图像原始序列i0至in 9401作为输入。各个数字图像由样本集合(有时也称为像素(在下文中,它们称为像素))表示。在实现编码处理之后,位流9410由编码器9400输出。位流9410包括诸如片等的多个编码单元或图像部分的数据,各个片包括用于发送用于对片进行编码的编码参数的编码值的片头部和包括编码视频数据的片主体。

由模块9402将输入数字图像i0至in 9401分割成像素块。块与图像部分相对应并且可以是可变大小(例如,4×4、8×8、16×16、32×32、64×64、128×128个像素并且也可以考虑若干矩形块大小)。针对各个输入块选择编码模式。提供了两类编码模式:基于空间预测编码的编码模式(帧内预测)和基于时间预测的编码模式(帧间编码、合并、跳过)。测试可能的编码模式。

模块9403实现帧内预测处理,其中由从要编码的给定块的邻近的像素计算的预测子来预测所述要编码的块。如果选择了帧内编码,则对所选择的帧内预测子的指示以及给定块与其预测子之间的差进行编码以提供残差。

时间预测由运动估计模块9404和运动补偿模块9405实现。首先,从参考图像集合9416中选择参考图像,并且由运动估计模块9404选择参考图像的一部分(也称为参考区域或图像部分,其是与要编码的给定块最接近的区域(在像素值相似度方面最接近))。然后运动补偿模块9405使用所选择的区域预测要编码的块。由运动补偿模块9405计算所选择的参考区域和给定块之间的差(也称为残差块/数据)。使用运动信息(例如,运动矢量)来指示所选择的参考区域。

因此,在这两种情况下(空间和时间预测),当不处于SKIP(跳过)模式时,通过从原始块减去预测子来计算残差。

在由模块9403实现的帧内预测中,预测方向被编码。在由模块9404、9405、9416、9418、9417实现的帧间预测中,至少一个运动矢量或用于识别这种运动矢量的信息(数据)被编码以用于时间预测。如果选择了帧间预测,则对与运动矢量和残差块相关的信息进行编码。为了进一步降低位率,假设运动是均匀的,通过相对于运动矢量预测子的差来编码运动矢量。通过运动矢量预测和编码模块9417从运动矢量场9418获得来自运动信息预测子候选集合的运动矢量预测子。

编码器9400还包括选择模块9406,该选择模块9406用于通过应用诸如率失真准则等的编码成本准则来选择编码模式。为了进一步减少冗余,变换模块9407对残余块应用变换(诸如DCT等),然后所获得的变换数据由量化模块9408进行量化,并由熵编码模块9409进行熵编码。最后,当不处于SKIP模式并且所选择的编码模式需要对残余块进行编码时,将正被编码的当前块的编码残余块插入到位流9410中。

编码器9400还进行编码图像的解码,以生成用于后续图像的运动估计的参考图像(例如,参考图像/图片9416中的参考图像)。这使得接收位流的编码器和解码器能够具有相同的参考帧(例如,使用重建图像或重建图像部分)。逆量化(“去量化”)模块9411进行量化数据的逆量化(“去量化”),然后由逆变换模块9412进行逆变换。帧内预测模块9413使用预测信息来确定针对给定块使用哪个预测子,并且运动补偿模块9414实际上将由模块9412获得的残差添加到从参考图像集合9416获得的参考区域。然后,由模块9415应用后滤波来对像素的重建帧(图像或图像部分)进行滤波,以获得参考图像集合9416的另一参考图像。

图11示出根据本发明实施例的可用于从编码器接收数据的解码器9560的框图。解码器由所连接的模块表示,各个模块适于例如以由装置的CPU执行的编程指令的形式实现由解码器9560实现的方法的相应步骤。

解码器9560接收位流9561,位流9561包括编码单元(例如,对应于图像部分、块或编码单元的数据),各个编码单元由包含与编码参数有关的信息的头部和包含编码视频数据的主体构成。如关于图10所说明的,针对给定图像部分(例如,块或CU)在预定数量的位上对编码视频数据进行熵编码,并且对运动信息(例如,运动矢量预测子的索引)进行编码。所接收的编码视频数据由模块9562进行熵解码。残差数据然后由模块9563去量化,然后由模块9564应用逆变换以获得像素值。

指示编码模式的模式数据也被熵解码,并且基于该模式,对图像数据的编码块(单元/集合/组)进行帧内类型解码或帧间类型解码。在帧内模式的情况下,帧内预测模块9565基于位流中指定的帧内预测模式来确定帧内预测子(例如,可以使用位流中提供的数据来确定帧内预测模式)。如果模式是帧间模式,则从位流提取/获得运动预测信息,以找到(识别)编码器使用的参考区域。例如,运动预测信息包括参考帧索引和运动矢量残差。通过运动矢量解码模块9570将运动矢量预测子添加到运动矢量残差以获得运动矢量。

运动矢量解码模块9570对通过运动预测编码的各个图像部分(例如,当前块或CU)应用运动矢量解码。一旦获得了当前块的运动矢量预测子的索引,则与图像部分(例如,当前块或CU)相关联的运动矢量的实际值可以被解码,并且用于通过模块9566来应用运动补偿。从参考图像集合9568提取/获得由解码运动矢量指示的参考图像部分,使得模块9566可以进行运动补偿。用解码的运动矢量更新运动矢量场数据9571,以用于预测随后解码的运动矢量。

最后得到解码块。在适当的情况下,由后滤波模块9567应用后滤波。最终获得并由解码器9560提供解码视频信号9569。

图12例示可以实现本发明的一个或多个实施例的数据通信系统。数据通信系统包括传输装置(在这种情况下是服务器9201),其可操作以经由数据通信网络9200将数据流的数据包传输至接收装置(在这种情况下是客户端终端9202)。数据通信网络9200可以是广域网(WAN)或局域网(LAN)。这种网络可以是例如无线网络(Wifi/802.11a或b或g)、以太网网络、互联网网络或由若干不同网络组成的混合网络。在本发明的特定实施例中,数据通信系统可以是数字电视广播系统,其中服务器9201将相同的数据内容发送到多个客户端。由服务器9201提供的数据流9204可以由表示视频和音频数据的多媒体数据组成。在本发明的一些实施例中,音频和视频数据流可以分别由服务器9201使用麦克风和照相机来捕获。在一些实施例中,数据流可以存储在服务器9201上或由服务器9201从其它数据提供商接收,或在服务器9201处生成。服务器9201设置有用于对视频和音频流进行编码的编码器,特别是用以提供用于传输的压缩位流,该压缩位流是作为编码器的输入所呈现的数据的更紧凑表示。为了获得更好的传输数据的质量与传输数据的量的比率,可以例如根据高效视频编码(HEVC)格式或H.264/高级视频编码(AVC)格式或多用途视频编码(VVC)格式来压缩视频数据。客户端9202接收所传输的位流,并且解码重建的位流,以在显示装置上再现视频图像和利用扬声器再现音频数据。

尽管在该实施例中考虑了流式传输场景,但将认识到,在本发明的一些实施例中,可以使用例如介质存储装置(诸如光盘等)来进行编码器与解码器之间的数据通信。在本发明的一个或多个实施例中,视频图像可以与表示要应用到图像的重建像素的补偿偏移的数据一同传输,以在最终图像中提供经滤波的像素。

图13示意性地例示被配置为实现本发明的至少一个实施例的处理装置9300。处理装置9300可以是诸如微计算机、工作站、用户终端或轻型便携式装置等的装置。装置/设备9300包括通信总线9313,其连接到:

-表示为CPU的中央处理单元9311,诸如微处理器等;

-表示为ROM的只读存储器9307,其用于存储操作装置9300和/或实现本发明的计算机程序/指令;

-用于存储本发明实施例的方法的可执行代码的表示为RAM的随机存取存储器9312,以及适于记录变量和参数的寄存器,该变量和参数是根据本发明实施例实现对数字图像序列进行编码的方法和/或对位流进行解码的方法所需的;以及

-连接至通信网络9303的通信接口9302,通过该通信接口传输或接收要处理的数字数据。

可选地,设备9300还可以包括以下组件:

-诸如硬盘等的数据存储部件9304,其用于存储实现本发明的一个或多个实施例的方法的计算机程序以及在实现本发明的一个或多个实施例期间所使用或产生的数据;

-用于盘9306(例如存储介质)的盘驱动器9305,该盘驱动器9305适于从盘9306读取数据或将数据写入所述盘9306,或者;

-屏幕9309,其用于借助于键盘9310、触摸屏或任何其它指示/输入装置来显示数据和/或用作与用户交互的图形界面。

设备9300可以连接到诸如数字照相机9320或麦克风9308等的各种外围设备,其各自连接到输入/输出卡(未示出)以向设备9300提供多媒体数据。

通信总线提供设备9300中所包括的或连接到设备9300的各种元素之间的通信和互操作性。总线的表示不是限制性的,并且特别地,中央处理单元9311可操作地将指令直接或者借助于设备9300的其它元素通信到设备9300的任何元素。

盘9306可以由诸如可重写或不可重写的致密盘(CD-ROM)、ZIP盘或存储卡等的任何信息介质代替,并且一般而言,由微计算机或处理器可以进行读取的信息存储部件代替,该盘9306集成到或不集成到设备中、可能可移动并且适于存储其执行使得能够实现根据本发明的对数字图像序列进行编码的方法和/或对位流进行解码的方法的一个或多个程序。

可执行代码可以存储在只读存储器9306中、硬盘9304上或可移动数字介质(诸如,例如如前述的盘9306等)上。根据一变型,程序的可执行代码可以经由接口9302借助于通信网络9303来接收,以在执行之前存储在设备9300的存储部件之一(例如硬盘9304)中。

中央处理单元9311适于控制和指导执行根据本发明的一个或多个程序的指令或软件代码的部分、存储在上述存储部件之一中的指令的执行。在通电时,存储在非易失性存储器中(例如,在硬盘9304、盘9306上或在只读存储器9307中)的一个或多个程序被传递到随机存取存储器9312中(其然后包含一个或多个程序的可执行代码)以及用于存储实现本发明所必需的变量和参数的寄存器。

在该实施例中,设备是使用软件来实现本发明的可编程设备。然而,可替代地,本发明可以以硬件(例如,以专用集成电路或ASIC的形式)来实现。

本发明实施例的实现

本发明实施例的实现

还应理解,根据本发明的其它实施例,在诸如计算机、移动电话(蜂窝电话)、平板或能够向用户提供/显示内容的任何其它类型的装置(例如,显示设备)等的用户终端中提供根据上述实施例的解码器。根据又一实施例,在图像捕获设备中提供根据上述实施例的编码器,该图像捕获设备还包括用于捕获和提供内容以供编码器进行编码的照相机、摄像机或网络照相机(例如,闭路电视或视频监视照相机)。以下参见图14和15提供两个这样的实施例。

图14是例示包括网络照相机9452和客户端设备9454的网络照相机系统9450的图。

网络照相机9452包括摄像单元9456、编码单元9458、通信单元9460和控制单元9462。网络照相机9452和客户端设备9454经由网络9200相互连接以能够彼此通信。摄像单元9456包括镜头和图像传感器(例如,电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)),并捕获对象的图像并基于该图像生成图像数据。该图像可以是静止图像或视频图像。摄像单元还可以包括分别适于缩放或平摇(光学地或数字地)的缩放部件和/或平摇部件。编码单元9458通过使用在第一实施例至第五实施例中说明的所述编码方法来对图像数据进行编码。编码单元9458使用在第一实施例至第五实施例中说明的编码方法中的至少之一。对于其它实例,编码单元9458可以使用在第一实施例至第五实施例中说明的编码方法的组合。

网络照相机9452的通信单元9460将由编码单元9458编码的经编码的图像数据传输至客户端设备9454。

此外,通信单元9460还可以接收来自客户端设备9454的命令。命令包括用于设置用于编码单元9458的编码的参数的命令。控制单元9462根据通信单元9460接收到的命令来控制网络照相机9452中的其它单元。客户端设备9454包括通信单元2114、解码单元2116和控制单元9468。客户端设备9454的通信单元2118可以向网络照相机9452传输命令。此外,客户端设备9454的通信单元2118从网络照相机9452接收经编码的图像数据。解码单元9464通过使用在前述实施例中的一个或多个中说明的所述解码方法来对经编码的图像数据进行解码。对于其它实例,解码单元9464可以使用在前述实施例中说明的解码方法的组合。客户端设备9454的控制单元9468根据由通信单元2114接收的用户操作或命令来控制客户端设备9454中的其它单元。客户端设备9454的控制单元9468还可以控制显示设备9470以显示由解码单元9466解码的图像。

客户端设备9454的控制单元9468还控制显示设备9470以显示用于指定网络照相机9452的参数(例如用于编码单元9458的编码的参数)的值的GUI(图形用户界面)。

客户端设备9454的控制单元9468还可以根据对显示设备9470所显示的GUI的用户操作输入来控制客户端设备9454中的其它单元。客户端设备9454的控制单元9468还可以根据对显示设备9470所显示的GUI的用户操作输入来控制客户端设备9454的通信单元9464,以将用于指定网络照相机9452的参数的值的命令传输至网络照相机9452。

图15是例示智能电话9500的图。智能电话9500包括通信单元9502、解码/编码单元9504、控制单元9506和显示单元9508。通信单元9502经由网络接收经编码的图像数据。解码/编码单元9504对通信单元9502接收到的经编码的图像数据进行解码。解码单元9504通过使用在前述实施例中的一个或多个中说明的所述解码方法来对经编码的图像数据进行解码。解码/编码单元9504还可以使用在前述实施例中说明的编码或解码方法中的至少之一。对于其它实例,解码/编码单元9504可以使用在前述实施例中说明的解码或编码方法的组合。控制单元9506根据通信单元9502接收到的用户操作或命令控制智能电话9500中的其它单元。例如,控制单元9506控制显示单元9508以显示由解码/编码单元9504解码的图像。

智能电话还可以包括用于记录图像或视频的图像记录装置9510(例如,数字照相机和相关联的电路)。这样的所记录图像或视频可以在控制单元9506的指令下由解码/编码单元9504进行编码。智能电话还可以包括适于感测移动装置的定向的传感器9512。这样的传感器可以包括加速度计、陀螺仪、罗盘、全球定位(GPS)单元或类似的位置传感器。这样的传感器2212可以确定智能电话是否改变定向,并且在编码视频流时可以使用这样的信息。

虽然已经参考实施例描述了本发明,但是应当理解,本发明不限于所公开的实施例。本领域技术人员将理解,在不脱离所附权利要求限定的本发明的范围的情况下,可以进行各种改变和修改。本说明书(包括任何所附权利要求、摘要和附图)中公开的所有特征、和/或所公开的任何方法或处理的所有步骤,可以以任何组合进行组合,除了这样的特征和/或步骤中的至少一些相互排斥的组合之外。除非另外明确说明,否则本说明书(包括任何所附权利要求、摘要和附图)中所公开的各个特征可以由用于相同、等同或相似目的的替代特征代替。因此,除非另有明确说明,否则所公开的各个特征仅为通用系列等效或类似特征的一个示例。

还应理解,上述比较、确定、评估、选择、执行、进行或考虑的任何结果(例如,在编码或滤波处理期间作出的选择)可以在位流中的数据(例如,指示结果的标志或信息)中指示或可从位流中的数据确定/推断,使得在处理中可以使用所指示或确定/推断的结果,而不是例如在解码处理期间实际进行所述比较、确定、评估、选择、执行、进行或考虑。

在权利要求中,词语“包括”不排除其它元素或步骤,并且不定冠词“a”或“an”不排除多个。仅仅在相互不同的从属权利要求中记载不同特征的事实并不指示这些特征的组合不能被有利地使用。权利要求中出现的附图标记仅作为说明,并且不应对权利要求的范围产生限定作用。

在前述实施例中,可以以硬件、软件、固件或其任何组合来实现所描述的功能。如果以软件实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质而发送,并且可以由基于硬件的处理单元执行。

计算机可读介质可以包括计算机可读存储介质,其与诸如数据存储介质等的有形介质或者包括例如根据通信协议来促进将计算机程序从一个地方转移到另一个地方的任何介质的通信介质相对应。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质或者(2)诸如信号或载波等的通信介质。数据存储介质可以是可由一个或多个计算机或者一个或多个处理器访问以检索用于实现本发明中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。

作为示例而非限制,这种计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储装置、闪速存储器或可以用于以指令或数据结构的形式存储期望程序代码并可以由计算机访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴线缆、光纤线缆、双绞线、数字用户线(DSL)或无线技术(诸如红外、无线电和微波等)从网站、服务器或其它远程源发送指令,则同轴线缆、光纤线缆、双绞线、DSL或无线技术(诸如红外、无线电和微波等)包括在介质的定义中。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它瞬态介质,而是针对非瞬态的有形存储介质。这里使用的盘(disk)和碟(disc)包括致密盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘和蓝光盘,其中盘通常以磁性方式复制数据,而碟则通过激光以光学方式再现数据。上述的组合也应包括在计算机可读介质的范围内。

指令可以由诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门/逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路等的一个或多个处理器执行。因此,如这里使用的术语“处理器”可以指任何前述结构或适合于实现这里所述技术的任何其它结构。另外,在一些方面,这里描述的功能可以在被配置为编码和解码的专用硬件和/或软件模块内提供,或结合在组合编解码器中。此外,该技术可以在一个或多个电路或逻辑元件中完全实现。

虽然已经参考实施例描述了本发明,但是应当理解,本发明不限于所公开的实施例。为免生疑问,以下声明构成说明的一部分。权利要求跟在声明之后并标记为权利要求。

声明1。一种控制针对图像的一个或多个图像部分的自适应环路滤波器的方法,所述方法包括基于图像部分的第一样本值的多个邻近样本值来控制对第一样本的滤波,其中控制包括使用非线性函数,所述非线性函数具有基于所述邻近样本值中的一个或多个邻近样本值的一个或多个变量以及在自适应参数集中用信号通知的一个或多个滤波器变量的一个或多个变量。

声明2。根据声明1所述的方法,其中所述非线性函数包括一个或多个限幅函数,并且所述一个或多个滤波器变量包括使用所述自适应参数集中提供的信息确定的一个或多个限幅参数。

声明3。根据声明2所述的方法,其中两个或更多个限幅函数共用使用在自适应参数集中用信号通知的信息所确定的相同限幅参数。

声明4。声明2或声明3所述的方法,其中可使用用于从多个限幅参数值中识别限幅参数值的索引来确定与限幅函数一起使用的限幅参数,并且多个限幅参数值之一与基于位深度的最大样本值相对应。适当地,在自适应参数集(Adaptation Parameter Set)中提供索引。

声明5。根据声明2至声明4中任一项所述的方法,其中可使用用于从多个限幅参数值中识别限幅参数值的索引来确定与限幅函数一起使用的限幅参数,并且针对当第一样本值是亮度样本值时以及当第一样本值是色度样本值时这两者,多个限幅参数值包括相同数量的值。适当地,所述多个限幅参数值包括四个(允许/可用/可能)值。适当地,所述多个限幅参数值包括用于所述图像的一个或多个图像部分中的两个或更多个部分的相同数量的(允许/可用/可能)值。适当地,所述多个限幅参数值包括用于所述图像的一个或多个图像部分中的两个或更多个部分的四个(允许/可用/可能)值。适当地,所述多个限幅参数值包括用于所述图像的所有图像部分或图像序列的所有图像部分的相同数量的(允许/可用/可能)值。适当地,多个限幅参数值包括用于图像的所有图像部分或图像序列的所有图像部分的四个(允许/可用/可能)值。

声明6。根据任何前述声明所述的方法,其中用信号通知的一个或多个滤波器变量的数量小于基于所述邻近样本值中的一个或多个样本值的一个或多个变量的数量。适当地,用信号通知的一个或多个滤波器变量的数量是基于邻近样本值中的一个或多个样本值的一个或多个变量的数量的一半。

声明7。根据任何前述声明所述的方法,其中基于一个或多个邻近样本值中的一个或多个邻近样本值的一个或多个变量包括第一样本值与一个或多个邻近样本值中的各个邻近样本值之间的差。

声明8。根据任何前述声明所述的方法,其中非线性函数的输出被用作自适应环路滤波器的输入参数。适当地,来自两个或更多个非线性函数(或限幅函数)的输出被用作自适应环路滤波器的输入参数。

声明9。根据声明8所述的方法,其中:所述自适应环路滤波器使用一个或多个滤波器系数;并且滤波器系数及其相关的滤波器变量可使用邻近样本值的索引来确定。

声明10。根据声明9所述的方法,其中邻近样本值的索引与其在扫描顺序中的位置相关联,并且所述关联可使用转置索引导出。适当地,导出的所述关联对应于图4-b中四种可能的布置之一:409的{0,1,2,3,4,5,6,7,8,9,10,11};410的{9,4,10,8,1,5,11,7,3,0,2,6};411的{0,3,2,1,8,7,6,5,4,9,10,11};或412的{9,8,10,4,3,7,11,5,1,0,2,6}。

声明11。根据任何前述声明所述的方法,其中所述非线性函数包括一个或多个限幅函数,并且所述一个或多个限幅函数中的各个限幅函数返回以下各项之一:max(-b,min(b,d))、min(b,max(-b,d))、max(c-b,min(c+b,n))、min(c+b,max(c-b,n))、max(-b,min(b,d1+d2))、min(b,max(-b,d1+d2))、max(2*c-b,min(2*c+b,n1+n2))或min(2*c+b,max(2*c-b,n1+n2)),其中c是第一样本值,n或n1或n2是邻近样本值,d=n-c,d1=n1-c,d2=n2-c,并且b是限幅参数。

声明12。一种处理图像的一个或多个部分的方法,图像部分具有与其相关联的色度样本和亮度样本,其中所述方法包括基于从位流获得的信息或者第一样本值及其一个或多个邻近样本值,确定以下各项至少之一:是否使用利用根据任何前述说明所述的方法控制的滤波器;启用或禁用所述滤波器的使用;或者用于在滤波第一样本值时与所述滤波器一起使用的滤波参数、滤波器系数或滤波器变量。

声明13。根据声明12所述的方法,其中从位流获得的信息包括针对亮度或色度成分之一提供的标志,该标志指示针对该成分的以下各项至少之一:是否使用利用声明1至10中任一项所述的方法控制的滤波器;或者启用或禁用所述滤波器的使用。

声明14。根据声明12或13所述的方法,其中从位流获得的信息包括针对一个或多个图像部分提供的标志,该标志指示针对一个或多个图像部分的以下各项至少之一:是否使用利用声明1至10中任一项所述的方法控制的滤波器;或者启用或禁用所述滤波器的使用。

声明15。一种对一个或多个图像进行编码的方法,所述方法包括针对图像的一个或多个部分,根据声明1至10中任一项所述的方法控制滤波器,或者根据声明12至14中任一项所述的方法进行处理。

声明16。根据声明15所述的方法还包括:接收图像;对所接收的图像进行编码并生成位流;以及处理编码图像,其中处理包括根据声明1至11中任一项的方法进行控制,或者根据声明12至14中任一项的方法进行处理。

声明17。当从属于声明12至14中任一项时,根据声明15所述的方法还包括在位流中提供所述信息。

声明18。当从属于声明11时根据声明17所述的方法,其中:非线性函数的变量还包括一个或多个滤波器系数,其取决于一个或多个邻近样本值的索引;以及提供所述信息包括在位流中提供用于确定一个或多个限幅参数的索引以及用于导出邻近样本值的索引与其按扫描顺序的位置之间的关联的一个或多个转置索引。适当地,导出的关联对应于图4-b中四种可能的布置之一:409的{0,1,2,3,4,5,6,7,8,9,10,11};410的{9,4,10,8,1,5,11,7,3,0,2,6};411的{0,3,2,1,8,7,6,5,4,9,10,11};或412的{9,8,10,4,3,7,11,5,1,0,2,6}。

声明19。根据声明16至18中任一项所述的方法还包括:从多个可用函数中选择非线性函数或者一个或多个限幅函数;在处理编码图像时使用所选择的函数;以及在位流中提供用于识别所选择的函数的信息。

声明20。一种对一个或多个图像进行解码的方法,所述方法包括针对图像的一个或多个部分,根据声明1至11中任一项所述的方法控制滤波器,或者根据声明12至14中任一项所述的方法进行处理。

声明21。根据声明20所述的方法还包括:接收位流;解码来自所接收的位流的信息以获得图像;以及处理所获得的图像,其中处理包括根据声明1至11中任一项所述的方法进行控制,或者根据声明12至14中任一项所述的方法进行处理。

声明22。当从属于声明12至14中任一项时,根据声明21所述的方法还包括从位流获得所述信息。

声明23。根据声明21所述的当从属于声明11时的

方法,其中:非线性函数的变量还包括一个或多个滤波器系数,其取决于一个或多个邻近样本值的索引;并且该方法还包括从该位流获得用于确定一个或多个限幅参数的索引以及用于导出邻近样本值的索引与其按扫描顺序的位置之间的关联的一个或多个转置索引。适当地,导出的关联对应于图4-b中四种可能的布置之一:409的{0,1,2,3,4,5,6,7,8,9,10,11};410的{9,4,10,8,1,5,11,7,3,0,2,6};411的{0,3,2,1,8,7,6,5,4,9,10,11};或412的{9,8,10,4,3,7,11,5,1,0,2,6}。

声明24。根据声明21至23中任一项所述的方法还包括:从位流获得用于从多个可用函数识别非线性函数或者一个或多个限幅函数的信息;以及在处理所获得的图像时使用所识别的函数。

声明25。一种装置,包括以下各项中的一个或多个:控制器,其被配置为进行根据声明1至11或12至14中任一项所述的方法;编码器,其被配置为进行根据声明15至19中任一项所述的方法;或者解码器,其被配置为进行根据声明20至24中任一项所述的方法。

声明26。一种程序,所述程序在计算机或处理器上运行时使所述计算机或处理器执行根据声明1至11、12至14、15至19或20至24中任一项所述的方法。

声明27。一种计算机可读存储介质,其存储根据声明26所述的计算机程序。

声明28。一种信号,其承载用于使用根据声明15至19中任一项所述的方法编码并由位流表示的图像的信息数据集,所述图像包括可重建样本集合,各个可重建样本具有样本值,其中所述信息数据集包括用于基于第一可重建样本的邻近样本的样本值来控制对第一可重建样本的滤波的控制数据。

相关技术
  • 具有非线性限幅的自适应环路滤波(ALF)
  • 用于非线性自适应环路滤波器的限幅电平
技术分类

06120113170111