滤波方法、装置及设备转让专利

申请号 : CN202010859387.1

文献号 : CN114095726B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 潘冬萍孙煜程陈方栋王莉

申请人 : 杭州海康威视数字技术股份有限公司

摘要 :

本申请提供一种滤波方法、装置及设备,该滤波方法包括:当确定对当前帧图像的当前LCU启动维纳滤波时,获取并根据所述当前LCU的参考像素以及维纳滤波器的滤波系数,对所述当前LCU的像素逐个进行维纳滤波;其中,所述维纳滤波器为第二维纳滤波器,所述第二维纳滤波器是在第一维纳滤波器基础上进行形状扩增得到的,所述第一维纳滤波器是形状为7*7十字形加3*3方形的中心对称滤波器,所述参考像素的值基于滤波前的重建图像的像素值确定。该方法可以提供编解码性能。

权利要求 :

1.一种滤波方法,应用于编码/解码端设备,其特征在于,所述方法包括:

当确定对当前帧图像的自适应修正滤波单元启动维纳滤波时,根据所述当前帧图像的当前最大编码单元LCU导出所述自适应修正滤波单元;

获取所述自适应修正滤波单元的样本像素的参考像素以及维纳滤波器的滤波系数;

根据所获取的参考像素以及维纳滤波器的滤波系数,基于所述自适应修正滤波单元的样本像素进行所述维纳滤波;

其中,所述维纳滤波器为第二维纳滤波器,所述第二维纳滤波器是形状为7*7十字形加

5*5方形的中心对称滤波器,所述第二维纳滤波器的滤波系数包括15个,所述参考像素的值基于滤波前的重建图像的像素值确定;

其中,所述根据所获取的参考像素以及维纳滤波器的滤波系数,基于所述自适应修正滤波单元的样本像素进行所述维纳滤波,包括:若自适应修正滤波过程中用到的样本为自适应修正滤波单元内的样本,则使用该样本进行滤波;

若自适应修正滤波过程中用到的样本不是自适应修正滤波单元内的样本,则:

在该样本在图像边界外,或在片边界外且跨片边界滤波标志的值为0的情况下,若该样本是位于自适应修正滤波单元的左上角,左下角,右上角或右下角第一个样本点,则使用自适应修正滤波单元内距离该样本最近的样本代替该样本进行滤波;

在该样本未在图像边界外,且不满足在片边界外且跨片边界滤波标志的值为0的条件,以及,该样本在自适应修正滤波单元上边界或下边界的情况下,若该样本是位于自适应修正滤波单元的左上角,左下角,右上角或右下角第一个样本点,则使用自适应修正滤波单元内距离该样本最近的样本代替该样本进行滤波;

在该样本未在图像边界外,且不满足在片边界外且跨片边界滤波标志的值为0的条件,以及,该样本未在自适应修正滤波单元上边界,也未在自适应修正滤波单元下边界外的情况下,使用该样本进行滤波。

2.根据权利要求1所述的方法,其特征在于,所述确定对当前帧图像的当前自适应修正滤波单元进行维纳滤波之前,还包括:确定是否对当前帧图像进行滤波;

当确定对所述当前帧图像进行滤波时,确定是否对所述当前自适应修正滤波单元启动维纳滤波,并当确定对所述当前自适应修正滤波单元启动维纳滤波时,执行所述根据所述当前帧图像的当前LCU导出所述自适应修正滤波单元,获取所述自适应修正滤波单元的样本像素的参考像素以及维纳滤波器的滤波系数,并根据所获取的参考像素以及维纳滤波器的滤波系数,基于所述自适应修正滤波单元的样本像素进行维纳滤波的步骤。

3.一种滤波装置,应用于编码/解码端设备,其特征在于,所述装置包括:确定单元以及滤波单元;其中:所述滤波单元,用于当所述确定单元确定对当前帧图像的自适应修正滤波单元启动维纳滤波时,根据所述当前帧图像的当前最大编码单元LCU导出所述自适应修正滤波单元;获取所述自适应修正滤波单元的参考像素以及维纳滤波器的滤波系数;根据所获取的参考像素以及维纳滤波器的滤波系数,基于所述自适应修正滤波单元的样本像素进行所述维纳滤波;

其中,所述维纳滤波器为第二维纳滤波器,所述第二维纳滤波器是形状为7*7十字形加

5*5方形的中心对称滤波器,所述第二维纳滤波器的滤波系数包括15个,所述参考像素的值基于滤波前的重建图像的像素值确定;

其中,所述滤波单元,具体用于若自适应修正滤波过程中用到的样本为自适应修正滤波单元内的样本,则使用该样本进行滤波;

若自适应修正滤波过程中用到的样本不是自适应修正滤波单元内的样本,则:

在该样本在图像边界外,或在片边界外且跨片边界滤波标志的值为0的情况下,若该样本是位于自适应修正滤波单元的左上角,左下角,右上角或右下角第一个样本点,则使用自适应修正滤波单元内距离该样本最近的样本代替该样本进行滤波;

在该样本未在图像边界外,且不满足在片边界外且跨片边界滤波标志的值为0的条件,以及,该样本在自适应修正滤波单元上边界或下边界的情况下,若该样本是位于自适应修正滤波单元的左上角,左下角,右上角或右下角第一个样本点,则使用自适应修正滤波单元内距离该样本最近的样本代替该样本进行滤波;

在该样本未在图像边界外,且不满足在片边界外且跨片边界滤波标志的值为0的条件,以及,该样本未在自适应修正滤波单元上边界,也未在自适应修正滤波单元下边界外的情况下,使用该样本进行滤波。

4.一种解码端设备,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器用于执行机器可执行指令,以实现如权利要求1或2所述的方法。

5.一种编码端设备,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器用于执行机器可执行指令,以实现如权利要求1或2所述的方法。

说明书 :

滤波方法、装置及设备

技术领域

[0001] 本申请涉及视频编解码技术,尤其涉及一种滤波方法、装置及设备。

背景技术

[0002] 完整的视频编码一般包括预测、变换、量化、熵编码、滤波等操作。
[0003] 在基于块的运动补偿后存在量化操作,由此产生了编码噪声,造成视频质量失真,环路后处理技术用于降低此类失真的影响。环路后处理技术包括去方块滤波(Deblocking Filter,简称DBF),样点自适应补偿(Sample Adaptive Offset,简称SAO)以及自适应环路滤波(Adaptive Loop Filter,简称ALF)三个技术。
[0004] 在音视频编码标准(Audio Video coding Standard,简称AVS)编码框架中使用的ALF技术,其根据维纳滤波的原理,计算原始信号和失真信号在均方意义下能达到的最优线性滤波。
[0005] 然而实践发现,ALF技术根据维纳滤波原理,通过在编码端训练出极少的滤波器系数,将其传到解码端,对重建图像序列进行滤波达到提升图像质量的效果。由于图像像素个数很大,但滤波器系数很少,因此ALF技术所建立的模型在处理大多数图像的时候会存在欠拟合情况。

发明内容

[0006] 有鉴于此,本申请提供一种滤波方法、装置及设备。
[0007] 具体地,本申请是通过如下技术方案实现的:
[0008] 根据本申请实施例的第一方面,提供一种滤波方法,应用于编码/解码端设备,所述方法包括:
[0009] 当确定对当前帧图像的当前LCU启动维纳滤波时,获取并根据所述当前LCU的参考像素以及维纳滤波器的滤波系数,对所述当前LCU的像素逐个进行维纳滤波;
[0010] 其中,所述维纳滤波器为第二维纳滤波器,所述第二维纳滤波器是在第一维纳滤波器基础上进行形状扩增得到的,所述第一维纳滤波器是形状为7*7十字形加3*3方形的中心对称滤波器,所述参考像素的值基于滤波前的重建图像的像素值确定。
[0011] 根据本申请实施例的第二方面,提供一种滤波方法,应用于编码/解码端设备,所述方法包括:
[0012] 当确定对当前帧图像的当前LCU启动维纳滤波时,对所述当前LCU进行第一次维纳滤波和第二次维纳滤波;
[0013] 其中,所述对所述当前LCU进行第一次维纳滤波和第二次维纳滤波,包括:
[0014] 获取并根据对所述当前LCU进行第一次维纳滤波的维纳滤波器的滤波系数和参考像素,以及对所述当前LCU进行第二次维纳滤波的维纳滤波系数和参考像素,对所述当前LCU的像素逐个进行第一次维纳滤波和第二次维纳滤波。
[0015] 根据本申请实施例的第三方面,提供一种滤波方法,应用于编码端设备,所述方法包括:
[0016] 当完成3次CTU决策时,对于所述3次CTU决策之后确定启动维纳滤波的LCU,获取3次CTU决策之后保留的对该LCU进行维纳滤波得到第一组滤波系数,并将滤波系数为0的参考像素位置的参考像素的值置为0,并基于更新后的参考像素的值,计算第二组滤波系数;
[0017] 根据第二组滤波系数进行第4次CTU决策,判断所述当前帧图像的各LCU是否启动维纳滤波。
[0018] 根据本申请实施例的第四方面,提供一种滤波装置,应用于编码/解码端设备,所述装置包括:确定单元以及滤波单元;其中:
[0019] 所述滤波单元,用于当所述确定单元确定对当前帧图像的当前LCU启动维纳滤波时,获取并根据所述当前LCU的参考像素以及维纳滤波器的滤波系数,对所述当前LCU的像素逐个进行维纳滤波;
[0020] 其中,所述维纳滤波器为第二维纳滤波器,所述第二维纳滤波器是在第一维纳滤波器基础上进行形状扩增得到的,所述第一维纳滤波器是形状为7*7十字形加3*3方形的中心对称滤波器,所述参考像素的值基于滤波前的重建图像的像素值确定。
[0021] 根据本申请实施例的第五方面,提供一种滤波装置,应用于编码/解码端设备,所述装置包括:确定单元和滤波单元;其中:
[0022] 所述滤波单元,用于当所述确定单元确定对当前帧图像的当前LCU启动维纳滤波时,对所述当前LCU进行第一次维纳滤波和第二次维纳滤波;
[0023] 所述滤波单元,具体用于获取并根据对所述当前LCU进行第一次维纳滤波的维纳滤波器的滤波系数和参考像素,以及对所述当前LCU进行第二次维纳滤波的维纳滤波系数和参考像素,对所述当前LCU的像素逐个进行第一次维纳滤波和第二次维纳滤波。
[0024] 根据本申请实施例的第六方面,提供一种滤波装置,应用于编码端设备,所述装置包括:系数计算单元和滤波单元;其中:
[0025] 所述系数计算单元,用于当完成3次CTU决策时,对于所述3次CTU决策之后确定启动维纳滤波的LCU,获取3次CTU决策之后保留的对该LCU进行维纳滤波得到第一组滤波系数,并将滤波系数为0的参考像素位置的参考像素的值置为0,并基于更新后的参考像素的值,计算第二组滤波系数;
[0026] 所述滤波单元,用于根据第二组滤波系数进行第4次CTU决策,判断所述当前帧图像的各LCU是否启动维纳滤波。
[0027] 根据本申请实施例的第七方面,提供一种解码端设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器用于执行机器可执行指令,以实现第一方面或第二方面提供的方法。
[0028] 根据本申请实施例的第八方面,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器用于执行机器可执行指令,以实现第一方面、第二方面或第三方面提供的方法。
[0029] 本申请实施例的滤波的方法,通过在形状为7*7十字形加3*3方形的中心对称滤波器的第一维纳滤波器基础上进行形状扩增得到第二维纳滤波器,当确定对当前帧图像的当前LCU启动维纳滤波时,获取并根据所述当前LCU的参考像素以及第二维纳滤波器的滤波系数,对当前LCU的像素逐个进行维纳滤波,以优化滤波效果,提升编解码性能。

