获得块边界强度和去除块效应的方法和装置转让专利

申请号 : CN200710149478.0

文献号 : CN101389016B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 傅佳莉周建同胡昌启林四新高山刘盈嘉谢清鹏张晓森熊联欢

申请人 : 华为技术有限公司

摘要 :

本发明实施例中公开了一种获得块边界滤波强度的方法,该方法包括:确定相似阈值,利用所述相似阈值计算区域平坦度;根据所述区域平坦度所在的区域平坦度区间,确定块边界的滤波强度初值,每一个所述区域平坦度区间对应一个滤波强度初值;利用预先获取到的所述块边界两侧的块的头信息,调整所述滤波强度初值,得到所述块边界滤波强度。或者利用块的头信息包括类型信息或编码块模式信息,判断是否需要对所述块边界两侧的块的像素进行滤波,本发明实施例中还公开了一种获得块边界滤波强度的装置,本发明实施例中另外公开了一种去除块效应的方法和装置,应用本发明能够提高获得的块边界滤波强度的准确性。

权利要求 :

1.一种获得块边界滤波强度的方法,其特征在于,该方法包括:确定相似阈值,利用所述相似阈值计算区域平坦度;根据所述区域平坦度所在的区域平坦度区间,确定块边界的滤波强度初值,每一个所述区域平坦度区间对应一个滤波强度初值;利用预先获取到的所述块边界两侧块的头信息,调整所述滤波强度初值,得到所述块边界滤波强度,其中,所述两侧块的头信息包括两侧块的编码块模式信息;所述调整滤波强度初值包括:在所述两侧块的编码块模式均为0时,所述滤波强度初值减去任意整数步长,作为调整后得到的块边界滤波强度。

2.根据权利要求1所述的方法,其特征在于,所述利用所述相似阈值计算区域平坦度的过程包括:分别计算所述块边界两侧的像素与同一个块中相邻像素之间的差值,所述相邻像素为沿着所述块边界垂直方向的相邻像素;当任意一个所述差值的绝对值小于预先设置的所述相似阈值时,所述区域平坦度加1。

3.根据权利要求1所述的方法,其特征在于,所述确定相似阈值的过程包括:根据预先查表得到的块边界阈值确定所述相似阈值,所述根据预先查表得到的块边界阈值确定所述相似阈值包括:预先设置块边界阈值的加权系数和增量,利用所述加权系数对所述块边界阈值加权,再与所述增量求和,确定出所述相似阈值。

4.根据权利要求1所述的方法,其特征在于,所述确定相似阈值的过程包括:根据预先查表得到的块边界阈值确定所述相似阈值,所述根据预先查表得到的块边界阈值确定所述相似阈值包括:由量化参数、宏块模式、色彩空间或帧类型确定每一个所述块边界阈值的加权系数,利用所述加权系数对每一个所述块边界阈值加权,对加权后的每一个所述块边界阈值求和,确定出所述相似阈值。

5.根据权利要求1所述的方法,其特征在于,所述两侧块的头信息包括两侧块的类型信息;

所述调整滤波强度初值包括:在所述两侧块均为跳过模式类型时,所述滤波强度初值减去预先设置的任意整数步长,作为调整后得到的块边界滤波强度;在所述两侧块中的任意一个为帧内块类型时,所述滤波强度初值加上预先设置的任意整数步长,作为调整后得到的块边界滤波强度。

6.根据权利要求1所述的方法,其特征在于,所述两侧块的头信息包括两侧块的参考帧信息;

所述调整滤波强度初值包括:在所述两侧块来自不同的参考帧时,所述滤波强度初值加上预先设置的任意整数步长,作为调整后得到的块边界滤波强度。

7.根据权利要求1所述的方法,其特征在于,所述两侧块的头信息包括两侧块的运动矢量信息;

所述调整滤波强度初值包括:在所述两侧块的运动矢量大于预先设置的矢量预置时,所述滤波强度初值加上预先设置的任意整数步长,作为调整后得到的块边界滤波强度。

8.根据权利要求1所述的方法,其特征在于,所述确定相似阈值之前进一步包括:根据块边界两侧块的头信息,所述两侧块的头信息包括类型信息或编码块模式信息,判断是否需要对所述块边界两侧块的像素进行滤波,如果是,则确定相似阈值,否则,结束流程。

