用于对像素块进行去块滤波的方法和装置与流程

文档序号:20922497发布日期:2020-05-29 14:20阅读:335来源:国知局
本发明涉及用于在图像编码或解码的背景下对重建图像进行去块的方法和装置。本发明更特别地涉及在去块环内滤波中使用的控制参数。
背景技术
::图1示出根据本发明实施例的可用于从编码器接收数据的解码器100的框图。解码器由连接的模块表示,各模块被适配为例如以cpu(这里未示出)所要执行的编程指令的形式实现解码器100所实现的方法的相应步骤。解码器100接收包括编码后的编码单元的位流101,每一个编码单元包括包含与编码参数有关的信息的头部和包含编码视频数据的本体。所述编码视频数据是熵编码的,并且针对给定块,将运动矢量预测结果的索引编码在预定数量的位上。所接收到的编码视频数据由模块102进行熵解码。然后,残差数据由模块103进行反量化,然后由模块104应用反向变换以获得像素值。此时,应当阐明,变换单元或变换块和编码单元或编码块是可松散互换的,并且在该块与像素的样本有关时同样如此。在上面,残差数据由参考样本和预测样本之间的差异组成,所述样本属于一个分量。通过扩展,变换块或单元通常与样本相关联,而编码块或单元可以指样本或像素。实际上,像素具有数个分量,例如,y、u和v。在所有情况下,对像素块进行处理包括对各相应的样本块应用预定处理。还对表示编码模式的模式数据进行熵解码,并且基于该模式,对图像数据的编码块进行intra(帧内)型解码或inter(帧间)型解码。在intra模式的情况下,intra预测结果由帧内反向预测模块105基于在位流中指定的帧内预测模式来确定。在模式是inter的情况下,从位流中提取运动预测信息以查找编码器所使用的参考区域。运动预测信息包括参考帧索引和运动矢量残差。运动矢量解码模块110将运动矢量预测结果与运动矢量残差相加以获得运动矢量。运动矢量解码模块110对通过运动预测编码后的各当前块应用运动矢量解码。一旦获得了针对当前块的运动矢量预测结果的索引,模块106可以解码并使用与当前块相关联的运动矢量的实际值以应用反向运动补偿。从参考图像108中提取由解码后的运动矢量表示的参考图像部分,以应用反向运动补偿106。将运动矢量场数据111更新为解码后的运动矢量,以用于后续解码后的运动矢量的反向预测。最后,获得解码块。后滤波模块107应用后滤波。在各种可能已知的后滤波技术中,hevc例如采用分别被称为“样本自适应偏移”和“去块滤波”的两个工具,后者在这里受到关注并且在下文进行说明。解码器100最终提供解码视频信号109。应当注意,通常,在诸如后滤波模块107或者反量化模块103或反向变换模块104等的编码器中也存在一些模块。在解码期间,编码单元的解码通常基于先前解码的内容以进行预测。解码后的内容无权访问原始非编码的编码单元。这意味着编码器需要有权访问这些编码单元的解码版本。结果,在对编码单元进行编码之后,编码器进行编码单元的解码以存储要用于下一编码单元的编码的编码单元的解码版本。总之,编码器包括解码器及其相应模块。去块滤波的目标是减少通常由于变换编码而产生的结块伪像。由于以块为单位对变换系数进行量化,因此在图1的步骤103和104中发生不完全重建。这导致变换和/或预测块的边界处的不连续,并且除了降低编码效率以外,还被认为是最分散注意的伪像其中之一。在hevc及其名为jvet的当前正在研究的候选继任者中,去块滤波由三个主要步骤组成。在第一步骤中,通常基于边界的一侧是否被intra编码或者该边界上的运动不连续,在两个块之间的垂直或水平边界处发生滤波类型判断。在第二步骤中,将梯度与阈值进行比较,以判断是否对像素集合进行滤波,并选择要使用的滤波器。在第三步骤中,一旦选择了滤波器,通常通过对所述像素的值的线性组合以及对围绕所述值的线性组合结果的范围的限制,来进行所述像素的实际滤波。为了控制去块滤波处理,定义控制参数集合,并将这些控制参数用在该处理中。这些控制参数包括边界强度(bs)、控制参数β和限幅控制参数tc。特别地,将限幅控制参数tc用在条件其中之一中以在针对亮度分量的强去块滤波和弱去块滤波之间判断。限幅控制参数tc还用在用以判断是否要进行滤波的条件、以及到滤波操作的范围限幅的界限的计算中。如此看来,特别是在使用位深度大于8的图像的情况下,限幅控制参数tc的定义看起来过于粗略,并且导致限幅滤波时的范围过大。技术实现要素:本发明是为了解决上述担忧中的一个或多个而设计的。本发明涉及具有限幅控制参数tc的改进定义和/或限幅控制参数tc的改进使用的去块滤波方法。根据本发明的第一方面,提供一种利用视频解码器或编码器对从位流解码得到的图像中的像素块进行滤波的方法,所述方法包括:基于所述块的量化参数和像素值的位深度来获得第一限幅控制参数(tc)值;将位于所述块的边缘的一侧的第一像素的第一值和位于所述边缘的另一侧的第二像素的第二值之间的差与从所述第一限幅控制参数值导出的预定阈值进行比较;以及基于所述比较的结果来判断是否对所述第一像素应用强滤波;其中,所述强滤波包括:对第一像素值进行滤波,使得滤波后的第一像素值与所述第一像素值相差不超过基于所述第一限幅控制参数(tc)的范围值,其中与位深度的连续值相对应的两个范围值之间的比严格低于2。根据实施例,所述强滤波包括:对所述第一像素值进行滤波,使得滤波后的第一像素值与所述第一像素值相差不超过第二参数值,所述第二参数值严格小于所述第一限幅控制参数值的两倍。根据实施例,所述第一像素和所述第二像素这两者都与所述块中的所述边缘相邻。根据实施例,在所述第一值和所述第二值之间的差等于或大于所述预定阈值的情况下,对所述第一像素应用弱滤波,使得滤波后的第一像素值和所述第一像素值之间的滤波差等于或小于所述第一限幅控制参数值的一半。根据实施例,在所述第一限幅控制参数值是tc的情况下,所述预定阈值是(5*tc+1)>>1,并且所述第二参数值是tc/n,其中n是大于或等于2的整数。根据实施例,所述强滤波包括:对所述第一像素值进行滤波,使得滤波后的第一像素值与所述第一像素值相差不大于第二参数值,所述第二参数值等于或小于所述第一限幅控制参数值。根据实施例,所述弱滤波包括:对所述第一像素值进行滤波,使得滤波后的第一像素值与所述第一像素值相差不大于第二参数值,所述第二参数值严格小于所述第一限幅控制参数值。根据实施例,对色度值的滤波包括:对所述第一像素值进行滤波,使得滤波后的第一像素值与所述第一像素值相差不大于第二参数值,所述第二参数值严格小于所述第一限幅控制参数值。根据实施例,所述第二参数值依赖于所述像素块中所使用的空间频率变换。根据实施例,获得所述第一限幅控制参数(tc)包括:获得与最大位深度maxbitdepth相对应的第二限幅控制参数(tc’);以及通过将所述第二限幅控制参数除以针对位深度bitdepth的严格低于2(maxbitdepth-butdepth)的比例因子来获得所述第一限幅控制参数(tc)。根据实施例,所述第一限幅控制参数tc是通过以下给出的:tc=(tc’+r(bitdepth))>>(maxbitdepth-bitdepth)/2;其中,r(bitdepth)是取整函数。根据实施例,所述第一限幅控制参数tc是通过以下给出的:tc=(tc’*g(bitdepth)+r)>>n;其中,r是取整的正整数值并且n是正整数值,以及其中,对于一些位深度值,g(bitdepth+1)<2*g(bitdepth)。根据实施例,所述函数g是在表中给出的。根据实施例,位深度的值包括在8和12之间。根据实施例,第一限幅控制参数(tcy,tccb,tccr)是针对所述像素块的各分量所获得的。根据本发明的另一方面,提供一种用于利用视频解码器或编码器对从位流解码得到的图像中的像素块进行滤波的方法,所述方法包括:基于所述块的量化参数和像素值的位深度来获得第一限幅控制参数(tc)值;将位于所述块的边缘的一侧的第一像素的第一值和位于所述边缘的另一侧的第二像素的第二值之间的差与从所述第一限幅控制参数值导出的预定阈值进行比较;以及基于所述比较的结果来判断是否对所述第一像素应用滤波,其中,获得所述第一限幅控制参数(tc)包括:获得与最大位深度maxbitdepth相对应的第二限幅控制参数(tc’);以及通过将所述第二限幅控制参数除以针对位深度bitdepth的严格低于2(maxbitdepth-bitdepth)的比例因子来获得所述第一限幅控制参数(tc),以及其中,第一限幅控制参数(tcy,tccb,tccr)是针对所述像素块的各分量而获得的。根据实施例,所述第一限幅控制参数(tcy,tccb,tccr)是通过以下给出的:-tcy=(tc′y*gy(bitdepthy)+ry)>>ny,-tccb=(tc′cb*gcb(bitdepthchroma)+rcb)>>ncb,-tccr=(tc′cr*gcr(bitdepthchroma)+rcr)>>ncr;其中,ry、rcb、rcr是取整的正整数值,并且ny、ncb、ncr是正整数值,以及其中,对于一些位深度值,-gy(bitdepthy+1)<2*gy(bitdepthy),-gcb(bitdepthchroma+1)<2*gcb(bitdepthchroma)-gcr(bitdepthchroma+1)<2*gcr(bitdepthchrama)。根据实施例,rcb、rcr具有相同的值,以及其中,ncb、ncr具有相同的值。根据实施例,所述第一限幅控制参数是基于应用于所述比例因子的比例偏移而获得的。根据本发明的另一方面,提供一种用于利用视频解码器或编码器对从位流解码得到的图像中的像素块进行滤波的方法,所述方法包括:基于所述块的量化参数和像素值的位深度来获得第一限幅控制参数(tc)值;将位于所述块的边缘的一侧的第一像素的第一值和位于所述边缘的另一侧的第二像素的第二值之间的差与从所述第一限幅控制参数值导出的预定阈值进行比较;以及基于所述比较的结果来判断是否对所述第一像素应用滤波,其中,获得所述第一限幅控制参数(tc)包括:获得与最大位深度maxbitdepth相对应的第二限幅控制参数(tc’);以及通过将所述第二限幅控制参数除以针对位深度bitdepth的严格低于2(maxbitdepth-butdepth)的比例因子来获得所述第一限幅控制参数(tc),以及其中,所述第一限幅控制参数是基于应用于所述比例因子的比例偏移而获得的。根据实施例,所述第一限幅控制参数tc是通过以下给出的:-tc=(tctable[qp+tcoffset]*(g(bitdepthy)+scaleoffset)+r)>>n;其中,r是取整的正整数值,n是正整数值,qp是所述块的所述量化参数,g(butdepthy)是所述比例因子,scaleoffset是所述比例偏移,tcoffset和scaleoffset是带符号的整数。根据实施例,tcoffset和scaleoffset是在所述位流中发送的。根据实施例,tcoffset和scaleoffset是在所述位流中按不同级别表示的。根据实施例,所述第一限幅控制参数是基于在所述位流中发送的比例因子而获得的。根据本发明的另一方面,提供一种用于利用视频解码器或编码器对从位流解码得到的图像中的像素块进行滤波的方法,所述方法包括:基于所述块的量化参数和像素值的位深度来获得第一限幅控制参数(tc)值;将位于所述块的边缘的一侧的第一像素的第一值和位于所述边缘的另一侧的第二像素的第二值之间的差与从所述第一限幅控制参数值导出的预定阈值进行比较;以及基于所述比较的结果来判断是否对所述第一像素应用滤波,其中,获得所述第一限幅控制参数(tc)包括:获得与最大位深度maxbitdepth相对应的第二限幅控制参数(tc’);以及通过将所述第二限幅控制参数除以针对位深度bitdepth的严格低于2(maxbitdepth-bitdepth)的比例因子来获得所述第一限幅控制参数(tc),以及其中,所述第一限幅控制参数是基于在所述位流中发送的比例因子而获得的。根据实施例,所述第一限幅控制参数tc是通过以下给出的:-tc=(tctable[qp+tcoffset]*tcscale+r)>>n;其中,r是取整的正整数值,n是正整数值,qp是所述块的所述量化参数,tcscale是所述比例因子。根据实施例,所述第一限幅控制参数tc是通过以下给出的:-tc=(tctable[qp]*tcscale+r)>>n;其中,r是取整的正整数值,n是正整数值,qp是所述块的所述量化参数,tcscale是所述比例因子。根据实施例,第一限幅控制参数(tcy,tccb,tccr)是针对所述像素块的各分量而获得的。根据实施例,所述第二限幅控制参数(tc’)是从多个表之中的表获得的。根据本发明的另一方面,提供一种用于利用视频解码器或编码器对从位流解码得到的图像中的像素块进行滤波的方法,所述方法包括:基于所述块的量化参数和像素值的位深度来获得第一限幅控制参数(tc)值;将位于所述块的边缘的一侧的第一像素的第一值和位于所述边缘的另一侧的第二像素的第二值之间的差与从所述第一限幅控制参数值导出的预定阈值进行比较;以及基于所述比较的结果来判断是否对所述第一像素应用滤波,其中,获得所述第一限幅控制参数(tc)包括:获得与最大位深度maxbitdepth相对应的第二限幅控制参数(tc’);以及通过将所述第二限幅控制参数除以针对位深度bitdepth的严格低于2(maxbitdepth-bitdepth)的比例因子来获得所述第一限幅控制参数(tc),以及其中,所述第二限幅控制参数(tc’)是从多个表之中的表获得的。根据实施例,所述多个表之中的表是基于分量的类型而确定的。根据实施例,所述多个表之中的表是基于图像的类型而确定的。根据实施例,所述多个表之中的表是基于所述位流中的索引而确定的。根据本发明的另一方面,提供一种计算机程序产品,用于可编程设备,所述计算机程序产品包括指令序列,所述指令序列用于在被加载到所述可编程设备中并且由所述可编程设备执行时实现根据本发明所述的方法。根据本发明的另一方面,提供一种计算机可读存储介质,其存储用于实现根据本发明的方法的计算机程序的指令。根据本发明的另一方面,提供一种装置,其包括处理器,所述处理器被配置用于执行根据本发明的方法的所有步骤。根据本发明的方法的至少一部分可以通过计算机来实现。因此,本发明可以采用以下形式:完全以硬件实现的实施例;完全以(包括固件、常驻软件、微代码等的)软件实现的实施例;或者组合这里通常可全部称为“电路”、“模块”或“系统”的软件和硬件方面的实施例。此外,本发明可以采用以介质中嵌入有计算机可用程序代码的表现的任何有形介质中体现的计算机程序产品的形式。由于本发明可以以软件来实现,因此本发明可以体现为计算机可读代码以提供至可编程设备的任何适当载体介质上。有形的非暂时性载体介质可以包括诸如软盘、cd-rom、硬盘驱动器、磁带装置或固态存储器装置等的存储介质。暂时性载体介质可以包括诸如电气信号、电子信号、光学信号、声学信号、磁信号或者例如微波或rf信号的电磁信号等的信号。附图说明现在将仅通过示例的方式并且参考以下附图来说明本发明的实施例,其中:图1示出具有去块滤波的解码器的框图;图2示出两个4×4像素块p和q之间的边界的去块滤波;图3示出根据本发明实施例的条件减少限幅范围滤波方法的实施例;图4是用于实现本发明的一个或多个实施例的计算装置的示意框图。图5是仅具有与tc控制参数有关的步骤的去块滤波的简化表示。具体实施方式去块滤波涉及对两个像素块的边界附近的样本值(通过扩展像素值)进行滤波。像素块可以是编码块或变换块。编码块是用作编码时的基本实体的像素块,而变换块是用作量化所用的基本实体的样本块。在一些实施例中,编码块可被分割成数个变换块以进行量化。边界在当前解码块和位于其左方的先前解码块之间可以是垂直的。边界在当前解码块和位于其上方的先前解码块之间也可以是水平的。各样本通常是y、u和v这三个值的三元组,其中y是样本的亮度,u和v是样本的两个色度。因此,块可被视为形成值的三个块,一个块用于各分量即y、u和v。在第一步骤中,根据一组标准来确定用于边界强度的控制参数bs。这通常以8×8块为单位进行,尽管去块环路滤波中的其它处理中的一些处理沿着所述8×8块的边缘一次在4组列或行上发生。在根据intra编码模式对位于边界的两侧的两个块至少之一进行编码时,bs的值被判断为“2”。intra编码模式是根据当前图像内的像素值来确定用于对当前块进行编码的块预测结果的编码模式。在满足以下条件中的任一个的情况下,bs的值被判断为“1”:·两个块至少之一具有非零编码残差系数,并且边界是变换边界。变换边界是两个变换单元之间的边界。·两个块的相应空间运动矢量分量之间的绝对差以整数像素为单位大于或等于1。·两个块的运动补偿预测是指不同的参考图片,或者运动矢量的数量针对两个块而不同。在不满足这些条件的情况下,bs的值被判断为零。要注意,边界强度不依赖于实际像素值,而是依赖于如编码模式、残差存在或运动信息那样的编码信息。在边界强度被判断为零的情况下,在该边界上不发生滤波。本发明不使用边界强度,并且可以应用于边界强度的定义与本文的说明相比被修改的实施例。一旦确定了边界强度bs,必须确定控制参数β和tc。这些控制参数是针对像素的亮度值所确定的,并且在具有不同结果的情况下,是针对像素的色度值所确定的。β和tc的确定是基于以下的参数:·已确定的边界强度bs,·在帧或条带级别确定的一些偏移值,这意味着这些值是在编码时定义的并被发现为位流中的参数,即slice_beta_offset_div2和slice_tc_offset_div2,·由当前边界分离并被表示为qpp和qpq的两个块p和q的量化参数,·像素的亮度分量的位深度即bitdepthy,这意味着用于对像素的亮度值进行编码的位数。在第一步骤中,根据以下来计算值qpl:qpl=((qpq+qpp+1)>>1)其中:x>>y意味着整数值x向右移位了y位、即除以2y,其结果仍是整数。要注意,qpl表示两个区块的量化参数的平均值。从值qpl,根据以下来针对β计算第一个q值:q=clip3(0,51,qpl+(slice_beta_offset_div2<<1))其中,在z≤x的情况下,clip3(x,y,z)=x;在z≥x的情况下,clip3(x,y,z)=y;在x<z<y的情况下,clip3(x,y,z)=z;以及x<<y意味着整数值x向左移位了y位、即乘以2y,其结果仍是整数。要注意,函数clip3是范围[x,y]中的值z的限幅,这意味着该第一个q值包括在0和51之间。从值qpl,根据以下来针对tc计算第二个q值:q=clip3(0,53,qpl+2*(bs-1)+(slice_tc_offset_div2<<1))该第二个q值代表两个块的量化参数的平均值加上偏移值。要注意,第二个q值包括在0和53之间。在下表中,分别使用第一个q值和第二个q值以获得β’和tc’:q0123456789101112131415161718β′0000000000000000678tc′0000000000000000001q19202122232425262728293031323334353637β′9101112131415161718202224262830323436tc′1111111122223333444q38394041424344454647484950515253β′3840424446485052545658606264--tc′5566789101113141618202224在下文,可以使用表述“tctable”来指代上述表中将q链接至tc’的部分。最后,根据以下来从β’和tc’获得控制参数β和tc:β=β′*(1<<(bitdepthy-8))tc=tc′*(1<<(bitdepthy-8))对于8位的位深度,得到tc=tc’。对于具有值8的位深度,表列值tc’对应于特别是用在前面所述的限幅操作中和滤波标准中的限幅控制参数tc。在位深度增大时,tc对应于tc’乘以随着位深度增大的乘数。根据该表达式,乘数对应于要注意,上述的β值和tc值是针对亮度分量给出的。对于色度分量,同样利用针对色度定义的量化参数以及色度分量的位深度bitdepthc来计算β值和tc值。结果,可以使用bitdepth代替bitdepthy来将所提出的方法推广到除亮度以外的其它分量。控制参数bs是在各边界的级别定义的,因为控制参数bs的计算取决于边界周围的两个块的特定编码模式和参数。控制参数β和tc是在变换单元的级别定义的,因为残差的存在(通常由以hevc的四叉树组织的编码块标志表示)可以针对各变换单元而变化。同样,量化参数可以在两个相邻的编码单元之间变化。图2示出两个4×4像素块p和q之间的边界的去块滤波。像素块p和q被标识为像素集合200。按照惯例,像素pij在块p中,块p在包含像素qii的块q之前已被编码。“i”表示列并且“j”表示块中的像素的行索引。p在q的上方的相反水平边界以与明显适应性相同的方式工作。在步骤210中,检查像素集合的边界是否在pu(预测单元)或tu(变换单元)边界上。该测试当在pu或tu边界上时为真,并且当不在这样的边界上时为假。该步骤在这里是仅在pu或tu边界上调用算法。步骤211检查如以上确定的边界强度bs是否为非空。如果边界强度bs为非空,则对边界进行滤波。在步骤212中将测量各种梯度强度。此外,请注意,为了简单起见,由于p侧的qp可能变化,因此控制参数β和tc的确定被视为在这里进行,因为这些参数取决于边界上的准确位置。测量这些梯度的总和并与β进行比较。对于hevc以及对于迄今为止的jvet,这对应于以下的表达式:|p20-2p10+p00|+|p23-2p13+p03|+|q20-2q10+q00|+|q23-2q13+q03|<β如果该总和足够低,则认为各侧的块足够容易受到明显的结块伪像影响,并且去块继续进行步骤213,否则像素集合被视为不需要滤波,并且其去块在步骤218中结束。步骤213开始对像素的1d子集的迭代:如图2所示对于垂直边界为线并且同样对于水平边界为列。因此,通过将索引i设置为0来在该步骤中选择第一个所述1d子集。注意,省略了与本发明无关的数个操作(基于进一步将梯度与β进行比较或者编码参数(例如,ipcm或无损)来进一步检查对什么进行滤波)。步骤214判断所谓的强滤波还是弱滤波是否将被应用于1d子集。为此,测量边界的各侧的梯度。对于hevc以及对于迄今为止的jvet,使用与β的相应比较作为决定的标准:|p2i-2p1i+p0i|+|q2i-2q1i+q0i|<β/8|p3i-p0i|+|q0i-q3i|<β/4更大相关性的另一标准依赖于tc:|p0i-q0i|<((1+5*tc)>>1)通过基于限幅控制参数tc将梯度与阈值进行比较来进行强滤波或弱滤波的选择。由于tc是整数,因此上述计算进行向整数的舍入,例如,对于tc=3,结果为8,并且对于tc=4,结果为10。如果满足所有这些标准,则在步骤216中可以对1d子集应用强滤波,否则在步骤215中对1d子集应用弱滤波。在步骤217中检查该1d子集是否是要滤波的最后一个1d子集。对于hevc以及对于迄今为止的jvet,1d子集的数量是4。如果是这样的话,则已对集合中的所有像素进行了滤波,并且在步骤218中滤波停止。否则,在步骤219中通过使i递增来选择下一1d子集。要注意,图2的整个处理仅应用于亮度分量。对于色度分量,为了使得能够进行滤波而检查的唯一标准是bs是否严格大于1。现在将说明针对亮度分量的强滤波。对于像素p2i~p0i和q0i~q2i,计算自身与其各侧的两个邻居(总共为4个)的线性组合。如果这些邻居其中之一不属于集合200,则省略该邻居,并相应地修改线性组合的权重。在未列出所有这些邻居(这些邻居对于qji是对称的)的情况下,这样得到针对hevc(和迄今为止的jvet止)的以下计算:p2i=clip3(p2i-2*tc,p2i+2*tc,(2*p3i+3*p2i+p1i+p0i+q0i+4)>>3)p1i=clip3(p1i-2*tc,p1i+2*tc,(p2i+p1i+p0i+q0i+2)>>2)p0i=clip3(p0i-2*tc,p0i+2*tc,(p2i+2*p1i+2p0i+2*q0i+q1i+4)>>3)现在将说明针对亮度分量的弱滤波。完整1d子集的滤波以如下为条件:δ=(9*(q0i-p0i)-3*(q1i-p1i)+8)>>4δ<10*tc如果满足该条件,则可以按照如下进行针对q0i和p0i的滤波:δ=clip3(-tc,tc,δ)p0i=clip1y(p0i+δ)q0i=clip1y(q0i-δ)其中:cliply(val)是clip3(miny,maxy,val)的等同物,并且miny和maxy分别是最小样本值和最大样本值,即对于8位内容为2和255。然后,如果(根据如取决于β的与本发明无关的条件)要对p1i进行滤波,则以下适用:δp=clip3(-(tc>>1),tc>>1,(((p2i+p0i+1)>>1)-p1i+δ)>>1)p1i′=clip1y(p1i+δp)同样,如果要对q1i进行滤波,则以下适用:δq=clip3(-(tc>>1),tc>>1,(((q2i+q0i+1)>>1)-q1i-δ)>>1)q1i′=clip1y(q1i+δq)关于色度分量的滤波,当bs>1时,块p和q至少之一被编码为intra。在这种情况下,简化后的滤波遵守以下:δ=clip3(-tc,tc,((((q0i-p0i)<<2)+p1i-q1i+4)>>3))p0i′=clip1c(p0i+δ)q0i′=clip1c(q0i-δ)限幅控制参数tc的导出和使用遭受许多低效率或不准确,特别是其从位深度的导出过于粗略,并且至少在jvet中,滤波输出中的允许变化的范围过大,尤其是当考虑到由于jvet中的改进而已缩小的给定量化器步长的量化误差分布时。实际上,所应用的限幅可被视为最大范围,其中超过该范围,则不确定哪部分是由于量化而产生的结块伪像、以及诸如边缘等的实际细节。根据本发明的第一实施例,不修改限幅控制参数tc的导出。仍然如现有技术那样基于块的量化参数来确定限幅控制参数tc。关于用于在像素的强滤波和弱滤波之间判断的条件,主要条件是表达式:|p0i-q0i|<((1+5*tc)>>1)仍使用且不修改该条件,这意味着将位于边界的一侧的像素值和位于边界的另一侧的像素之间的差与从限幅控制参数tc导出的阈值进行比较。已经知道,通过以下表达式给出在限制滤波的程度的强滤波中使用的限幅:p2i=clip3(p2i-2*tc,f2i+2*tc,(2*p3i+3*p2i+p1i+p0i+q0i+4)>>3)p1i=clip3(p1i-2*tc,p1i+2*tc,(p2i+p1i+p0i+q0i+2)>>2)p0i=clip3(p0i-2*tc,p0i+2*tc,(p2i+2*p1i+2p0i+2*q0i+q1i+4)>>3)这意味着,对于所有像素,滤波后的像素值与原始像素值相差不超过2*tc。根据该第一实施例,限幅范围减小到[-tc,tc],这意味着滤波后的像素值与原始像素值相差不超过tc。这可以通过将强滤波的限幅表达式中的限幅控制参数tc替换为第二限幅控制参数tc2来实现,该第二限幅控制参数tc2小于或等于tc/2。尽管这是优选实施例,但在限幅范围变得严格低于2*tc时,结果立即得到改善。这意味着本发明覆盖了用于强滤波的限幅范围的减小,以使该范围严格低于2*tc,并且在该减小也应用于弱滤波和色度时,同样严格低于用于这两者的tc。因此,可以定义例如与用于限幅的tc/2相对应的第二限幅控制参数tc2,因为tc已在实验中被发现太强。在本实施例中,第二限幅参数tc2仅用在干预强滤波和/或弱滤波的限幅操作中。该第二限幅参数不用在作出滤波的决定和判断要应用哪个滤波(强还是弱)时所涉及的标准的计算中。在以下所述的其它实施例中,第一限幅参数tc的计算得到改进,同时影响标准的计算和限幅操作。在其它实施例中,将以下这两个方面组合,即影响标准和限幅操作的第一限幅参数tc的改进计算、以及仅在限幅操作中使用的基于改进的第一限幅参数tc的第二限幅参数tc2的计算。在一些实施例中,tc2=tc/2。在一些实施例中,tc2=tc/n,其中n是大于或等于2的整数。在一些实施例中,tc2=tc/2n,其中n是大于或等于1的整数。在一些实施例中,tc2由以tc值作为索引的表给出。例如,tc2=tctable2[tc],其中对于所有的tc值,tctable2[tc]小于或等于tc。在一些实施例中,第二限幅控制参数tc2也用于弱滤波的限幅。即,弱滤波的限幅表达式δ=clip3(-tc,tc,δ)被替换为δ=clip3(-tc2,tc2,δ)。同样,可以按照如下修改这些表达式:δp=clip3(-(tc2>>1),tc2>>1,(((p2i+p0i+1)>>1)p1i+δ)>>1)δq=clip3(-(tc2>>1),tc2>>1,(((q2i+q0i+1)>>1)-q1i-δ)>>1)在进一步的实施例中,所使用的第二裁切控制参数tc2是自适应的,并且可能按ctb、条带、区块或图像级别表示。该表示级别可以是任意的,即以样本数或ctb声明,并且对于亮度和色度可以是独立的。自适应性可依赖于值n的表示,或作为向着可用限幅范围修改器的集合中的偏移(例如,1/2、3/4、1/4、...)。在又一实施例中,第二控制参数tc2依赖于块中所使用的空间频率变换。在jvet中,例如,这些变换可分离成垂直1d的遍(pass)和另一水平1d的遍。与针对jvet的情况相同,针对各遍的可用变换的集合可以根据编码模式、所表示的信息以及是水平的遍还是垂直的遍而不同。例如,dst-iv、dst-vii、dct-ii和dct-iv是这里正规使用的已知变换函数。因此,第二控制参数tc2可以取决于是否是垂直或水平边界、因而在各遍中使用了哪些变换。前面的实施例涉及减少用于对亮度分量进行滤波的范围限幅。在一些实施例中,还可以减少在对色度分量进行滤波时使用的范围限幅。通常,如下的限幅表达式δ=clip3(-tc,tc,((((q0i-p0i)<<2)+p1i-q1i+4)>>3));变为以下:δ=clip3(-tc2,tc2,((((q0i-p0i)<<2)+p1i-q1i+4)>>3))。在一些实施例中,在滤波中使用减少的限幅范围可以以一些标准为条件。所使用的标准可以基于特定编码特性,诸如特别是自适应环路滤波器(alf)等的一些其它环内滤波器的启动等。所使用的标准也可以基于对特定编码工具(特别是重叠块运动补偿或参考样本自适应滤波)的p块和q块中的任一或这两者的使用。在一些实施例中,该标准可以基于所使用的编解码器的种类,例如正常范围可用于hevc,而减少的范围可用于jvet。自适应环路滤波器(alf)是形状和系数可以在整个图像中调整的自适应卷积滤波器(其中,其通知是隐含的(有无预测))。当前在jvet中,形状通常是向侧面转动45°的正方形,但可以是十字形,并且一维上的长度在3~9内变化。alf在其设计中经历了巨大的变化,但其普遍特性是自适应卷积及其在去块滤波(和sao)之后的位置。重叠块运动补偿是在块的边界上使运动信息预测更加连续的运动信息所用的概率预测模型。参考样本自适应滤波是jvet中所使用的用以对在intra编码模式预测中生成预测结果块时所使用的参考样本进行滤波的技术。可以在位流中表示所使用的实际滤波器。该技术使得能够在jvet中生成的预测中实现改进的连续性。如dst、dct那样的自适应多变换是可用于将块值变换成之后要经过量化的变换系数的块的变换。图5示出本发明的修改所影响的第一限幅控制参数tc的各种用途。如此,图5是仅具有与所述参数的使用有关的步骤的去块滤波的简化视图。因此,步骤501首先例如通过将qpl链接到先前提出的q的表达式来确定量化器步长。然后,步骤502例如通过对表进行查找来推论出tc’参数。然后,步骤503例如通过应用本发明的缩放方式或包括现有技术的其它方式来根据位深度导出最终tc参数。然后,步骤504根据tc选择适当的滤波器。在hevc中,使用表达式|p0i-q0i|<((1+5*tc)>>1)在所谓的弱亮度滤波器和强亮度滤波器之间进行选择。显然,这样的滤波器的数量和类型、它们的定义、以及采用tc的规则和阈值可能会有所不同。这里,该步骤的目的是说明类似于特征检测的用途,以区别于在滤波期间进行实际限幅的其它操作。因此,同样地,步骤505检查是否应该应用所选择的滤波器。再次地,在hevc中,这包括计算上述δ值并将该值与阈值10*tc进行比较,由此说明另一特征检测。如果跳过了滤波,则在步骤509中处理结束。否则,在一些实施例中,在可选步骤506中计算第二限幅控制参数tc2。然后,步骤507应用所选择的滤波器,并且在步骤508中根据tc或tc2在正滤波的样本周围的变化、限幅操作方面限制输出样本值。既然确定了最终输出样本值,在步骤509中去块停止。图3示出如上所述的条件减少限幅范围滤波方法的实施例。图3是图2的更新版本,步骤310~318分别与步骤210~218相同,而新的步骤320和321实现了本发明的各方面。步骤320检查是否应根据如上所述的标准修改限幅范围。然后,步骤321修改所述限幅范围。在优选实施例中,步骤321包括缩小限幅操作所使用的tc值(即,产生较低值)。通常,这就是根据限幅控制参数tc计算第二限幅控制参数tc2的步骤。然后,该第二限幅控制参数tc2用在包括亮度分量的强滤波的滤波时的限幅操作的一部分或全部中。已经看到,限幅控制参数tc是根据2(bitdepth-8)从表列tc’值导出的。这在实验中已被发现过强。根据实验,中间结果给出最好结果。此外,通过针对位深度8定义限幅控制参数并针对更大的位深度乘以该限幅控制参数,如此得到的值对于位深度的这些更大值缺少精度。本实施例是用于减少与现有技术有关的限幅范围的替代方法。改进限幅参数tc的计算的本实施例可以与定义限幅操作所用的第二限幅参数tc2的第一实施例组合。根据本实施例,表列值tc’对应于最大设想位深度(在本典型实施例中为maxbitdepth=16),并且通过将该表列值除以除数来获得实际限幅控制参数,以得到用于位深度的更低值的限幅控制参数tc的最终值。通过针对bitdepth的实际位深度、保持除数严格低于2(maxbitdepth-bitdepth),确保与位深度的两个连续值相对应的tc的两个值之间的乘数严格低于2、且有利地大于1。这对应于使与位深度的两个连续值相对应的两个范围限幅值之间的比严格低于2。通过针对最大位深度定义表列值tc’,其值的扩展更大,并且这允许定义tc’的值,并因此以更好的精度定义限幅控制参数tc的值。通过保持tc和tc’之间的该乘数严格低于2(bitdepth-8),确保限幅范围与该乘数等于2(bitdepth-8)的现有技术相比实际减小。修改该公式的实施例可以包括以下修改。当前,用以获得表列值tc’的限幅控制参数tc的表达式涉及将表中的值乘以2(bitdepth-β)。在以10位或者甚至12位工作时,这表现出显著的量化,例如多个项可以是4,然后以后的项可以是8,而无任何中间值。这里,优选实施例是例如通过对所述表进行建模来提高表中的精度,然后通过将由模型提供的值预先乘以常数来提高精度。其示例是:tctable[q]=8*e(0.113*q-2.64)其中:该表被建模为给定q值和目标tc’值之间的指数定律,并且预乘数是8。这样得到以下的表:q0123456789101112131415161718tc′0000011111112223334q19202122232425262728293031323334353637tc′4566789101213151618212326293337q38394041424344454647484950515253tc′4146525865738292103115129144162181203227与hevc相比,其元素的精度已从5位提高到8位:这是存储大小的合理变化。另外,请注意,这仅仅是起点:可以在视觉检查下优化模型或特定点。最后,为了获得tc的最终值,可以使用以下的表达式:tc=(tc′+r(bitdepth))>>f(bitdepth),或tc=(tc′*g(bitdepth)+r)>>n,其中,条件为:g(bitdepth+1)<2*g(bitdepth)。在优选实施例中,函数r、f和g为:f(bitdepth)=(16-bitdepth)/2g(bitdepthy)=16*2(b*bitdepth+c),其中:b=0.857并且c=-7.44r(bitdepthy)=r=0应当注意,如至少针对8和11之间的位深度而言g(bitdepth+1)<2g(bitdepth)这一观察所预期的,b<1。函数g被称为比例函数。类似于tctable,理想地预先计算随后的用于g的表达式并将该表达式存储在表中。由于表所需的存储是实现成本的经典问题,因此n通常是也由tctable表示的、g的表的大小与精度之间的折衷。因此,并且为了示例起见,如果为了精度目的将使tctable中的值加倍,则n将增加1。上述的tctable和n=6(这里允许g的表中的值适合8位)的一个示例是:bitdepth(位深度)89101112g11213363115要注意,使用函数g的表达式对应于将tc’除以2n,然后乘以g,其中通过r进行潜在附加校正。条件g(bitdepth+1)<2*g(bitdepth)确保了与位深度的两个连续值相对应的tc的值之间的乘数严格低于2(bitdepth-8);结果,强滤波器的限幅范围严格低于2*tc。要注意,使用函数f的第一替代方案(其中函数r为空)对于位深度=16得出tc=tc’。并且,tc和tc’之间的乘数对应于与2(bitdepth-8-1)相对应的2(16-bitdepth)/2。这对应于使与位深度的两个连续值相对应的两个范围限幅值之间的比严格低于2。第二实施例使限幅范围减小,这提高了限幅控制参数的值(特别是对于大于8的位深度值)的精度。限幅控制参数tc的该改进的计算可用于亮度分量的滤波和色度分量的滤波这两者。然而,看起来结块伪像在分量之间并且特别是在亮度分量和色度分量之间可能不同。色度分量与亮度分量相比,在即使使用相同的量化参数被量化时,也整体上更平滑并且表现得不同。此外,该标准允许不利用具有相同位深度的像素来对亮度分量和色度分量进行编码的情形。由于所有这些原因,针对各分量有利地调整限幅参数tc的确定。采用先前的表达式,得出限幅参数tc的改进计算:tc=(tc′*g(bitdepth)+r)>>n,可以根据以下表达式来定义针对各分量的区分后的限幅参数的计算:tcy=(tc′y*gy(bitdepthy)+ry)>>ny,tccb=(tc′cb*gcb(bitdepthchroma)+rcb)>>ncb,tccr=(tc′cr*gcr(bftdepthchroma)+rcr)>>ncr;其中:y是指亮度分量,cb和cr是指色度分量。在这些表达式中,两个色度分量的位深度已被视为等于bitdepthchroma,如果不是这种情况,则可以调整这些表达式。根据以下示例在表中定义g函数:bitdepth89101112gy916284986gcb12203559100gcr13213658101这些值tc′y、tc′cb、tc′cr是如前面所述基于量化参数q导出的。将该表称为tctable以区别于上述的g表。有利地,使用被称为tcoffset的偏移来细化tc′y的确定,其中tc′y变为如下:tc′y=tctable[qpy+tcoffset]对于色度分量,表达式将为如下:tc′cb=tctable[qpy+tcoffset+qpoffsetcb]tc′cr=tctable[qpy+tcoffset+qpoffsetcr]偏移值tcoffset、qpoffsetcb和qpoffsetcr通常由编码器在位流中直接地或间接地向解码器表示。通过针对各分量区分限幅参数的确定,可以考虑所观察到的在这些组件的与去块有关的行为方面的差异。在一些实施例中,变量rcb、rcr具有相同的值rchroma,以及具有值nchroma.gcb和gcr的ncb和ncr可以相同或者仍不同。可以基于不论与g表还是要相乘的操作数的大小有关的大小考虑来定义移位值ny、ncb、ncr或nchroma。通常针对5~16个位以及g表的值来对tc’进行编码。16×16的相乘成本高。移位参数值的选择使得能够将相乘缩减到5位×5位的相乘。r参数的可能值是2n-1和0,这样得到与向最近整数的舍入运算或分别与截尾相对应的移位运算。已经看到,在实施例中,可以基于以下表达式来计算限幅参数:tc=(tc′*g(bitdepth)+r)>>n其可以改写为如下:tc=(tctable[qp+tcoffset]*g(bitdepth)+r)>>n以使tcoffset可见。本实施例为编码器提供用以使用tcoffset参数来调整限幅参数的方式。尽管该调整是有用的,但这局限于tctable中的值,因为tcoffset仅允许修改tctable中所使用的索引。可以通过引入要应用于g表的比例参数来给出更精细的自适应可能性。根据实施例,限幅参数的计算变为如下:tc=(tctable[qp+tcoffset]*(g(bitdepth)+scaleoffset)+r)>>n比例偏移是按照如下使用由hevc标准定义为se(v)的带符号的指数golomb码进行编码后的带符号的整数。码编号句法元素值00112-1324-2536-3k(-1)k+1ceil(k÷2)类似于tcoffset,通常在位流中例如按sps、pps或条带级别表示比例偏移。在其它实施例中,比例函数g可被替换为由编码器明确地在位流中表示的比例参数tcscale。该表示例如可以按sps、pps或条带级别进行。有利地,该比例参数由编码器定义,并且在根据本发明所生成的位流中表示,以供由兼容解码器至少基于相应分量的像素的位深度来使用。可以根据以下来进行限幅参数tc的计算:tc=(tctable[qp+tcoffset]*tcscale+r)>>n在一些实施例中,两个偏移量参数(通常为参数tcoffset和参数scaleoffset或tcscale)不是按同一级别表示的。一个偏移参数可以按sps或pps级别表示,而另一偏移参数可以按条带级别表示。在一些实施例中,比例偏移或比例参数替换参数tcoffset。在这些实施例中,未表示参数tcoffset或者参数tcoffset被假定为0。计算变为以下其中之一:tc=(tctable[qp]*(g(bitdepth)+scaleoffset)+r)>>n或tc=(tctable[qp]*tcscale+r)>>n。在一些实施例中,按分量调整比例偏移或比例参数。限幅参数tc的计算可以变为如下:tcy=(tc′y*(gy(bitdepthy)+scaleoffsety)+ry)>>ny;tccb=(tc′cb*(gcb(bitdepthchroma)+scaleoffsetcb)+rcb)>>ncb,tccr=(tc′cr*(gcr(bitdepthchroma)+scaleoffsetcr)+rcr)>>ncr;要注意,比例偏移针对分量的调整独立于比例函数g自身针对分量的调整。例如,限幅参数tc的计算在一些实施例中可以如下:tcy=(tc′y*(g(bitdepthy)+scaleoffsety)+r)>>n,tccb=(tc′cb*(g(bitdepthchroma)+scaleoffsetcb)+r)>>n,tccr=(tc′cr*(g(bitdepthchroma)+scaleoffsetcr)+r)>>n;本领域技术人员理解,可以组合不同的实施例,并且可以采用不同的自适应水平。在一些实施例中,不同的表tctable可用于自适应。例如通过将表指派至分量,可以隐含地表示这些表。表专用于亮度,表专用于色度,或者表专用于各色度分量。在一些实施例中,不同的表可以隐含地链接至图像的类型,这意味着一个表用于帧内编码的类型i的图像,一个表用于预测的类型p的图像,并且一个表用于双向的类型b的图像。这可应用于tctable或比例表g。在一些实施例中,不同的表可以隐含地链接至特征或工具(特别是上述的自适应环路滤波器)的激活。在一些实施例中,可以预先定义不同表的集合。将要用于亮度和/或用于色度的表在位流中表示为集合中的表示该表的索引。该索引可被编码为固定长度码,例如在表的数量为8个的情况下为三位。也可以使用值0具有最短代码的无符号的指数golomb码来对该索引进行编码。在一些实施例中,不传输偏移tcoffset和scaleoffset。也不存在比例函数g。简单地通过定义不同的tctable(一个tctable针对各分量、或者至少一个tctable针对亮度并且一个tctable针对色度)来进行按分量的调整。限幅参数tc的计算在一个示例中可以变为:tcy=(tctabley[qpy]<<(bitdepthy-8))tccb=(tctablecb[qpcb]<<(bitdepthcb-8))tccr=(tctablecr[qpcr]<<(bitdepthcr-8))在实施例中,两个色度表tctablecb和tctablecr可以是相同的,即由单个tctablechroma表示。图4是用于实现本发明的一个或多个实施例的计算装置4.0的示意框图。计算装置4.0可以是诸如微计算机、工作站或轻型便携式装置等的装置。计算装置4.0包括通信总线,其中该通信总线连接至以下组件:-表示为cpu的诸如微处理器等的中央处理单元4.1;-表示为ram的随机存取存储器4.2,用于存储本发明实施例的方法的可执行代码以及寄存器,其中这些寄存器被适配为记录实现根据本发明实施例的方法所需的变量和参数,该ram4.2的存储器容量例如可以利用连接至扩展端口的可选ram来扩展;-表示为rom的只读存储器4.3,用于存储实现本发明实施例所用的计算机程序;-网络接口4.4,其通常连接至发送或接收要处理的数字数据所经由的通信网络。网络接口4.4可以是单个网络接口、或者由不同的网络接口的集合(例如,有线接口和无线接口或者不同种类的有线接口或无线接口)构成。在cpu4.1中运行的软件应用程序的控制下,将数据包写入网络接口以供发送或者从网络接口读取数据包以供接收;-用户接口4.5,其可用于从用户接收输入或向用户显示信息;-表示为hd的硬盘4.6,其可被设置为大容量存储装置;-i/o模块4.7,其可用于相对于诸如视频源或显示器等的外部装置进行数据的接收/发送。可执行代码可以存储在只读存储器4.3中、硬盘4.6上或者例如盘等的可移除数字介质上。根据变形例,程序的可执行代码可以在执行之前利用通信网络经由网络接口4.4来接收,从而存储在通信装置4.0的诸如硬盘4.6等的存储部件其中之一内。中央处理单元4.1被适配为控制和引导根据本发明实施例的一个或多个程序的指令或软件代码的一部分的执行,其中这些指令存储在上述存储部件其中之一内。在通电之后,cpu4.1例如能够在从程序rom4.3或硬盘(hd)4.6加载了来自主ram存储器4.2的与软件应用程序有关的指令之后,执行这些指令。这种软件应用程序在由cpu4.1执行的情况下,使得进行本发明的方法的各步骤。本发明的算法的任何步骤可以通过利用可编程计算机器(诸如pc(“个人计算机”)、dsp(“数字信号处理器”)或微控制器等)执行一组指令或程序来以软件实现;或者通过机器或者专用组件(诸如fpga(现场可编程门阵列)或asic(专用集成电路)等)以硬件实现。尽管以上已经参考具体实施例说明了本发明,但本发明不限于这些具体实施例,并且对于本领域技术人员而言存在于本发明的范围内的变形是显而易见的。在参考仅以示例方式给出且并不意图限制本发明范围的前述例示实施例的情况下,许多其它修改和改变对本领域普通技术人员是不言自明的,其中所述范围仅由所附权利要求书来确定。特别地,在适当情况下,可以互换来自不同实施例的不同特征。在权利要求书中,词语“包括”没有排除其它元件或步骤,并且不定冠词“a”或“an”没有排除多个。在相互不同的从属权利要求中陈述不同的特征的仅有事实并不表明不能有利地使用这些特征的组合。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1