一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

编解码方法、装置及其设备与流程

2022-06-17 20:17:07 来源:中国专利 TAG:


1.本技术涉及编解码技术领域,尤其是涉及一种编解码方法、装置及其设备。


背景技术:

2.为了达到节约空间的目的,视频图像都是经过编码后才传输的,完整的视频编码方法可以包括预测、变换、量化、熵编码、滤波等过程。其中,预测编码可以包括帧内编码和帧间编码。进一步的,帧间编码是利用视频时间域的相关性,使用邻近已编码图像的像素预测当前像素,以达到有效去除视频时域冗余的目的。帧内编码是指利用视频空间域的相关性,使用当前帧图像的已经编码块的像素预测当前像素,以达到去除视频空域冗余的目的。
3.常用的滤波技术包括dbf(deblocking filter,去块滤波)技术、sao(sample adaptiveoffset,样本自适应补偿)技术和alf(adaptive loop filter,自适应环路滤波)技术。dbf技术用于去除分块编码产生的块边界效应。sao技术通过基于样本的像素值和周围块的梯度值进行分类,对于每个类别的像素值加上不同的补偿值,使得重建图像更接近于原始图像。alf技术通过维纳滤波器,对重建图像进行滤波,使得重建图像更接近于原始图像。
4.但是,dbf、sao和alf等滤波技术,均是基于当前像素点的像素值进行分类,或者,基于当前像素点的像素值和周围像素点的像素值的关系进行分类,然后,再基于不同类别进行不同滤波操作,其可能会出现过滤波现象,即,滤波后的像素值远大于或远小于滤波前的像素值,也远大于或远小于原始像素值,存在滤波效果不佳,编码性能比较差等问题。


技术实现要素:

5.本技术提供一种编解码方法、装置及其设备,能够提高编码性能。
6.本技术提供一种编解码方法,所述方法包括:
7.若当前块中的当前像素点满足增强调整模式的启用条件,则基于所述当前像素点的原始像素值和所述当前像素点的周围像素点的原始像素值确定所述当前像素点的梯度值;基于所述当前像素点的梯度值和所述当前像素点的原始像素值,确定所述当前像素点的调整像素值。
8.本技术提供一种解码装置,所述解码装置包括:
9.存储器,其经配置以存储视频数据;
10.解码器,其经配置以实现:
11.若当前块中的当前像素点满足增强调整模式的启用条件,则基于所述当前像素点的原始像素值和所述当前像素点的周围像素点的原始像素值确定所述当前像素点的梯度值;基于所述当前像素点的梯度值和所述当前像素点的原始像素值,确定所述当前像素点的调整像素值。
12.本技术提供一种编码装置,所述编码装置包括:
13.存储器,其经配置以存储视频数据;
14.编码器,其经配置以实现:
15.若当前块中的当前像素点满足增强调整模式的启用条件,则基于所述当前像素点的原始像素值和所述当前像素点的周围像素点的原始像素值确定所述当前像素点的梯度值;基于所述当前像素点的梯度值和所述当前像素点的原始像素值,确定所述当前像素点的调整像素值。
16.本技术提供一种解码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
17.所述处理器用于执行机器可执行指令,以实现如下步骤:
18.若当前块中的当前像素点满足增强调整模式的启用条件,则基于所述当前像素点的原始像素值和所述当前像素点的周围像素点的原始像素值确定所述当前像素点的梯度值;基于所述当前像素点的梯度值和所述当前像素点的原始像素值,确定所述当前像素点的调整像素值。
19.本技术提供一种编码端设备,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;
20.所述处理器用于执行机器可执行指令,以实现如下步骤:
21.若当前块中的当前像素点满足增强调整模式的启用条件,则基于所述当前像素点的原始像素值和所述当前像素点的周围像素点的原始像素值确定所述当前像素点的梯度值;基于所述当前像素点的梯度值和所述当前像素点的原始像素值,确定所述当前像素点的调整像素值。
22.由以上技术方案可见,本技术实施例中,若当前块中的当前像素点满足增强调整模式的启用条件,则可以基于当前像素点的梯度值和当前像素点的原始像素值,确定当前像素点的调整像素值,也就是说,基于当前像素点的梯度值对当前像素点的原始像素值进行调整,使当前像素点的调整像素值更接近原始像素,从而提高编码性能。在滤波过程中,如dbf、sao和alf等,若当前块中的当前像素点满足增强调整模式的启用条件,在基于当前像素点的梯度值对当前像素点的原始像素值进行调整后,可以提高滤波效果,提高编码性能。
附图说明
23.图1是本技术一种实施方式中的编解码框架的示意图;
24.图2a和图2b本技术一种实施方式中的块划分的示意图;
25.图3是本技术一种实施方式中的去块滤波的示意图;
26.图4是本技术一种实施方式中的编解码方法的流程图;
27.图5a是本技术一种实施方式中的解码端设备的硬件结构图;
28.图5b是本技术一种实施方式中的编码端设备的硬件结构图。
具体实施方式
29.在本技术实施例中使用的术语仅仅是出于描述特定实施例的目的,而非限制本技术。本技术实施例和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指
包含一个或多个相关联的列出项目的任何或所有可能组合。还应当理解,尽管在本技术实施例可能采用术语第一、第二、第三等来描述各种信息,但是,这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在......时”,或“当......时”,或“响应于确定”。
30.为了使本领域技术人员更好地理解本技术的技术方案,下面对技术术语进行简单说明。
31.视频编码框架:参见图1所示,可以使用视频编码框架实现本技术实施例的编码端处理流程,视频解码框架的示意图可以与图1类似,在此不再重复赘述,可以使用视频解码框架实现本技术实施例的解码端处理流程。在视频编码框架和视频解码框架中,可以包括但不限于:预测(如帧内预测和帧间预测等)、运动估计/运动补偿、参考图像缓冲器、环内滤波、重建、变换、量化、反变换、反量化、熵编码器等模块。在编码端,通过这些模块之间的配合,实现编码端的处理流程,在解码端,通过这些模块之间的配合,实现解码端的处理流程。
32.环路滤波用于减少图像块效应或图像效果不佳等问题,能够改善图像质量,可以包括dbf、sao和alf等三种滤波器,dbf为去块滤波,用于去除分块编码产生的块边界效应。sao为样本自适应补偿滤波,用于通过基于样本的像素值和周围块的梯度值进行分类,对于每个类别的像素值加上不同的补偿值,使得重建图像更接近于原始图像。alf为自适应环路滤波,即通过维纳滤波器,对重建图像进行滤波,使得重建图像更接近于原始图像。
33.示例性的,在视频编解码过程中,预测过程可以包括帧内预测和帧间预测,帧内预测是考虑到相邻块之间存在很强的空域相关性,利用周围已经重建的像素作为参考像素,对当前未编码块进行预测,只需要对残差值进行后续编码处理,而不是对原始值进行编码,从而有效去除空域上的冗余,大大提高压缩效率。帧间预测是利用视频时间域的相关性,使用邻近已编码图像的像素预测当前图像的像素,达到去除视频时域冗余的目的。
34.示例性的,在视频编解码过程中,变换是指将以空间域中像素形式描述的图像转换至变换域的图像,并以变换系数的形式来表示。由于绝大多数图像都含有较多平坦区域和缓慢变化的区域,因此,适当的变换过程,可以使图像能量在空间域的分散分布,转换为在变换域的相对集中分布,从而能够去除信号之间的频域相关性,配合量化过程,可以有效压缩码流。
35.示例性的,熵编码是指按照信息熵的原理进行无损编码的方式,处于视频压缩的最后一个处理模块,将一系列用来表示视频序列的元素符号,转变为一个用来传输或存储的二进制码流,输入的符号可能包括量化后的变换系数,运动矢量信息,预测模式信息,变换量化相关语法等,熵编码模块的输出数据即原始视频压缩后的最终码流。熵编码可以有效地去除这些视频元素符号的统计冗余,是保证视频编码压缩效率的重要工具之一。
36.示例性的,环路滤波用于减少图像的块效应或者图像效果不佳等问题,用来改善图像质量,可以包括但不限于dbf、sao和alf等。例如,在视频图像中,图像块的边界并不连续,压缩重建图像具有明显的块效应,严重影响图像质量,可以采用dbf技术对边界进行去块滤波。针对所有预测单元(prediction unit,pu)和变换单元(transform unit,tu)的边界进行去块滤波,去块滤波包括滤波决策和滤波操作,在滤波决策过程中,获取边界强度
(如不滤波、弱滤波或强滤波)和滤波参数。在滤波操作过程中,根据边界强度和滤波参数对像素进行修正,如对边界进行滤波时,可以是强滤波或弱滤波,采用不同长度的抽头进行滤波。
37.sao滤波:用于消除振铃效应。振铃效应是由于高频交流系数的量化失真,解码后会在边缘周围产生波纹的现象,变换块尺寸越大振铃效应越明显。sao的基本原理是对重构曲线中的波峰像素加上负值进行补偿,波谷像素加上正值进行补偿。sao是以ctu(coding treeunit,编码树单元)为基本单位,可以包括两大类补偿形式:边界补偿(edge offset,简称eo)和边带补偿(band offset,简称bo),此外还引入了参数融合技术。
38.alf滤波:可以根据原始信号和失真信号计算得到均方意义下的最优滤波器,即维纳滤波器。alf的滤波器可以包括但不限于:7*7的菱形滤波器或5*5的菱形滤波器、7*7十字形加3*3方形的中心对称滤波器,或7*7十字形加5*5方形的中心对称滤波器。
39.帧内预测:利用视频空间域的相关性,使用当前块的已编码块进行预测,以达到去除视频空域冗余的目的。帧内预测规定了多种预测模式,每种预测模式对应一种纹理方向(dc模式除外),例如,若图像纹理呈现水平状排布,则水平预测模式可以更好的预测图像信息。
40.帧间预测:基于视频时域的相关性,由于视频序列包含有较强的时域相关性,使用邻近已编码图像像素预测当前图像的像素,可以达到有效去除视频时域冗余的目的。视频编码标准帧间预测部分都采用了基于块的运动补偿技术,主要原理是为当前图像的每一个像素块在之前已编码图像中寻找一个最佳匹配块,该过程称为运动估计(motion estimation,me)。
41.运动矢量(motion vector,mv):在帧间预测中,可以使用运动矢量表示当前帧图像的当前块与参考帧图像的参考块之间的相对位移。每个划分的块都有相应的运动矢量传送到解码端,如果对每个块的运动矢量进行独立编码和传输,特别是小尺寸的大量块,则消耗很多比特。为降低用于编码运动矢量的比特数,可以利用相邻块之间的空间相关性,根据相邻已编码块的运动矢量对当前待编码块的运动矢量进行预测,然后对预测差进行编码,这样可以有效降低表示运动矢量的比特数。在对当前块的运动矢量进行编码时,可以先使用相邻已编码块的运动矢量预测当前块的运动矢量,然后对该运动矢量的预测值(mvp,motion vectorprediction)与运动矢量的真正估值之间的差值(mvd,motion vector difference)进行编码。
42.运动信息(motion information):由于运动矢量表示当前块与某个参考块之间的位置偏移,为了准确的获取指向块的信息,除了运动矢量,还需要参考帧图像的索引信息来表示当前块使用哪个参考帧图像。在视频编码技术中,对于当前帧图像,通常可以建立一个参考帧图像列表,参考帧图像索引信息则表示当前块采用了参考帧图像列表中的第几个参考帧图像。此外,很多编码技术还支持多个参考图像列表,因此,还可以使用一个索引值来表示使用了哪一个参考图像列表,这个索引值可以称为参考方向。综上所述,在视频编码技术中,可以将运动矢量、参考帧索引、参考方向等与运动相关的信息统称为运动信息。
43.标志位编码(flag coding):在视频编码中,存在很多模式。对于某个块来说,可能采用其中一种模式。为了表示采用何种模式,每个块需要通过编码对应的标志位来进行标记。比如说,针对编码端来说,通过编码端决策,确定该标志位的值,然后对标志位的值进行
编码传递到解码端。针对解码端来说,通过解析标志位的值,确定对应模式是否启用。
44.在标志位的编码过程中,可以通过高层语法实现标志位的编码,高层语法可以用于表示是否允许启用某种模式,即通过高层语法允许启用某种模式,或者禁止启用某种模式。
45.示例性的,高层语法可以是序列参数集级的高层语法,或者图像参数集级的高层语法,或者片头级的高层语法,或者图像头级的高层语法,对此高层语法不做限制。
46.针对序列参数集(sps,sequence parameter set)的高层语法,存在确定整个视频序列(即多帧视频图像)中是否允许某些模式(工具/方法)开关的标志位。例如,若标志位为取值a(如数值1等),则视频序列可以允许启用该标志位对应的模式;或者,若标志位为取值b(如数值0等),则视频序列可以不允许启用该标志位对应的模式。
47.针对图像参数集(pps,picture parameter set)的高层语法,存在确定某图片(如视频图像)中是否允许某些模式(工具/方法)开关的标志位。若标志位为取值a,则视频图像允许启用该标志位对应的模式;若标志位为取值b,则视频图像不允许启用该标志位对应的模式。
48.针对图像头(picture header)的高层语法,存在某图像头中是否允许某些模式(工具/方法)开关的标志位。若标志位为取值a,则图像头允许启用该标志位对应的模式;若标志位为取值b,则图像头不允许启用该标志位对应的模式。示例性的,图像头保存的是仅针对当前图像的共同信息,例如,在图像包含多个slice时,多个slice可以通用图像头中的信息。
49.针对片头(slice header)的高层语法,存在某个slice中是否允许某些模式(工具/方法)开关的标志位。若标志位为取值a,则slice允许启用该标志位对应的模式;若标志位为取值b,则slice不允许启用该标志位对应的模式。示例性的,一帧图像可以包含1个slice或多个slice,针对片头(slice header)的高层语法,是针对每个slice配置的高层语法。
50.高层语法:用于表示是否允许启用某些工具(方法),即通过高层语法允许启用某些工具(方法),或者禁止启用某些工具(方法)。示例性的,参见上述介绍,高层语法可以是序列参数集级的高层语法,或者图像参数集级的高层语法,或者片头级的高层语法,或者图像头级的高层语法,对此高层语法不做限制,只要能够实现上述功能即可。
51.率失真原则(rate-distortion optimized):评价编码效率的有两大指标:码率和psnr(peaksignal to noise ratio,峰值信噪比),比特流越小,则压缩率越大,psnr越大,则重建图像质量越好,在模式选择时,判别公式实质上也就是对二者的综合评价。例如,模式对应的代价:j(mode)=d λ*r,其中,d表示distortion(失真),通常可以使用sse指标来进行衡量,sse是指重建图像块与源图像的差值的均方和;λ是拉格朗日乘子,r就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。在模式选择时,若使用rdo原则去对编码模式做比较决策,通常可以保证编码性能最佳。
52.块划分技术:一个编码树单元(coding tree unit,简称ctu)使用四叉树递归划分成cu。在叶子节点cu级确定是否使用帧内编码或者帧间编码。cu可以划分成两个或四个预测单元(prediction unit,简称pu),同一个pu内使用相同的预测信息。在预测完成后得到残差信息后,一个cu可四叉划分成多个变换单元(transform units,简称tu)。例如,本技术
中的当前图像块即为一个pu。还可以对块划分技术进行变化,比如说,使用一种混合了二叉树/三叉树/四叉树的划分结构取代原先划分模式,取消cu,pu,tu的概念的区分,支持cu的更灵活的划分方式。cu可以是正方形也可以是矩形划分。ctu首先进行四叉树的划分,然后四叉树划分的叶子节点可以进行二叉树和三叉树的划分。参见图2a所示,cu共有五种划分类型,分别为四叉树划分,水平二叉树划分,垂直二叉树划分,水平三叉树划分和垂直三叉树划分,参见图2b所示,ctu内的cu划分可以是上述五种划分类型的任意组合由上可知不同的划分方式,使得各个pu的形状有所不同,如不同尺寸的矩形,正方形。
53.dbf滤波(即去块滤波)方法:dbf滤波处理包括两个过程:滤波决策和滤波操作。
54.滤波决策包括:1)获取边界强度(bs值);2)滤波开关决策;3)滤波强弱选择。对于色度分量,仅存在步骤1),且直接复用亮度分量的bs值。对于色度分量,只有bs值为2时(即当前块两侧的块至少有一个采用intra(帧内)模式),才进行滤波操作。
55.滤波操作包括:1)对于亮度分量的强滤波和弱滤波;2)对于色度分类的滤波。
56.示例性的,dbf滤波处理一般以8*8为单位进行水平边界滤波(也可以称为水平dbf滤波)和垂直边界滤波(也可以称为垂直dbf滤波),且最多对边界两侧的3个像素点进行滤波,且最多利用到边界两侧的4个像素点进行滤波,因此,不同块的水平dbf滤波和垂直dbf滤波互不影响,也就是说,水平dbf滤波和垂直dbf滤波可以并行进行。
57.如图3所示,对于当前块(以8*8为例)来说,可以先进行当前块左侧3列像素点以及左边块(即当前块的左边块)右侧3列像素点的垂直dbf滤波,再进行当前块上侧3行像素点以及上边块(即当前块的上边块)下侧3行像素点的水平dbf滤波。
58.示例性的,对于需要分别进行垂直dbf滤波和水平dbf滤波的像素点来说,通常先进行垂直dbf滤波,后进行水平dbf滤波。当然,也可以先进行水平dbf滤波,后进行垂直dbf滤波。在后续实施例中,以先进行垂直dbf滤波,后进行水平dbf滤波为例。
59.在一种可能的实施方式中,关于dbf滤波的处理流程,可以包括以下步骤:
60.步骤s11、以4*4为单位分别计算水平方向和垂直方向的edge condition(边缘条件)值。
61.对于cu(coding unit,编码单元)边界,且为8*8边界,则edge condition值为2(用于表示对亮度分量和色度分量均进行滤波处理)。对于pu(prediction unit,预测单元)边界(如2n*hn的内部1/4、1/2、3/4水平线),且为8*8边界,则edge condition值为1(用于表示对亮度分量进行滤波处理,但是不对色度分量进行滤波处理)。对于上述两种情况之外的其它情况,则edge condition值为0。
62.步骤s12、以4*4为单位(滤波处理以8*8单位,只是以4*4为单位存储edge condition值等信息),完成所有块的垂直滤波。当edge condition值不为0时,进行如下滤波处理过程:
63.1、亮度分量滤波(垂直滤波则处理垂直边界的4行,水平滤波则处理水平边界的4列):
64.1.1、先判断是否跳过滤波过程。示例性的,若边界两侧的块为非帧内模式块、无残差、且运动一致时,才会跳过滤波过程,否则,均需要进行滤波过程。
65.1.2、若不跳过滤波过程,则进行如下处理:
66.1.2.1、若当前帧的滤波类型(df_type)为类型1,且abs(r0-l0)>=4*alpha,则fs
为0;否则进行步骤1.2.2,确定fs。alpha为预设数值,abs()为取绝对值运算。
67.1.2.2、计算fl(flatness left,左侧平滑度,可选值为0、2、3)和fr(flatness right,右侧平滑度,可选值为0、2、3),fl和fr用于判断两侧内部的平滑程度。然后,基于fl和fr确定fs。比如说,可以采用如下公式确定fs:fs=fl fr。
68.1.2.2.1、若abs(l1-l0)<beta,且abs(l2-l0)<beta,则fl为3;若abs(l1-l0)<beta,且abs(l2-l0)>=beta,则fl为2;若abs(l1-l0)>=beta,且abs(l2-l0)<beta,则fl为1;否则fl为0。beta为预设数值,abs()为取绝对值运算。
69.1.2.2.2、fr的计算方式与fl的计算方式类似,在此不再重复赘述。
70.1.2.3、基于fs确定bs值(fs的可选值为0、2、3、4、5、6,bs的可选值为0、1、2、3、4)。比如说,在得到fs之后,可以基于fs的取值确定bs值。
71.1.2.3.1、若fs小于等于2(最多有一边中等平滑),则bs=0。
72.1.2.3.2、若fs为3(有且只有一边高度平滑),则bs=(abs(l1-r1)<beta)?1∶0,也就是说,若abs(l1-r1)<beta成立,则bs=1;否则,bs=0。
73.1.2.3.3、若fs为4(即两边均中等平滑),则bs=(fl==2)?2:1,也就是说,若fl=2,则bs=2;否则,即fl不等于2,则bs=1。
74.1.2.3.4、若fs为5(即一边中等平滑,另一边高度平滑),则:
75.若当前帧的滤波类型(df_type)为类型1,则bs=(r1==r0&&l0==l1&&abs(r2-l2)<alpha)?3∶2;也就是说,若像素点r1的像素值等于像素点r0的像素值,且像素点l0的像素值等于像素点l1的像素值,且像素点r2的像素值与像素点l2的像素值之间的差值的绝对值小于alpha(即预先配置的数值),则bs=3;否则,bs=2。
76.否则(即当前帧的滤波类型(df_type)不为类型1),若当前帧的滤波类型为类型0,则bs=(r1==r0&&l0==l1)?3∶2;也就是说,若像素点r1的像素值等于像素点r0的像素值,且像素点l0的像素值等于像素点l1的像素值,则bs=3;否则,bs=2。
77.1.2.3.5、若fs为6(即两边均高度平滑),则:
78.若当前帧的滤波类型(df_type)为类型1,则bs=(abs(r0-r1)<=beta/4&&abs(l0-l1)<=beta/4&&abs(r0-l0)<alpha)&&abs(r0-r3)<=beta/2&&abs(l0vl3)<=beta/2?4:3;也就是说,若abs(r0-r1)<=beta/4、abs(l0-l1)<=beta/4、abs(r0-l0)<alpha、abs(r0-r3)<=beta/2、abs(l0-l3)<=beta/2均成立,则bs=4;否则,bs=3。
79.否则(即当前帧的滤波类型(df_type)不为类型1),若当前帧的滤波类型为类型0,则bs=(abs(r0-r1)<=beta/4&&abs(l0-l1)<=beta/4&&abs(r0-l0)<alpha)?4:3。
80.1.2.4、基于bs值,确定滤波系数,以及滤波像素个数。比如说,假设边界左侧或上侧的4个像素点分别为l0-l3(如图3所示,图3中以左侧为例);边界右侧或下侧的4个像素点为r0-r3(如图3所示,图3中以右侧为例)。则对于亮度分量:
81.1.2.4.1、若bs=4,则对边界两侧的各3个像素进行滤波:
82.针对l0和r0来说,滤波系数为[3,8,10,8,3]/32,即:为了确定像素点l0滤波后的像素值,分别使用像素点l2、l1、l0、r0和r1的像素值进行加权求和,加权系数(即滤波系数)依次为3/32、8/32、10/32、8/32以及3/32。若wj为滤波系数,则j=-2(当前像素点左侧的第2个像素点,即l2)时,wj=3/32;j=-1(当前像素点左侧的第1个像素点,即l1)时,wj=8/32;j=0(当前像素点,即l0)时,wj=10/32;j=1(当前像素点右侧的第1个像素点,即r0)时,wj=
8/32;j=2(当前像素点右侧的第2个像素点,r1)时,wj=8/32。为了确定像素点r0滤波后的像素值,分别使用像素点r2、r1、r0、l0和l1的像素值进行加权求和,加权系数依次为3/32、8/32、10/32、8/32以及3/32。若wj为滤波系数,则j=-2(当前像素点右侧的第2个像素点,即r2)时,wj=3/32;j=-1(当前像素点右侧的第1个像素点,即r1)时,wj=8/32;j=0(当前像素点,即r0)时,wj=10/32;i=1(当前像素点左侧的第1个像素点,即l0)时,wj=8/32;i=2(当前像素点左侧的第2个像素点,l1)时,wj=8/32。
[0083]
综上所述,l0