9.根据权利要求8所述的方法,其特征在于,所述两侧块的头信息包括两侧块的类型信息,所述判断是否需要对所述块边界两侧块的像素进行滤波包括:在所述两侧块均为跳过模式类型时,判断出不需要进行滤波,否则,需要进行滤波。

10.根据权利要求8所述的方法,其特征在于,所述两侧块的头信息包括两侧块的编码块模式信息,所述判断是否需要所述块边界两侧块的像素进行滤波包括:在所述两侧块的编码块模式均为0时,判断出不需要进行滤波,否则,需要进行滤波。

11.一种获得块边界滤波强度的装置,其特征在于,所述装置包括:

平坦度计算模块,确定相似阈值,利用所述相似阈值计算区域平坦度;

初值确定模块,根据所述区域平坦度所在的区域平坦度区间,确定块边界的滤波强度初值,每一个所述区域平坦度区间对应一个滤波强度初值;

调整模块,利用预先获取到的所述块边界两侧块的头信息,调整所述滤波强度初值,得到所述块边界滤波强度,其中,所述两侧块的头信息包括两侧块的编码块模式信息;所述调整滤波强度初值包括:在所述两侧块的编码块模式均为0时,所述滤波强度初值减去任意整数步长,作为调整后得到的块边界滤波强度。

说明书 :

技术领域

本发明涉及图像处理领域,特别涉及获得块边界强度和去除块效应的方法和装置。

背景技术

在H.264和数字音视频编解码技术标准等视频编码标准中,对图像均需要作分块处理,比如,H.264标准的基本处理单位为16×16宏块。而每个块在经过变换及量化之后,都会不同程度的出现块效应,即在块与块之间的块边界上出现不连续的视觉突变。块效应是由于量化时分块处理造成的量化误差而引起的,按照分块范围内图像内容的不同,主要有两种不同的表现形式,一种为梯形噪声,另一种为格形噪声。以上两种噪声会使图像边缘明显甚至出现块状区域。具体来讲,梯形噪声出现在图像的强边缘处。比如,在对图像进行离散余弦变换得到各频点的变换系数时,许多高频系数被量化为零,使得图像的强边缘处在变换域内不能被完全数字化,又由于图像的分块处理,使得穿过块边界的强边缘处的连续性不能得到保证,从而在图像的强边缘处出现锯齿状噪声,使得视觉上有不自然的数据块边缘,称之为梯形噪声。而格形噪声则出现在图像的平坦区域。在图像的平坦区域,亮度有递增或者递减的情况下,由于量化取整时进行了四舍五入,可能导致变换域的直流(DC)系数越过了相邻量化级的判决门限,造成在重建图像中相邻两个块出现亮度突变,使得视觉上出现片状轮廓,称之为格形噪声。
为了避免或降低块效应,在对图像进行量化编码完成后,在存储起来作为后一帧的参考帧之前,需要对图像做去除块效应的处理。下面具体介绍一种去除块效应的方法,下面以一条8×8块边界为例,具体说明去除块效应方法具体步骤:
步骤一:利用当前块边界两边的实际像素插值情况,来计算当前块边界所在图像区域的平坦度,区域的平坦度用块边界周围的相似点对的个数来表示,如果相似点对多,则认为当前块边界所在图像区域的平坦度较大。这里相似点的定义可参照图1,图1为现有技术中相似度判别样本示例示意图。粗实线指的是两个块的主块边界,虚线则是分别处于两个块内的次块边界。对于处于主块边界两侧的像素集Rx和Lx(0<=x<=7),如果其差的绝对值小于门限1(Th1),即认为Rx和Lx是一对相似点。对于处于次块边界两侧的像素集Lx和Mx(0<=x<=7)以及Nx和Rx(0<=x<=7),如果其差的绝对值小于门限2(Th2),即认为Lx和Mx或Nx和Rx是一对相似点。
下面以一条8×8块边界为例,具体说明计算图像区域的平坦度的过程:
首先,设区域平坦度(RegionFlatness)的初始值为0;
然后,当主块边界两侧的8对像素差值的绝对值小于平坦度阈值Th1,即Abs(Rx-Lx)<Th1时,区域平坦度加1,或者在次块边界两侧的16对像素的差值的绝对值小于平坦度阈值Th2,即Abs(Lx-Mx)<Th2或Abs(Nx-Rx)<Th2时,区域平坦度加1,累加得到区域平坦度。这里,Abs(y)是y的绝对值,可表示为公式(1):
Abs(x)x;x>=0-x;x<0---(1)
而Th1和Th2这两个平坦度阈值,是通过查表得到的,可以先根据两个块的量化参数(QP,Quantization Parameter)计算出平均值QPav,这里的QP为量化过程中采用的量化步长,然后由QPav确定出查表索引IndexA,最后查表得出平坦度阈值Th1和Th2。根据索引IndexA与阈值Th1和Th2间的对应关系,由表1得到Th1、Th2的取值。表1为平坦度阈值Th1和Th2与IndexA的关系:
    IndexA    Th1    Th2     0    0    0     1    0    0     2    0    1     3    1    1     4    1    2     5    2    2     6    2    2     7    2    2     8    2    2     9    2    2     10    2    2     11    2    3     12    2    3