附图说明

[0030] 图1是一种视频编解码的流程示意图;
[0031] 图2是一种区域划分的示意图;
[0032] 图3是一种区域合并的示意图;
[0033] 图4是一种参考像素位置的示意图;
[0034] 图5是一种第一维纳滤波器的示意图;
[0035] 图6是本申请一示例性实施例示出的一种滤波方法的流程示意图;
[0036] 图7是本申请一示例性实施例示出的一种第二维纳滤波器的示意图;
[0037] 图8是本申请一示例性实施例示出的一种参考像素位置的示意图;
[0038] 图9是本申请一示例性实施例示出的一种滤波方法的流程示意图;
[0039] 图10是本申请一示例性实施例示出的一种滤波方法的流程示意图;
[0040] 图11是本申请一示例性实施例示出的一种解码流程示意图;
[0041] 图12是本申请一示例性实施例示出的一种两次滤波的解码流程示意图;
[0042] 图13是本申请一示例性实施例示出的一种CTU决策流程示意图;
[0043] 图14是本申请一示例性实施例示出的一种样本滤波补偿单元的示意图;
[0044] 图15是本申请一示例性实施例示出的一种滤波装置的结构示意图;
[0045] 图16是本申请一示例性实施例示出的一种滤波装置的结构示意图;
[0046] 图17是本申请一示例性实施例示出的一种滤波装置的结构示意图;
[0047] 图18是本申请一示例性实施例示出的一种解码端设备的结构示意图;
[0048] 图19是本申请一示例性实施例示出的一种编码端设备的结构示意图。

具体实施方式