=clip(l2*3 l1*8 l0*10 r0*8 r1*3 16)>>5),l0

为像素点l0滤波后的像素值,l0-l2为像素点l0~l2滤波前的像素值,r0~r1为像素点r0~r1的像素值,下同。r0

=clip((r2*3 r1*8 r0*10 l0*8 l1*3 16)>>5)>>5)。
[0084]
在上述公式中,“>>”为右移位运算,用于替代除法,即“>>5”相当于除以25(即32)。乘法(“*”)可以通过左移位的方式来替代,如a乘以4可以通过左移2位替代,即通过a<<2替代;a乘以10,可以通过(a<<3) (a<<1)替代。“<<”为左移位运算,用于替代乘法,即“a<<2”相当于乘以22(即4)。考虑到通过移位的方式实现除法运算时,对于运算结果通常直接取整,即当运算结果为n~n 1之间的非整数时,取结果为n,而考虑到当小数部分大于0.5时,取结果为n 1的准确性会更高,因此,为了提高所确定的像素值的准确性,进行计算时,可以为上述加权和的分子加上分母(即被除数)的1/2,以达到四舍五入的效果。以上述l0

的计算为例,右移5位相当于除以25(即32),因此,可以为上述加权和的分子加上16。clip(x)为修剪操作,当x超出预设数值范围的上限时,将x的值设置为该预设数值范围的上限;当x低于预设数值范围的下限时,将x的值设置为该预设数据范围的下限。
[0085]
针对l1和r1来说,滤波系数为[4,5,4,3]/16,在此基础上,l1

=clip((l2*4 l1*5 l0*4 r0*3 8)>>4),r1

=clip((r2*4 r1*5 r0*4 l0*3 8)>>4)。
[0086]
针对l2和r2来说,滤波系数为[2,2,2,1,1]/8,则l2

=clip((l3*2 l2*2 l1*2 l0*1 r0*1 4)>>3),r2

=clip((r3*2 r2*2 r1*2 r0*1 l0*1 4)>>3)。
[0087]
1.2.4.2、若bs=3,则对边界两侧各2个像素进行滤波:
[0088]
针对l0和r0来说,滤波系数为[1,4,6,4,1]/16,l0

=clip(l2*1 l1*4 l0*6 r0*4 r1*1 8)>>4,r0

=clip(r2*1 r1*4 r0*6 l0*4 l1*1 8)>>4。
[0089]
针对l1和r1来说,滤波系数为[3,8,4,1]/16,则l1

=clip((l2*3 l1*8 l0*4 r0*1 8)>>4),r1

=clip((r2*3 r1*8 r0*4 l0*1 8)>>4)。
[0090]
1.2.4.3、若bs=2,则对边界两侧各1个像素进行滤波:
[0091]
针对l0和r0来说,滤波系数为[3,10,3]/16,在此基础上,l0

=clip(l1*3 l0*10 r0*3 8)>>4,r0

=clip(r1*3 r0*10 l0*3 8)>>4。
[0092]
1.2.4.4、若bs=1,则对边界两侧各1个像素进行滤波:针对l0和r0来说,滤波系数为[3,1]/4,l0

=clip(l0*3 r0*1 2)>>2,r0

=clip(r0*3 l0*1 2)>>2。
[0093]
1.2.4.5、若bs=0,则不滤波,即不对边界两侧的像素进行滤波。
[0094]
2、edge condition值为2时,为16*16块的边界进行色度滤波,也就是说,为16*16块的边界进行色度分量的滤波处理,该色度分量的滤波处理过程如下:
[0095]
2.1、先判断是否需要进行滤波处理,过程与亮度分量类似,在此不再赘述。
[0096]
2.2、若需要进行滤波处理(即不跳过滤波过程),则分别计算fl和fr,再基于fl和fr得到fs,基于fs获得bs值,该过程也和亮度分量类似,在此不再赘述。
[0097]
2.3、获得的色度分量的bs值(如4、3、2、1、0等)减1,也就是说,bs的可选值可以为3、2、1、0。基于bs值进行色度分量的滤波处理,具体过程如下:
[0098]
若bs=3,则对边界两侧的各2个像素进行滤波:针对l0和r0来说,滤波系数为[3,10,3]/16,l0

=clip(l1*3 l0*10 r0*3 8)>>4,r0

=clip(r1*3 r0*10 l0*3 8)>>4。针对l1和r1来说,滤波系数为[3,8,3,2]/16,l1

=clip((l2*3 l1*8 l0*3 r0*2 8)>>4),r1

=clip((r2*3 r1*8 r0*3 l0*2 8)>>4)。
[0099]
若bs=2,或bs=1,则对边界两侧的各1个像素进行滤波:针对l0和r0来说,滤波系数为[3,10,3]/16,l0

=clip(l1*3 l0*10 r0*3 8)>>4,r0