表1
每个块的QP是在对块做量化时已知的数据,QPav可以用以下的伪代码表示为公式(2):
QPav=(QPp+QPq+1)>>1  (2)
其中>>1表示右移一位,在二进制计算机系统中,其意义为除以2,同理,如果是>>2表示右移两位,其意义为除以4,如果是>>3表示右移三位,其意义为除以8,以此类推。
而索引IndexA为QPav的五分之一,即IndexA=QPav/5。由表1即可确定出平坦度阈值Th1和Th2
步骤二:根据平坦度的具体情况,判断得到当前块边界的滤波强度。具体方法为:根据宏块类型和区域平坦度,判断得到块边界滤波强度(BS,Boundary Strength)的值,其步骤为:
首先,根据区域平坦度判断得到BS,具体为:
当RegionFlatness小于4时,BS等于0;
当RegionFlatness大于4时,判断水平像素尺度(horizontal_size)是否大于500:
如果horizontal_size大于500且当RegionFlatness小于12时,BS等于1,否则,BS等于2;
如果horizontal_size小于500且当RegionFlatness小于16时,BS等于1;否则,BS等于2。
接着,根据宏块类型对BS进行调整,具体为:
判断块边界两边的两个8×8块有一个或两个是否属于帧内预测宏块,如果是,则BS加1,否则不改变BS。这里的宏块类型可以在每个宏块的头信息中获得,可分为帧内预测宏块、帧间预测宏块等多种类型。
步骤三:在判断得到BS值后,对不同的非零BS值,根据平坦度,对块边界两边像素进行滤波。
由步骤二可得到三种级别的BS值,而本步骤则是对不同级别的BS值,确定出三个不同的滤波过程,依此对块中的每一行或每一列进行相应的滤波。下面以图2所示的块边界两边一行/列图像素分布示意图,对图2中的p0、p1、p2、q0、q1和q2的滤波过程进行说明,并且由P0和Q0分别表示p0和q0滤波后的值。如果在滤波过程中P1(Q1)不被赋值,则不对p1(q1)滤波;否则,P1或Q1为p1或q1滤波后的值。P2或Q2为p2或q2滤波后的值。由BS值确定出的三个不同的滤波过程为:
过程一:当BS=3时,对亮度块边界两边的样本均进行滤波,对图2中的p0、p1、p2、q0、q1和q2的滤波过程,采用伪代码可表示为:
P0=ap?(2×p1+p2+2×(p0+q0)+q1+4)>>3:(2×p0+p1+q0+2)>>2;
P1=ap?(p0+2×p1+q0+2)>>2:p1;
P2=ap?(p0+p1+4×p2+2×p3+4))>>3:p2;
Q0=aq?(2×q1+q2+2×(q0+p0)+p1+4)>>3:(2×q0+q1+p0+2)>>2;
Q1=aq?(q0+2×q1+p0+2)>>2:q1;
Q2=(q0+q1+4×q2+2×q3+4))>>3:q2;
在以上对p0、p1、p2、q0、q1和q2的滤波过程中,分别采用两组滤波器,比如,在对p0滤波时,当ap大于0时,采用一组强滤波器,即(2×p1+p2+2×(p0+q0)+q1+4)>>3,而ap小于等于0时,采用一组弱滤波器,即(2×p0+p1+q0+2)>>2。
并且,在以上对p0、p1、p2、q0、q1和q2的滤波过程中,ap可由以下的公式(3)得到,aq可由以下公式(4)得到:
ap=Abs(p2-p0)<β&&Abs(p0-q0)<((α>>2)+2)    (3)
aq=Abs(q2-q0)<β&&Abs(p0-q0)<((α>>2)+2)    (4)
公式(3)和公式(4)中符号“&&”表示求“与”运算,而公式(3)和公式(4)中的α和β是为块边界阈值,可以根据两个块的QP平均值QPav,以及AlphaCOffset和BetaOffset计算查表索引IndexA和IndexB。两个块的QP平均值QPav为:QPav=(QPp+QPq+1)>>1,而索引IndexA和IndexB为:
IndexA=Clip3(0,63,QPav+AlphaCOffset)
IndexB=Clip3(0,63,QPav+BetaOffset)
根据索引IndexA和IndexB与块边界阈值α和块边界阈值β间的对应关系,由表2得到α、β的取值,根据IndexA查表得到α,根据IndexB查表得到β。
    索    引     α     β   索  引   α   β     索引   α   β   索  引   α   β     0     0     0   16   4   2     32   22   6   48   46   15     1     0     0   17   4   2     33   24   7   49   48   16     2     0     0   18   5   3     34   26   7   50   50   17
    索    引     α     β   索  引   α   β     索引   α   β   索  引   α   β     3     0     0   19   5   3     35   28   7   51   52   18     4     0     0   20   6   3     36   30   8   52   53   19     5     0     0   21   7   3     37   33   8   53   54   20     6     1     1   22   8   4     38   33   8   54   55   21     7     1     1   23   9   4     39   35   9   55   56   22     8     1     1   24   10   4     40   35   9   56   57   23     9     1     1   25   11   4     41   36   10   57   58   23     10     1     1   26   12   5     42   37   10   58   59   24     11     2     1   27   13   5     43   37   11   59   60   24