[0049] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
[0050] 在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
[0051] 为了使本领域技术人员更好地理解本申请实施例提供的技术方案,下面先对本申请实施例涉及的技术术语、现有视频编解码的主要流程以及维纳滤波技术(ALF技术)的实现进行简单说明。
[0052] 一、技术术语
[0053] 1、率失真原则(Rate‑Distortion Optimized,简称RDO):评价编码效率的指标包括:码率和峰值信噪比(Peak Signal to Noise Ratio,简称PSNR)。码率越小,则压缩率越大;PSNR越大,重建图像质量越好。在模式选择的时候,判别公式实质上也就是对二者的综合评价。
[0054] 模式对应的代价:J(mode)=D+λ*R。其中,D表示失真(Distortion),通常使用SSE(差值均方和)指标来衡量,SSE是指重建块与源图像块的差值均方和;λ是拉格朗日乘子;R就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。
[0055] 在模式选择时,若使用RDO原则去对编码模式做比较决策,通常可以保证编码性能最佳。
[0056] 2、树形编码单元(Coding Tree Unit,简称CTU):传统的视频编码都是基于宏块实现的,对于4:2:0采样格式的视频,一个宏块包含一个16×16大小的亮度块和两个8×8大小的色度块,考虑到高清视频/超清视频的自身特性,通用视频编码(Versatile Video Coding,简称VVC)中引入了CTU,其尺寸由编码器指定,允许大于宏块尺寸。同一处位置的一个亮度树形编码单元(Coding Tree Block,简称CTB)和两个色度CTB,再加上相应的语法元素形成一个CTU。在VVC中对于一个L×L大小的亮度CTB,L∈{8,16,32,64,128}。
[0057] 亮度CTB大小取值范围是:{8×8,16×16,32×32,64×64,128×128}
[0058] 色度CTB大小取值范围是{4×4,8×8,16×16,32×32,64×64}
[0059] 在高分辨率视频编码过程中,使用较大的CTB可以获得更好的压缩效果。
[0060] 3、去方块滤波:图像编码过程是基于不同的块进行的,每个块内进行着相对独立的编码,由于每个块使用不同的参数,因此块内的分布特性相互独立,造成了在块的边缘存在不连续的现象,可以称之为方块效应。去方块滤波主要对块的边界进行平滑,去除方块效应。
[0061] 4、样点自适应补偿:指从像素域入手,根据重构图像的特点,将其划分类别,然后在像素域进行补偿处理。主要为了降低振铃效应。
[0062] 5、自适应环路滤波:应用在DB与SAO之后,主要目的是为了进一步在客观条件下提升图像质量。ALF技术根据参考像素的特点,构建一个以最小二乘为基础的多元线性回归模型,在像素域上进行滤波补偿。
[0063] 6、维纳滤波器(wiener filtering):本质是使估计误差(定义为期望响应与滤波器实际输出之差)均方值最小化。
[0064] 二、视频编解码的主要流程
[0065] 请参考图1中的(a),以视频编码为例,视频编码一般包括预测、变换、量化、熵编码等过程,进一步地,编码过程还可以按照图1中的(b)的框架来实现。
[0066] 其中,预测可以分为帧内预测和帧间预测,帧内预测是利用周围已编码块作为参考对当前未编码块进行预测,有效去除空域上的冗余。帧间预测是使用邻近已编码图像对当前图像进行预测,有效去除时域上的冗余。
[0067] 变换是指将图像从空间域转换至变换域,利用变换系数对图像加以表示。绝大多数图像都含有较多平坦区域和缓慢变化的区域,适当的变换可以使图像由在空间域的分散分布转换为在变换域的相对集中分布,去除信号之间的频域相关性,配合量化过程,可以有效压缩码流。
[0068] 熵编码是一种无损编码方式,可以把一系列元素符号转变为一个用来传输或存储的二进制码流,输入的符号可能包括量化后的变换系数、运动矢量信息、预测模式信息,变换量化相关语法等。熵编码可以有效地去除视频元素符号的冗余。
[0069] 上述是以编码为例进行介绍,视频解码与视频编码的过程是相对的,即视频解码通常包括熵解码、预测、反量化、反变换、滤波等过程,各个过程的实现原理与熵编码相同或相似。
[0070] 二、维纳滤波技术的实现
[0071] ALF编码流程可以包括:区域划分→获取参考像素→区域合并并计算滤波系数→CTU决策判断每个LCU是否启动滤波。
[0072] 整个过程中需要计算获取的参数有:
[0073] 1)、滤波参数个数;
[0074] 2)、区域合并标识;
[0075] 3)、每组滤波系数;
[0076] 4)、LCU是否启动滤波标识;
[0077] 5)、当前分量(Y,U,V)是否启动滤波标识。
[0078] 下面对ALF滤波过程中部分处理和概念进行详细说明。
[0079] 1、区域划分
[0080] 在ALF流程中,对于获取到的重建视频数据,亮度分量上的数据进行分区处理,色度分量上的数据进行非分区处理。
[0081] 示例性的,区域划分的具体实现过程可以为:将图像分割为16个大小基本相等且基于LCU对齐的区域。非最右区域宽度为(((pic_width_InLcus+1)/4)×Lcu_Width),其中pic_width_InLcus表示图像宽度上的LCU个数,Lcu_Width表示每个LCU的宽。最右区域宽度为图像宽度与非最右三个区域宽(图像宽度减去非最右三个区域的总宽度)的差。
[0082] 同理,非底部区域的高度为(((pic_height_InLcus+1)/4×Lcu_Height),其中pic_height_InLcus表示图像高度上的LCU个数,Lcu_Height表示每个LCU的高度。最底部区域的高度为图像高度与非底部三个区域高的差(图像高度减去非最底部三个区域的总高度)。
[0083] 得到整张图的区域划分结果后,为每个区域分配一个索引值,示意图可以如图2所示。
[0084] 2、区域合并
[0085] 区域合并操作是指根据索引值顺序判断相邻区域是否合并。合并的目的是为了减少编码系数。需要使用一个合并标识,用于表示当前区域是否与相邻区域合并。
[0086] 举例来说,按照上述区域划分方式进行区域划分之后,共包括16个区域(可以称为16类或16组(groups),索引值依次为0~15),在第一次合并时,可以依次尝试对区域0和区域1进行合并、区域1和区域2进行合并、区域2和区域3进行合并、…、区域13和区域14进行合并、区域14和区域15进行合并,并按照误差最小的合并方式,进行第一次区域合并,从而16个区域合并后成为15个区域。
[0087] 对于第一次合并后的15个区域(假设区域2和区域3进行合并,得到区域2+3),依次尝试对区域0和区域1进行合并、区域1和区域2+3进行合并、区域2+3和区域4进行合并、…、区域13和区域14进行合并、区域14和区域15进行合并,并按照误差最小的合并方式,进行第二次区域合并,从而15个区域合并后成为14个区域。
[0088] 对于第二次合并后的14个区域(假设区域14和区域15进行合并,得到区域14+15,即合并区域包括区域2+3以及区域14+15),依次尝试对区域0和区域1进行合并、区域1和区域2+3进行合并、区域2+3和区域4进行合并、…、区域12和区域13进行合并、区域13和区域14+15进行合并,并按照误差最小的合并方式,进行第三次区域合并,从而14个区域合并后成为13个区域。
[0089] 以此类推,直至合并为1个区域,其示意图可以如图3所示。
[0090] 完成上述区域合并操作之后,可以依次在未进行区域合并(共16个区域)、进行了一次区域合并(共15个区域)、…、进行了14次区域合并(共2个区域)、进行15次区域合并(共1个区域)的情况下,计算对整帧图像进行维纳滤波的误差,并将误差最小的区域合并方式确定为最终的区域合并方式。
[0091] 3、参考像素、滤波系数
[0092] 按照上述方式进行区域划分之后,可以基于各区域中各像素的参考像素,按照维纳滤波原理计算滤波系数。
[0093] 例如,以第一维纳滤波器为例,参考像素的选取如图4所示,由于滤波器满足中心对称性质,因此参考像素的选取为:
[0094] E[i]=(Pi+P16‑i)
[0095] E[8]=P8
[0096] 其中,Pi属于滤波前重建图中的像素,E[i]为参考像素的值,i=0,1,2,3,4,5,6,7。
[0097] 维纳滤波的目标是对参考像素值的线性组合,使其逼近于原图的像素值。
[0098] 例如,以第一维纳滤波器为例,滤波形状如图5所示,由一个7*7的十字形加上3×3的方形组成的滤波器。滤波器设计为中心对称滤波器,编码端设备只需要向解码端设备传递9个滤波系数。
[0099] 其中C0~C7是7bit有符号数,取值范围是[‑1,1),C8是7bit无符号数,取值范围是[0,2)。
[0100] ALF技术是基于最大编码单元(Largest Coding Unit,简称LCU)进行处理的。属于同一个合并后的区域的LCU使用同一组滤波系数进行滤波。
[0101] 4、自适应修正滤波单元
[0102] 如图14所示,根据当前最大编码单元按下列步骤导出自适应修正滤波单元:
[0103] 4.1、将当前最大编码单元C所在样本区域超出图像边界的部分删除,得到样本区域D;
[0104] 4.2、若样本区域D的下边界所在的样本不属于图像的下边界,则将亮度分量和色度分量样本区域D的下边界向上收缩四行,得到样本区域E1;否则,令样本区域E1等于样本区域D。样本区域D的最后一行样本为区域的下边界;
[0105] 4.3、若样本区域E1的上边界所在的样本属于图像的上边界,或者属于片边界且cross_patch_loopfilter_enable_flag的值为‘0’,令样本区域E2等于样本区域E1;否则,将亮度分量和色度分量样本区域E1的上边界向上扩展四行,得到样本区域E2。样本区域E1的第一行样本为区域的上边界;
[0106] 4.4、将样本区域E2作为当前自适应修正滤波单元。图像的第一行样本为图像的上边界,最后一行样本为图像的下边界。
[0107] 5、自适应修正滤波操作
[0108] 若自适应修正滤波过程中用到的样本为自适应修正滤波单元内的样本,则直接使用该样本进行滤波;否则,按照如下方式进行滤波:
[0109] 5.1、若该样本在图像边界外,或在片边界外且cross_patch_loopfilter_enable_flag的值为‘0’,则使用自适应修正滤波单元内距离该样本最近的样本代替该样本进行滤波;
[0110] 5.2、否则,若该样本在自适应修正滤波单元上边界外或下边界外,则使用自适应修正滤波单元内距离该样本最近的样本代替该样本进行滤波;
[0111] 5.3、若该样本未在自适应修正滤波单元上边界外,也未在自适应修正滤波单元下边界外,直接使用该样本进行滤波。
[0112] 6、树形编码单元(Coding Tree Unit,简称CTU)决策
[0113] 区域合并并计算得到各区域的滤波系数后,需要进行CTU决策,CTU决策也是以LCU为基本单位,判断当前图像中每一个LCU是否使用ALF(即是否启动维纳滤波)。
[0114] 计算当前LCU打开与关闭前后的率失真代价,来决定当前LCU是否使用ALF。若当前LCU被标记为使用ALF,则对LCU内的每个像素进行维纳滤波。
[0115] 相关技术中,根据维纳滤波原理,通过在编码端训练出极少的滤波器的滤波系数,将其传到解码端,对重建图像序列进行滤波达到提升图像质量的效果。由于图像像素个数很大,但滤波器系数很少,因此ALF技术所建立的模型在处理大多数图像的时候会存在欠拟合情况。因此利用ALF技术依然有提升图像质量的空间。
[0116] 示例性的,对于编码端设备,可以在进行帧内/帧间预测后,对预测结果依次进行变换、量化、反量化以及反变换处理,得到重建图像序列;
[0117] 对于解码端设备,可以依次对码流进行熵解码、反量化以及反变换,得到重建图像序列。
[0118] 为了优化维纳滤波效果,提高编解码性能,本申请实施例考虑从以下几方面对现有维纳技术进行改进:
[0119] 1、通过更细致的区域划分,或增加滤波器系数可以缓解ALF技术建立的模型在处理图像时的欠拟合程度,但是同时需要向解码端传输更多信息,会使码率增大,因此采用适当增多滤波系数的方式进行滤波。
[0120] 2、既然ALF技术可以提高图像的重建质量,而第一次的ALF又存在欠拟合的情况,因此可以通过引入二次维纳滤波的方法,对第一次滤波后的图像,重修训练一组滤波系数,再次进行滤波,进一步提高图像质量。
[0121] 3、由于滤波器形状是固定的,因此可能会存在一些位置上的参考像素与待滤波像素之间关系较小,或者可能存在参考像素的共线性,导致训练得到的系数不是最优的系数。因此采用逐步回归的思想,在3次CTU决策之后,增加1次CTU决策,系数为0的位置上的参考像素不参与滤波系数的计算。
[0122] 为了使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。
[0123] 实施例一、增多滤波系数
[0124] 采用改变滤波器形状,适当增多滤波系数的方式进行滤波,缓解ALF技术建立的模型在处理图像时的欠拟合程度。
[0125] 需要说明的是,实施例一中描述的滤波方法可以应用于编码端设备,也可以应用于解码端设备。
[0126] 请参见图6,为本申请实施例提供的一种滤波方法的流程示意图,如图6所示,该滤波方法可以包括以下步骤:
[0127] 步骤S600、当确定对当前帧图像的当前LCU启动维纳滤波时,获取并根据当前LCU的参考像素以及维纳滤波器的滤波系数,对当前LCU的像素逐个进行维纳滤波。示例性的,该维纳滤波器为第二维纳滤波器,第二维纳滤波器是在第一维纳滤波器基础上进行状态扩增得到的,第一维纳滤波器的形状为7*7十字形加3*3方形的中心对称滤波器,参考像素的值基于滤波前的重建图像的像素值确定。
[0128] 需要说明的是,在本申请实施例中,若未特殊说明,所提及的当前帧图像是指重建图像。
[0129] 此外,在对当前帧图像进行维纳滤波之前,还可以根据需求选择是否对当前帧图像进行DBF处理或/和SAO处理,其具体实现在此不再赘述。
[0130] 当对当前帧进行了DBF处理或/和SAO处理时,本申请实施例提及中的当前帧图像可以为进行了DBF处理或/和SAO处理后的重建图像;当未对当前帧进行DBF处理以及SAO处理时,本申请实施例提及中的当前帧图像可以为上述反量化以及反变换处理后得到的重建图像。
[0131] 再者,若未特殊说明,下文中所描述的对LCU进行维纳滤波可以包括对LCU各像素的亮度分量(Y分量)和色度分量(U分量和V分量)进行维纳滤波,但是对前者(Y分量)进行滤波时,需要进行区域划分和区域合并等处理,对后者(U分量和V分量)进行滤波时,不需要进行区域划分和区域合并处理。
[0132] 本申请实施例中,为了优化滤波效果,提高编解码性能,可以适当增加维纳滤波的滤波系数的方式,得到新的维纳滤波器,以缓解ALF技术处理图像时存在的欠拟合情况。
[0133] 示例性的,可以通过在形状为7*7十字形加3*3方形的中心对称滤波器(本文中称为第一维纳滤波器,示意图可以如图5所示)基础上进行形状扩展的方式得到新的维纳滤波器(本文中称为第二维纳滤波器)。
[0134] 当确定对当前帧图像的当前LCU启动维纳滤波时,编码/解码端设备可以获取当前LCU的参考像素以及第二维纳滤波器的滤波系数,并根据获取到的参考像素和滤波系数对当前LCU的像素逐个进行维纳滤波。
[0135] 在一个示例中,第二维纳滤波器是形状为7*7十字形加5*5方形的中心对称滤波器。
[0136] 示例性的,如图7所示,第二维纳滤波器的滤波系数包括15个。
[0137] 示例性的,对应图7所示的第二维纳滤波器,参考像素的位置可以如图8所示,用于获取参考像素值的重建图像的参考像素位置与第二维纳滤波器的滤波系数的形状匹配。
[0138] 在一个示例中,步骤S600中,确定对当前帧图像的当前LCU进行维纳滤波之前,还可以包括:
[0139] 确定是否对当前帧图像进行滤波;
[0140] 当确定对当前帧图像进行滤波时,确定是否对当前LCU启动维纳滤波,并当确定对当前LCU维纳滤波时,执行获取并根据当前LCU的参考像素以及维纳滤波的滤波系数,对当前LCU的像素逐个进行维纳滤波的步骤。
[0141] 示例性的,在对当前LCU进行维纳滤波之前,可以先确定是否对当前帧图像进行滤波。
[0142] 示例性的,对于编码端设备,确定是否对某帧图像进行滤波可以为:可以基于滤波前后该帧图像的率失真代价,确定是否对该帧图像进行滤波,其具体实现在此不做赘述。
[0143] 当确定对当前帧图像进行滤波时,可以分别确定是否对当前帧图像中各LCU启动维纳滤波。
[0144] 示例性的,编码端设备可以基于CTU决策,确定是否对某LCU启动维纳滤波。
[0145] 对于解码端设备,可以基于接收到的当前帧图像的编码码流中携带的帧级滤波标志位的值,确定是否对当前帧图像进行滤波;当确定对当前帧图像进行滤波时,可以基于码流中的LCU级滤波标志位的值,确定是否对对应的LCU进行维纳滤波。
[0146] 示例性的,当确定对当前LCU启动维纳滤波时,可以按照上述实施例中描述的方式对当前LCU进行维纳滤波。
[0147] 实施例二、增加一次滤波过程
[0148] 通过引入二次滤波的方法,对第一次滤波后的图像,重修训练一组滤波系数,再次进行滤波,进一步提高图像质量。
[0149] 需要说明的是,实施例二中描述的滤波方法可以应用于编码端设备,也可以应用于解码端设备。
[0150] 请参见图9,为本申请实施例提供的一种滤波方法的流程示意图,如图9所示,该滤波方法可以包括以下步骤:
[0151] 步骤S900、当确定对当前图像的当前LCU启动维纳滤波时,对当前LCU进行第一次维纳滤波和第二次维纳滤波。
[0152] 本申请实施例中,对于启动维纳滤波的LCU,可以进行两次维纳滤波(本文中称为第一次维纳滤波和第二次维纳滤波)。
[0153] 当确定对当前帧图像的当前LCU启动维纳滤波时,可以对当前LCU进行第一次维纳滤波和第二次维纳滤波。
[0154] 示例性的,对当前LCU进行第一次维纳滤波和第二次维纳滤波,可以包括:
[0155] 获取并根据对当前LCU进行第一次维纳滤波的维纳滤波器的滤波系数和参考像素,以及对当前LCU进行第二次维纳滤波器的维纳滤波系数和参考像素,对当前LCU的像素逐个进行第一次维纳滤波和第二次维纳滤波。
[0156] 示例性的,对于编码端设备,维纳滤波器的滤波系数可以通过计算确定;对于解码端设备,维纳滤波器的滤波系数可以从码流中获取。
[0157] 在一个示例中,步骤S900中,对当前LCU进行第一次维纳滤波和第二次维纳滤波之前,还可以包括:
[0158] 确定是否对当前帧图像进行滤波;
[0159] 当确定对当前帧图像进行滤波时,确定是否对当前LCU启动维纳滤波,并当确定对当前LCU启动维纳滤波时,确定执行对当前LCU进行第一次维纳滤波和第二次维纳滤波的步骤。
[0160] 示例性的,可以通过一个帧级滤波标志来标识图像是否需要进行滤波,并通过一个LCU级滤波标志来标识LCU是否启动维纳滤波。
[0161] 编码端设备可以通过该帧级滤波标志通知解码端设备是否对当前图像进行滤波,解码端设备可以根据码流中该帧级滤波标志的值来确定是否对当前帧图像进行滤波。
[0162] 同理,编码端设备可以通过该LCU级滤波标志位来标识当前LCU是否启动维纳滤波,解码端设备可以根据码流中该LCU级滤波标志的值来确定当前LCU是否启动维纳滤波。
[0163] 示例性的,编码端设备确定是否对某帧图像进行滤波可以参见传统滤波方案中的相关实现,例如,可以基于滤波前后该帧图像的率失真代价,确定是否对该帧图像进行滤波,其具体实现在此不做赘述。
[0164] 当确定对当前帧图像进行滤波时,可以分别确定是否对当前帧图像中各LCU启动维纳滤波。
[0165] 示例性的,编码端设备可以基于CTU决策,确定是否对某LCU启动维纳滤波。
[0166] 当编码/解码端设备确定对当前帧图像进行滤波,且对当前LCU启动维纳滤波时,可以获取对当前LCU进行第一次维纳滤波的维纳滤波器的滤波系数和参考像素,以及对当前LCU进行第二次维纳滤波的维纳滤波系数和参考像素,并根据获取到的滤波系数和参考像素,对当前LCU的像素逐个进行第一次维纳滤波和第二次维纳滤波。
[0167] 需要说明的是,为了提高滤波效率,对当前LCU进行维纳滤波时,可以在对当前像素进行第一次维纳滤波和第二次维纳滤波之后,对下一个像素进行第一次维纳滤波和第二次维纳滤波,从而在读取一次像素的情况下,对各像素进行两次维纳滤波,减少了像素读取次数。
[0168] 在另一个示例中,步骤S900中,对当前LCU进行第一次维纳滤波和第二次维纳滤波之前,还可以包括:
[0169] 确定是否对当前帧图像进行第一次滤波,以及是否对当前帧图像进行第二次滤波;
[0170] 当确定对当前帧图像进行第一次滤波,且对当前帧图像进行第二次滤波时,确定是否对当前LCU启动第一次维纳滤波,以及是否对当前LCU启动第二次维纳滤波;
[0171] 当确定对当前LCU启动第一次维纳滤波,且对当前LCU启动第二次维纳滤波时,确定执行对当前LCU进行第一次维纳滤波和第二次维纳滤波的步骤。
[0172] 示例性的,需要分别确定是否对当前帧图像进行第一次滤波,以及是否对当前帧图像进行第二次滤波,当确定对当前帧进行第一次滤波或/和第二次滤波时,需要分别确定是否对当前LCU启动第一次维纳滤波,以及是否对当前LCU启动第二次维纳滤波。
[0173] 示例性的,可以通过两个帧级滤波标志来分别标识图像是否需要进行第一次滤波和第二次滤波,并通过两个个LCU级滤波标志分别来标识LCU是否启动第一次维纳滤波和第二次维纳滤波。
[0174] 编码端设备可以通过该帧级滤波标志通知解码端设备是否对当前图像进行第一次滤波和第二次滤波,解码端设备可以根据码流中该帧级滤波标志的值来确定是否对当前帧图像进行第一次滤波和第二次滤波。
[0175] 同理,编码端设备可以通过该LCU级滤波标志位来标识当前LCU是否启动第一维纳滤波和第二次维纳滤波,解码端设备可以根据码流中该LCU级滤波标志的值来确定当前LCU是否启动第一次维纳滤波和第二次维纳滤波。
[0176] 示例性的,编码端设备可以基于滤波前后该帧图像的率失真代价,确定是否对该帧图像进行第一次滤波或第二次滤波,其具体实现在此不做赘述。
[0177] 当确定对当前帧图像进行第一次滤波和第二次滤波时,可以分别确定是否对当前LCU启动第一次维纳滤波,以及是否对当前LCU启动第二次维纳滤波。
[0178] 示例性的,编码端设备可以基于CTU决策,确定是否对某LCU启动第一次维纳滤波或第二次维纳滤波。
[0179] 需要说明的是,在本申请实施例中,对于图像,还可以对当前帧图像进行第一次滤波,不进行第二次滤波;或者,对当前帧图像进行第二次滤波,不进行第一次滤波;或者,对当前帧图像不进行第一次滤波,也不进行第二次滤波。
[0180] 对于LCU,还可以对当前LCU启动第一次维纳滤波,不启动第二次维纳滤波,或者,对当前LCU启动第二次维纳滤波,不启动第一次维纳滤波;或者,对当前LCU不启动第一次维纳滤波,也不启动第二次维纳滤波。
[0181] 编码端设备分别通过上述两个帧级滤波标志和两个LCU级滤波标志来指示解码端设备是否对当前帧图像进行第一次滤波或/和第二次滤波,以及,在对当前帧图像进行第一次滤波或/和第二次滤波的情况下,是否对当前LCU启动第一次维纳滤波或/和第二次维纳滤波。
[0182] 在一个示例中,对当前LCU进行第一次维纳滤波的维纳滤波器与进行第二次维纳滤波的维纳滤波器均为第一维纳滤波器;或者,
[0183] 对当前LCU进行第一次维纳滤波的维纳滤波器与进行第二次维纳滤波的维纳滤波器均为第二维纳滤波器;或者,
[0184] 对当前LCU进行第一次维纳滤波的维纳滤波器为第一维纳滤波器,对当前LCU进行第二次维纳滤波的维纳滤波器为第二维纳滤波器;或者,
[0185] 对当前LCU进行第一次维纳滤波的维纳滤波器为第二维纳滤波器,对当前LCU进行第二次维纳滤波的维纳滤波器为第一维纳滤波器。
[0186] 示例性的,在对当前LCU进行第一次维纳滤波或第二次维纳滤波时,均可以从第一次维纳滤波器或第二次维纳滤波器中选择使用的维纳滤波器,具体使用的维纳滤波器可以通过配置指令指示。
[0187] 示例性的,第二维纳滤波器是在第一维纳滤波器基础上进行形状扩增得到的,第一维纳滤波器为7*7十字形加3*3方形的中心对称滤波器,其示意图可以如图5所示。
[0188] 示例性的,第二维纳滤波器为7*7十字形加5*5方形的中心对称滤波器,其示意图可以如图7所示。
[0189] 在一个示例中,对当前LCU进行第一次维纳滤波的参考像素的值按照第一方式从第一重建图像中获取,第一重建图像为第一次维纳滤波前的重建图像;
[0190] 对当前LCU进行第二次维纳滤波的参考像素的像素值按照第二方式从第一重建图像中获取。
[0191] 示例性的,对当前LCU进行第一次维纳滤波的参考像素的值和对当前LCU进行第二次维纳滤波的参考像素的值,均可以从第一次维纳滤波前的重建图像(本文中称为第一重建图像)中获取。
[0192] 示例性的,对于当前LCU进行第一次维纳滤波的参考像素的值可以按照第一方式从第一重建图像中获取。
[0193] 对于当前LCU进行第一次维纳滤波的参考像素的值可以按照第二方式从第一重建图像中获取。
[0194] 示例性的,第一方式可以为基于图4所示的参考像素位置以及图5所示的第一维纳滤波器的形状,从第一重建图像的参考像素位置获取参考像素的值:
[0195] E[i]=(Pi+P16‑i)
[0196] E[8]=P8
[0197] 其中,Pi属于滤波前重建图中的像素,E[i]为参考像素的值,i=0,1,2,3,4,5,6,7。
[0198] 示例性的,第二方式可以为:
[0199] 当前LCU中各像素对应的参考像素的值基于第一重建图像中各个参考像素位置的像素值与中心位置像素值的差值的绝对值确定。
[0200] 举例来说,以图4所示参考像素位置为例,按照第二方式从第一重建图像中获取参考像素的值可以通过以下策略实现:
[0201] E[i]=abs(Pi‑P8)+abs(P16‑i‑P8)
[0202] E[8l=1
[0203] Pi为第一重建图像中的像素值,E[i]为参考像素的值,i=0,1,2,3,4,5,6,7。
[0204] 又举例来说,以图8所示参考像素位置为例,按照第二方式从第一重建图像中获取参考像素的值可以通过以下策略实现:
[0205] E[i]=abs(Pi‑P14)+abs(P28‑i‑P14)
[0206] E[14]=1
[0207] P为第一重建图像中的像素值,E[i]为参考像素的值,i=0,1,2,3,4,5,6,7,8,9,10,11,12,13。
[0208] 需要说明的是,E[8]=1或E[14]=1仅仅是一种获取参考像素的值的方式,本申请实施例中并不限于此,即在本申请实施例中,E[8](或E[14])的值也可以为其他像素(不超过最大像素值),或者,E[8](或E[14])的值也可以为P8(P14)。
[0209] 示例性的,在进行第二次维纳滤波时,基于第一重建图像中各个参考像素位置的像素值与中心位置像素值的差值的绝对值确定参考像素的值,从而,通过第二次维纳滤波实现对参考像素值的线性组合,使其逼近于原图的像素与第一次滤波后的图像像素的差值。
[0210] 对于任一像素,当完成对该像素的第一次维纳滤波和第二次维纳滤波时,如果重建图像都是第一重建图像时,可以将该像素进行第一次维纳滤波后的像素值与该像素进行第二次维纳滤波后的像素值之和,确定该像素滤波后的像素值。
[0211] 对于任一像素,当完成对该像素的第一次维纳滤波和第二次维纳滤波时,在第一次滤波采用第一方式获取参考像素的值(逼近原值),且第二次滤波采用第二方式获取参考像素的值(逼近第一次滤波和原值的差值)的情况下,也可以通过将第一次滤波和第二次滤波的滤波结果进行叠加,得到最终的滤波结果。
[0212] 示例性的,对LCU进行第一次维纳滤波和第二次维纳滤波时,若参考像素的值均从第一重建图像中获取,则对当前LCU进行第一次维纳滤波和对当前LCU进行第二次维纳滤波可以并行执行,以增加滤波效率。
[0213] 在另一个示例中,对当前LCU进行第一次维纳滤波的参考像素的值基于第一重建图像中的像素值确定,第一重建图像为第一次维纳滤波前的重建图像;
[0214] 对当前LCU进行第二次维纳滤波的参考像素的值基于第二重建图像中的像素值确定,第二重建图像为第一次维纳滤波后的重建图像。
[0215] 示例性的,对当前LCU进行第一次维纳滤波的参考像素的值和对当前LCU进行第二次维纳滤波的参考像素的值,可以分别从第一次维纳滤波前的重建图像(即第一重建图像)和第一次维纳滤波后的重建图像(本文中称为第二重建图像)中获取。
[0216] 示例性的,对当前LCU进行第二次维纳滤波的参考像素的值基于第二重建图像中各个参考像素位置的像素值与中心位置像素值的差值的绝对值确定。
[0217] 示例性的,在进行第二次维纳滤波时,基于第二重建图像中各个参考像素位置的像素值与中心位置像素值的差值的绝对值确定参考像素的值,从而,通过第二次维纳滤波实现对参考像素值的线性组合,使其逼近于原图的像素与第一次滤波后的图像像素的差值。
[0218] 对于任一像素,当完成对该像素的第一次维纳滤波和第二次维纳滤波时,可以将该像素进行第一次维纳滤波后的像素值与该像素进行第二次维纳滤波后的像素值之和,确定该像素滤波后的像素值。
[0219] 在一个示例中,步骤S900中,对当前LCU进行的第一次维纳滤波和第二维纳滤波之前,还可以包括:
[0220] 对当前帧图像按照LCU的规格进行区域划分,划分为一个区域的LCU配置相同的滤波参数,滤波参数包括进行维纳滤波的滤波器以及滤波系数,以及参考像素的位置索引,划分方式包括但不限于一种。
[0221] 示例性的,对图像进行区域划分的具体实现可以参见传统滤波方案中的相关实现,本申请实施例对此不做赘述。
[0222] 需要说明的是,在本申请实施例中,对当前帧图像进行第一次滤波和第二次滤波时,进行区域划分的方式可以不同,对图像中各LCU进行维纳滤波选择的维纳滤波器也可以不同。
[0223] 在一个示例中,当图9所示滤波方法应用于编码端设备时,还可以包括:
[0224] 当完成3次CTU决策时,对于3次CTU决策之后确定启动维纳滤波的LCU,获取3次CTU决策之后保留的对该LCU进行维纳滤波得到第一组滤波系数,并将滤波系数为0的参考像素位置的参考像素的值置为0,并基于更新后的参考像素的值,计算第二组滤波系数;
[0225] 根据第二组滤波系数进行第4次CTU决策,判断当前帧图像的各LCU是否启动维纳滤波。
[0226] 示例性的,在对当前帧图像进行第一次滤波或第二次滤波时,编码端设备均可以通过3次CTU决策确定当前帧图像中启动维纳滤波的LCU,即编码端设备可以通过3次CTU决策确定某LCU是否启动第一次维纳滤波,以及,通过3次CTU决策确定该LCU是否启动第二次维纳滤波。
[0227] 考虑到一些位置上的参考像素与待滤波像素之间关系较小,或者可能存在参考像素的共线性,导致训练得到的系数不是最优的系数,因此,为了优化滤波系数的训练效果,在通过CTU决策确定各LCU是否启动第一次维纳滤波(或第二次维纳滤波)的过程中,当完成3次CTU决策时,编码端设备可以基于CTU决策确定启动第一次维纳滤波(或第二次维纳滤波)的LCU,基于3次CTU决策之后保留的对该LCU进行维纳滤波的滤波系数(本文中称为第一组滤波系数),将滤波系数为0的位置的参考像素位置的参考像素的值置为0,滤波系数不为
0的参考像素位置的参考像素的值不变,对参考像素的值进行更新,并基于更新后的参考像素的值,计算新的滤波系数(本文中称为第二组滤波系数)。
[0228] 在得到第二组滤波系数时,可以根据第二组滤波系数进行第4次CTU决策,判断当前帧图像的各LCU是否启动维纳滤波。
[0229] 在另一个示例中,当图9所示滤波方法应用于编码端设备时,还可以包括:
[0230] 每完成1次CTU决策时,对于此次CTU决策之后确定启动维纳滤波的LCU,获取此次CTU决策之后保留的对该LCU进行维纳滤波的第一组滤波系数,并将该滤波系数为0的参考像素位置的参考像素的值置为0,并基于更新后的参考像素的值,计算第二组滤波系数;
[0231] 根据第二组滤波系数进行下一次CTU决策,判断当前帧图像的各LCU是否启动维纳滤波。
[0232] 示例性的,考虑到一些位置上的参考像素与待滤波像素之间关系较小,或者可能存在参考像素的共线性,导致训练得到的系数不是最优的系数,因此,为了优化滤波系数的训练效果,在每次CTU决策之后,对于基于此次CTU决策确定启动第一次维纳滤波(或第二次维纳滤波)的LCU,编码端设备可以基于此次CTU决策保留的对该LCU进行维纳滤波的滤波系数(可以称为第一组滤波系数),将滤波系数为0的参考像素位置的参考像素的值置为0,滤波系数不为0的参考像素位置的参考像素的值不变,对参考像素的值进行更新,并基于更新后的参考像素的值,计算新滤波系数(可以称为第二组滤波系数)。
[0233] 在得到第二组滤波系数时,可以根据第二组滤波系数进行下一次CTU决策,判断当前帧图像的各LCU是否启动维纳滤波。
[0234] 需要说明的是,在本申请实施例中,每次计算得到第二组滤波系数时,还可以比较基于第一组滤波系数对当前帧图像进行滤波的率失真代价和基于第二组滤波系数对当前帧图像进行滤波的率失真代价,若前者较小,则保留第一组滤波系数;否则,保留第二组滤波系数。
[0235] 实施例三、增加1次CTU决策
[0236] 采用逐步回归的思想,在3次CTU决策之后,增加1次CTU决策,系数为0的位置上的参考像素不参与滤波系数的计算,优化训练得到的滤波系数。
[0237] 需要说明的是,实施例三中描述的滤波方法可以应用于编码端设备。
[0238] 请参见图10,为本申请实施例提供的一种滤波方法的流程示意图,如图10所示,该滤波方法可以包括以下步骤:
[0239] 步骤S1000、当完成3次CTU决策时,对于3次CTU决策之后确定启动维纳滤波的LCU,获取3次CTU决策之后保留的对该LCU进行维纳滤波得到第一组滤波系数,并将滤波系数为0的参考像素位置的参考像素的值置为0,并基于更新后的参考像素的值,计算第二组滤波系数。
[0240] 步骤S1010、根据第二组滤波系数进行第4次CTU决策,判断当前帧图像的各LCU是否启动维纳滤波。
[0241] 本申请实施例中,考虑到一些位置上的参考像素与待滤波像素之间关系较小,或者可能存在参考像素的共线性,导致训练得到的系数不是最优的系数,因此,为了优化滤波系数的训练效果,在通过CTU决策确定各LCU是否启动维纳滤波的过程中,当完成3次CTU决策时,编码端设备可以基于CTU决策确定启动次维纳滤波的LCU,基于3次CTU决策之后保留的对该LCU进行维纳滤波的滤波系数(本文中称为第一组滤波系数),将滤波系数为0的滤波系数位置的参考像素的值置为0,滤波系数不为0的参考像素位置的参考像素的值不变,对参考像素的值进行更新,并基于更新后的参考像素的值,计算新的滤波系数(本文中称为第二组滤波系数)。
[0242] 在得到第二组滤波系数时,可以根据第二组滤波系数进行第4次CTU决策,判断当前帧图像的各LCU是否启动维纳滤波。
[0243] 需要说明的是,在本申请实施例中,计算得到第二组滤波系数时,还可以比较基于第一组滤波系数对当前帧图像进行滤波的率失真代价和基于第二组滤波系数对当前帧图像进行滤波的率失真代价,若前者较小,则保留第一组滤波系数;否则,保留第二组滤波系数。
[0244] 此外,当保留的是更新后的滤波系数时,编码端设备还可以基于更新后的滤波系数更新区域合并结果,其具体实现在此不做赘述。
[0245] 在一个示例中,图10所示滤波方法还可以包括:
[0246] 当确定当前帧图像中的当前LCU启动维纳滤波时,获取并根据当前LCU进行维纳滤波的维纳滤波器的滤波系数和参考像素,对当前LCU中像素逐个进行维纳滤波。
[0247] 本申请实施例中,当确定当前帧图像中的当前LCU启动维纳滤波时,可以获取当前LCU进行维纳滤波的维纳滤波器的滤波系数和参考像素,对当前LCU中像素逐个进行维纳滤波。
[0248] 在一个示例中,为了优化滤波效果,提高编解码性能,可以适当增加维纳滤波的滤波系数的方式,得到新的维纳滤波器,以缓解ALF技术处理图像时存在的欠拟合情况,其具体实现可以参见实施例一或实施例二中的相关描述,本申请实施例在此不做赘述。
[0249] 在一个示例中,通过引入二次滤波的方法,对第一次滤波后的图像,重修训练一组滤波系数,再次进行滤波,进一步提高图像质量,其具体实现可以参见实施例二中的相关描述,本申请实施例在此不做赘述。
[0250] 在一个示例中,步骤S1000中,完成3次CTU决策之前,还可以包括:
[0251] 每完成1次CTU决策,对于此次CTU决策之后确定启动维纳滤波的LCU,获取此次CTU决策之后保留的对该LCU进行维纳滤波的第一组滤波系数,并将该滤波系数为0的参考像素位置的参考像素的值置为0,并基于更新后的参考像素的值,计算第二组滤波系数;
[0252] 根据第二组滤波系数进行下一次CTU决策,判断当前帧图像的各LCU是否启动维纳滤波。
[0253] 示例性的,考虑到一些位置上的参考像素与待滤波像素之间关系较小,或者可能存在参考像素的共线性,导致训练得到的系数不是最优的系数,因此,为了优化滤波系数的训练效果,在每次CTU决策之后,对于基于此次CTU决策确定启动维纳滤波的LCU,编码端设备可以基于此次CTU决策保留的对该LCU进行维纳滤波的滤波系数(可以称为第一组滤波系数),将滤波系数为0的参考像素位置的参考像素的值置为0,滤波系数不为0的参考像素位置的参考像素的值不变,对参考像素的值进行更新,并基于更新后的参考像素的值,计算更新滤波系数(可以称为第二组滤波系数)。
[0254] 在得到第二组滤波系数时,可以根据第二组滤波系数进行下一次CTU决策,判断当前帧图像的各LCU是否启动维纳滤波。
[0255] 需要说明的是,在本申请实施例中,每次计算得到第二组滤波系数时,还可以比较基于第一组滤波系数对当前帧图像进行滤波的率失真代价和基于第二组滤波系数对当前帧图像进行滤波的率失真代价,若前者较小,则保留第一组滤波系数;否则,保留第二组滤波系数。
[0256] 此外,当保留的是第二组滤波系数时,编码端设备还可以基于更新后的滤波系数更新区域合并结果,其具体实现在此不做赘述。
[0257] 为了使本领域技术人员更好地理解本申请实施例提供的技术方案,下面结合具体实例对本申请实施例提供的技术方案进行说明。
[0258] 针对传统ALF技术缺点,本申请提出一种在传统ALF参数基础上,加大每一组滤波系数的个数;或者,保持每组滤波器个数不变,增加滤波组数。根据RDO决策控制最后是否需要添加更多组滤波系数。
[0259] 下面先分别从编码端和解码端对本申请的主要改进点进行说明。
[0260] 1、编码方法及编码端设备
[0261] 1.1、改变滤波器形状
[0262] 如图7所示,一种增加滤波器系数的编码方法为基于图8所示的参考像素位置,对7*7十字形加上3*3方形的滤波器形状(可以如图5所示)进行扩增,得到7*7十字形加上5*5方形的滤波器形状,在传统滤波系数基础上增加6个滤波系数。
[0263] 1.2、增加一次滤波过程
[0264] 本方案在传统ALF技术基础上,再训练一套滤波参数。
[0265] 训练第二套滤波参数过程与传统ALF技术一致,但存在以下差异:
[0266] 1.2.1、对像素进行区域划分方法可以包括:
[0267] 1.2.1.1、与图2所示的区域划分和图3所示的区域合并方式相同的划分方式;
[0268] 1.2.1.2、与图2所示的区域划分和图3所示的区域合并方式不同的划分方式(例如:在图2所示的区域划分基础上再细分为多个区域等)。
[0269] 1.2.2、滤波器形状可以保持图5所示的滤波器形状(不变,或者使用其他滤波器形状(例如,图7所示的滤波器形状)。
[0270] 1.2.3、第二次滤波的参考像素选取与传统方案中第一次滤波不同:
[0271] 1.2.3.1、第二次滤波的参考像素由重建图像中参考像素位置与中心位置像素差的绝对值构成,重建图像指的是第一次滤波前的重建图像(即第一重建图像)。
[0272] 1.2.3.2、第二次滤波的参考像素由重建图像中参考像素值与中心值差的绝对值构成,重建图像指的是第一次滤波后的重建图像(即第二重建图像)。
[0273] 1.2.3.3、第二次滤波的参考像素由与第一次的参考像素选取方式相同,但第二次滤波的参考像素Pi由第一次滤波后的重建图像(即第二重建图像)中获取。
[0274] 需要说明的是,1.2.3.1、1.2.3.2和1.2.3.3均为针对参考像素的计算方法和获取方法的改进,三者为互斥关系,1.2.1和1.2.2与(1.2.3.1、1.2.3.2和1.2.3.3)独立,可以相互组合。
[0275] 1.3、编码端增加一次CTU决策
[0276] 每次CTU决策前,会计算得到一组滤波系数,这组滤波系数的可以反映出每个参考像素位置的权重,有一些系数为0的参考位置,可以认为其与目标值的相关性较弱。在计算滤波系数时,尽可能保留更多相关性较强的位置,而删除一些相关性较弱,甚至没有相关性的位置,这样得到的滤波器效果会更好。
[0277] 因此在最后一次CTU决策之后,增加1次CTU决策,当完成最后一次CTU决策时,基于当前保留的滤波系数,若系数为0,则当前这个位置上的参考像素值记为0。若将系数不为0,该位置上的参考像素值保持不变,训练出最后一组滤波系数,实现滤波系数更新。
[0278] 计算最后两组滤波系数(更新前后的滤波系数)的率失真代价,将率失真代价较小的系数保留,并编码。
[0279] 1.4、编码端滤波系数的计算的改进
[0280] 本方案中,若需要重新计算滤波系数,如每完成一次CTU决策时,对于前一次保留的滤波系数中系数为0的位置,该位置的参考像素不参与滤波计算,将该参考像素的值直接置为0。
[0281] 需要说明的是,对于编码端设备,1.1(即改变滤波器形状)、1.2(增加一次滤波过程)、1.3(编码端增加一次CTU决策)以及1.4(编码端滤波系数的计算的改进)中描述的改进可以独立采用,或者,两两或两个以上组合采用。
[0282] 例如,在增加一次滤波过程的基础上,第一次滤波过程或/和第二次滤波过程中采用新的滤波器形状,或者,在增加一次CTU决策的基础上,当通过CTU决策确定了启动维纳滤波的LCU之后,对于启动维纳滤波的LCU,可以进行两次维纳滤波,且第一次维纳滤波或/和第二次维纳滤波过程中可以采用新的滤波器形状。
[0283] 2、解码方法及解码端设备
[0284] 2.1、改变滤波器形状
[0285] 如图7所示,一种增加滤波器系数的编码方法为基于图8所示的参考像素位置,对7*7十字形加上3*3方形的滤波器形状(可以如图5所示)进行扩增,得到7*7十字形加上5*5方形的滤波器形状,在传统滤波系数基础上增加6个滤波系数。
[0286] 2.2、增加一次滤波过程
[0287] ALF解码过程的改进对应于上述编码过程。若第一次滤波和第二次滤波的参考像素均由第一次滤波前的重建图像(即第一重建图像)决定,则第二次滤波可以与第一次滤波并行执行;若第二次滤波的参考像素由第一次滤波后的重建图像(即第二重建图像)决定,则第二次滤波需要在第一次滤波后进行。
[0288] 2.2.1、第二次滤波的区域划分可以与第一次滤波的区域划分相同或不同,需要与编码端保持一致;
[0289] 2.2.2、第二次滤波的滤波器形状和第一次滤波的滤波器形状可以相同或不同,需要与编码端保持一致;
[0290] 2.2.3、若编码端第二次滤波的参考像素由第一次滤波前的重建图像(即第一重建图像)确定,且第二次滤波的参考像素的值按照第二方式从第一重建图像中获取,则第二次滤波与第一次滤波的参考像素由相同的重建图像确定,对于同一LCU,获取两组滤波系数,并行执行滤波过程,将滤波结果叠加;
[0291] 2.2.4、若编码端第二次滤波的参考像素由第一次滤波后的重建图像(即第二重建图像)确定,则第二次滤波与第一次滤波的参考像素由不同的重建图像确定,且第二次滤波的参考像素的值按照第二方式从第二重建图像中获取,第二次滤波的参考像素需要待第一次滤波结束后获取,对于同一LCU,两次滤波先后进行,将滤波结果叠加;
[0292] 2.2.5、若编码端第一次滤波和第二次滤波分别采用第一方式从第一重建图像和第二重建图像中获取参考像素的值,则第二次滤波的参考像素需要待第一次滤波结束后获取,对于同一LCU,两次滤波先后进行。
[0293] 需要说明的是,对于解码端设备,2.1(即改变滤波器形状)以及2.2(增加一次滤波过程)中描述的改进可以独立采用,或者,两两或两个以上组合采用。
[0294] 此外,对于上述改进的采用,编码端设备和解码端设备需保持一致。
[0295] 下面分别结合实施例对各改进点的独立采用或组合采用的部分实现方式进行示例性说明。
[0296] 实施例四
[0297] 改变滤波器形状,在编码端编码流程不变:区域划分→获取参考像素→区域合并并计算滤波系数→CTU决策判断每个LCU是否启动滤波。
[0298] 需要计算的参数:
[0299] 1)、滤波参数个数(不变);
[0300] 2)、区域合并标识(不变);
[0301] 3)、每组滤波系数(每组系数由原来9个,变为15个);
[0302] 4)、LCU是否启动滤波标识(不变);
[0303] 5)、当前分量(Y,U,V)是否启动滤波标识(不变)。
[0304] 解码端获取码流,滤波器系数由原来9个变为15个,解码端ALF解码流程为:获取当前帧滤波标识(即Frame_flag),若该帧应该进行滤波(即帧滤波标识的值为真(true),若为假(false),则不进行滤波),再以LCU为最小单元,由当前LCU的滤波标识(即LCU_flag)判断是否需要ALF,若是,则为当前LCU获取滤波系数(Filter_coeff)。每组系数有15个,使用该滤波系数,对该LCU中所有像素按照图7中的滤波器形状进行滤波。解码滤波过程如图11所示。
[0305] 示例性的,对于编码端设备,可以通过CTU决策确定当前帧图像中各LCU是否启动维纳滤波,并基于最终确定的结果,确定各LCU对应的LCU_flag的值,并将其携带在编码码流中通知给解码端设备,由解码端设备基于各LCU对应的LCU_flag的值,确定是否对对应的LCU进行维纳滤波。
[0306] 实施例五
[0307] 增加一次滤波过程,采用与第一次ALF相同的区域划分方式,并采用与第一次ALF相同的滤波器形状,但第二次滤波的参考像素选取与原方案中第一次滤波不同,第二次滤波的参考像素由重建图像中参考像素位置与中心位置像素的差的绝对值构成,重建图像指的是第一次滤波前的重建图像(即第一重建图像)。
[0308] 滤波器形状为图5中描述滤波形状,每个位置上参考像素如图4所示:
[0309] E[i]=abs(Pi‑P8)+abs(P16‑i‑P8)E[8]=1P为第一重建图像中的像素值,E[i]为参考像素的值,i=0,1,2,3,4,5,6,7。
[0310] 第二次滤波的目标是对参考像素值的线性组合,使其逼近于原图的像素与第一次滤波后的图像像素的差值。
[0311] 解码端的具体实现过程为:获取当前帧两次滤波的滤波标识(包括第一次滤波的滤波标识Frame_flag[0]和第二次滤波的滤波标识Frame_flag[1]),若有一个滤波标识为真,则以LCU为最小单元,判断当前LCU两组滤波标识(包括第一次滤波的滤波标识LCU_flag[0]和第二次滤波的滤波标识LCU_flag[1])中是否有真,若有,解码端获取两套滤波标识中判断为真的滤波系数(第一次滤波的滤波系数Filter_coeff[0]或/和第二次滤波的滤波系数Filter_coeff[1]),对LCU中所有像素逐点进行滤波,具体过程如图12所示。由于两次滤波的参考像素都只需要读取相同的像素,因此两次滤波在解码端可以并行执行。
[0312] 实施例六
[0313] 增加一次滤波过程,第二次ALF采用与第一次ALF不同的区域划分方式,其中,同一个LCU两次滤波可以处于不同的区域,并且第二次ALF采用与第一次ALF相同的滤波器形状,但第二次ALF的参考像素选取与原方案中第一次滤波不同,第二次ALF的参考像素由重建图像中参考像素位置与中心位置像素的差的绝对值构成,重建图像指的是第一次滤波前的重建图像(即第一重建图像)。
[0314] 滤波器形状为图5中描述滤波形状,每个位置上参考像素如图4所示:
[0315] E[i]=abs(Pi‑P8)+abs(P16‑i‑P8)
[0316] E[8]=1
[0317] P为第一重建图像中的像素值,E[i]为参考像素的值,i=0,1,2,3,4,5,6,7。
[0318] 第二次ALF的目标是对参考像素值的线性组合,使其逼近于原图的像素与第一次ALF后的图像像素的差值。
[0319] 解码端的具体实现过程为:获取当前帧两次滤波的滤波标识,若有一个滤波标识为真,则以LCU为最小单元,判断当前LCU两组滤波标识中是否有真,若有,解码端获取两套滤波标识中判断为真的滤波系数,对LCU中所有像素逐点进行滤波,具体过程如图12所示。由于两次滤波的参考像素都只需要读取相同的像素,因此两次滤波在解码端可以并行执行。
[0320] 示例性的,对于编码端设备,需要分别通过CTU决策确定当前帧图像中各LCU是否启动第一次维纳滤波,以及第二次维纳滤波,并基于最终确定的结果,确定各LCU对应的LCU_flag[0]和LCU_flag[1]的值,并将其携带在编码码流中通知给解码端设备,由解码端设备基于各LCU对应的LCU_flag[0]和LCU_flag[1]的值,确定是否对对应的LCU启动第一次维纳滤波以及是否对对应的LCU启动第二次维纳滤波。
[0321] 实施例七
[0322] 增加一次滤波过程,采用与第一次ALF相同的区域划分方式,但滤波器形状采用与第一次ALF不同的滤波器形状,且第二次ALF的参考像素由重建图像中参考像素位置与中心位置像素的差的绝对值构成,重建图像指的是第一次ALF前的重建图像(即第一重建图像)。
[0323] 滤波器形状为图7中描述滤波形状,每个位置上参考像素如图8所示:
[0324] E[i]=abs(Pi‑P14)+abs(P28‑i‑P14)
[0325] E[14]=1
[0326] P为第一重建图像中的像素值,E[i]为参考像素的值,i=0,1,2,3,4,5,6,7,8,9,10,11,12,13。
[0327] 第二次ALF的目标是对参考像素值的线性组合,使其逼近于原图的像素与第一次ALF后的图像像素的差值。
[0328] 解码端的具体实现过程为:获取当前帧两次滤波的滤波标识,若有一个滤波标识为真,则以LCU为最小单元,判断当前LCU两组滤波标识中是否有真,若有,解码端获取两套滤波标识中判断为真的滤波系数,对LCU中所有像素逐点进行滤波,具体过程如图12所示。由于两次滤波的参考像素都只需要读取相同的像素,因此两次滤波在解码端可以并行执行。
[0329] 实施例八
[0330] 增加一次滤波过程,采用与第一次ALF不同的区域划分方式,且滤波器形状采用与第一次ALF不同的滤波器形状,第二次ALF的参考像素由重建图像中参考像素位置与中心位置像素的差的绝对值构成,重建图像指的是第一次ALF前的重建图像(即第一重建图像)。
[0331] 滤波器形状为图7中描述滤波形状,每个位置上参考像素如图8所示:
[0332] E[i]=abs(Pi‑P14)+abs(P28‑i‑P14)
[0333] E[14]=1
[0334] P为第一重建图像中的像素值,E[i]为参考像素的值,i=0,1,2,3,4,5,6,7,8,9,10,11,12,13。
[0335] 第二次ALF的目标是对参考像素值的线性组合,使其逼近于原图的像素与第一次ALF后的图像像素的差值。
[0336] 解码端的具体实现过程为:获取当前帧两次滤波的滤波标识,若有一个滤波标识为真,则以LCU为最小单元,判断当前LCU两组滤波标识中是否有真,若有,解码端获取两套滤波标识中判断为真的滤波系数,对LCU中所有像素逐点进行滤波,具体过程如图12所示。由于两次滤波的参考像素都只需要读取相同的像素,因此两次滤波在解码端可以并行执行。
[0337] 实施例九
[0338] 增加一次滤波过程,采用与第一次ALF相同的区域划分方式,并采用与第一次ALF相同的滤波器形状,但第二次ALF的参考像素选取与原方案中第一次ALF不同,第二次ALF的参考像素由重建图像中参考像素位置与中心位置像素的差的绝对值构成,重建图像指的是第一次ALF后的重建图像(即第二重建图像)。
[0339] 滤波器形状为图5中描述滤波形状,每个位置上参考像素如图4所示:
[0340] E[i]=abs(Pi‑P8)+abs(P16‑i‑P8)
[0341] E[8]=1
[0342] P为第二重建图像中的像素值,E[i]为参考像素的值,i=0,1,2,3,4,5,6,7。
[0343] 第二次ALF的目标是对参考像素值的线性组合,使其逼近于原图的像素与第一次ALF后的图像像素的差值。
[0344] 解码端的具体实现过程为:获取当前帧两次滤波的滤波标识,若有一个滤波标识为真,则以LCU为最小单元,判断当前LCU两组滤波标识中是否有真,若有,解码端获取两套滤波标识中判断为真的滤波系数,对LCU中所有像素逐点进行滤波,具体过程如图12所示。
[0345] 实施例十
[0346] 增加一次滤波过程,采用与第一次ALF不同的区域划分方式,并采用与第一次ALF相同的滤波器形状,但第二次ALF的参考像素选取与原方案中第一次ALF不同,第二次ALF的参考像素由重建图像中参考像素位置与中心位置像素的差的绝对值构成,重建图像指的是第一次ALF后的重建图像(即第二重建图像)。
[0347] 滤波器形状为图5中描述滤波形状,每个位置上参考像素如图4所示:
[0348] E[i]=abs(Pi‑P8)+abs(P16‑i‑P8)
[0349] E[8]=1
[0350] P为第二重建图像中的像素值,E[i]为参考像素的值,i=0,1,2,3,4,5,6,7。
[0351] 第二次ALF的目标是对参考像素值的线性组合,使其逼近于原图的像素与第一次ALF后的图像像素的差值。
[0352] 解码端的具体实现过程为:获取当前帧两次滤波的滤波标识,若有一个滤波标识为真,则以LCU为最小单元,判断当前LCU两组滤波标识中是否有真,若有,解码端获取两套滤波标识中判断为真的滤波系数,对LCU中所有像素逐点进行滤波,具体过程如图12所示。
[0353] 实施例十一
[0354] 增加一次滤波过程,采用与第一次ALF相同的区域划分方式,但滤波器形状采用与第一次ALF不同的滤波器形状,且第二次ALF的参考像素由重建图像中参考像素位置与中心位置像素的差的绝对值构成,重建图像指的是第一次ALF后的重建图像(即第二重建图像)。
[0355] 滤波器形状为图7中描述滤波形状,每个位置上参考像素如图8所示:
[0356] E[i]=abs(Pi‑P14)+abs(P28‑i‑P14)
[0357] E[14]=1
[0358] P为第二重建图像中的像素值,E[i]为参考像素的值,i=0,1,2,3,4,5,6,7,8,9,10,11,12,13。
[0359] 第二次ALF的目标是对参考像素值的线性组合,使其逼近于原图的像素与第一次ALF后的图像像素的差值。
[0360] 解码端的具体实现过程为:获取当前帧两次滤波的滤波标识,若有一个滤波标识为真,则以LCU为最小单元,判断当前LCU两组滤波标识中是否有真,若有,解码端获取两套滤波标识中判断为真的滤波系数,对LCU中所有像素逐点进行滤波,具体过程如图12所示。
[0361] 实施例十二
[0362] 增加一次滤波过程,采用与第一次ALF不同的区域划分方式,且滤波器形状采用与第一次ALF不同的滤波器形状,第二次ALF的参考像素由重建图像中参考像素位置与中心位置像素的差的绝对值构成,重建图像指的是第一次ALF后的重建图像(即第二重建图像)。
[0363] 滤波器形状为图7中描述滤波形状,每个位置上参考像素如图8所示:
[0364] E[i]=abs(Pi‑P14)+abs(P28‑i‑P14)
[0365] E[14]=1
[0366] P为第二重建图像中的像素值,E[i]为参考像素的值,i=0,1,2,3,4,5,6,7,8,9,10,11,12,13。
[0367] 解码端的具体实现过程为:获取当前帧两次滤波的滤波标识,若有一个滤波标识为真,则以LCU为最小单元,判断当前LCU两组滤波标识中是否有真,若有,解码端获取两套滤波标识中判断为真的滤波系数,对LCU中所有像素逐点进行滤波,具体过程如图12所示。
[0368] 实施例十三
[0369] 增加一次滤波过程,采用与第一次ALF相同的区域划分方式,并采用与第一次ALF相同的滤波器形状,且第二次ALF的参考像素选取与原方案中第一次ALF相同,第二次ALF参考像素的值由第一次ALF后的重建图像(即第二重建图像)确定。
[0370] 滤波器形状为图5中描述滤波形状,每个位置上参考像素如图4所示:
[0371] E[i]=(Pi+P16‑i)
[0372] E[8]=P8
[0373] 其中,Pi属于第二重建图像中的像素,E[i]为参考像素的值,i=0,1,2,3,4,5,6,7。
[0374] 第二次维纳滤波的目标是对参考像素值的线性组合,使其逼近于原图的像素值。
[0375] 解码端的具体实现过程为:获取当前帧两次滤波的滤波标识,若有一个滤波标识为真,则以LCU为最小单元,判断当前LCU两组滤波标识中是否有真,若有,解码端获取两套滤波标识中判断为真的滤波系数,对LCU中所有像素逐点进行滤波,具体过程如图12所示。
[0376] 实施例十四
[0377] 增加一次滤波过程,采用与第一次ALF不同的区域划分方式,并采用与第一次ALF相同的滤波器形状,且第二次ALF的参考像素选取与原方案中第一次ALF相同,第二次ALF参考像素的值由第一次ALF后的重建图像(即第二重建图像)确定。
[0378] 滤波器形状为图5中描述滤波形状,每个位置上参考像素如图4所示:
[0379] E[i]=(Pi+P16‑i)
[0380] E[8]=P8
[0381] 其中,Pi属于第二重建图像中的像素,E[i]为参考像素的值,i=0,1,2,3,4,5,6,7。
[0382] 第二次维纳滤波的目标是对参考像素值的线性组合,使其逼近于原图的像素值。
[0383] 解码端的具体实现过程为:获取当前帧两次滤波的滤波标识,若有一个滤波标识为真,则以LCU为最小单元,判断当前LCU两组滤波标识中是否有真,若有,解码端获取两套滤波标识中判断为真的滤波系数,对LCU中所有像素逐点进行滤波,具体过程如图12所示。
[0384] 实施例十五
[0385] 增加一次滤波过程,采用与第一次ALF相同的区域划分方式,采用与第一次ALF不同的滤波器形状,第二次ALF的参考像素选取与原方案中第一次ALF相同,第二次ALF参考像素的值由第一次ALF后的重建图像(即第二重建图像)确定。
[0386] 滤波器形状为图7中描述滤波形状,每个位置上参考像素如图8所示:
[0387] E[i]=Pi+P28‑i
[0388] E[14]=P14
[0389] 其中,Pi属于第二重建图像中的像素,E[i]为参考像素的值,i=0,1,2,3,4,5,6,7,8,9,10,11,12,13。
[0390] 第二次维纳滤波的目标是对参考像素值的线性组合,使其逼近于原图的像素值。
[0391] 解码端的具体实现过程为:获取当前帧两次滤波的滤波标识,若有一个滤波标识为真,则以LCU为最小单元,判断当前LCU两组滤波标识中是否有真,若有,解码端获取两套滤波标识中判断为真的滤波系数,对LCU中所有像素逐点进行滤波,具体过程如图12所示。
[0392] 实施例十六
[0393] 增加一次滤波过程,采用与第一次ALF不同的区域划分方式,且采用与第一次ALF不同的滤波器形状,第二次ALF的参考像素选取与原方案中第一次ALF相同,第二次ALF参考像素的值由第一次ALF后的重建图像(即第二重建图像)确定。
[0394] 滤波器形状为图7中描述滤波形状,每个位置上参考像素如图8所示:
[0395] E[i]=Pi+P28‑i
[0396] E[14]=P14
[0397] 其中,Pi属于第二重建图像中的像素,E[i]为参考像素的值,i=0,1,2,3,4,5,6,7,8,9,10,11,12,13。
[0398] 第二次维纳滤波的目标是对参考像素值的线性组合,使其逼近于原图的像素值。
[0399] 解码端的具体实现过程为:获取当前帧两次滤波的滤波标识,若有一个滤波标识为真,则以LCU为最小单元,判断当前LCU两组滤波标识中是否有真,若有,解码端获取两套滤波标识中判断为真的滤波系数,对LCU中所有像素逐点进行滤波,具体过程如图12所示。
[0400] 实施例十七
[0401] 编码端增加1次CTU决策,传统方案中编码端CTU决策流程如图13所示,修改CTU决策数为4,但是在完成第3次CTU决策后,对标识为真的LCU的重新计算新的滤波系数代替原来的滤波系数,在计算新的滤波系数时,对于前一次系数为0的位置,最后一次计算系数时,将这些位置上的参考像素的值置为0,即修改图13中虚线框部分。
[0402] 如图13所示,CTU决策流程可以包括:
[0403] 当进行第1次CTU决策时,可以获取当前帧图像的当前LCU的滤波系数,一方面,对于当前LCU中的任一像素,可以基于滤波系数以及对应位置的参考像素的值进行加权求和,以得到该像素对应的加权和结果,进而,对当前LCU的各像素的加权和结果进行求和,将结果记为cost1(可以理解为对当前LCU进行滤波的损失的估计值)。
[0404] 另一方面,对于当前LCU中的任一像素,可以以中心值为1,其余值为0的滤波器,基于滤波系数以及对应位置的参考像素的值进行加权求和,以得到该像素对应的加权和结果,进而,对当前LCU的各像素的加权和结果进行求和,将结果记为cost2(可以理解为不对当前LCU进行滤波的损失的估计值)。
[0405] 若cost1<cost0,则确定对当前LCU启动维纳滤波;否则,确定不对当前LCU启动维纳滤波。
[0406] 按照上述方式,当确定了当前帧图像中各LCU是否启动维纳滤波之后,可以计算整帧图像打开滤波标识的损失cost2和关闭滤波标识的损失cost3。
[0407] 若cost2<cost3,则确定对当前帧图像进行滤波;否则,确定不对当前帧图像进行滤波。
[0408] 至此,完成了1次CTU决策。
[0409] 当完成的CTU决策的次数不大于3次时,可以基于启动维纳滤波的LCU对应的滤波系数,将滤波系数为0的参考像素位置的参考像素的值置为0,并基于更新后的参考像素的值,计算新的滤波系数代替原来的滤波系数,并基于新的滤波系数进行下一次CTU决策。
[0410] 当完成的CTU决策的次数大于3次(即达到4次)时,可以使用当前滤波系数对当前LCU进行滤波,以得到损失cost4,并比较cost4与不对当前LCU进行滤波的损失cost5。
[0411] 若cost4<cost5,则确定对当前LCU启动维纳滤波;或者,不对当前LCU启动维纳滤波。
[0412] 实施例十八
[0413] 在每次CTU决策之后都需要对标识为真的LCU的重新计算新的滤波系数代替原来的滤波系数。因此在每次计算新的滤波系数时,对于前一次系数为0的位置,下一次计算系数时,将这些位置上的参考像素的值置为0。
[0414] 实施例十九、自适应修正滤波操作的修改
[0415] 对于7x7十字形加上5x5方形滤波器的样本可以按照5.1~5.3中描述的自适应修正滤波操作获取,或者按照以下方式获取:
[0416] 对于边界区域:
[0417] 若当前自适应修正滤波单元的左边界外为图像边界,或位于片边界外且cross_patch_loopfilter_enable_flag的值为‘0’,则左边界外不存在,否则左边界外为当前自适应修正滤波单元左移3个样本点到当前自适应修正滤波单元的区域。
[0418] 同理,若当前自适应修正滤波单元的右边界外为图像边界,或位于片边界外且cross_patch_loopfilter_enable_flag的值为‘0’。则右边界外不存在,否则右边界外区域为当前自适应修正滤波单元左移3个样本点到当前自适应修正滤波单元的区域。
[0419] 示例性的,边界区域包括左边界外区域与右边界外区域。
[0420] 若自适应修正滤波过程中用到的样本为自适应修正滤波单元内的样本,则直接使用该样本进行滤波;否则,按照如下方式进行滤波:
[0421] 19.1、若该样本在图像边界外,或在片边界外且cross_patch_loopfilter_enable_flag的值为‘0’。
[0422] 19.1.1、若该样本是位于自适应修正滤波单元的左上角,左下角,右上角或右下角第一个样本点,则使用自适应修正滤波单元内距离该样本最近的样本代替该样本进行滤波;
[0423] 19.1.2、否则使用自适应修正滤波单元与边界区域内距离该样本最近的样本代替该样本进行滤波;
[0424] 19.2、若该样本未在图像边界外,且不满足“在片边界外且cross_patch_loopfilter_enable_flag的值为‘0’”,则:若该样本在自适应修正滤波单元上边界或下边界外,
[0425] 19.2.1、若该样本是位于自适应修正滤波单元的左上角,左下角,右上角或右下角第一个样本点,则使用自适应修正滤波单元内距离该样本最近的样本代替该样本进行滤波;
[0426] 19.2.2、否则使用自适应修正滤波单元与边界区域内距离该样本最近的样本代替该样本进行滤波;
[0427] 19.3、若该样本未在自适应修正滤波单元上边界,也未在自适应修正滤波单元下边界外,则直接使用该样本进行滤波。
[0428] 示例性的,实施例一~实施例十八中任一实施例均可以采用实施例十九中的方式进行自适应修正滤波操作。
[0429] 以上对本申请提供的方法进行了描述。下面对本申请提供的装置进行描述:
[0430] 请参见图15,图15是本申请实施例提供的一种滤波装置的结构示意图,其中,该滤波装置可以应用于编码/解码端设备,该装置可以包括:确定单元1510以及滤波单元1520;
[0431] 所述滤波单元1520,用于当所述确定单元1510确定对当前帧图像的当前LCU启动维纳滤波时,获取并根据所述当前LCU的参考像素以及维纳滤波器的滤波系数,对所述当前LCU的像素逐个进行维纳滤波;
[0432] 示例性的,所述维纳滤波器为第二维纳滤波器,所述第二维纳滤波器是在第一维纳滤波器基础上进行形状扩增得到的,所述第一维纳滤波器是形状为7*7十字形加3*3方形的中心对称滤波器,所述参考像素的值基于滤波前的重建图像的像素值确定。
[0433] 在一种可能的实施方式中,所述第二维纳滤波器是形状为7*7十字形加5*5方形的中心对称滤波器。
[0434] 在一种可能的实施方式中,所述第二维纳滤波器的滤波系数包括15个。
[0435] 在一种可能的实施方式中,所述确定单元1510,用于确定是否对当前帧图像进行滤波;
[0436] 所述滤波单元1520,具体用于当所述确定单元1510确定对所述当前帧图像进行滤波时,确定是否对所述当前LCU启动维纳滤波,并当确定对所述当前LCU启动维纳滤波时,获取并根据所述当前LCU的参考像素以及维纳滤波器的滤波系数,对所述当前LCU的像素逐个进行维纳滤波。
[0437] 请参见图16,图16是本申请实施例提供的一种滤波装置的结构示意图,其中,该滤波装置可以应用于编码/解码端设备,该装置可以包括:确定单元1610以及滤波单元1620;
[0438] 所述滤波单元1620,用于当所述确定单元1610确定对当前帧图像的当前LCU启动维纳滤波时,对所述当前LCU进行第一次维纳滤波和第二次维纳滤波;
[0439] 所述滤波单元1620,具体用于获取并根据对所述当前LCU进行第一次维纳滤波的维纳滤波器的滤波系数和参考像素,以及对所述当前LCU进行第二次维纳滤波的维纳滤波系数和参考像素,对所述当前LCU的像素逐个进行第一次维纳滤波和第二次维纳滤波。
[0440] 在一种可能的实施方式中,所述确定单元1610,用于确定是否对当前帧图像进行滤波;
[0441] 所述滤波单元1620,具体用于当所述确定单元1610确定对所述当前帧图像进行滤波时,确定是否对所述当前LCU启动维纳滤波,并当确定对所述当前LCU启动维纳滤波时,对所述当前LCU进行第一次维纳滤波和第二次维纳滤波。
[0442] 在一种可能的实施方式中,所述确定单元1610,具体用于确定是否对当前帧图像进行第一次滤波,以及是否对当前帧图像进行第二次滤波;
[0443] 所述确定单元1610,还用于当确定对当前帧图像进行第一次滤波,且对当前帧图像进行第二次滤波时,确定是否对所述当前LCU启动第一次维纳滤波,以及是否对所述当前LCU启动第二次维纳滤波;
[0444] 所述滤波单元1620,具体用于当所述确定单元1610确定对所述当前LCU启动第一次维纳滤波,且对所述当前LCU启动第二次维纳滤波时,对所述当前LCU进行第一次维纳滤波和第二次维纳滤波。
[0445] 在一种可能的实施方式中,对所述当前LCU进行第一次维纳滤波的维纳滤波器与进行第二次维纳滤波的维纳滤波器均为第一维纳滤波器;或者,
[0446] 对所述当前LCU进行第一次维纳滤波的维纳滤波器与进行第二次维纳滤波的维纳滤波器均为第二维纳滤波器;或者,
[0447] 对所述当前LCU进行第一次维纳滤波的维纳滤波器为第一维纳滤波器,对所述当前LCU进行第二次维纳滤波的维纳滤波器为第二维纳滤波器;或者,
[0448] 对所述当前LCU进行第一次维纳滤波的维纳滤波器为第二维纳滤波器,对所述当前LCU进行第二次维纳滤波的维纳滤波器为第一维纳滤波器。
[0449] 其中,所述第二维纳滤波器是在第一维纳滤波器基础上进行形状扩增得到的,所述第一维纳滤波器为7*7十字形加3*3方形的中心对称滤波器。
[0450] 在一种可能的实施方式中,所述第二维纳滤波器为7*7十字形加5*5方形的中心对称滤波器。
[0451] 在一种可能的实施方式中,对所述当前LCU进行第一次维纳滤波的参考像素的值按照第一方式从第一重建图像中获取,所述第一重建图像为第一次维纳滤波前的重建图像;
[0452] 对所述当前LCU进行第二次维纳滤波的参考像素的值按照第二方式从所述第一重建图像中获取。
[0453] 在一种可能的实施方式中,所述第二方式为:
[0454] 所述当前LCU中各像素对应的参考像素的值基于第一重建图像中各个参考像素位置的像素值与中心位置像素值的差值的绝对值确定。
[0455] 在一种可能的实施方式中,对所述当前LCU进行第一次维纳滤波和对所述当前LCU进行第二次维纳滤波并行执行。
[0456] 在一种可能的实施方式中,对所述当前LCU进行第一次维纳滤波的参考像素的值基于第一重建图像中的像素值确定,所述第一重建图像为第一次维纳滤波前的重建图像;
[0457] 对所述当前LCU进行第二次维纳滤波的参考像素的值基于第二重建图像中的像素值确定,所述第二重建图像为第一次维纳滤波后的重建图像。
[0458] 在一种可能的实施方式中,对所述当前LCU进行第二次维纳滤波的参考像素的值基于第二重建图像中各个参考像素位置的像素值与中心位置像素值的差值的绝对值确定。
[0459] 在一种可能的实施方式中,所述滤波单元,还用于对当前帧图像按照LCU的规格进行区域划分,划分为一个区域的LCU配置相同的滤波参数,所述滤波参数包括进行维纳滤波的滤波器以及滤波系数,以及参考像素,其中,所述划分方式包括但不限于一种。
[0460] 在一种可能的实施方式中,当所述滤波装置应用于编码端设备时,
[0461] 所述确定单元1610,还用于当完成3次CTU决策时,对于所述3次CTU决策之后确定启动维纳滤波的LCU,获取3次CTU决策之后保留的对该LCU进行维纳滤波的第一组滤波系数,并将滤波系数为0的参考像素位置的参考像素的值置为0,并基于更新后的参考像素的值,计算第二组滤波系数;
[0462] 所述确定单元1610,还用于根据第二组滤波系数进行第4次CTU决策,判断所述当前帧图像的各LCU是否启动维纳滤波。
[0463] 在一种可能的实施方式中,当所述滤波装置应用于编码端设备时,
[0464] 所述确定单元1610,还用于每完成1次CTU决策时,对于此次CTU决策之后确定启动维纳滤波的LCU,获取此次CTU决策之后保留的对该LCU进行维纳滤波的第一组滤波系数,并将该滤波系数为0的参考像素位置的参考像素的值置为0,并基于更新后的参考像素的值,计算第二组滤波系数;
[0465] 所述确定单元1610,还用于根据第二组滤波系数进行下一次CTU决策,判断所述当前帧图像的各LCU是否启动维纳滤波。
[0466] 请参见图17,图17是本申请实施例提供的一种滤波装置的结构示意图,其中,该滤波装置可以应用于编码端设备,该装置可以包括:滤波单元1710和确定单元1720;
[0467] 所述滤波单元1710,用于当完成3次CTU决策时,对于所述3次CTU决策之后确定启动维纳滤波的LCU,获取3次CTU决策之后保留的对该LCU进行维纳滤波得到第一组滤波系数,并将滤波系数为0的参考像素位置的参考像素的值置为0,并基于更新后的参考像素的值,计算第二组滤波系数;
[0468] 所述确定单元1720,用于根据第二组滤波系数进行第4次CTU决策,判断所述当前帧图像的各LCU是否启动维纳滤波。
[0469] 在一种可能的实施方式中,所述确定单元1720,还用于每完成1次CTU决策,对于此次CTU决策之后确定启动维纳滤波的LCU,获取此次CTU决策之后保留的对该LCU进行维纳滤波的第一组滤波系数,并将该滤波系数为0的参考像素位置的参考像素的值置为0,并基于更新后的参考像素的值,计算第二组滤波系数;
[0470] 所述确定单元1720,还用于根据第二组滤波系数进行下一次CTU决策,判断所述当前帧图像的各LCU是否启动维纳滤波。
[0471] 在一种可能的实施方式中,所述滤波单元1710,还用于当所述确定单元1720确定对当前帧图像的当前LCU启动维纳滤波时,获取并根据所述当前LCU的参考像素以及维纳滤波器的滤波系数,对所述当前LCU的像素逐个进行维纳滤波;
[0472] 其中,所述维纳滤波器为第二维纳滤波器,所述第二维纳滤波器是在第一维纳滤波器基础上进行形状扩增得到的,所述第一维纳滤波器是形状为7*7十字形加3*3方形的中心对称滤波器,所述参考像素的值基于滤波前的重建图像的像素值确定,所述第二维纳滤波器是形状为7*7十字形加5*5方形的中心对称滤波器。
[0473] 请参见图18,为本申请实施例提供的一种解码端设备的硬件结构示意图。该解码端设备可包括处理器1801、存储有机器可执行指令的机器可读存储介质1802。处理器1801与机器可读存储介质1802可经由系统总线1803通信。并且,通过读取并执行机器可读存储介质1802中与滤波控制逻辑对应的机器可执行指令,处理器1801可执行上文描述的解码端设备的滤波方法。
[0474] 本文中提到的机器可读存储介质1802可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
[0475] 在一些实施例中,还提供了一种机器可读存储介质,该机器可读存储介质内存储有机器可执行指令,所述机器可执行指令被处理器执行时实现上文描述的解码端设备的滤波方法。例如,所述机器可读存储介质可以是ROM、RAM、CD‑ROM、磁带、软盘和光数据存储设备等。
[0476] 请参见图19,为本申请实施例提供的一种编码端设备的硬件结构示意图。该编码端设备可包括处理器1901、存储有机器可执行指令的机器可读存储介质1902。处理器1901与机器可读存储介质1902可经由系统总线1903通信。并且,通过读取并执行机器可读存储介质1902中与滤波控制逻辑对应的机器可执行指令,处理器1901可执行上文描述的编码端设备的滤波方法。
[0477] 本文中提到的机器可读存储介质1902可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
[0478] 在一些实施例中,还提供了一种机器可读存储介质,该机器可读存储介质内存储有机器可执行指令,所述机器可执行指令被处理器执行时实现上文描述的编码端设备的滤波方法。例如,所述机器可读存储介质可以是ROM、RAM、CD‑ROM、磁带、软盘和光数据存储设备等。
[0479] 在一些实施例中,还提供了一种摄像机设备,包括上述任一实施例中的滤波装置。
[0480] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0481] 以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。