=clip(r1*3 r0*10 l0*3 8)>>4。若bs=0,则不滤波,即不对边界两侧的像素进行滤波。
[0100]
示例性的,上述过程的alpha和beta与边界两侧的块的qp均值相关,即当前块与当前块的左侧块(对于垂直dbf滤波)或当前块与当前块的上方块(对于水平dbf滤波)的qp均值相关,可通过查表获得alpha和beta的取值,对此不做限制。
[0101]
步骤s13、以4*4为单位(滤波处理以8*8单位,只是以4*4为单位存储edge condition值等信息),完成所有块的水平滤波,实现方式与步骤s12类似,在此不再重复赘述。
[0102]
在相关技术中,dbf、sao和alf等滤波技术,均是基于当前像素点的像素值进行分类,或者,基于当前像素点的像素值和周围像素点的像素值的关系进行分类,然后,再基于不同类别进行不同滤波操作,其可能会出现过滤波现象,即,滤波后的像素值远大于或远小于滤波前的像素值,也远大于或远小于原始像素值,存在滤波效果不佳,编码性能比较差等问题。
[0103]
针对上述发现,本实施例提出一种编解码方法,可以基于当前像素点的梯度值对当前像素点的原始像素值进行调整,使当前像素点的调整像素值更接近原始像素,从而提高编码性能。在滤波过程中,若当前块中的当前像素点满足增强调整模式的启用条件,在基于当前像素点的梯度值对当前像素点的原始像素值进行调整后,可以提高滤波效果,提高编码性能。
[0104]
以下结合具体实施例,对本技术实施例中的编解码方法进行详细说明。
[0105]
实施例1:本技术实施例中提出一种编解码方法,该方法可以应用于编码端或者解码端,参见图4所示,为该编解码方法的流程示意图,该方法可以包括:
[0106]
步骤401,若当前块中的当前像素点满足增强调整模式的启用条件,则基于当前像素点的原始像素值和当前像素点的周围像素点的原始像素值确定当前像素点的梯度值。
[0107]
示例性的,当前像素点的梯度值,可以是基于当前像素点的原始像素值和周围像素点的原始像素值之间的差值确定,也就是说,当前像素点的梯度值反映的是两个像素值的差值。
[0108]
示例性的,当前像素点的周围像素点,可以是当前像素点的相邻像素点,也可以是当前像素点的非相邻像素点。当前像素点的周围像素点,可以是位于当前块中的像素点,也可以是位于当前块的相邻块中的像素点。比如说,当前像素点的周围像素点,可以是当前像素点左侧的像素点,可以是当前像素点右侧的像素点,可以是当前像素点上侧的像素点,可以是当前像素点下侧的像素点,对此当前像素点的周围像素点的位置不做限制。
[0109]
比如说,参见图3所示,若当前像素点是当前块中的r0,则当前像素点的周围像素
点可以是当前块左侧相邻块中的l0。若当前像素点是当前块中第一行第二列的像素点,则当前像素点的周围像素点可以是当前块上侧相邻块中第八行第二列的像素点。
[0110]
步骤402,基于当前像素点的梯度值和当前像素点的原始像素值,确定当前像素点的调整像素值。例如,可以基于当前像素点的梯度值、当前像素点的原始像素值、第一调整阈值、第二调整阈值、第一调整偏移值和第二调整偏移值,确定当前像素点的调整像素值。
[0111]
在一种可能的实施方式中,若当前像素点的梯度值大于第一调整阈值,则基于当前像素点的原始像素值和第一调整偏移值确定当前像素点的调整像素值,比如说,基于当前像素点的原始像素值和第一调整偏移值之和确定当前像素点的调整像素值。若当前像素点的梯度值小于第二调整阈值,则基于当前像素点的原始像素值和第二调整偏移值确定当前像素点的调整像素值,比如说,基于当前像素点的原始像素值和第二调整偏移值之和确定当前像素点的调整像素值。示例性的,第一调整阈值和第二调整阈值可以互为相反数。当然,第一调整阈值和第二调整阈值也可以不互为相反数,可以任意设置第一调整阈值和第二调整阈值。
[0112]
在一种可能的实施方式中,若当前块中的当前像素点满足增强调整模式的启用条件,还可以从当前块的相邻块中确定与当前像素点对应的参考像素点,并基于参考像素点的原始像素值和参考像素点的周围像素点的原始像素值确定参考像素点的梯度值;基于参考像素点的梯度值和参考像素点的原始像素值,确定参考像素点的调整像素值。
[0113]
示例性的,参考像素点可以是相邻块中与当前像素点相邻的像素点,也可以是相邻块中与当前像素点非相邻的像素点,对此不做限制。比如说,参见图3所示,若当前像素点是当前块中的r0,则参考像素点可以是当前块左侧相邻块中的l0,也可以是当前块左侧相邻块中的l1、l2等,对此不做限制。若当前像素点是当前块中的r1,则参考像素点可以是当前块左侧相邻块中的l0,也可以是当前块左侧相邻块中的l1、l2等,对此不做限制。若当前像素点是当前块中第一行第二列的像素点,则参考像素点可以是当前块上侧相邻块中第八行第二列的像素点,也可以是当前块上侧相邻块中第七行第二列的像素点,对此不做限制。
[0114]
示例性的,参考像素点的梯度值,可以是基于参考像素点的原始像素值和参考像素点的周围像素点的原始像素值之间的差值确定,也就是说,梯度值反映的是两个像素值的差值。
[0115]
示例性的,参考像素点的周围像素点,可以是参考像素点的相邻像素点,也可以是参考像素点的非相邻像素点。参考像素点的周围像素点,可以是位于参考像素点所在块中的像素点,也可以是位于参考像素点所在块的相邻块中的像素点。参考像素点的周围像素点,可以是参考像素点左侧的像素点,可以是参考像素点右侧的像素点,可以是参考像素点上侧的像素点,可以是参考像素点下侧的像素点,对此参考像素点的周围像素点的位置不做限制。
[0116]
在一种可能的实施方式中,参考像素点的周围像素点,可以是当前块中的当前像素点,与此类似的,当前像素点的周围像素点,可以是当前块的相邻块中的参考像素点。
[0117]
示例性的,基于参考像素点的梯度值和参考像素点的原始像素值,确定参考像素点的调整像素值,可以包括但不限于:基于参考像素点的梯度值、参考像素点的原始像素值、第三调整阈值(与第一调整阈值可以相同,也可以不同)、第四调整阈值(与第二调整阈值可以相同,也可以不同)、第三调整偏移值(与第一调整偏移值可以相同,也可以不同)和
第四调整偏移值(与第三调整偏移值可以相同,也可以不同),确定参考像素点的调整像素值。
[0118]
比如说,若参考像素点的梯度值大于第三调整阈值,则基于参考像素点的原始像素值和第三调整偏移值确定参考像素点的调整像素值,比如说,基于参考像素点的原始像素值和第三调整偏移值之和确定参考像素点的调整像素值。若参考像素点的梯度值小于第四调整阈值,则基于参考像素点的原始像素值和第四调整偏移值确定参考像素点的调整像素值,比如说,基于参考像素点的原始像素值和第四调整偏移值之和确定参考像素点的调整像素值。
[0119]
示例性的,第三调整阈值和第四调整阈值可以互为相反数。当然,第三调整阈值和第四调整阈值也可以不互为相反数,可以任意设置第三调整阈值和第四调整阈值。
[0120]
在一种可能的实施方式中,可以从高层语法中解析出当前块对应的第一调整阈值,第二调整阈值,第一调整偏移值,第二调整偏移值,第三调整阈值,第四调整阈值,第三调整偏移值和第四调整偏移值。或者,可以从高层语法中解析出当前块对应的第一调整阈值,第一调整偏移值,第二调整偏移值,第三调整阈值,第三调整偏移值和第四调整偏移值。或者,可以从高层语法中解析出当前块对应的第二调整阈值,第一调整偏移值,第二调整偏移值,第三调整阈值,第三调整偏移值和第四调整偏移值。或者,可以从高层语法中解析出当前块对应的第一调整阈值,第一调整偏移值,第二调整偏移值,第四调整阈值,第三调整偏移值和第四调整偏移值。或者,可以从高层语法中解析出当前块对应的第二调整阈值,第一调整偏移值,第二调整偏移值,第四调整阈值,第三调整偏移值和第四调整偏移值。
[0121]
示例性的,若第一调整阈值和第二调整阈值互为相反数,从高层语法中解析出第一调整阈值后,可推导出第二调整阈值,从高层语法中解析出第二调整阈值后,可推导出第一调整阈值。若第三调整阈值和第四调整阈值互为相反数,从高层语法中解析出第三调整阈值后,可推导出第四调整阈值,从高层语法中解析出第四调整阈值后,可推导出第三调整阈值。
[0122]
在一种可能的实施方式中,当前块中的当前像素点满足增强调整模式的启用条件,可以包括但不限于:若当前块中的当前像素点对应的待滤波边界的边界强度满足增强调整模式的启用条件,则确定当前像素点满足增强调整模式的启用条件。比如说,若当前像素点对应的待滤波边界的边界强度为预设第一数值,则可以确定待滤波边界的边界强度满足增强调整模式的启用条件。示例性的,预设第一数值可以为0。当然,预设第一数值还可以为其它数值。
[0123]
或者,若当前块对应的特征信息满足增强调整模式的启用条件,则确定当前块中的当前像素点满足增强调整模式的启用条件。示例性的,当前块对应的特征信息满足增强调整模式的启用条件是指,若基于当前块对应的特征信息,确定不对当前块启动滤波操作(如去块滤波操作等),则确定当前块对应的特征信息满足增强调整模式的启用条件。
[0124]
示例性的,在确定当前块中的当前像素点满足增强调整模式的启用条件之前,可以先获取当前块对应的增强调整模式使能标志位,若当前块对应的增强调整模式使能标志位允许当前块启用增强调整模式,则确定当前块中的当前像素点是否满足增强调整模式的启用条件,即确定出当前像素点满足增强调整模式的启用条件,或者,不满足增强调整模式的启用条件。
[0125]
或者,若当前块对应的增强调整模式使能标志位不允许当前块启用增强调整模式,则直接确定当前块中的当前像素点不满足增强调整模式的启用条件。
[0126]
示例性的,针对解码端来说,可以从高层语法中解析出当前块对应的增强调整模式使能标志位,继而基于增强调整模式使能标志位确定是否允许当前块启用增强调整模式。
[0127]
比如说,若增强调整模式使能标志位为第一取值(如1),则增强调整模式使能标志位允许当前块启用增强调整模式,若增强调整模式使能标志位为第二取值(如0),则增强调整模式使能标志位不允许当前块启用增强调整模式。
[0128]
在一种可能的实施方式中,若该编解码方法应用于预测过程(如帧内预测或者帧间预测),则当前像素点的原始像素值可以是帧内预测或者帧间预测得到的预测值,而当前像素点的调整像素值作为当前像素点的目标像素值(预测过程的最终像素值)。若该编解码方法应用于滤波过程,则当前像素点的原始像素值可以是滤波前的预测值,而当前像素点的调整像素值作为当前像素点的目标像素值(滤波过程的最终像素值)。
[0129]
由以上技术方案可见,本技术实施例中,若当前块中的当前像素点满足增强调整模式的启用条件,则可以基于当前像素点的梯度值和当前像素点的原始像素值,确定当前像素点的调整像素值,也就是说,基于当前像素点的梯度值对当前像素点的原始像素值进行调整,使当前像素点的调整像素值更接近原始像素,从而提高编码性能。在滤波过程中,如dbf、sao和alf等,若当前块中的当前像素点满足增强调整模式的启用条件,在基于当前像素点的梯度值对当前像素点的原始像素值进行调整后,可以提高滤波效果,提高编码性能。
[0130]
在一种可能的实施方式中,若当前块中的当前像素点满足普通滤波模式的启用条件,则还可以对当前像素点的原始像素值进行去块滤波(即dbf滤波),得到当前像素点的滤波像素值。当然,去块滤波只是一个示例,还可以采用其它滤波方式对当前像素点的原始像素值进行滤波,比如说,对当前像素点的原始像素值进行sao滤波,得到当前像素点的滤波像素值。或者,对当前像素点的原始像素值进行alf滤波,得到当前像素点的滤波像素值。
[0131]
示例性的,以去块滤波为例,参见步骤s11-步骤s13,示出了对当前像素点的原始像素值进行去块滤波,得到当前像素点的滤波像素值的过程,在此不再重复赘述。
[0132]
继续参见步骤s11-步骤s13,从这些步骤可以看出,若边界两侧的块为非帧内模式块、无残差、且运动一致时,才会跳过滤波过程,否则,需要进行滤波过程。在需要进行滤波过程时,还可以获取bs的取值,若bs等于0,则不滤波,即不对边界两侧的像素进行滤波,若bs大于0,则对边界两侧的像素进行滤波。综上所述,若边界两侧的块为非帧内模式块、无残差、且运动一致时,则当前块中的当前像素点不满足普通滤波模式的启用条件。若边界两侧的块为非帧内模式块、无残差、且运动一致不成立(即边界两侧的块不为非帧内模式块,或边界两侧的块有残差,或边界两侧的块运动不一致),且bs等于0,则当前块中的当前像素点不满足普通滤波模式的启用条件。若边界两侧的块为非帧内模式块、无残差、且运动一致不成立,且bs大于0,则当前块中的当前像素点满足普通滤波模式的启用条件。
[0133]
需要注意的是,若当前块中的当前像素点满足普通滤波模式的启用条件,则当前块中的当前像素点不满足增强调整模式的启用条件,若当前块中的当前像素点满足增强调整模式的启用条件,则当前块中的当前像素点不满足普通滤波模式的启用条件。
[0134]
在当前像素点满足普通滤波模式的启用条件,且对当前像素点的原始像素值进行去块滤波,得到当前像素点的滤波像素值的基础上,还需要确定当前块中的当前像素点是否满足增强滤波模式的启用条件。若当前块中的当前像素点满足增强滤波模式的启用条件,则基于当前像素点的滤波像素值和当前像素点的原始像素值,确定当前像素点的调整像素值,即当前像素点的调整像素值作为当前像素点的目标像素值(去块滤波过程的最终像素值)。若当前块中的当前像素点不满足增强滤波模式的启用条件,则不对当前像素点的滤波像素值进行调整,当前像素点的滤波像素值作为当前像素点的目标像素值(去块滤波过程的最终像素值)。
[0135]
示例性的,若当前块中的当前像素点满足增强滤波模式的启用条件,基于当前像素点的滤波像素值和当前像素点的原始像素值,确定当前像素点的调整像素值,可以包括但不限于:基于当前像素点的滤波像素值,当前像素点的原始像素值,第一滤波阈值,第二滤波阈值,第一滤波偏移值和第二滤波偏移值,确定当前像素点的调整像素值。
[0136]
示例性的,第一滤波阈值和第二滤波阈值可以互为相反数,当然,第一滤波阈值和第二滤波阈值也可以不互为相反数,可以任意设置第一滤波阈值和第二滤波阈值。
[0137]
在一种可能的实施方式中,若当前块中的当前像素点满足普通滤波模式的启用条件,还可以从当前块的相邻块中确定与当前像素点对应的参考像素点,并对参考像素点的原始像素值进行去块滤波(即dbf滤波),得到参考像素点的滤波像素值。当然,去块滤波只是一个示例,还可以采用其它滤波方式对参考像素点的原始像素值进行滤波,比如说,对参考像素点的原始像素值进行sao滤波或者alf滤波,得到参考像素点的滤波像素值。
[0138]
示例性的,以去块滤波为例,参见步骤s11-步骤s13,示出了对参考像素点的原始像素值进行去块滤波,得到参考像素点的滤波像素值的过程,在此不再重复赘述。
[0139]
示例性的,参考像素点可以是相邻块中与当前像素点相邻的像素点,参考像素点也可以是相邻块中与当前像素点非相邻的像素点,对此不做限制。
[0140]
在当前像素点满足普通滤波模式的启用条件,且对参考像素点的原始像素值进行去块滤波,得到参考像素点的滤波像素值的基础上,还需要确定当前块中的当前像素点是否满足增强滤波模式的启用条件。若当前块中的当前像素点满足增强滤波模式的启用条件,则基于参考像素点的滤波像素值和参考像素点的原始像素值,确定参考像素点的调整像素值,即参考像素点的调整像素值作为参考像素点的目标像素值(去块滤波过程的最终像素值)。若当前块中的当前像素点不满足增强滤波模式的启用条件,则不对参考像素点的滤波像素值进行调整,参考像素点的滤波像素值作为参考像素点的目标像素值(去块滤波过程的最终像素值)。
[0141]
示例性的,基于参考像素点的滤波像素值和参考像素点的原始像素值,确定参考像素点的调整像素值,可以包括但不限于:基于参考像素点的滤波像素值,参考像素点的原始像素值,第三滤波阈值,第四滤波阈值,第三滤波偏移值和第四滤波偏移值,确定参考像素点的调整像素值;其中,第三滤波阈值和第四滤波阈值可以互为相反数,当然,第三滤波阈值和第四滤波阈值也可以不互为相反数,可以任意设置第三滤波阈值和第四滤波阈值。
[0142]
在一种可能的实施方式中,可以从高层语法中解析出当前块对应的第一滤波阈值,第二滤波阈值,第一滤波偏移值,第二滤波偏移值,第三滤波阈值,第四滤波阈值,第三滤波偏移值和第四滤波偏移值。或者,可以从高层语法中解析出当前块对应的第一滤波阈
值,第一滤波偏移值,第二滤波偏移值,第三滤波阈值,第三滤波偏移值和第四滤波偏移值。或者,可以从高层语法中解析出当前块对应的第二滤波阈值,第一滤波偏移值,第二滤波偏移值,第三滤波阈值,第三滤波偏移值和第四滤波偏移值。或者,可以从高层语法中解析出当前块对应的第一滤波阈值,第一滤波偏移值,第二滤波偏移值,第四滤波阈值,第三滤波偏移值和第四滤波偏移值。或者,可以从高层语法中解析出当前块对应的第二滤波阈值,第一滤波偏移值,第二滤波偏移值,第四滤波阈值,第三滤波偏移值和第四滤波偏移值。
[0143]
示例性的,若第一滤波阈值和第二滤波阈值互为相反数,从高层语法中解析出第一滤波阈值后,可推导出第二滤波阈值,从高层语法中解析出第二滤波阈值后,可推导出第一滤波阈值。若第三滤波阈值和第四滤波阈值互为相反数,从高层语法中解析出第三滤波阈值后,可推导出第四滤波阈值,从高层语法中解析出第四滤波阈值后,可推导出第三滤波阈值。
[0144]
在一种可能的实施方式中,当前块中的当前像素点满足增强滤波模式的启用条件,可以包括但不限于:若当前块中的当前像素点对应的待滤波边界的边界强度满足增强滤波模式的启用条件,且当前像素点的滤波像素值与当前像素点的原始像素值之间的差值的绝对值小于预设阈值(该预设阈值可以为正值,对此预设阈值不做限制,比如说,若第一滤波阈值和第二滤波阈值互为相反数,当第一滤波阈值为正值时,该预设阈值与第一滤波阈值相同,当第二滤波阈值为正值时,该预设阈值与第二滤波阈值相同,当然,预设阈值也可以为其它取值),则确定当前像素点满足增强滤波模式的启用条件。示例性的,当前块中的当前像素点对应的待滤波边界的边界强度满足增强滤波模式的启用条件,可以包括但不限于:若当前像素点对应的待滤波边界的边界强度为预设第二数值(与预设第一数值不同,即不为0,如预设第二数值可以大于0),则确定待滤波边界的边界强度满足增强滤波模式的启用条件。
[0145]
示例性的,在确定当前块中的当前像素点满足增强滤波模式的启用条件之前,可以先获取当前块对应的增强滤波模式使能标志位,若当前块对应的增强滤波模式使能标志位允许当前块启用增强滤波模式,则确定当前块中的当前像素点是否满足增强滤波模式的启用条件,即确定出当前像素点满足增强滤波模式的启用条件,或者,不满足增强滤波模式的启用条件。
[0146]
或者,若当前块对应的增强滤波模式使能标志位不允许当前块启用增强滤波模式,则直接确定当前块中的当前像素点不满足增强滤波模式的启用条件。
[0147]
示例性的,针对解码端来说,可以从高层语法中解析出当前块对应的增强滤波模式使能标志位,继而基于增强滤波模式使能标志位确定是否允许当前块启用增强滤波模式。
[0148]
比如说,若增强滤波模式使能标志位为第一取值(如1),则增强滤波模式使能标志位允许当前块启用增强滤波模式,若增强滤波模式使能标志位为第二取值(如0),则增强滤波模式使能标志位不允许当前块启用增强滤波模式。
[0149]
示例性的,在上述实施例中,高层语法可以包括但不限于如下语法中的一种:序列级参数集sps级高层语法;图像参数集pps级高层语法;图像头级高层语法;帧级高层语法;片头级高层语法;编码树单元ctu级高层语法;编码单元cu级高层语法。
[0150]
示例性的,在上述实施例中,当前块可以为亮度分量或者色度分量。
[0151]
由以上技术方案可见,若当前块中的当前像素点满足增强滤波模式的启用条件,则可以基于当前像素点的滤波像素值和当前像素点的原始像素值,确定当前像素点的调整像素值,也就是说,基于当前像素点的滤波像素值对当前像素点的原始像素值进行调整,使当前像素点的调整像素值更接近原始像素,从而提高编码性能。在滤波过程中,如dbf、sao和alf等,若当前块中的当前像素点满足增强滤波模式的启用条件,在基于当前像素点的滤波像素值对当前像素点的原始像素值进行调整后,可以提高滤波效果,提高编码性能。
[0152]
实施例2:在需要进行滤波处理时,需要先判断是否跳过滤波过程,比如说,若边界两侧的块(即当前块和当前块的相邻块,对于垂直边界来说,是当前块左侧的相邻块,对于水平边界来说,是当前块上侧的相邻块)为非帧内模式块(即当前块和相邻块都不是帧内块)、无残差(即当前块和相邻块之间没有残差)、且运动一致(即当前块和相邻块的运动一致)时,会跳过滤波过程,否则,不会跳过滤波过程。基于此,可以将“跳过滤波过程”作为增强调整模式的启用条件,即,若针对当前块中的当前像素点跳过滤波过程,则当前块中的当前像素点满足增强调整模式的启用条件。在当前像素点满足增强调整模式的启用条件时,可以采用增强调整模式对当前像素点的原始像素值进行调整,从而使得像素值更接近原始像素。
[0153]
示例性的,若当前块对应的特征信息满足增强调整模式的启用条件,则确定当前块中的当前像素点满足增强调整模式的启用条件。当前块对应的特征信息用于表示边界两侧的块是否为非帧内模式块,用于表示边界两侧的块是否无残差,以及,用于表示边界两侧的块是否运动一致。基于此,若当前块对应的特征信息用于表示边界两侧的块为非帧内模式块,且用于表示边界两侧的块无残差,且用于表示边界两侧的块运动一致,则说明当前块对应的特征信息满足增强调整模式的启用条件,并确定当前块中的当前像素点满足增强调整模式的启用条件,即当前块中的每个像素点满足增强调整模式的启用条件。或者,若当前块对应的特征信息用于表示边界两侧的块不均为非帧内模式块,和/或,当前块对应的特征信息用于表示边界两侧的块有残差,和/或,当前块对应的特征信息用于表示边界两侧的块运动不一致,则说明当前块对应的特征信息不满足增强调整模式的启用条件,并确定当前块中的当前像素点不满足增强调整模式的启用条件,即当前块中的每个像素点均不满足增强调整模式的启用条件。
[0154]
示例性的,在当前像素点满足增强调整模式的启用条件时,可以采用增强调整模式对当前像素点的原始像素值进行调整,比如说,可以先基于当前像素点的原始像素值确定当前像素点的梯度值,并基于当前像素点的梯度值和当前像素点的原始像素值,确定当前像素点的调整像素值,关于调整像素值的确定过程,可以参见后续实施例,在此不再赘述。
[0155]
实施例3:在需要进行滤波处理时,需要先判断是否跳过滤波过程,比如说,若边界两侧的块为非帧内模式块、无残差、且运动一致时,会跳过滤波过程,否则,不会跳过滤波过程。在不会跳过滤波过程时,还可以确定bs值,若bs值大于0(如bs值为1、2、3、4等),则可以对边界两侧的像素进行滤波。若bs值为0,则不滤波,即不对边界两侧的像素进行滤波。基于此,可以将“bs值为0”作为增强调整模式的启用条件,即,若当前块中的当前像素点的bs值为0,则当前块中的当前像素点满足增强调整模式的启用条件;若当前块中的当前像素点的bs值大于0,则当前块中的当前像素点不满足增强调整模式的启用条件。
[0156]
示例性的,若当前块中的当前像素点对应的待滤波边界的边界强度满足增强调整模式的启用条件,则确定当前像素点满足增强调整模式的启用条件。比如说,可以先确定当前像素点对应的待滤波边界的边界强度,若该边界强度为预设第一数值,则确定该边界强度满足增强调整模式的启用条件。该预设第一数值可以根据经验配置,如预设第一数值为0。综上所述,若当前像素点对应的待滤波边界的边界强度为0,则说明当前像素点对应的待滤波边界的边界强度满足增强调整模式的启用条件,并确定当前像素点满足增强调整模式的启用条件。
[0157]
或者,若当前块中的当前像素点对应的待滤波边界的边界强度不满足增强调整模式的启用条件,则确定当前像素点不满足增强调整模式的启用条件。比如说,若当前像素点对应的待滤波边界的边界强度不为预设第一数值,则确定该边界强度不满足增强调整模式的启用条件,从而能够确定当前块中的当前像素点不满足增强调整模式的启用条件。
[0158]
示例性的,在当前像素点满足增强调整模式的启用条件时,可以采用增强调整模式对当前像素点的原始像素值进行调整,从而使得像素值更接近原始像素。比如说,可以先基于当前像素点的原始像素值确定当前像素点的梯度值,并基于当前像素点的梯度值和当前像素点的原始像素值,确定当前像素点的调整像素值,调整像素值的确定过程参见后续实施例。
[0159]
实施例4:在需要进行滤波处理时,需要先判断是否跳过滤波过程,比如说,若边界两侧的块为非帧内模式块、无残差、且运动一致时,会跳过滤波过程,否则,不会跳过滤波过程。在不会跳过滤波过程时,还可以确定bs值,若bs值大于0(如bs值为1、2、3、4等),则可以对边界两侧的像素进行滤波。若bs值为0,则不滤波,即不对边界两侧的像素进行滤波。基于此,可以将“bs值大于0”作为普通滤波模式的启用条件,即,若当前块中的当前像素点的bs值大于0,则当前块中的当前像素点满足普通滤波模式的启用条件;若当前块中的当前像素点的bs值等于0,则当前块中的当前像素点不满足普通滤波模式的启用条件。
[0160]
示例性的,若当前块中的当前像素点对应的待滤波边界的边界强度满足普通滤波模式的启用条件,则确定当前像素点满足普通滤波模式的启用条件。比如说,可以先确定当前像素点对应的待滤波边界的边界强度,若该边界强度为预设第二数值,则确定该边界强度满足普通滤波模式的启用条件。该预设第二数值可以根据经验进行配置,如预设第二数值可以大于0,如预设第二数值可以为1、2、3、4等。综上所述,若当前像素点对应的待滤波边界的边界强度大于0(即边界强度不为0),则说明当前像素点对应的待滤波边界的边界强度满足普通滤波模式的启用条件,并确定当前像素点满足普通滤波模式的启用条件。
[0161]
或者,若当前块中的当前像素点对应的待滤波边界的边界强度不满足普通滤波模式的启用条件,则确定当前像素点不满足普通滤波模式的启用条件。比如说,若当前像素点对应的待滤波边界的边界强度(如0)不为预设第二数值,则确定该边界强度不满足普通滤波模式的启用条件,从而能够确定当前块中的当前像素点不满足普通滤波模式的启用条件。
[0162]
示例性的,在当前像素点满足普通滤波模式的启用条件时,还可以对当前像素点的原始像素值进行去块滤波(即dbf滤波,本文以去块滤波为例),得到当前像素点的滤波像素值。
[0163]
实施例5:在当前块中的当前像素点满足普通滤波模式的启用条件,且对当前像素
点的原始像素值进行去块滤波,得到当前像素点的滤波像素值的基础上,还可以确定当前块中的当前像素点是否满足增强滤波模式的启用条件。比如说,确定当前像素点的滤波像素值与当前像素点的原始像素值之间的差值的绝对值是否小于预设阈值,若小于预设阈值,则确定当前块中的当前像素点满足增强滤波模式的启用条件,若不小于预设阈值,则确定当前块中的当前像素点不满足增强滤波模式的启用条件。综上所述,当前块中的当前像素点满足增强滤波模式的启用条件,可以包括:若当前块中的当前像素点对应的待滤波边界的边界强度满足增强滤波模式的启用条件,且当前像素点的滤波像素值与当前像素点的原始像素值之间的差值的绝对值小于预设阈值,则确定当前像素点满足增强滤波模式的启用条件。
[0164]
以下结合具体实施例,对增强滤波模式的启用条件进行说明。
[0165]
在需要进行滤波处理时,需要先判断是否跳过滤波过程,在不会跳过滤波过程时,还可以确定bs值,若bs值大于0,则可以对边界两侧的像素进行滤波。基于此,可以将“bs值大于0”作为增强滤波模式的启用条件,也就是说,“bs值大于0”同时作为普通滤波模式和增强滤波模式的启用条件。在bs值大于0时,需要对当前像素点的原始像素值进行去块滤波,得到当前像素点的滤波像素值。在得到当前像素点的滤波像素值之后,还可以确定当前像素点的滤波像素值与当前像素点的原始像素值之间的差值的绝对值是否小于预设阈值,并将“差值的绝对值是否小于预设阈值”作为增强滤波模式的启用条件。
[0166]
综上所述,若当前块中的当前像素点对应的待滤波边界的边界强度满足增强滤波模式的启用条件,且当前像素点的滤波像素值与当前像素点的原始像素值之间的差值的绝对值小于预设阈值,则确定当前像素点满足增强滤波模式的启用条件。否则,确定当前像素点不满足增强滤波模式的启用条件。比如说,先确定当前像素点对应的待滤波边界的边界强度,若该边界强度为预设第二数值,则确定该边界强度满足增强滤波模式的启用条件。预设第二数值可以根据经验进行配置,如预设第二数值可以大于0,如预设第二数值可以为1、2、3、4等。
[0167]
示例性的,在当前像素点满足增强滤波模式的启用条件时,则可以基于当前像素点的滤波像素值和当前像素点的原始像素值,确定当前像素点的调整像素值,即当前像素点的调整像素值作为当前像素点的目标像素值(去块滤波过程的最终像素值)。若当前块中的当前像素点不满足增强滤波模式的启用条件,则不对当前像素点的滤波像素值进行调整,当前像素点的滤波像素值作为当前像素点的目标像素值(去块滤波过程的最终像素值)。
[0168]
从上述实施例1、2、3、4、5可以看出,本文涉及增强调整模式、普通滤波模式和增强滤波模式,可以基于增强调整模式、普通滤波模式或增强滤波模式对当前像素点的原始像素值进行处理,得到当前像素点的目标像素值(即最终像素值)。比如说,若当前像素点满足增强调整模式的启用条件,则在增强调整模式下,可以基于当前像素点的梯度值对当前像素点的原始像素值进行调整,得到当前像素点的调整像素值,将该调整像素值作为目标像素值。又例如,若当前像素点满足普通滤波模式的启用条件,但是不满足增强滤波模式的启用条件,则在普通滤波模式下,可以对当前像素点的原始像素值进行滤波,得到当前像素点的滤波像素值,将该滤波像素值作为目标像素值。又例如,若当前像素点满足普通滤波模式的启用条件,且满足增强滤波模式的启用条件,则在增强滤波模式下,可以对当前像素点的
原始像素值进行滤波,得到当前像素点的滤波像素值,并基于当前像素点的滤波像素值对当前像素点的原始像素值进行调整,得到当前像素点的调整像素值,将该调整像素值作为目标像素值。
[0169]
在一种可能的实施方式中,在对当前块进行去块滤波时,可以采用增强调整模式、普通滤波模式或增强滤波模式对当前像素点的原始像素值进行处理,也就是说,增强调整模式、普通滤波模式和增强滤波模式均归属于去块滤波模式,即,增强调整模式、普通滤波模式和增强滤波模式可以是去块滤波模式下的子模式。基于此,在去块滤波模式下,可以确定采用增强调整模式对当前像素点的原始像素值进行处理,或者,采用普通滤波模式对当前像素点的原始像素值进行处理,或者,采用增强滤波模式对当前像素点的原始像素值进行处理。
[0170]
当然,增强调整模式、普通滤波模式和增强滤波模式也可以归属于其它类型的滤波模式,如sao滤波模式或者alf滤波模式等,即,增强调整模式、普通滤波模式和增强滤波模式可以是sao滤波模式下的子模式,或者,增强调整模式、普通滤波模式和增强滤波模式可以是alf滤波模式下的子模式。基于此,在sao滤波模式或者alf滤波模式下,可以确定采用增强调整模式对当前像素点的原始像素值进行处理,或者,采用普通滤波模式对当前像素点的原始像素值进行处理,或者,采用增强滤波模式对当前像素点的原始像素值进行处理。
[0171]
示例性的,以增强调整模式、普通滤波模式和增强滤波模式均归属于去块滤波模式为例,则普通滤波模式可以称为去块滤波模式的普通模式,即对当前像素点的原始像素值进行去块滤波得到滤波像素值后,不再对去块滤波后的滤波像素值进行调整。增强滤波模式可以称为去块滤波调整模式(deblocking refinement,缩写为dbr),即对当前像素点的原始像素值进行去块滤波得到滤波像素值后,还需要对去块滤波后的滤波像素值进行调整。增强调整模式可以称为可选去块滤波调整模式(alt deblocking refinement,缩写为adbr),即在不对当前像素点的原始像素值进行去块滤波的基础上,直接对当前像素点的原始像素值进行调整。
[0172]
实施例6:针对实施例1、实施例2和实施例3,可以采用增强调整模式对当前像素点的原始像素值进行调整,在对原始像素值进行调整时,可以采用如下步骤:
[0173]
步骤s21、基于当前像素点的原始像素值和当前像素点的周围像素点的原始像素值确定当前像素点的梯度值。比如说,当前像素点的梯度值,可以是基于当前像素点的原始像素值和周围像素点的原始像素值之间的差值确定,对此确定方式不做限制。
[0174]
步骤s22、从当前块的相邻块(针对垂直边界来说,该相邻块是当前块的左侧相邻块,对于水平边界来说,该相邻块是当前块的上侧相邻块)中确定与当前像素点对应的参考像素点,并基于参考像素点的原始像素值和参考像素点的周围像素点的原始像素值确定参考像素点的梯度值。比如说,参考像素点的梯度值,可以是基于参考像素点的原始像素值和参考像素点的周围像素点的原始像素值之间的差值确定,对此确定方式不做限制。
[0175]
示例性的,基于当前像素点的原始像素值和当前像素点的周围像素点(如周围像素点是参考像素点)的原始像素值确定当前像素点的梯度值,基于参考像素点的周围像素点(如周围像素点是当前像素点)的原始像素值和参考像素点的原始像素值确定参考像素点的梯度值。
[0176]
比如说,假设pi为当前块中的当前像素点的原始像素值,也即参考像素点的周围像素点的原始像素值,qi为相邻块中的参考像素点的原始像素值,也即当前像素点的周围像素点的原始像素值,也就是说,pi和qi分别为边界两侧的原始像素值,则当前像素点pi的梯度值dpi可以采用如下方式确定:dpi=(pi-qi 2)>>2,参考像素点qi的梯度值dqi可以采用如下方式确定:dqi=(qi-pi 2)>>2。当然,上述只是确定当前像素点的梯度值和参考像素点的梯度值的示例,对此不做限制。显然,当前像素点的梯度值,可以是基于当前像素点的原始像素值和参考像素点的原始像素值之间的差值确定。参考像素点的梯度值,可以是基于参考像素点的原始像素值和当前像素点的原始像素值之间的差值确定。
[0177]
以当前像素点pi是p0(对应图3的r0),参考像素点qi是q0(对应图3的l0)为例,当前像素点p0的梯度值dp0采用如下方式确定:dp0=(p0-q0 2)>>2,参考像素点q0的梯度值dq0采用如下方式确定:dq0=(q0-p0 2)>>2。dp0=(p0-q0 2)>>2的另一种表述为dp0=(p0-q0 1)>>1,dq0=(q0-p0 2)>>2的另一种表述为dq0=(q0-p0 1)>>1。
[0178]
步骤s23、基于当前像素点的梯度值和当前像素点的原始像素值,确定当前像素点的调整像素值。比如说,若当前像素点的梯度值大于第一调整阈值,则基于当前像素点的原始像素值和第一调整偏移值(也可以称为第一调整偏移量)确定当前像素点的调整像素值。若当前像素点的梯度值小于第二调整阈值,则基于当前像素点的原始像素值和第二调整偏移值确定当前像素点的调整像素值。示例性的,第一调整阈值和第二调整阈值可以互为相反数。
[0179]
步骤s24、基于参考像素点的梯度值和参考像素点的原始像素值,确定参考像素点的调整像素值。比如说,若参考像素点的梯度值大于第三调整阈值,则基于参考像素点的原始像素值和第三调整偏移值(也可以称为第三调整偏移量)确定参考像素点的调整像素值。若参考像素点的梯度值小于第四调整阈值,则基于参考像素点的原始像素值和第四调整偏移值确定参考像素点的调整像素值。示例性的,第三调整阈值和第四调整阈值可以互为相反数。
[0180]
比如说,若当前像素点pi的梯度值dpi大于alt_dbr_th(alt_dbr_th表示第一调整阈值),则当前像素点pi的调整像素值pi可以采用如下方式确定:pi=clip(pi alt_dbr_offset0),alt_dbr_offset0可以表示第一调整偏移值。或者,若当前像素点pi的梯度值dpi小于-alt_dbr_th(-alt_dbr_th表示第二调整阈值),则当前像素点pi的调整像素值pi可以采用如下方式确定:pi=clip(pi alt_dbr_offset1),alt_dbr_offset1可以表示第二调整偏移值。
[0181]
在上述实施例中,i可以为0、1、2,以i为0为例进行说明,则:若dp0>dbr_th,则p0=clip(p0 alt_dbr_offset0);若dp0<-dbr_th,则p0=clip(p0 alt_dbr_offset1)。
[0182]
比如说,若参考像素点qi的梯度值dqi大于alt_dbr_th(alt_dbr_th表示第三调整阈值,此处以第三调整阈值与第一调整阈值相同为例,在实际应用中,第三调整阈值与第一调整阈值也可以不同),则参考像素点qi的调整像素值qi可以采用如下方式确定:qi=clip(qi alt_dbr_offset0),alt_dbr_offset0可以表示第三调整偏移值,此次以第三调整偏移值与第一调整偏移值相同为例,在实际应用中,第三调整偏移值与第一调整偏移值也可以不同。
[0183]
或者,若参考像素点qi的梯度值dqi小于-alt_dbr_th(-alt_dbr_th表示第四调整
阈值,此处以第四调整阈值与第二调整阈值相同为例,在实际应用中,第四调整阈值与第二调整阈值也可以不同),则参考像素点qi的调整像素值qi可以采用如下方式确定:qi=clip(qi alt_dbr_offset1),alt_dbr_offset1可以表示第四调整偏移值,此次以第四调整偏移值与第二调整偏移值相同为例,在实际应用中,第四调整偏移值与第二调整偏移值也可以不同。
[0184]
在上述实施例中,i可以为0、1、2,以i为0为例进行说明,则:若dq0>dbr_th,则q0=clip(q0 alt_dbr_offset0);若dq0<-dbr_th,则q0=clip(q0 alt_dbr_offset1)。
[0185]
在上述实施例中,pi表示当前像素点的原始像素值,dpi表示当前像素点的梯度值,pi表示当前像素点的调整像素值,qi表示参考像素点的原始像素值,dqi表示参考像素点的梯度值,qi表示参考像素点的调整像素值。clip(x)表示将x限制在[0,2∧(bit_depth)-1]之间(包括0和2∧(bit_depth)-1),bit_depth表示图像的比特深度,一般为8、10、12等。
[0186]
在一种可能的实施方式中,针对解码端来说,可以从高层语法中解析出当前块对应的第一调整阈值,第一调整偏移值,第二调整偏移值,第三调整阈值,第三调整偏移值和第四调整偏移值。由于第一调整阈值与第二调整阈值互为相反数,第三调整阈值与第四调整阈值互为相反数,因此,解码端可以确定出第二调整阈值和第四调整阈值。
[0187]
在另一种可能的实施方式中,针对解码端来说,可以从高层语法中解析出当前块对应的第一调整阈值,第一调整偏移值,第二调整偏移值,第四调整阈值,第三调整偏移值和第四调整偏移值。由于第一调整阈值与第二调整阈值互为相反数,第三调整阈值与第四调整阈值互为相反数,因此,解码端可以确定出第二调整阈值和第三调整阈值。
[0188]
在另一种可能的实施方式中,针对解码端来说,可以从高层语法中解析出当前块对应的第二调整阈值,第一调整偏移值,第二调整偏移值,第三调整阈值,第三调整偏移值和第四调整偏移值。由于第一调整阈值与第二调整阈值互为相反数,第三调整阈值与第四调整阈值互为相反数,因此,解码端可以确定出第一调整阈值和第四调整阈值。
[0189]
在另一种可能的实施方式中,针对解码端来说,可以从高层语法中解析出当前块对应的第二调整阈值,第一调整偏移值,第二调整偏移值,第四调整阈值,第三调整偏移值和第四调整偏移值。由于第一调整阈值与第二调整阈值互为相反数,第三调整阈值与第四调整阈值互为相反数,因此,解码端可以确定出第一调整阈值和第三调整阈值。
[0190]
在另一种可能的实施方式中,针对解码端来说,可以从高层语法中解析出当前块对应的第一调整阈值(或第二调整阈值,或第三调整阈值,或第四调整阈值,即能够通过一个调整阈值推导出其它三个调整阈值),第一调整偏移值(或第三调整偏移值)和第二调整偏移值(或第四调整偏移值)。在此基础上,由于第一调整阈值与第二调整阈值互为相反数,因此,可以确定出第二调整阈值。由于第一调整阈值与第三调整阈值相同,因此,可以确定出第三调整阈值。由于第三调整偏移值与第一调整偏移值相同,因此,可以确定出第三调整偏移值。由于第四调整偏移值与第二调整偏移值相同,因此,可以确定出第四调整偏移值。由于第三调整阈值与第四调整阈值互为相反数,因此,可以确定出第四调整阈值。
[0191]
当然,上述方式只是几个示例,对此不做限制,只要解码端能够获知第一调整阈值、第二调整阈值、第三调整阈值、第四调整阈值、第一调整偏移值、第二调整偏移值、第三调整偏移值和第四调整偏移值即可,即上述各数值可以通过解析得到或者推导得到。
[0192]
在上述实施例中,高层语法可以包括但不限于如下语法中的一种:sps级高层语法;pps级高层语法;图像头级高层语法;帧级高层语法;片头级高层语法;ctu级高层语法;cu级高层语法。当然,上述只是高层语法的几个示例,对此高层语法的类型不做限制,只要能够通过高层语法携带当前块对应的调整阈值和调整偏移值即可。
[0193]
在上述实施例中,当前块可以为亮度分量或者色度分量。
[0194]
在一种可能的实施方式中,可以通过增强调整模式使能标志位表示是否允许启用增强调整模式,若增强调整模式使能标志位允许当前块启用增强调整模式,则需要确定当前块中的当前像素点是否满足增强调整模式的启用条件,若当前像素点满足增强调整模式的启用条件,则采用增强调整模式对当前像素点的原始像素值进行调整。若增强调整模式使能标志位不允许当前块启用增强调整模式,则直接确定当前块中的每个像素点不满足增强调整模式的启用条件,不会采用增强调整模式对当前像素点的原始像素值进行调整。在此基础上,若当前块对应的增强调整模式使能标志位允许当前块启用增强调整模式,则确定当前块中的当前像素点是否满足增强调整模式的启用条件。若当前块对应的增强调整模式使能标志位不允许当前块启用增强调整模式,则确定当前块中的每个像素点不满足增强调整模式的启用条件。
[0195]
示例性的,针对解码端来说,可以从高层语法中解析出当前块对应的增强调整模式使能标志位。比如说,若该增强调整模式使能标志位为第一取值(如1),则说明增强调整模式使能标志位允许当前块启用增强调整模式,若该增强调整模式使能标志位为第二取值(如0),则说明增强调整模式使能标志位不允许当前块启用增强调整模式。
[0196]
在上述实施例中,高层语法可以包括但不限于如下语法中的一种:sps级高层语法;pps级高层语法;图像头级高层语法;帧级高层语法;片头级高层语法;ctu级高层语法;cu级高层语法。当然,上述只是高层语法的几个示例,对此高层语法的类型不做限制,只要能够通过高层语法携带当前块对应的增强调整模式使能标志位即可。
[0197]
实施例7:针对实施例1和实施例5,可以采用增强滤波模式对当前像素点的原始像素值进行调整,在对当前像素点的原始像素值进行调整时,可以采用如下步骤:
[0198]
步骤s31、对当前像素点的原始像素值进行去块滤波,得到当前像素点的滤波像素值。
[0199]
步骤s32、从当前块的相邻块(针对垂直边界来说,该相邻块是当前块的左侧相邻块,对于水平边界来说,该相邻块是当前块的上侧相邻块)中确定与当前像素点对应的参考像素点,并对参考像素点的原始像素值进行去块滤波,得到参考像素点的滤波像素值。
[0200]
示例性的,可以采用dbf滤波(即去块滤波)方式对当前像素点的原始像素值进行去块滤波,得到当前像素点的滤波像素值,并采用dbf滤波方式对参考像素点的原始像素值进行去块滤波,得到参考像素点的滤波像素值。当然,也可以采用sao滤波方式对当前像素点的原始像素值进行滤波,得到当前像素点的滤波像素值,并采用sao滤波方式对参考像素点的原始像素值进行滤波,得到参考像素点的滤波像素值。或者,可以采用alf滤波方式对当前像素点的原始像素值进行滤波,得到当前像素点的滤波像素值,并采用alf滤波方式对参考像素点的原始像素值进行滤波,得到参考像素点的滤波像素值。为了方便描述,在后续实施例中,以采用dbf滤波方式对当前像素点和参考像素点的原始像素值进行去块滤波为例。
[0201]
参见图3所示,基于当前像素点的位置,可以只对当前像素点和参考像素点进行水平dbf滤波,也可以只对当前像素点和参考像素点进行垂直dbf滤波,还可以先对当前像素点和参考像素点进行垂直dbf滤波,后对当前像素点和参考像素点进行水平dbf滤波。
[0202]
步骤s33、基于当前像素点的滤波像素值和当前像素点的原始像素值,确定当前像素点的调整像素值。比如说,基于当前像素点的滤波像素值,当前像素点的原始像素值,第一滤波阈值,第二滤波阈值,第一滤波偏移值和第二滤波偏移值,确定当前像素点的调整像素值;其中,该第一滤波阈值和该第二滤波阈值可以互为相反数。
[0203]
步骤s34、基于参考像素点的滤波像素值和参考像素点的原始像素值,确定参考像素点的调整像素值。比如说,基于参考像素点的滤波像素值,参考像素点的原始像素值,第三滤波阈值,第四滤波阈值,第三滤波偏移值和第四滤波偏移值,确定参考像素点的调整像素值;其中,该第三滤波阈值和该第四滤波阈值可以互为相反数。
[0204]
示例性的,若当前像素点只满足普通滤波模式的启用条件,不满足增强滤波模式的启用条件,则执行步骤s31和步骤s32,将滤波像素值作为目标像素值(去块滤波过程的最终像素值)。若当前像素点满足普通滤波模式的启用条件和增强滤波模式的启用条件,则执行步骤s31-步骤s34,将调整像素值作为目标像素值(去块滤波过程的最终像素值)。
[0205]
在步骤s33和步骤s34中,可以基于滤波像素值与未经过滤波处理的原始像素值,对像素点的原始像素值进行增强滤波处理,即对像素点的原始像素值进行增强滤波处理,得到增强处理后的调整像素值,以使增强处理后的调整像素值相比滤波像素值来说,更接近真实像素,避免由于过滤波导致的滤波像素值远大于或远小于像素点的真实像素,提升图像质量。
[0206]
示例性的,针对步骤s33来说,若当前像素点的滤波像素值与当前像素点的原始像素值之间的差值大于第一滤波阈值,则可以基于当前像素点的滤波像素值,当前像素点的原始像素值和第一滤波偏移值,确定当前像素点的调整像素值。若当前像素点的滤波像素值与当前像素点的原始像素值之间的差值小于第二滤波阈值,则可以基于当前像素点的滤波像素值,当前像素点的原始像素值和第二滤波偏移值,确定当前像素点的调整像素值。
[0207]
比如说,设y1(i)表示当前像素点的原始像素值,y2(i)表示当前像素点的滤波像素值,y3(i)表示当前像素点的调整像素值,并设yv(i)=(y1(i) y2(i) 1)>>1。
[0208]
基于此,若y1(i)-y2(i)>tv,则y3(i)=clip(yv(i) f0v);若y1(i)-y2(i)<ntv,则y3(i)=clip(yv(i) f1v)。在上述公式中,tv可以表示第一滤波阈值,f0v可以表示第一滤波偏移值,ntv,可以表示第二滤波阈值,f1v,可以表示第二滤波偏移值,ntv,一般设为-tv,也可以为其它值,clip(x)表示将x限制在预设取值范围内,该范围一般为[0,2
d-1],d为图像比特深度,对于8比特图像,范围为[0,255],对于10比特图像,范围为[0,1023]。
[0209]
为了避免增强处理后的调整像素值超出像素值取值范围,在得到调整像素值时,可以通过clip(修剪)操作,将调整像素值clip到预设取值范围。当调整像素值大于预设取值范围的上限时,将调整像素值设置为预设取值范围的上限;当调整像素值小于预设阈值范围的下限时,将调整像素值设置为预设取值范围的下限。举例来说,以8比特图像为例,当调整像素值小于0时,将调整像素值设置为0;当调整像素值大于255时,将调整像素值设置为255。
[0210]
示例性的,针对步骤s34来说,若参考像素点的滤波像素值与参考像素点的原始像
素值之间的差值大于第三滤波阈值,则可以基于参考像素点的滤波像素值,参考像素点的原始像素值和第三滤波偏移值,确定参考像素点的调整像素值。若参考像素点的滤波像素值与参考像素点的原始像素值之间的差值小于第四滤波阈值,则可以基于参考像素点的滤波像素值,参考像素点的原始像素值和第四滤波偏移值,确定参考像素点的调整像素值。参考像素点的调整像素值的确定方式与当前像素点的调整像素值的确定方式类似,在此不再赘述。
[0211]
示例性的,第三滤波阈值与第一滤波阈值可以相同,也可以不同,第三滤波偏移值与第一滤波偏移值可以相同,也可以不同,第四滤波阈值与第二滤波阈值可以相同,也可以不同,第四滤波偏移值与第二滤波偏移值可以相同,也可以不同。
[0212]
在一种可能的实施方式中,针对解码端来说,可以从高层语法中解析出当前块对应的第一滤波阈值,第一滤波偏移值,第二滤波偏移值,第三滤波阈值,第三滤波偏移值和第四滤波偏移值。由于第一滤波阈值与第二滤波阈值互为相反数,第三滤波阈值与第四滤波阈值互为相反数,因此,解码端可以确定出第二滤波阈值和第四滤波阈值。
[0213]
在另一种可能的实施方式中,针对解码端来说,可以从高层语法中解析出当前块对应的第一滤波阈值,第一滤波偏移值,第二滤波偏移值,第四滤波阈值,第三滤波偏移值和第四滤波偏移值。由于第一滤波阈值与第二滤波阈值互为相反数,第三滤波阈值与第四滤波阈值互为相反数,因此,解码端可以确定出第二滤波阈值和第三滤波阈值。
[0214]
在另一种可能的实施方式中,针对解码端来说,可以从高层语法中解析出当前块对应的第二滤波阈值,第一滤波偏移值,第二滤波偏移值,第三滤波阈值,第三滤波偏移值和第四滤波偏移值。由于第一滤波阈值与第二滤波阈值互为相反数,第三滤波阈值与第四滤波阈值互为相反数,因此,解码端可以确定出第一滤波阈值和第四滤波阈值。
[0215]
在另一种可能的实施方式中,针对解码端来说,可以从高层语法中解析出当前块对应的第二滤波阈值,第一滤波偏移值,第二滤波偏移值,第四滤波阈值,第三滤波偏移值和第四滤波偏移值。由于第一滤波阈值与第二滤波阈值互为相反数,第三滤波阈值与第四滤波阈值互为相反数,因此,解码端可以确定出第一滤波阈值和第三滤波阈值。
[0216]
在另一种可能的实施方式中,针对解码端来说,可以从高层语法中解析出当前块对应的第一滤波阈值(或第二滤波阈值,或第三滤波阈值,或第四滤波阈值,即能够通过一个滤波阈值推导出其它三个滤波阈值),第一滤波偏移值(或第三滤波偏移值)和第二滤波偏移值(或第四滤波偏移值)。在此基础上,由于第一滤波阈值与第二滤波阈值互为相反数,因此,可以确定出第二滤波阈值。由于第一滤波阈值与第三滤波阈值相同,因此,可以确定出第三滤波阈值。由于第三滤波偏移值与第一滤波偏移值相同,因此,可以确定出第三滤波偏移值。由于第四滤波偏移值与第二滤波偏移值相同,因此,可以确定出第四滤波偏移值。由于第三滤波阈值与第四滤波阈值互为相反数,因此,可以确定出第四滤波阈值。
[0217]
当然,上述方式只是几个示例,对此不做限制,只要解码端能够获知第一滤波阈值、第二滤波阈值、第三滤波阈值、第四滤波阈值、第一滤波偏移值、第二滤波偏移值、第三滤波偏移值和第四滤波偏移值即可,即上述各数值可以通过解析得到或者推导得到。
[0218]
在上述实施例中,高层语法可以包括但不限于如下语法中的一种:sps级高层语法;pps级高层语法;图像头级高层语法;帧级高层语法;片头级高层语法;ctu级高层语法;cu级高层语法。当然,上述只是高层语法的几个示例,对此高层语法的类型不做限制,只要
能够通过高层语法携带当前块对应的滤波阈值和滤波偏移值即可。
[0219]
在上述实施例中,当前块可以为亮度分量或者色度分量。
[0220]
在一种可能的实施方式中,可以通过增强滤波模式使能标志位表示是否允许启用增强滤波模式,若增强滤波模式使能标志位允许当前块启用增强滤波模式,则需要确定当前块中的当前像素点是否满足增强滤波模式的启用条件,若当前像素点满足增强滤波模式的启用条件,则采用增强滤波模式对当前像素点的原始像素值进行调整。若增强滤波模式使能标志位不允许当前块启用增强滤波模式,则直接确定当前块中的每个像素点不满足增强滤波模式的启用条件,不会采用增强滤波模式对当前像素点的原始像素值进行调整。在此基础上,若当前块对应的增强滤波模式使能标志位允许当前块启用增强滤波模式,则确定当前块中的当前像素点是否满足增强滤波模式的启用条件。若当前块对应的增强滤波模式使能标志位不允许当前块启用增强滤波模式,则确定当前块中的每个像素点不满足增强滤波模式的启用条件。
[0221]
示例性的,针对解码端来说,可以从高层语法中解析出当前块对应的增强滤波模式使能标志位。比如说,若该增强滤波模式使能标志位为第一取值(如1),则说明增强滤波模式使能标志位允许当前块启用增强滤波模式,若该增强滤波模式使能标志位为第二取值(如0),则说明增强滤波模式使能标志位不允许当前块启用增强滤波模式。
[0222]
在上述实施例中,高层语法可以包括但不限于如下语法中的一种:sps级高层语法;pps级高层语法;图像头级高层语法;帧级高层语法;片头级高层语法;ctu级高层语法;cu级高层语法。当然,上述只是高层语法的几个示例,对此高层语法的类型不做限制,只要能够通过高层语法携带当前块对应的增强滤波模式使能标志位即可。
[0223]
实施例8:在满足普通滤波模式的启用条件时,可以采用dbf滤波方式(即去块滤波方式)对像素点的原始像素值进行去块滤波,由于dbf滤波分为垂直dbf滤波和水平dbf滤波,因此,可以采用如下步骤对像素点的原始像素值进行去块滤波处理:
[0224]
第一步:原始像素值y1(i)通过垂直dbf滤波后得到滤波像素值y2(i);
[0225]
第二步:像素值y2(i)通过水平dbf滤波后得到滤波像素值y3(i)。
[0226]
示例性的,若只对像素点进行垂直dbf滤波,则只执行第一步,得到像素点的滤波像素值。若只对像素点进行水平dbf滤波,则只执行第二步,得到像素点的滤波像素值,将第二步的像素值y2(i)替换为像素点的原始像素值即可。若对像素点先进行垂直dbf滤波,后进行水平dbf滤波,则依次执行第一步和第二步。
[0227]
在满足普通滤波模式的启用条件和增强滤波模式的启用条件时,可以采用dbf滤波方式(即去块滤波方式)对像素点的原始像素值进行去块滤波,并对去块滤波后的滤波像素值进行调整,由于dbf滤波分为垂直dbf滤波和水平dbf滤波,因此,可以采用如下步骤对像素点的原始像素值进行去块滤波处理,并对去块滤波后的滤波像素值进行调整:
[0228]
第一步:原始像素值y1(i)通过垂直dbf滤波后得到滤波像素值y2(i);
[0229]
第二步:基于y2(i)-y1(i),获得调整像素值y3(i);
[0230]
第三步:像素值y3(i)通过水平dbf滤波后得到滤波像素值y4(i);
[0231]
第四步:基于y4(i)-y3(i),获得调整像素值y5(i)。
[0232]
示例性的,若只对像素点进行垂直dbf滤波,则只执行第一步和第二步,得到像素点的调整像素值。若只对像素点进行水平dbf滤波,则只执行第三步和第四步,得到像素点
的调整像素值,将第三步的像素值y3(i)替换为像素点的原始像素值即可。若对像素点先进行垂直dbf滤波,后进行水平dbf滤波,则依次执行第一步、第二步、第三步和第四步。若对像素点先进行水平dbf滤波,后进行垂直dbf滤波,则执行步骤类似,在此不再赘述。
[0233]
示例性的,针对第二步和第四步,就是满足增强滤波模式的启用条件时,采用增强滤波模式的处理过程,即,对滤波像素值进行调整,得到调整像素值的过程。
[0234]
在第二步中,假设yv(i)=(y1(i) y2(i) 1)>>1,若y1(i)-y2(i)>tv,则y3(i)=clip(yv(i) f0v),若y1(i)-y2(i)<ntv,则y3(i)=clip(yv(i) f1v),否则,y3(i)=y2(i)(在一种实施例中,该种情况也可以对y2(i)进行滤波获得y3(i),如y3(i)=y2(i) f2v)。
[0235]
示例性的,clip(x)表示将x限制在预设的图像取值范围内,该图像取值范围一般可以为[0,2
d-1],d为图像比特深度,因此,对于8比特图像,该图像取值范围可以为[0,255],对于10比特图像,该图像取值范围为[0,1023]。阈值ntv一般设为-tv,也可以为其它值。
[0236]
类似的,与第二步的处理过程类似,在第四步中,假设yh(i)=(y3(i) y`4(i) 1)>>1,若y4(i)-y3(i)>th,则y5(i)=clip(yh(i) f0h),若y1(i)-y2(i)<nth,则y5(i)=clip(yh(i) f1h),否则,y5(i)=y`4(i)(在一种实施例中,该种情况也可以对y`4(i)进行滤波获得y5(i),如y5(i)=y`4(i) f2h),nth一般设为-th,也可以为其它值。
[0237]
在上述实施例中,tv和ntv为滤波阈值,f0v、flv和f2v为滤波偏移值,clip(x)表示将x限制在预设的取值范围内。比如说,tv为上文中的第一滤波阈值和第三滤波阈值(以第一滤波阈值和第三滤波阈值相同为例),ntv为上文中的第二滤波阈值和第四滤波阈值(以第二滤波阈值和第四滤波阈值相同为例),f0v为上文中的第一滤波偏移值和第三滤波偏移值(以第一滤波偏移值和第三滤波偏移值相同为例),f1v为上文中的第二滤波偏移值和第四滤波偏移值(以第二滤波偏移值和第四滤波偏移值相同为例)。ntv=-tv,即tv和ntv互为相反数。
[0238]
在上述实施例中,th和nth为滤波阈值,f0h、f1h和f2h为滤波偏移值,clip(x)表示将x限制在预设的取值范围内。比如说,th为上文中的第一滤波阈值和第三滤波阈值(以第一滤波阈值和第三滤波阈值相同为例),nth为上文中的第二滤波阈值和第四滤波阈值(以第二滤波阈值和第四滤波阈值相同为例),f0h为上文中的第一滤波偏移值和第三滤波偏移值(以第一滤波偏移值和第三滤波偏移值相同为例),f1h为上文中的第二滤波偏移值和第四滤波偏移值(以第二滤波偏移值和第四滤波偏移值相同为例)。nth=-th,即th和nth互为相反数。
[0239]
实施例9:在dbf中,仅根据一个既定准则进行滤波,会存在过滤波或欠滤波的情况。例如,若进行dbf前的重建值为y1,经过dbf滤波后的像素值为y2,则可基于y2-y1进行分类。基于滤波残差分类的主要好处是,可以对于一些过滤波或伪滤波的像素值进行特殊增强,以实现这些类别的像素更接近原始值的效果。所谓过滤波,是指y2远大于(或远小于)y1,以至于y2远大于(或远小于)原始像素值。所谓伪滤波,是指y2-y1为0,或接近于0,即这些像素值经过滤波后仍保持不变,未达到滤波效果。针对上述发现,本实施例中,可以采用增强调整模式对像素点的像素值进行调整,也就是说,若对当前块中的当前像素点启用增强调整模式,则可以采用增强调整模式对像素点的原始像素值进行调整,而不再采用普通滤波模式或者增强滤波模式对像素点的原始像素值进行调整。
[0240]
在一种可能的实施方式中,原始像素值的调整过程,可以包括以下步骤:
[0241]
第一步:原始像素值y1(i)通过垂直dbf滤波后得到滤波像素值y2(i);
[0242]
第二步:基于y2(i)-y1(i),获得调整像素值y3(i);
[0243]
第三步:像素值y3(i)通过水平dbf滤波后得到滤波像素值y4(i);
[0244]
第四步:基于y4(i)-y3(i),获得调整像素值y5(i)。
[0245]
在第二步中,存在如下两种情况,abs(y2(i)-y1(i))<阈值和abs(y2(i)-y1(i))不小于阈值,若abs(y2(i)-y1(i))<阈值,还可以分为以下两种情况,即bs为0和bs大于0。示例性的,该阈值可以为上述实施例的第一滤波阈值或者第二滤波阈值,比如说,第一滤波阈值和第二滤波阈值互为相反数,若第一滤波阈值为正值,则该阈值可以为第一滤波阈值,若第二滤波阈值为正值,则该阈值可以为第二滤波阈值。
[0246]
综上所述,可以将原始像素值的调整过程划分为如下三种情况:
[0247]
情况1、bs为0,此时不进行滤波(即y2(i)等于y1(i),相当于不对原始像素值y1(i)进行垂直dbf滤波,即不会执行第一步),但是,可以采用增强调整模式对原始像素值y1(i)进行调整,得到调整像素值。
[0248]
情况2、bs大于0,但是,abs(y2(i)-y1(i))<阈值,此时可以进行滤波(即对原始像素值y1(i)进行垂直dbf滤波,即执行第一步)。在执行第一步的基础上,还可以采用增强滤波模式对滤波像素值y2(i)进行调整,得到像素点的调整像素值y3(i)。
[0249]
情况3、bs大于0,但是,abs(y2(i)-y1(i))不小于阈值,此时可以进行滤波(即对原始像素值y1(i)进行垂直dbf滤波,即执行第一步)。在执行第一步的基础上,不再采用增强滤波模式对滤波像素值y2(i)进行调整,即不再执行第二步,也就是,y3(i)=y2`(i)。
[0250]
在第四步中,存在如下两种情况,abs(y4(i)-y3(i))<阈值和abs(y4(i)-y3(i))不小于阈值,若abs(y4(i)-y3(i))<阈值,则还可以分为以下两种情况,即bs为0和bs大于0。
[0251]
综上所述,可以将原始像素值的调整过程划分为如下三种情况:
[0252]
情况1、bs为0,此时不进行滤波(即y4(i)等于y3(i),相当于不对原始像素值y3(i)进行水平dbf滤波,不会执行第三步),但是,可以采用增强调整模式对原始像素值y3(i)进行调整,得到调整像素值。
[0253]
情况2、bs大于0,但是,abs(y4(i)-y3(i))<阈值,此时可以进行滤波(即对原始像素值y3(i)进行水平dbf滤波,即执行第三步),在执行第三步的基础上,还可以采用增强滤波模式对像素点的滤波像素值y4(i)进行调整,得到像素点的调整像素值y5(i)。
[0254]
情况3、bs大于0,但是,abs(y4(i)-y3(i))不小于阈值,此时可以进行滤波(即对原始像素值y3(i)进行水平dbf滤波,即执行第三步)。在执行第三步的基础上,不再采用增强滤波模式对滤波像素值y4(i)进行调整,即不再执行第四步,也就是,y5(i)=y4(i)。
[0255]
综上所述,若bs为0,则采用增强调整模式进行处理,即可以不进行滤波处理,也就是说,y2(i)=y1(i),且y4(i)=y3(i),在此基础上,可以采用增强调整模式对y1(i)进行调整,并可以采用增强调整模式对y3(i)进行调整,因此,可以采用如下步骤进行dbf滤波处理:
[0256]
第一步:原始像素值y1(i)通过垂直dbf滤波后得到滤波像素值y2(i)。
[0257]
第二步:若bs为0,则通过增强调整模式对y1(i)进行调整,得到调整像素值y3(i)。若bs大于0,且abs(y2(i)-y1(i))<阈值,则启用增强滤波模式,基于y2(i)-y1(i),获得调整
像素值y3(i),参见实施例8的第二步。若bs大于0,且abs(y2(i)-y1(i))不小于阈值,则启用普通滤波模式,不再对滤波像素值y2(i)进行调整,即,y3(i)=y2`(i)。
[0258]
示例性的,若bs为0,实际上并不执行第一步,即并不需要得到滤波像素值y2(i)。
[0259]
第三步:像素值y3(i)通过水平dbf滤波后得到滤波像素值y4(i)。
[0260]
第四步:若bs为0,则通过增强调整模式对y3(i)进行调整,得到调整像素值y5(i)。若bs大于0,且abs(y4(i)-y3(i))<阈值,则启用增强滤波模式,基于y4(i)-y3(i),获得调整像素值y5(i),参见实施例8的第四步。若bs大于0,且abs(y4(i)-y3(i))不小于阈值,则启用普通滤波模式,不再对滤波像素值y4(i)进行调整,即,y5(i)=y4(i)。
[0261]
示例性的,若bs为0,实际上并不执行第三步,即并不需要得到滤波像素值y4(i)。
[0262]
在另一可能的实施方式中,若bs大于0,则进行滤波处理,但滤波处理后abs(y2(i)-y1(i))<阈值,则采用增强滤波模式进行处理,即可以采用如下步骤进行dbf滤波处理:
[0263]
第一步:原始像素值y1(i)通过垂直dbf滤波后得到滤波像素值y2(i)。
[0264]
第二步:若bs大于0,但是,对y1(i)进行垂直dbf滤波后,仍然满足abs(y2(i)-y1(i))<阈值,则通过增强滤波模式获得调整像素值y3(i),比如说,y3(i)通过y1(i)加补偿值获得。否则,若abs(y2(i)-y1(i))不小于阈值,则y3(i)=y2`(i)。
[0265]
第三步:像素值y3(i)通过水平dbf滤波后得到滤波像素值y4(i)。
[0266]
第四步:若bs大于0,但是,对y3(i)进行水平dbf滤波后,仍然满足abs(y4(i)-y3(i))<阈值,则通过增强滤波模式获得调整像素值y5(i),比如说,y5(i)通过y3(i)加补偿值获得。否则,若abs(y4(i)-y3(i))不小于阈值,则y5(i)=y4(i)。
[0267]
实施例10:针对实施例9,若bs为0,则通过增强调整模式对y1(i)进行调整,得到调整像素值y3(i),具体调整过程参见如下步骤。若bs为0,则通过增强调整模式对y3(i)进行调整,得到调整像素值y5(i),该过程与得到调整像素值y3(i)的过程类似,在此不再赘述。
[0268]
首先,确定y1(i)的梯度值,y1(i)可以是当前像素点的原始像素值,也可以是参考像素点的原始像素值。针对垂直边界来说,可以计算y1(i)的水平梯度值dy1(i);针对水平边界来说,可以计算y1(i)的垂直梯度值dy1(i)。比如说,假设pi和qi分别为当前像素点的原始像素值和参考像素点的原始像素值(对应y1(i)),则计算当前像素点的原始像素值pi的梯度值dp0:dp0=(pi-qi 2)>>2,计算参考像素点的原始像素值qi的梯度值dq0:dq0=(qi-pi 2)>>2。
[0269]
然后,基于dy1(i)的大小,进行补偿调整得到y3(i)。比如说,采用如下方式确定出当前像素点的原始像素值pi对应的调整像素值pi:若dpi>alt_dbr_th,则pi=clip(pi alt_dbr_offset0);若dpi<-alt_dbr_th,则pi=clip(pi alt_dbr_offset1),i为0、1、2等。采用如下方式确定出参考像素点的原始像素值qi对应的调整像素值qi:若dqi>alt_dbr_th,则qi=clip(qi alt_dbr_offset0);若dqi<-alt_dbr_th,则qi=clip(qi alldbr_offset1),i为0、1、2。
[0270]
在上述公式中,alt_dbr_th表示第一调整阈值和第三调整阈值(以第三调整阈值与第一调整阈值相同为例),alt_dbr_offset0表示第一调整偏移值和第三调整偏移值(以第三调整偏移值与第一调整偏移值相同为例),alt_dbr_offset1表示第二调整偏移值和第四调整偏移值(以第四调整偏移值与第二调整偏移值相同为例),-alt_dbr_th表示第二调
整阈值和第四调整阈值(以第四调整阈值与第二调整阈值相同为例),且-alt_dbr_th与alt_dbr_th互为相反数。
[0271]
实施例11:通过高层语法(如sps级高层语法)控制增强调整模式的启用。比如说,在序列头中编码/解码标志位adbr_enable_flag,即编码端在序列头中编码标志位adbr_enable_flag,解码端从序列头中解码标志位adbr_enable_flag。adbr_enable_flag为二值变量,值为
‘1’
表示可使用增强调整模式,值为
‘0’
表示不应使用增强调整模式。adbrenableflag的值等于adbr_enable_flag,如果位流中不存在adbr_enable_flag,adbrenableflag的值为0。
[0272]
综上所述,针对解码端来说,可以从高层语法中解析出当前块对应的增强调整模式使能标志位(即adbrenableflag),若该增强调整模式使能标志位为1,则说明增强调整模式使能标志位允许当前块启用增强调整模式,若该增强调整模式使能标志位为0,则说明增强调整模式使能标志位不允许当前块启用增强调整模式。
[0273]
实施例12:通过高层语法(如sps级高层语法)同时控制增强滤波模式的启用和增强调整模式的启用。比如说,在序列头中编码/解码标志位dbr_enable_flag,即编码端在序列头中编码标志位dbr_enable_flag,解码端从序列头中解码标志位dbr_enable_flag。
[0274]
dbr_enable_flag为二值变量,值为
‘1’
表示可允许使用增强滤波模式和增强调整模式,值为
‘0’
表示不允许使用增强滤波模式和增强调整模式。dbrenableflag的值等于dbr_enable_flag,如果位流中不存在dbr_enable_flag,dbrenableflag的值为0。
[0275]
综上所述,针对解码端来说,可以从高层语法中解析出当前块对应的增强滤波模式使能标志位和增强调整模式使能标志位(即dbrenableflag,也就是dbrenableflag同时作为增强滤波模式使能标志位和增强调整模式使能标志位),若dbrenableflag为1,则说明允许当前块启用增强滤波模式和增强调整模式,若dbrenableflag为0,则说明不允许当前块启用增强滤波模式和增强调整模式。
[0276]
实施例13:高层语法(如图像头高层语法)的一种表述可以参见表1所示,比如说,在图像头编码/解码表1所示的语法。即,编码端在图像头编码表1所示的语法,解码端从图像头中解码表1所示的语法。
[0277]
表1
[0278][0279]
在表1中,相关语法的含义如下所示:
[0280]
图像级去块滤波垂直调整允许标志picture_dbr_v_enable_flag,picture_dbr_v_enable_flag是二值变量,值为
‘1’
表示当前图像允许使用去块滤波垂直调整,值为
‘0’
表示当前图像不允许使用去块滤波垂直调整。picturedbrvenableflag的值等于picture_dbr_v_enable_flag的值,如果位流中不存在picture_dbr_v_enable_flag,则phdbrvenableflag的值为0。
[0281]
示例性的,针对增强调整模式来说,picturedbrvenableflag与增强调整模式使能标志位对应,是针对垂直dbf滤波的增强调整模式使能标志位。也就是说,在需要进行垂直dbf滤波时,picturedbrvenableflag表示允许启用增强调整模式,或不允许启用增强调整模式。
[0282]
示例性的,针对增强滤波模式来说,picturedbrvenableflag与增强滤波模式使能标志位对应,是针对垂直dbf滤波的增强滤波模式使能标志位。也就是说,在需要进行垂直dbf滤波时,picturedbrvenableflag表示允许启用增强滤波模式,或不允许启用增强滤波模式。
[0283]
综上所述,picturedbrvenableflag可以表示针对垂直dbf滤波的增强调整模式使能标志位和针对垂直dbf滤波的增强滤波模式使能标志位,也就是说,增强调整模式使能标志位和增强滤波模式使能标志位共用同一个标志位,即,当前图像同时允许启用增强调整模式和增强滤波模式,或者,当前图像同时不允许启用增强调整模式和增强滤波模式。
[0284]
去块滤波垂直调整阈值dbr_v_threshold_minus1,dbr_v_threshold_minus1用于确定当前图像去块滤波垂直调整的阈值,取值范围是0-1。dbrvthreshold的值等于dbr_v_threshold_minus1的值加1,如果位流中不存在dbr_v_threshold_minus1,则dbrvthreshold的值为0。
[0285]
示例性的,针对增强调整模式来说,dbrvthreshold与第一调整阈值(以第三调整阈值与第一调整阈值相同为例)对应,是针对垂直dbf滤波的第一调整阈值。也就是说,在需
要进行垂直dbf滤波时,dbrvthreshold表示上述实施例的第一调整阈值。而且,上述实施例的第二调整阈值(以第四调整阈值与第二调整阈值相同为例)与第一调整阈值互为相反数,因此,也可以基于dbrvthreshold确定出第二调整阈值。
[0286]
示例性的,针对增强滤波模式来说,dbrvthreshold与第一滤波阈值(以第三滤波阈值与第一滤波阈值相同为例)对应,是针对垂直dbf滤波的第一滤波阈值。也就是说,在需要进行垂直dbf滤波时,dbrvthreshold表示上述实施例的第一滤波阈值。而且,上述实施例的第二滤波阈值(以第四滤波阈值与第二滤波阈值相同为例)与第一滤波阈值互为相反数,因此,也可以基于dbrvthreshold确定出第二滤波阈值。
[0287]
综上所述,dbrvthreshold可以表示针对垂直dbf滤波的第一调整阈值和第一滤波阈值,也就是说,第一调整阈值和第一滤波阈值相同,二者为同一个取值。
[0288]
去块滤波垂直调整偏移值0(dbr_v_offset0_minus1),用于确定当前图像去块滤波垂直调整的偏移值0,取值范围是0-3。dbrvoffset0的值等于dbr_v_offset0_minus1的值加1后的负值,如果位流中不存在dbr_v_offset0_minus1,则dbrvoffset0的值为0。
[0289]
示例性的,针对增强滤波模式来说,dbrvoffset0与第一滤波偏移值(以第三滤波偏移值与第一滤波偏移值相同为例)对应,是针对垂直dbf滤波的第一滤波偏移值,即,在需要进行垂直dbf滤波时,dbrvoffset0表示上述实施例的第一滤波偏移值。
[0290]
去块滤波垂直调整偏移值1(dbr_v_offset1_minus1),用于确定当前图像去块滤波垂直调整的偏移值1,取值范围可以是0-3。dbrvoffset1的值等于dbr_v_offset1_minus1的值加1。如果位流中不存在dbr_v_offset1_minus1,则dbrvoffset1的值为0。
[0291]
示例性的,针对增强滤波模式来说,dbrvoffset1与第二滤波偏移值(以第四滤波偏移值与第二滤波偏移值相同为例)对应,是针对垂直dbf滤波的第二滤波偏移值,即,在需要进行垂直dbf滤波时,dbrvoffset1表示上述实施例的第二滤波偏移值。
[0292]
增强去块滤波垂直调整偏移值0(dbr_v_alt_offset0_minus1),dbr_v_alt_offset0_minus1用于确定当前图像去块滤波bs为0时的垂直调整的偏移值0,dbr_v_alt_offset0_minus1的取值范围可以是0-3。dbrvaltoffset0的值可以等于dbr_v_alt_offset0_minus1的值加1后的负值,如果位流中不存在dbr_v_alt_offset0_minus1,则dbrvaltoffset0的值为0。
[0293]
示例性的,针对增强调整模式来说,dbrvaltoffset0与第一调整偏移值(以第三调整偏移值与第一调整偏移值相同为例)对应,是针对垂直dbf滤波的第一调整偏移值,即,在进行垂直dbf滤波时,dbrvaltoffset0表示上述实施例的第一调整偏移值。
[0294]
增强去块滤波垂直调整偏移值1(dbr_v_alt_offsetl_minus1),dbr_v_alt offset1_minus1用于确定当前图像去块滤波bs为0时的垂直调整的偏移值1,dbr_v_alt_offset1_minus1的取值范围可以是0-3。其中,dbrvaltoffset1的值等于dbr_v_alt_offset1_minus1的值加1,如果位流中不存在dbr_v_alt_offsetl_minus1,则dbrvaltoffset1的值为0。
[0295]
示例性的,针对增强调整模式来说,dbrvaltoffset1与第二调整偏移值(以第四调整偏移值与第二调整偏移值相同为例)对应,是针对垂直dbf滤波的第二调整偏移值,即,在进行垂直dbf滤波时,dbrvaltoffset1表示上述实施例的第二调整偏移值。
[0296]
图像级去块滤波水平调整允许标志picture_dbr_h_enable_flag,picture_dbr_
h_enable_flag是二值变量,值为
‘1’
表示当前图像允许使用去块滤波水平调整,值为
‘0’
表示当前图像不允许使用去块滤波水平调整。phdbrhenableflag的值等于picture_dbr_h_enable_flag的值,如果位流中不存在picture_dbr_h_enable_flag,则phdbrhenableflag的值为0。
[0297]
示例性的,针对增强调整模式来说,phdbrhenableflag与增强调整模式使能标志位对应,是针对水平dbf滤波的增强调整模式使能标志位。也就是说,在需要进行水平dbf滤波时,phdbrhenableflag表示允许启用增强调整模式,或不允许启用增强调整模式。
[0298]
示例性的,针对增强滤波模式来说,phdbrhenableflag与增强滤波模式使能标志位对应,是针对水平dbf滤波的增强滤波模式使能标志位。也就是说,在需要进行水平dbf滤波时,phdbrhenableflag表示允许启用增强滤波模式,或不允许启用增强滤波模式。
[0299]
综上所述,phdbrhenableflag可以表示针对水平dbf滤波的增强调整模式使能标志位和针对水平dbf滤波的增强滤波模式使能标志位,也就是说,增强调整模式使能标志位和增强滤波模式使能标志位共用同一个标志位,即,当前图像同时允许启用增强调整模式和增强滤波模式,或者,当前图像同时不允许启用增强调整模式和增强滤波模式。
[0300]
去块滤波水平调整阈值dbr_h_threshold_minus1,dbr_h_threshold_minus1用于确定当前图像去块滤波水平调整的阈值,取值范围是0-1。dbrhthreshold的值等于dbr_h_threshold_minus1的值加1,如果位流中不存在dbr_h_threshold_minus1,则dbrhthreshold的值为0。
[0301]
示例性的,针对增强调整模式来说,dbrhthreshold与第一调整阈值(以第三调整阈值与第一调整阈值相同为例)对应,是针对水平dbf滤波的第一调整阈值。也就是说,在需要进行水平dbf滤波时,dbrhthreshold表示上述实施例的第一调整阈值。而且,上述实施例的第二调整阈值(以第四调整阈值与第二调整阈值相同为例)与第一调整阈值互为相反数,因此,也可以基于dbrhthreshold确定出第二调整阈值。
[0302]
示例性的,针对增强滤波模式来说,dbrhthreshold与第一滤波阈值(以第三滤波阈值与第一滤波阈值相同为例)对应,是针对水平dbf滤波的第一滤波阈值。也就是说,在需要进行水平dbf滤波时,dbrhthreshold表示上述实施例的第一滤波阈值。而且,上述实施例的第二滤波阈值(以第四滤波阈值与第二滤波阈值相同为例)与第一滤波阈值互为相反数,因此,也可以基于dbrhthreshold确定出第二滤波阈值。
[0303]
综上所述,dbrhthreshold可以表示针对水平dbf滤波的第一调整阈值和第一滤波阈值,也就是说,第一调整阈值和第一滤波阈值相同,二者为同一个取值。
[0304]
去块滤波水平调整偏移值0(dbr_h_offset0_minus1),用于确定当前图像去块滤波水平调整的偏移值0,取值范围是0-3。dbrhoffset0的值等于dbr_h_offset0_minus1的值加1后的负值,如果位流中不存在dbr_h_offset0_minus1,则dbrhoffset0的值为0。
[0305]
示例性的,针对增强滤波模式来说,dbrhoffset0与第一滤波偏移值(以第三滤波偏移值与第一滤波偏移值相同为例)对应,是针对水平dbf滤波的第一滤波偏移值,即,在需要进行水平dbf滤波时,dbrhoffset0表示上述实施例的第一滤波偏移值。
[0306]
去块滤波水平调整偏移值1(dbr_h_offset1_minus1),用于确定当前图像去块滤波水平调整的偏移值1,取值范围可以是0-3。dbrhoffset1的值等于dbr_h_offset1_minus1的值加1。如果位流中不存在dbr_h_offset1_minus1,则dbrhoffset1的值为0。
[0307]
示例性的,针对增强滤波模式来说,dbrhoffset1与第二滤波偏移值(以第四滤波偏移值与第二滤波偏移值相同为例)对应,是针对水平dbf滤波的第二滤波偏移值,即,在需要进行水平dbf滤波时,dbrhoffsetl表示上述实施例的第二滤波偏移值。
[0308]
增强去块滤波水平调整偏移值0(dbr_h_alt_offset0_minus1),dbr_h_alt_offset0_minus1用于确定当前图像去块滤波bs为0时的水平调整的偏移值0,dbr_h_alt_offset0_minus1的取值范围可以是0-3。dbrhaltoffset0的值可以等于dbr_h_alt_offset0_minus1的值加1后的负值,如果位流中不存在dbr_h_alt_offset0_minus1,dbrhaltoffset0的值为0。
[0309]
示例性的,针对增强调整模式来说,dbrhaltoffset0与第一调整偏移值(以第三调整偏移值与第一调整偏移值相同为例)对应,是针对水平dbf滤波的第一调整偏移值,即,在进行水平dbf滤波时,dbrhaltoffset0表示上述实施例的第一调整偏移值。
[0310]
增强去块滤波水平调整偏移值1(dbr_h_alt_offsetl_minus1),dbr_h_alt_offsetl_minus1用于确定当前图像去块滤波bs为0时的水平调整的偏移值1,dbr_h_alt_offset1_minus1的取值范围可以是0-3。其中,dbrhaltoffset1的值等于dbr_h_alt_offset1_minus1的值加1,如果位流中不存在dbr_h_alt_offset1_minus1,则dbrhaltoffset1的值为0。
[0311]
示例性的,针对增强调整模式来说,dbrhaltoffset1与第二调整偏移值(以第四调整偏移值与第二调整偏移值相同为例)对应,是针对水平dbf滤波的第二调整偏移值,即,在进行水平dbf滤波时,dbrhaltoffset1表示上述实施例的第二调整偏移值。
[0312]
实施例14:高层语法(如图像头高层语法)的一种表述可以参见表2所示,比如说,在图像头编码/解码表2所示的语法。即,编码端在图像头编码表2所示的语法,解码端从图像头中解码表2所示的语法。
[0313]
表2
[0314]
[0315][0316]
在表2中,相关语法的含义如下所示:
[0317]
图像级增强垂直调整允许标志picture_alt_dbr_v_enable_flag,是一个二值变量,值为
‘1’
表示当前图像允许使用增强垂直调整,值为
‘0’
表示当前图像不允许使用增强垂直调整。picturealtdbrvenableflag的值可以等于picture_alt_dbr_v_enable_flag的值,如果位流中不存在picture_alt_dbr_v_enable_flag,则phaltdbrvenableflag的值为0。
[0318]
示例性的,针对增强调整模式来说,picturealtdbrvenableflag与增强调整模式使能标志位对应,是针对垂直dbf滤波的增强调整模式使能标志位,也就是说,在需要进行垂直dbf滤波时,picturealtdbrvenableflag表示允许启用增强调整模式,或不允许启用增强调整模式。
[0319]
与实施例13中的picturedbrvenableflag不同的是,picturealtdbrvenableflag只是针对垂直dbf滤波的增强调整模式使能标志位,而不是针对垂直dbf滤波的增强滤波模式使能标志位。
[0320]
图像级增强水平调整允许标志picture_alt_dbr_h_enable_flag,是一个二值变量,值为
‘1’
表示当前图像允许使用增强水平调整,值为
‘0’
表示当前图像不允许使用增强水平调整。picturealtdbrhenableflag的值可以等于picture_alt_dbr_h_enable_flag的值,如果位流中不存在picture_alt_dbr_h_enable_flag,phaltdbrhenableflag的为0。
[0321]
示例性的,针对增强调整模式来说,phaltdbrhenableflag与增强调整模式使能标志位对应,是针对水平dbf滤波的增强调整模式使能标志位,也就是说,在需要进行水平dbf滤波时,phaltdbrhenableflag表示允许启用增强调整模式,或不允许启用增强调整模式。
[0322]
与实施例13中的picturedbrhenableflag不同的是,phaltdbrhenableflag只是水平dbf滤波的增强调整模式使能标志位,而不是针对水平dbf滤波的增强滤波模式使能标志位。
[0323]
关于表2中其它语法的含义,与表1中相关语法的含义相同,在此不再重复赘述。
[0324]
实施例15:针对实施例11来说,adbr_enable_flag的编码和解码,可以在去块滤波
模式启用时才进行adbr_enable_flag的编码和解码,也就是说,可以先确定是否启用去块滤波模式,如果是,才会在序列头中编码/解码标志位adbr_enable_flag,如果否,则不在序列头中编码/解码标志位adbr_enable_flag。综上所述,增强调整模式(adbr_enable_flag用于控制增强调整模式的启用)是去块滤波模式的子模式,在去块滤波模式启用时才允许启用增强调整模式。
[0325]
针对实施例12来说,dbr_enable_flag的编码和解码,可以在去块滤波模式启用时才进行dbr_enable_flag的编码和解码,也就是说,可以先确定是否启用去块滤波模式,如果是,才会在序列头中编码/解码标志位dbr_enable_flag,如果否,则不在序列头中编码/解码标志位dbr_enable_flag。综上所述,增强滤波模式(dbr_enable_flag用于控制增强滤波模式的启用)是去块滤波模式的子模式,在去块滤波模式启用时才允许启用增强滤波模式。
[0326]
针对实施例13来说,表1所示的高层语法(用于控制增强滤波模式的启用和增强调整模式的启用)的编码和解码,可以在去块滤波模式启用时才进行该高层语法的编码和解码,也就是说,可以先确定是否启用去块滤波模式,如果是,才会在图像头中编码/解码表1所示的高层语法,如果否,则不在图像头中编码/解码表1所示的高层语法。
[0327]
针对实施例14来说,表2所示的高层语法(用于控制增强滤波模式的启用和增强调整模式的启用)的编码和解码,可以在去块滤波模式启用时才进行该高层语法的编码和解码,也就是说,可以先确定是否启用去块滤波模式,如果是,才会在图像头中编码/解码表2所示的高层语法,如果否,则不在图像头中编码/解码表2所示的高层语法。
[0328]
实施例16:针对亮度分量(即当前块为亮度分量)的去块滤波过程,比如说,采用增强调整模式对亮度分量进行调整,或者,采用增强滤波模式对亮度分量进行调整。
[0329]
关于亮度分量的dbr参数的推导过程:
[0330]
如果当前待滤波边界为垂直边界且picturedbrvenableflag的值为1,或者,当前待滤波边界为水平边界且picturedbrhenableflag的值为1,则picturedbrenableflag的值为1;否则,picturedbrenableflag为0。以及,如果当前待滤波边界为垂直边界且picturealtdbrvenableflag的值为1,或者,当前待滤波边界为水平边界且picturealtdbrhenableflag的值为1,则picturealtdbrenableflag的值为1;否则,picturealtdbrenableflag为0。
[0331]
按照如下方法导出dbr_th、dbr_offset0、dbr_offset1、alt_dbr_offset0、alt_dbr_offset1:
[0332]
对于垂直边界,dbr_th=dbrvthreshold,dbr_offset0=dbrvoffset0,dbr_offset1=dbrvoffset1,alt_dbr_offset0=dbrvaltoffset0,alt_dbr_offset1=dbrvaltoffset1。
[0333]
对于水平边界,dbr_th=dbrhthreshold,dbr_offset0=dbrhoffset0,dbr_offset1=dbrhoffset1,alt_dbr_offset0=dbrhaltoffset0,alt_dbr_offset1=dbrhaltoffset1。
[0334]
(1)亮度分量的bs等于4时的边界滤波过程(采用增强滤波模式进行处理):
[0335]
在bs的值为4时,对p0、p1、p2和q0、q1、q2的滤波计算过程如下:
[0336]
p0=(p2*3 p1*8 p0*10 q0*8 q1*3 16)>>5;
[0337]
p1=(p2*4 p1*5 p0*4 q0*3 8)>>4;
[0338]
p2=(p3*2 p2*2 p1*2 p0*1 q0*1 4)>>3;
[0339]
q0=(p1*3 p0*8 q0*10 q1*8 q2×
3 16)>>5
[0340]
q1=(p0*3 q0*4 q1*5 q2*4 8)>>4;
[0341]
q2=(p0*1 q0*1 q1*2 q2*2 q3*2 4)>>3。
[0342]
p0、p1、p2和q0、q1、q2均是滤波后的值(即滤波像素值)。
[0343]
在得到p0、p1、p2和q0、q1、q2后,若phdbrenableflag为1时,则:
[0344]
若pi>pi dbr_th,则p
i’=clip((pi pi 1)>>1 dbr_offset0);否则,若pi<p
i-dbr_th,则p
i’=clip((pi pi 1)>>1 dbr_offset1),i=0,1,2。
[0345]
若qi>qi dbr_th,则q
i’=clip((qi qi 1)>>1 dbr_offset0);否则,若qi<q
i-dbr_th,则q
i’=clip((qi qi 1)>>1 dbr_offset1),i=0,1,2。
[0346]
在上述公式中,pi可以表示原始像素值,qi可以表示原始像素值,pi可以表示滤波像素值,qi可以表示滤波像素值,p
i’可以表示调整像素值,q
i’可以表示调整像素值。
[0347]
(2)亮度分量的bs等于3时的边界滤波过程(采用增强滤波模式进行处理):
[0348]
在bs的值为3时,对p0、p1和q0、q1的滤波计算过程如下:
[0349]
p0=(p2 (p1<<2) (p0<<2) (p0<<1) (q0<<2) q1 8)>>4;
[0350]
p1=((p2<<1) p2 (p1<<3) (p0<<2) q0 8)>>4;
[0351]
q0=(p1 (p0<<2) (q0<<2) (q0<<1) (q1<<2) q2 8)>>4;
[0352]
q1=((q2<<1) q2 (q1<<3) (q0<<2) p0 8)>>4。
[0353]
p0、p1和q0、q1均是滤波后的值(即滤波像素值)。
[0354]
在得到p0、p1和q0、q1后,若phdbrenableflag为1时,则:
[0355]
若pi>pi dbr_th,则p
i’=clip((pi pi 1)>>1 dbr_offset0);否则,若pi<p
i-dbr_th,则p
i’=clip((pi pi 1)>>1 dbr_offsetl),i=0,1。
[0356]
若qi>qi dbr_th,则q
i’=clip((qi qi 1)>>1 dbr_offset0);否则,若qi<q
i-dbr_th,则q
i’=clip((qi qi 1)>>1 dbr_offset1),i=0,1。
[0357]
在上述公式中,pi可以表示原始像素值,qi可以表示原始像素值,pi可以表示滤波像素值,qi可以表示滤波像素值,p
i’可以表示调整像素值,q
i’可以表示调整像素值。
[0358]
(3)亮度分量的bs等于2时的边界滤波过程(采用增强滤波模式进行处理):
[0359]
在bs的值为2时,对p0和q0的滤波计算过程如下:
[0360]
p0=((p1<<1) p1 (p0<<3) (p0<<1) (q0<<1) q0 8)>>4;
[0361]
q0=((p0<<1) p0 (q0<<3) (q0<<1) (q1<<1) q1 8)>>4。
[0362]
p0和q0均是滤波后的值(即滤波像素值)。
[0363]
在得到p0和q0后,若phdbrenableflag为1时,则:
[0364]
若pi>pi dbr_th,则p
i’=clip((pi pi 1)>>1 dbr_offset0);否则,若pi<p
i-dbr_th,则p
i’=clip((pi pi 1)>>1 dbr_offset1),i=0。
[0365]
若qi>qi dbr_th,则q
i’=clip((qi qi 1)>>1 dbr_offset0);否则,若qi<q
i-dbr_th,则q
i’=clip((qi qi 1)>>1 dbr_offset1),i=0。
[0366]
在上述公式中,pi可以表示原始像素值,qi可以表示原始像素值,pi可以表示滤波像素值,qi可以表示滤波像素值,p
i’可以表示调整像素值,q
i’可以表示调整像素值。
[0367]
(4)亮度分量的bs等于1时的边界滤波过程(采用增强滤波模式进行处理):
[0368]
在bs的值为1时,对p0和q0的滤波计算过程如下:
[0369]
p0=((p0<<1) p0 q0 2)>>2;
[0370]
q0=((q0<<1) q0 p0 2)>>2。
[0371]
p0和q0均是滤波后的值(即滤波像素值)。
[0372]
在得到p0和q0后,若phdbrenableflag为1时,则:
[0373]
若pi>pi dbr_th,则p
i’=clip((pi pi 1)>>1 dbr_offset0);否则,若pi<p
i-dbr_th,则p
i’=clip((pi pi 1)>>1 dbr_offsetl),i=0。
[0374]
若qi>qi dbr_th,则q
i’=clip((qi qi 1)>>1 dbr_offset0);否则,若qi<q
i-dbr_th,则q
i’=clip((qi qi 1)>>1 dbr_offset1),i=0。
[0375]
在上述公式中,pi可以表示原始像素值,qi可以表示原始像素值,pi可以表示滤波像素值,qi可以表示滤波像素值,p
i’可以表示调整像素值,q
i’可以表示调整像素值。
[0376]
(5)亮度分量的bs等于0时的边界滤波过程的方式一(采用增强调整模式进行处理):
[0377]
在bs的值为0时,对pi和qi的滤波计算过程如下:
[0378]
确定pi的梯度值dpi和qi的梯度值dqi。比如说,dpi=(pi-qi 2)>>2,dqi=(qi-pi 2)>>2。或者,dpi=(pi-qi 1)>>1,dqi=(qi-pi 1)>>1。
[0379]
在得到dpi和dqi后,若phaltdbrenableflag为1时,则:
[0380]
若dpi>dbr_th,则pi=clip(pi a1t_dbr_offset0);否则,若dpi<-dbr_th,则pi=clip(pi alt_dbr_offset1);
[0381]
若dqi>dbr_th,则qi=clip(qi alt_dbr_offset0);否则,若dqi<-dbr_th,则qi=clip(qi alt_dbr_offset1)。
[0382]
上述i可以为0,也可以为0,1,2等,对此不做限制。
[0383]
在上述公式中,pi可以表示原始像素值,qi可以表示原始像素值,dpi可以表示梯度值dqi可以表示梯度值,pi可以表示调整像素值,qi可以表示调整像素值。
[0384]
(6)亮度分量的bs等于0时的边界滤波过程的方式二(采用增强调整模式进行处理):
[0385]
在bs的值为0时,对pi和qi的滤波计算过程如下:
[0386]
确定pi的梯度值dpi和qi的梯度值dqi。如dpi=(pi-qi 1)>>1,dqi=(qi-pi 1)>>1。
[0387]
在得到dpi和dqi后,若phaltdbrenableflag为1时,则:
[0388]
若dpi>2*dbr_th,则pi=clip(pi alt_dbr_offset0);否则,若dpi<-2*dbr_th,则pi=clip(pi alt_dbr_offset1);
[0389]
若dqi>2*dbr_th,则qi=clip(qi alt_dbr_offset0);否则,若dqi<-2*dbr_th,则qi=clip(qi alt_dbr_offset1)。
[0390]
上述2*dbr_th和-2*dbr_th,可以为上述实施例中的调整阈值。
[0391]
上述i可以为0,也可以为0,1,2等,对此不做限制。
[0392]
在上述公式中,pi可以表示原始像素值,qi可以表示原始像素值,dpi可以表示梯度值dqi可以表示梯度值,pi可以表示调整像素值,qi可以表示调整像素值。
[0393]
(7)亮度分量的bs等于0时的边界滤波过程的方式三(采用增强调整模式进行处理):
[0394]
在bs的值为0时,对pi和qi的滤波计算过程如下:
[0395]
确定pi的梯度值dpi和qi的梯度值dqi。比如说,可以采用如下方式确定梯度值dpi和梯度值dqi:dpi=((pi<<1) pi qi 2)>>2,dqi=((qi<<1) qi pi 2)>>2。
[0396]
在得到dpi和dqi后,若phaltdbrenableflag为1时,则:
[0397]
若pi>dpi dbr_th,则pi=clip(pi alt_dbr_offset0);否则,若pi<dpi-dbr_th,则pi=clip(pi alt_dbr_offset1);
[0398]
若qi>dqi dbr_th,则qi=clip(qi alt_dbr_offset0);否则,若qi<dqi-dbr_th,则qi=clip(qi alt_dbr_offset1)。
[0399]
在一种可能的实施方式中,上述表述可以等价为如下表达形式:
[0400]
确定pi的梯度值dpi和qi的梯度值dqi。比如说,可以采用如下方式确定梯度值dpi和梯度值dqi:dpi=pi-(((pi<<1) pi qi 2)>>2),dqi=qi-(((qi<<1) qi pi 2)>>2)。
[0401]
在得到dpi和dqi后,若phaltdbrenableflag为1时,则:
[0402]
若dpi>dbr_th,则pi=clip(pi alt_dbr_offset0);否则,若dpi<-dbr_th,则pi=clip(pi alt_dbr_offset1);
[0403]
若dqi>dbr_th,则qi=clip(qi alt_dbr_offset0);否则,若dqi<-dbr_th,则qi=clip(qi alt_dbr_offset1)。
[0404]
上述i可以为0,也可以为0,1,2等,对此不做限制。
[0405]
在上述公式中,pi可以表示原始像素值,qi可以表示原始像素值,dpi可以表示梯度值dqi可以表示梯度值,pi可以表示调整像素值,qi可以表示调整像素值。
[0406]
在上述实施例中,clip(x)表示将x限制在[0,2∧(bit_depth)-1]之间(该区间可以包括0和2∧(bit_depth)-1)。bit_depth表示图像的比特深度,一般为8、10、12等。
[0407]
(8)亮度分量的bs等于0时的边界滤波过程的方式四(采用增强调整模式进行处理):
[0408]
在bs的值为0时,对pi和qi的滤波计算过程如下:
[0409]
确定pi的梯度值dpi和qi的梯度值dqi。比如说,可以采用如下方式确定梯度值dpi和梯度值dqi:dpi=(qi-pi 2)>>2,dqi=(pi-qi 2)>>2。
[0410]
在得到dpi和dqi后,若phaltdbrenableflag为1时,则:
[0411]
若dpi<dbr_th,则pi=clip(pi dbr_alt_offset0);否则,若dpi>-dbr_th,则pi=clip(pi dbr_alt_offset1)。
[0412]
若dqi<dbr_th,则qi=clip(qi alt_dbr_offset0);否则,若dqi>-dbr_th,则qi=clip(qi dbr_alt_offset1)。
[0413]
上述i可以为0,也可以为0,1,2等,对此不做限制。
[0414]
在上述公式中,pi可以表示原始像素值,qi可以表示原始像素值,dpi可以表示梯度值dqi可以表示梯度值,pi可以表示调整像素值,qi可以表示调整像素值。
[0415]
(9)亮度分量的bs等于0时的边界滤波过程的方式五(采用增强调整模式进行处理):
[0416]
在bs的值为0时,对pi和qi的滤波计算过程如下:
[0417]
确定pi的梯度值dpi和qi的梯度值dqi。比如说,可以采用如下方式确定梯度值dpi和梯度值dqi:dpi=pi-(((pi<<1) pi qi 2)>>2),即dpi=(pi-qi-2)>>2,dqi=qi-(((qi<<1) qi pi 2)>>2),即dqi=(qi-pi-2)>>2。
[0418]
在得到dpi和dqi后,若phaltdbrenableflag为1时,则:
[0419]
若dpi>dbr_th,则pi=clip(pi dbr_alt_offset0);否则,若dpi<-dbr_th则pi=clip(pi dbr_alt_offset1)。
[0420]
若dqi>dbr_th则qi=clip(qi dbr_alt_offset0);否则,若dqi<-dbr_th,则qi=clip(qi dbr_alt_offset1)。
[0421]
上述i可以为0,也可以为0,1,2等,对此不做限制。
[0422]
在上述公式中,pi可以表示原始像素值,qi可以表示原始像素值,dpi可以表示梯度值dqi可以表示梯度值,pi可以表示调整像素值,qi可以表示调整像素值。
[0423]
实施例17:针对实施例11和实施例12来说,可以将sps级高层语法替换为pps级高层语法,或图像头级高层语法,或帧级高层语法,或片头级高层语法,或ctu级高层语法,或cu级高层语法,对此高层语法的类型不做限制,即通过各种类型的高层语法均可以传输dbr_enable_flag或者adbr_enable_flag。针对实施例13和实施例14来说,可以将图像头高层语法替换为sps级高层语法,或pps级高层语法,或帧级高层语法,或片头级高层语法,或ctu级高层语法,或cu级高层语法,对此高层语法的类型不做限制,即通过各种类型的高层语法均可以传输表1或表2的内容,即通过各种类型的高层语法传输增强调整模式使能标志位、增强滤波模式使能标志位、第一调整阈值、第一滤波阈值、第一滤波偏移值、第二滤波偏移值、第一调整偏移值、第二调整偏移值等参数,具体实现方式与实施例13和实施例14的实施方式类似,在此不再赘述。
[0424]
针对实施例13和实施例14来说,可以将图像头高层语法替换为ctu级高层语法,通过ctu级高层语法传输dbr的相关参数,dbr的相关参数可以包括第一调整阈值、第一滤波阈值、第一滤波偏移值、第二滤波偏移值、第一调整偏移值、第二调整偏移值等参数等内容,参见实施例13和实施例14。或者,可以将图像头高层语法替换为cu级高层语法,通过cu级高层语法传输dbr的相关参数,dbr的相关参数可以包括第一调整阈值、第一滤波阈值、第一滤波偏移值、第二滤波偏移值、第一调整偏移值、第二调整偏移值等参数等内容,参见实施例13和和实施例14。
[0425]
实施例18:针对实施例16来说,是针对亮度分量的去块滤波过程,还可以将亮度分量替换为色度分量,即针对色度分量(即当前块为色度分量)进行去块滤波过程,色度分量的去块滤波过程与亮度分量的去块滤波过程类似,参见实施例16,在此不再赘述。
[0426]
示例性的,上述实施例1-实施例18可以单独实现,也可以任意组合,如实施例1和实施例2可以组合,实施例1和实施例3可以组合,实施例1和实施例4可以组合,实施例1和实施例5可以组合,实施例1和实施例8-实施例18中的至少一个实施例可以组合;实施例8-实施例18中的至少两个实施例可以任意组合;实施例2和实施例8-实施例18中的至少一个实施例可以组合;实施例3和实施例8-实施例18中的至少一个实施例可以组合;实施例4和实施例8-实施例18中的至少一个实施例可以组合;实施例5和实施例8-实施例18中的至少一个实施例可以组合;实施例6和实施例8-实施例18中的至少一个实施例可以组合;实施例7
和实施例8-实施例18中的至少一个实施例可以组合。当然,上述只是几个组合的示例,实施例1-实施例18之间的任意至少两个实施例,均可以进行组合实现相关过程。
[0427]
示例性的,上述各实施例中,编码端的内容也可以应用到解码端,即解码端可以采用相同方式进行处理,解码端的内容也可以应用到编码端,即编码端可以采用相同方式进行处理。
[0428]
实施例19:基于与上述方法同样的申请构思,本技术实施例中还提出一种解码装置,所述解码装置应用于解码端,所述解码装置包括:存储器,其经配置以存储视频数据;解码器,其经配置以实现上述实施例1-实施例18中的编解码方法,即解码端的处理流程。
[0429]
比如说,在一种可能的实施方式中,解码器,其经配置以实现:
[0430]
若当前块中的当前像素点满足增强调整模式的启用条件,则基于所述当前像素点的原始像素值和所述当前像素点的周围像素点的原始像素值确定所述当前像素点的梯度值;基于所述当前像素点的梯度值和所述当前像素点的原始像素值,确定所述当前像素点的调整像素值。
[0431]
基于与上述方法同样的申请构思,本技术实施例中还提出一种编码装置,所述编码装置应用于编码端,所述编码装置包括:存储器,其经配置以存储视频数据;编码器,其经配置以实现上述实施例1-实施例18中的编解码方法,即编码端的处理流程。
[0432]
比如说,在一种可能的实施方式中,编码器,其经配置以实现:
[0433]
若当前块中的当前像素点满足增强调整模式的启用条件,则基于所述当前像素点的原始像素值和所述当前像素点的周围像素点的原始像素值确定所述当前像素点的梯度值;基于所述当前像素点的梯度值和所述当前像素点的原始像素值,确定所述当前像素点的调整像素值。
[0434]
基于与上述方法同样的申请构思,本技术实施例提供的解码端设备(也可以称为视频解码器),从硬件层面而言,其硬件架构示意图具体可以参见图5a所示。包括:处理器511和机器可读存储介质512,其中:所述机器可读存储介质512存储有能够被所述处理器511执行的机器可执行指令;所述处理器511用于执行机器可执行指令,以实现本技术上述实施例1-18公开的方法。例如,所述处理器511用于执行机器可执行指令,以实现如下步骤:
[0435]
若当前块中的当前像素点满足增强调整模式的启用条件,则基于所述当前像素点的原始像素值和所述当前像素点的周围像素点的原始像素值确定所述当前像素点的梯度值;基于所述当前像素点的梯度值和所述当前像素点的原始像素值,确定所述当前像素点的调整像素值。
[0436]
基于与上述方法同样的申请构思,本技术实施例提供的编码端设备(也可以称为视频编码器),从硬件层面而言,其硬件架构示意图具体可以参见图5b所示。包括:处理器521和机器可读存储介质522,其中:所述机器可读存储介质522存储有能够被所述处理器521执行的机器可执行指令;所述处理器521用于执行机器可执行指令,以实现本技术上述实施例1-18公开的方法。例如,所述处理器521用于执行机器可执行指令,以实现如下步骤:
[0437]
若当前块中的当前像素点满足增强调整模式的启用条件,则基于所述当前像素点的原始像素值和所述当前像素点的周围像素点的原始像素值确定所述当前像素点的梯度值;基于所述当前像素点的梯度值和所述当前像素点的原始像素值,确定所述当前像素点的调整像素值。
[0438]
基于与上述方法同样的申请构思,本技术实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被处理器执行时,能够实现本技术上述示例公开的方法,如上述上述各实施例中的编解码方法。其中,上述机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radom access memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
[0439]
基于与上述方法同样的申请构思,本技术实施例还提供一种计算机应用程序,所述计算机应用程序令被处理器执行时,能够实现本技术上述示例公开的编解码方法。
[0440]
基于与上述方法同样的申请构思,本技术实施例还提供一种编解码装置,可以应用于编码端或者解码端,该编解码装置可以包括:
[0441]
确定模块,用于若当前块中的当前像素点满足增强调整模式的启用条件,则基于所述当前像素点的原始像素值和所述当前像素点的周围像素点的原始像素值确定所述当前像素点的梯度值;处理模块,用于基于所述当前像素点的梯度值和所述当前像素点的原始像素值,确定所述当前像素点的调整像素值。
[0442]
示例性的,所述处理模块基于所述当前像素点的梯度值和所述当前像素点的原始像素值,确定所述当前像素点的调整像素值时具体用于:
[0443]
基于所述当前像素点的梯度值、所述当前像素点的原始像素值、第一调整阈值、第二调整阈值、第一调整偏移值和第二调整偏移值,确定所述当前像素点的调整像素值。
[0444]
示例性的,所述处理模块基于所述当前像素点的梯度值、所述当前像素点的原始像素值、第一调整阈值、第二调整阈值、第一调整偏移值和第二调整偏移值,确定所述当前像素点的调整像素值时具体用于:若所述当前像素点的梯度值大于第一调整阈值,则基于所述当前像素点的原始像素值和第一调整偏移值确定所述当前像素点的调整像素值;
[0445]
若所述当前像素点的梯度值小于第二调整阈值,则基于所述当前像素点的原始像素值和第二调整偏移值确定所述当前像素点的调整像素值。
[0446]
在一种可能的实施方式中,若当前块中的当前像素点满足增强调整模式的启用条件,所述确定模块,还用于从所述当前块的相邻块中确定与所述当前像素点对应的参考像素点,基于所述参考像素点的原始像素值和所述参考像素点的周围像素点的原始像素值确定所述参考像素点的梯度值;所述处理模块,还用于基于所述参考像素点的梯度值和所述参考像素点的原始像素值,确定所述参考像素点的调整像素值。
[0447]
示例性的,所述处理模块基于所述参考像素点的梯度值和所述参考像素点的原始像素值,确定所述参考像素点的调整像素值时具体用于:
[0448]
基于所述参考像素点的梯度值、所述参考像素点的原始像素值、第三调整阈值、第四调整阈值、第三调整偏移值和第四调整偏移值,确定所述参考像素点的调整像素值。
[0449]
示例性的,所述处理模块基于所述参考像素点的梯度值、所述参考像素点的原始像素值、第三调整阈值、第四调整阈值、第三调整偏移值和第四调整偏移值,确定所述参考像素点的调整像素值时具体用于:若所述参考像素点的梯度值大于第三调整阈值,则基于所述参考像素点的原始像素值和第三调整偏移值确定所述参考像素点的调整像素值;
[0450]
若所述参考像素点的梯度值小于第四调整阈值,则基于所述参考像素点的原始像
素值和第四调整偏移值确定所述参考像素点的调整像素值。
[0451]
在一种可能的实施方式中,所述确定模块确定所述当前块中的当前像素点满足增强调整模式的启用条件时具体用于:若所述当前块中的当前像素点对应的待滤波边界的边界强度满足增强调整模式的启用条件,则确定所述当前像素点满足增强调整模式的启用条件;或者,若所述当前块对应的特征信息满足增强调整模式的启用条件,则确定所述当前块中的所述当前像素点满足增强调整模式的启用条件。
[0452]
示例性的,所述处理模块,还用于若所述当前块中的当前像素点满足普通滤波模式的启用条件,则对所述当前像素点的原始像素值进行去块滤波,得到所述当前像素点的滤波像素值;若所述当前块中的当前像素点满足增强滤波模式的启用条件,则基于所述当前像素点的滤波像素值和所述当前像素点的原始像素值,确定所述当前像素点的调整像素值。
[0453]
示例性的,所述处理模块基于所述当前像素点的滤波像素值和所述当前像素点的原始像素值,确定所述当前像素点的调整像素值时具体用于:基于所述当前像素点的滤波像素值,所述当前像素点的原始像素值,第一滤波阈值,第二滤波阈值,第一滤波偏移值和第二滤波偏移值,确定所述当前像素点的调整像素值;第一滤波阈值和第二滤波阈值互为相反数。
[0454]
示例性的,若所述当前块中的当前像素点满足普通滤波模式的启用条件,所述处理模块,还用于从所述当前块的相邻块中确定与所述当前像素点对应的参考像素点;对所述参考像素点的原始像素值进行去块滤波,得到所述参考像素点的滤波像素值;
[0455]
若所述当前块中的当前像素点满足增强滤波模式的启用条件,则基于所述参考像素点的滤波像素值和所述参考像素点的原始像素值,确定所述参考像素点的调整像素值。
[0456]
示例性的,所述处理模块基于所述参考像素点的滤波像素值和所述参考像素点的原始像素值,确定所述参考像素点的调整像素值时具体用于:基于所述参考像素点的滤波像素值,所述参考像素点的原始像素值,第三滤波阈值,第四滤波阈值,第三滤波偏移值和第四滤波偏移值,确定所述参考像素点的调整像素值;第三滤波阈值和第四滤波阈值互为相反数。
[0457]
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本技术时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0458]
本领域内的技术人员应明白,本技术实施例可提供为方法、系统、或计算机程序产品。本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本技术实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0459]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程
序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0460]
这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献