[0042]     12     2     1   28   15   5     44   39   11   60   61   25     13     2     2   29   16   5     45   39   12   61   62   25     14     3     2   30   18   6     46   42   13   62   63   26     15     3     2   31   20   6     47   44   14   63   64   27表2
在过程一中,对色度块边界两边的样本p0和q0采用了同样的方法滤波。伪代码中的“d=a?b:c”的含义为:当a大于0时,d=b,否则d=c。以上伪代码所对应的具体实现程序如下所示:
if(ap>0)
{
  P0=(2×p1+p2+2×(p0+q0)+q1+4)>>3
  P1=(p0+2×p1+q0+2)>>2
  P2=(p0+p1+4×p2+2×p3+4))>>3
}
else
{
  P0=(2×p0+p1+q0+2)>>2
  P1=p1
  P2=p2
}
if(aq>0)
{
  Q0=(2×q1+q2+2×(q0+p0)+p1+4)>>3
  Q1=(q0+2×q1+p0+2)>>2
  Q2=(q0+q1+4×q2+2×q3+4))>>3
}
else
{
  Q0=(2×q0+q1+p0+2)>>2
  Q1=q1
  Q2=q2
}
过程二:当BS=2,对亮度块边界两边的样本均进行滤波,只对图2中的p0、p1、q0和q1进行滤波,采用伪代码表示为:
P0=ap?(2×p1+p2+2×(p0+q0)+q1+4)>>3:(2×p0+p1+q0+2)>>2;
P1=ap?(p0+2×p1+q0+2)>>2:p1;
Q0=aq?(2×q1+q2+2×(q0+p0)+p1+4)>>3:(2×q0+q1+p0+2)>>2;
Q2=aq?(q0+2×q1+p0+2)>>2:q1;
在对p0、p1、q0和q1进行滤波中,由公式(3)得到ap,由公式(4)得到aq。并且公式(3)和公式(4)中的α和β同过程一中的相同。
过程三:当BS=1,对亮度块边界两边的样本均进行滤波,具体为:
首先对p0和q0进行滤波(P0和Q0分别为p0和q0滤波后的值)可表示为:
delta=Clip3(-C,C,(((q0-p0)×3+(p1-q1)+4)>>3))
P0=Clip1(p0+delta)
Q0=Clip1(q0-delta),
其中,Clip3(a,b,c)表示为:

Clip1(a)表示为:Clip1(x)=Clip3(0,255,x)
然后判断是否需要对p1和q1滤波,在需要对p1和q1滤波时,计算P0和Q0可分为三种情况:
第一种情况:当块边界为色度块边界时,不对p1和q1滤波。
第二种情况:当在亮度块边界处有ap大于0,则对p1滤波,滤波后的值为:
P1=Clip1(p1+Clip3(-C,C,(((P0-p1)×3+(p2-Q0)+4)>>3)))
第三种情况:当在亮度块边界处有aq大于0,则对q1滤波,滤波后的值为:
Q1=Clip1(q1-Clip3(-C,C,(((q1-Q0)×3+(P0-q2)+4)>>3)))
在过程三的滤波过程中,ap和aq的定义同过程一和二,由公式(3)得到ap,由公式(4)得到aq。并且公式(3)和公式(4)中的α和β也与过程一和二中的相同。而C称为滤波裁减参数,C与IndexA之间的关系见表3。表3为滤波裁减参数C与IndexA的关系:
    索引     C   索引   C   索引   C     索引   C     0     0   16   1   32   2     48   5     1     0   17   1   33   2     49   5     2     0   18   1   34   2     50   5     3     0   19   1   35   2     51   6     4     0   20   1   36   2     52   6     5     0   21   1   37   2     53   6     6     0   22   1   38   3     54   7     7     0   23   1   39   3     55   7
    索引     C   索引   C   索引   C     索引   C     8     0   24   1   40   3     56   7     9     0   25   1   41   3     57   7     10     0   26   1   42   3     58   8     11     0   27   1   43   3     59   8     12     0   28   1   44   3     60   8     13     0   29   1   45   4     61   9     14     0   30   2   46   4     62   9     15     0   31   2   47   4     63   9
表3
从以上对目前去除块效应的方法分析可知,为确定滤波过程而获得BS时,是通过两次查表后,才能够得到相似阈值,根没有充分利用块边界两侧块与块之间的关系和头信息,因而判断得到的BS不准确,进而使得目前去除块效应的方法,不能采用有效的滤波过程去除块效应,因而去除块效应的性能较差。
综上所述,目前获得块边界滤波强度的方法,得到的BS不准确,进而使得目前去除块效应的方法,无法有效的降低块效应。

发明内容

有鉴于此,本发明实施例提供一种获得块边界滤波强度的方法,该方法能够提高获得的块边界滤波强度的准确性。
本发明实施例提供一种获得块边界滤波强度的方法,该方法能够提高获得的块边界滤波强度的准确性。
本发明实施例还提供一种获得块边界滤波强度的装置,该装置能够提高获得的块边界滤波强度的准确性。
为达到上述目的,本发明实施例的技术方案具体是这样实现的:
一种获得块边界滤波强度的方法,该方法包括:确定相似阈值,利用所述相似阈值计算区域平坦度;根据所述区域平坦度所在的区域平坦度区间,确定块边界的滤波强度初值,每一个所述区域平坦度区间对应一个滤波强度初值;利用预先获取到的所述块边界两侧块的头信息,调整所述滤波强度初值,得到所述块边界滤波强度,其中,所述两侧块的头信息包括两侧块的编码块模式信息;所述调整滤波强度初值包括:在所述两侧块均为编码块模式为0时,所述滤波强度初值减去任意整数步长,作为调整后得到的块边界滤波强度。
一种获得块边界滤波强度的装置,该装置包括:
平坦度计算模块,确定相似阈值,利用所述相似阈值计算区域平坦度;
初值确定模块,根据所述区域平坦度所在的区域平坦度区间,确定块边界的滤波强度初值,每一个所述区域平坦度区间对应一个滤波强度初值;
调整模块,利用预先获取到的所述块边界两侧块的头信息,调整所述滤波强度初值,得到所述块边界滤波强度,其中,所述两侧块的头信息包括两侧块的编码块模式信息;所述调整滤波强度初值包括:在所述两侧块均为编码块模式为0时,所述滤波强度初值减去任意整数步长,作为调整后得到的块边界滤波强度。
由上述技术方案可见,本发明实施例提供的获得块边界滤波强度和去除块效应的方法和装置,根据预先查表得到的块边界阈值确定相似阈值,或者由量化参数、宏块模式、色彩空间或帧类型确定相似阈值,并利用块的头信息调整该块边界滤波强度初值,能够不受限于编码块单位,充分利用两侧块与块之间的关系和块的头信息,因而提高获得的块边界滤波强度的准确性,从而有效降低块效应。

附图说明

图1为现有技术中相似度判别样本示例示意图;
图2为块边界两边一行/列图像素分布示意图;
图3为本发明第一个实施例中获得块边界滤波强度的方法流程示意图;
图4为本发明第一个实施例中窗格大小N为4样本示例示意图;
图5本发明第一个实施例中窗格大小N为2样本示例示意图;
图6为本发明第二个实施例中利用获得的块边界滤波强度实现去除块效应的方法流程示意图;
图7为本发明第二个实施例中块边界两边一行图像素分布示意图;
图8为本发明第三个实施例中获得块边界滤波强度的装置结构示意图;
图9为本发明第三个实施例中去除块效应的装置结构示意图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
本发明实施例提供了一种利用像素和头信息获得块边界滤波强度的方法,具体为:确定相似阈值,利用所述相似阈值计算区域平坦度;根据所述区域平坦度所在的区域平坦度区间,确定块边界的滤波强度初值,每一个所述区域平坦度区间对应一个滤波强度初值;利用预先获取到的所述块边界两侧的块的头信息,调整所述滤波强度初值,得到所述块边界滤波强度。
或者,先根据块边界两侧的块的头信息,判断是否需要对所述块边界两侧的块的像素进行滤波,块的头信息包括类型信息或编码块模式信息,如果是,结束流程,否则,确定相似阈值,利用所述相似阈值计算区域平坦度;根据所述区域平坦度所在的区域平坦度区间,确定每个窗格内块边界的滤波强度初值,每一个所述区域平坦度区间对应一个滤波强度初值;利用预先获取到的所述块边界两侧的块的头信息。
本发明实施例还提供了一种去除块效应的方法,具体为:确定相似阈值,利用所述相似阈值计算区域平坦度;由所述区域平坦度获得块边界滤波强度,利用所述块边界两侧块内各个相邻像素间的一阶差分和二阶差分判断所述块边界是否是伪边界,在判断出所述块边界是伪边界时,根据预先建立的块边界滤波强度与滤波器组合的对应关系,由获得的块边界滤波强度,确定出相应的滤波器组合,对所述块边界两侧的块的像素进行相应的滤波处理。
图3为本发明第一个实施例中获得块边界滤波强度的方法流程示意图。如图3所示,具体包括以下步骤:
步骤301~步骤302为计算当前窗格内块边界区域平坦度的过程。
步骤301:将当前滤波块边界分成若干个窗格。
本实施例中,划分窗格的方法为:预先设置窗格大小,沿着垂直块边界的方向,按照所述窗格大小,将块边界两侧的块划分成一个以上窗格。窗格大小为N,N可调,在本实施例中,假设对于8x8变换块,其窗格大小N=4;如图4所示,图4为本发明第一个实施例中窗格大小N为4样本示例示意图。当然也可以N=2,如图5所示或其它值。当然也可不划分窗格,以块为单位进行以下的步骤。
步骤302:计算当前窗格内块边界的区域平坦度。
本实施例中,计算区域平坦度的过程包括:在当前窗格内,分别计算块边界两侧块的像素平坦度;累加两侧块的像素平坦度,得到窗格内的区域平坦度。也就是说,当前窗格内块边界的区域平坦度是通过当前窗格内块边界两边的像素平坦度累加和得到,当前窗格内块边界区域平坦度由当前窗格内次块边界相似点的个数确定,按照如下公式(5)计算:
num=Σn=0N((abs(Ln-Hn)<T)?1:0)+Σn=0N((abs(Rn-Kn)<T)?1:0)---(5)
其中像素平坦度是通过一阶差分和阈值的比较来进行的,相似阈值T可调,对于本实施例T=(β+2)/3。β值见表1,用于索引值IndexB按如下公式(6)计算:
IndexB=Σm=1MQPm/M+Offset_β---(6)
其中QPm是当前窗格内块边界两边块m的QP值,Offset_β值一个预先设置的可以调节滤波强度的偏移量,该Offset_β值可从传递的视频码流中获取到。
步骤303~步骤304为根据平坦度和头信息获得BS的过程,BS可以分为多级,在本实施例中BS被分为四级,也就是BS值可以为0、1、2和3。
步骤303:计算当前块边界滤波强度初值。
本实施例中,计算当前块边界滤波强度初值bs方法具体为:
若num<C0,bs=0;
若num>=C0且num<C1,bs=1;
若num>=C1,bs=2;
式中的C0和C1为根据统计规律,预先设置的平坦度阈值,本实施例中,C0设置为2,C1设置为7。
步骤304:根据头信息对块边界强度修正得到块边界滤波强度。
本实施例中,如果头信息中的信息表明相邻两个块都是跳过模式(skipmode),则当前块不进行滤波;如果表明有一个块是帧内块,则当前块边界滤波强度初值bs加1;如果头信息中的信息表明块边界两边块的运动矢量之差大于预先设置的阈值Tmv,在本实施例中,Tmv取3个整像素,则当前bs增加1,或者如果头信息中的信息表明块边界两边区域分别来自不同参考帧,则bs增加1;如果块边界两侧块的编码块模式同时为0,则BS为0。
本实施例中,获得BS的方法中只根据窗格内块边界两侧的块的相似点数num得到当前块边界滤波强度初值bs,因而只需确定一个窗格内平坦度的相似阈值T,不必进行如现有技术中查找表1的方法就可以得出num,因而本实施例获得BS的方法更方便灵活。
图6为本发明第二个实施例中利用获得的块边界滤波强度实现去除块效应的方法流程示意图。如图6所示,具体包括以下步骤:
步骤601~步骤604与步骤301~步骤304相似,只是在步骤602中,窗格内平坦度的相似阈值T是由头信息来确定的,定义T=(xα+yβ)/z。这里,x、y、z将根据量化参数、宏块模式即帧内宏块(Intra)和帧间宏块Inter)、色彩空间即亮度(luma)和色度(chroma)和帧类型即帧内预测帧(I)、双向预测帧(B)和单向预测帧(P)的不同进行自适应的调整。如:
T=β30QP<20β+1320QP<40β+2340QP<64
T=β+24Interα+36Intra
T=α+β+48Lumaα+β+18Chroma
步骤605:判断块边界是否为真实块边界,如果是,不需要进行滤波,结束流程,否则,执行步骤606。
本实施例中,判断块边界是否为真块边界的方法为:判断块边界两侧块内各个相邻像素间的差值是否大于某一设定的边界阈值,如果是,则是图像真实边缘,不需要进行滤波,否则是伪边缘,需要进行滤波。
在本实施例中,假设块边界为垂直块边界,则块边界两边的一行图象像素分布如图7所示,当然也可以块边界也可以是水平块边界,则需要使用块边界两边一列图象像素判断块边界是否为真块边界,对图7中给定块的块边界两边一对像素R0和L0,小块内部两对像素L0和L1,R0和R1分别求差值。即用R0和L0相减,得到一差值M1;用R0减R1,得到一差值M2;用L0减L1,得到一差值M3;用M1加M2,得到M4;用M1加M3,得到M5。
在最终的判别公式中,如果M1小于α且大于1,M2小于β且M3小于β,M4和M5有任意一个大于0,则认为图像的特征边缘不处于块的边缘,也就是BS不等于0,可以进行滤波;反之则不滤。即:
Bs!=0&&Abs(R0-L0)<α&&Abs(R0-L0)>1 && Abs(R0-R1)<β&&
Abs(L0-L1)<β&&(Abs(2R0-R1-L0)>0||Abs(2L0-L1-R0)>0)
式中,符号“!=”表示不等于,符号“||”表示求“或”运算。
步骤606:对伪块边界,根据非零BS的不同级别,确定出相应的滤波过程。
本实施例中,对于BS分为四级,其中,当BS=0时,不进行滤波,在如图7所示的块边界两边一行/列图象像素分布图中,进行滤波三种过程具体为:
过程一:当BS=1时,采用均值滤波方式进行滤波:
R0=aq?(2*R1+R0+L0+2)>>2:(R1+2*R0+L0+2)>>2;
L0=ap?(2*L1+L0+R0+2)>>2:(L1+2*L0+R0+2)>>2;
过程二:当BS=2时,采用均值滤波方式进行滤波:
R0=aq?(R2+2*R1+2*R0+2*L0+L1+4)>>3:(R2+2*R1+3*R0+2*L0+4)>>3;
L0=ap?(L2+2*L1+2*L0+2*R0+R1+4)>>3:(L2+2*L1+3*L0+2*R0+4)>>3;
R1=aq?(2*R2+4*R1+R0+L0+4)>>3:R1;
L1=ap?(2*L2+4*L1+L0+R0+4)>>3:L1;
过程三:当BS=3时,仍采用均值滤波方式进行滤波:
R0=(3*R2+3*R1+4*R0+3*L0+3*L1+8)>>4;
L0=(3*L2+3*L1+4*L0+3*R0+3*R1+8)>>4;
R1=aq?(3*R2+4*R1+4*R0+3*L0+2*L1+8)>>4:(2*R2+4*R1+R0+L0+4)>>3;
L1=ap?(3*L2+4*L1+4*L0+3*R0+2*R1+8)>>4:(2*L2+4*L1+L0+R0+4)>>3;
R2=aq?(2*R3+3*R2+R1+R0+L0+4)>>3:R2;
L2=ap?(2*L3+3*L2+L1+L0+R0+4)>>3:L2;
其中,过程二、三和四中的ap和aq分别为:
ap=Abs(R2-R0)<β&&Abs(R0-L0)<((α>>2)+2),
aq=Abs(L2-L0)<β&&Abs(R0-L0)<((α>>2)+2)。
对于色度块,只对块边界两边R0和L0像素采用同样的滤波方法,不对R2、R1、L1和L2滤波。
本实施例中是以对垂直块边界的滤波处理过程为例进行的说明,对于水平块边界,其滤波窗口处于竖直状态,但相应水平块边界上的滤波处理过程也相同,故不再详述。
本实施例的步骤604中,还可以根据skip mode或者cbp来对BS的值进行相应的调整,如当相邻两个块都是skip mode或者cbp全为0时,BS减一。另外,还可以在步骤601之前,先利用块的头信息判断是否需要进行滤波,比如根据skip mode或者cbp来判断是否需要进行滤波,当相邻块边界两侧的块都是skip mode或者cbp全为0时,则判断出不需要进行滤波,结束流程。
本实施例还可以根据每行像素在滤波时的权重也可以不一样,比如根据宏块类型确定块边界的每行像素的权重,则根据每行像素的权重,采用不同强度滤波器进行滤波。可以对块的块边界行采用相对较强滤波,对块的中间行采用相对较弱滤波的加权策略进行滤波处理。尤其用于Intra块的情况。如可以将待滤波像素行为当前块的块边界行,比如宏块的0、7、8、15行时,采用当前BS值所属滤波器中最强的一组进行滤波。
本实施例中的滤波器可共享,具体过程可以将BS较大的弱滤波器作为BS较小的强滤波器,或者将BS较小的强滤波器作为BS较大的弱滤波器,使得在BS相同的情况下有更多不同强度的滤波器可选择,增加滤波的准确性,而且不增加运算的复杂度。如将BS为3时的弱滤波器作为BS为2时的强滤波器,BS为2时的弱滤波器可以作为BS为1时的强滤波器。再根据平坦度值可以将当前窗格内块边界划分为不同级别的BS值,而对每级的滤波器也可以选取不同的组合,但总体的原则是全部采用均值滤波方式,并且对于BS级别越高的,用越强的滤波器进行滤波。
本实施例利用获得的BS,对窗格内的属于伪边界的行/列像素进行滤波,可以有效的去除因变换量化和运动补偿引起的块效应。
图8为本发明第三个实施例中获得块边界滤波强度的装置结构示意图,该装置包括:平坦度计算模块810、初值确定模块820和调整模块830.
具体地,平坦度计算模块810,确定相似阈值,利用所述相似阈值计算区域平坦度。
初值确定模块820,根据所述区域平坦度所在的区域平坦度区间,确定每个窗格内块边界的滤波强度初值,每一个所述区域平坦度区间对应一个滤波强度初值。
调整模块830,利用预先获取到的所述块边界两侧的块的头信息,调整滤波强度初值,得到块边界滤波强度。
图9为本发明第四个实施例中去除块效应的装置结构示意图,该装置包括:块边界滤波强度获取模块910、边界判断模块920、滤波器确定模块930和滤波模块940
具体地,块边界滤波强度获取模块910,用于确定相似阈值,利用所述相似阈值计算区域平坦度,由所述区域平坦度获得块边界滤波强度;边界判断模块920,判断所述块边界是伪边界,向滤波器确定模块930输入判断结果。
滤波器确定模块930,在边界判断模块的判断结果表明块边界是伪边界时,根据预先建立的块边界滤波强度与滤波器组合的对应关系,由块边界滤波强度获取模块910获得的块边界滤波强度,确定出相应的滤波器组合。
滤波模块940,采用滤波器确定模块930确定出的滤波器组合,对窗格内的所述块边界两侧的块的像素进行相应的滤波处理。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。