一种视频帧的滤波方法及装置
技术领域
本申请涉及视频压缩领域,尤其涉及一种视频帧的滤波方法及装置。
背景技术
目前,由于互联网技术的不断发展,电子产品的种类也越来越多,人们也享受到了科技发展带来的各种便利。现在人们可以通过各种类型的电子设备,享受随着科技发展带来的舒适生活。
例如,用户可以使用电子设备观看各类视频。
而为了便于视频传输,在传输之前,通常会在编码端(例如网站服务器)对视频进行压缩,然后传输压缩的视频给解码端(例如各终端)。
而在视频编码标准中,在编解码器反变换量化后图像会出现方块效应。其产生的原因有两个。最重要的一个原因是基于视频像素块的帧内和帧间预测残差的DCT变换。变换系数的量化过程相对粗糙,因而反量化过程恢复的变换系数带有误差,会造成在图像块边界上的视觉不连续。第二个原因来自于运动补偿预测。运动补偿块可能是从不是同一帧的不同位置上的内插样点数据复制而来。因为运动补偿块的匹配不可能是绝对准确的,所以就会在复制块的边界上产生数据不连续。
当然,参考帧中存在的边界不连续也被复制到需要补偿的图像块内。尽管采用较小的4*4变换尺寸可以降低这种不连续现象,但仍需要一个对视频帧进行滤波以最大程度提高编码性能。
故而,为了解决图像出现的方块效应,会对视频帧进行滤波处理。
而目前的滤波处理方法,一般采用边界滤波,作用是去除H.264编解码算法带来的方块效应。但是,如果在DCT边界上,正好是图像的边界,如家具边等,若不加以判断而误认为是方块效应,则可能造成新的误差。为此,在滤波方块效应时,应该先判断该边界是图像真实边界还是方块效应所形成的边界(假边界)。对真实边界不进行滤波处理,而对假边界则要根据周围图像块的性质和编码方法采用不同强度的滤波。
为了保证编码器和解码器中的滤波过程完全一致,对每个编码图像的滤波运算必需按规定顺序进行。滤波应该在适当位置上进行,这样边界两边直线上修改过的样点值作为后续运算的输入值而不引入的误差。
滤波是基于宏块基础上的,先对垂直边界进行水平滤波,再对水平边界进行垂直滤波。对宏块的两个方向滤波都完成后才能进行后面宏块的滤波。对图像中宏块的滤波按raster扫描方式进行。对帧场自适应编码帧,它们在垂直方向上相邻的宏块对放在一起,则滤波顺序按宏块对进行,即在帧中对宏块对进行按raster扫描方式,对每个宏块对先进行顶部宏块的滤波。对每个亮度宏块,先滤波宏块(即:16*16的视频像素块)最左边的边界(如图1中的a),然后依次从左到右宏块内三个垂直边界(如图1的b到d)。类似的,对水平边界先滤波宏块顶部的边界(如图1中的e),然后依次从上到下宏块内三个水平边界(如图1中的f到h)。色度滤波次序类似,对8×8的色度宏块,在每个方向上,先滤波宏块外部边界再滤波一个内部边界(如在图2中,水平方向先滤波i,再滤波j;垂直方向上先滤波k,再滤波l)。
但是这种边界滤波方式的效率不高,故而目前亟需一种滤波方式来提高视频帧的滤波效率。
发明内容
本发明了提供了一种视频帧的滤波方法及装置,以解决目前的滤波方式的效率不高的技术问题。
为解决上述技术问题,本发明提供了一种视频帧的滤波方法,所述方法包括:
将垂直分界线和水平分界线进行边界滤波;
确定出滤波后的垂直分界线和滤波后的水平分界线的至少一个交叉点;
确定出所述至少一个交叉点中每个交叉点的五个像素点;所述五个像素点包括所述周边四个像素点和所述居中像素点;
确定出所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点;
利用所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点确定出所述居中像素点的当前像素值。
优选的,所述将垂直分界线和水平分界线进行边界滤波之前,包括:
将所述视频帧分为多个16*16的像素子块,对每个16*16的像素子块作下述处理:
确定出16*16的像素子块的所述垂直分界线和所述水平分界线。
优选的,所述确定出所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点,包括:
分别判断所述周边四个像素点相对于所述居中像素点是否为图像边界,进而确定出所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点。
优选的,所述周边四个像素点为:上像素点、下像素点、左像素点、右像素点;
所述分别判断所述周边四个像素点相对于所述居中像素点是否为图像边界,包括:
判断所述上像素点相对于所述居中像素点是否为图像边界;
判断所述下像素点相对于所述居中像素点是否为图像边界;
判断所述左像素点相对于所述居中像素点是否为图像边界;
判断所述右像素点相对于所述居中像素点是否为图像边界。
优选的,所述判断所述上像素点相对于所述居中像素点是否为图像边界,包括:
确定出所述上像素点的像素值和所述居中像素点的原像素值的差值;
判断所述差值的绝对值是否大于一预设阈值;
若是,则所述上像素点相对于所述居中像素点是图像边界的像素点。
优选的,所述利用所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点确定出所述居中像素点的当前像素值,包括:
获得所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点的像素值;
基于所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点的像素值和所述居中像素点的原像素值,得到所述居中像素点的当前像素值。
优选的,所述基于所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点的像素值和所述居中像素点的原像素值,得到所述居中像素点的当前像素值,包括:
将所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点的像素值和所述居中像素点的原像素值相加,然后求出平均值,所述平均值就是所述居中像素点的当前像素值。
本发明公开了一种视频帧的滤波装置,包括:
滤波模块,用于将垂直分界线和水平分界线进行边界滤波;
第一确定模块,用于确定出滤波后的垂直分界线和滤波后的水平分界线的至少一个交叉点;
第二确定模块,用于确定出所述至少一个交叉点中每个交叉点的五个像素点;所述五个像素点包括所述周边四个像素点和所述居中像素点;
第三确定模块,用于确定出所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点;
第四确定模块,用于利用所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点确定出所述居中像素点的当前像素值。
优选的,还包括:
划分模块,用于将垂直分界线和水平分界线进行边界滤波之前,将所述视频帧分为多个16*16的像素子块,对每个16*16的像素子块作下述处理:
第五确定模块,用于确定出16*16的像素子块的所述垂直分界线和所述水平分界线。
优选的,所述第三确定模块,用于分别判断所述周边四个像素点相对于所述居中像素点是否为图像边界,进而确定出所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点。
优选的,所述周边四个像素点为:上像素点、下像素点、左像素点、右像素点;
第三确定模块,用于:
判断所述上像素点相对于所述居中像素点是否为图像边界;
判断所述下像素点相对于所述居中像素点是否为图像边界;
判断所述左像素点相对于所述居中像素点是否为图像边界;
判断所述右像素点相对于所述居中像素点是否为图像边界。
通过本发明的一个或者多个技术方案,本发明具有以下有益效果或者优点:
本发明提出了一种视频帧的滤波方法及装置。首先将垂直分界线和水平分界线进行边界滤波;然后确定出滤波后的垂直分界线和滤波后的水平分界线的至少一个交叉点;并确定出所述至少一个交叉点中每个交叉点的五个像素点;所述五个像素点包括所述周边四个像素点和所述居中像素点;本发明通过确定出所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点;然后利用所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点确定出所述居中像素点的当前像素值,进而避免对居中像素点进行滤波,经过上述操作后原本要进行2次滤波操作的居中像素点,现在只需要判断其周围的像素点是否是图像边界,然后根据周围的像素点来确定出居中像素点的像素值,大大的减少了计算步骤,节约了时间,提高了编码效率,进而提高了滤波效率,减少了方快帧的出现。
进一步的,本发明将所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点的像素值和所述居中像素点的原像素值相加,然后求出平均值,所述平均值就是所述居中像素点的当前像素值。这样的取均值操作其实是针对的是经过滤波操作后的值,而且取均值可以使m0像素点很好的与m1,m2,m3,m4像素点相融合,不会显得太突兀。
附图说明
图1为16*16的视频像素块的边界线划分的示意图;
图2为8*8的视频像素块的边界线划分的示意图;
图3为本发明实施例中一种视频帧的滤波方法的流程图;
图4A为本发明实施例中16*16的像素子块的示意图;
图4B为本发明实施例中边界线的交叉滤波示意图;
图4C为本发明实施例中居中像素点的示意图;
图5为本发明实施例中样点值取值示意图;
图6A-图6B为本发明实施例中垂直和水平滤波边界像素情况;
图7为本发明实施例中一种视频帧的滤波装置的示意图。
具体实施方式
为了使本申请所属技术领域中的技术人员更清楚地理解本申请,下面结合附图,通过具体实施例对本申请技术方案作详细描述。
为了解决滤波效率不高的技术问题,本发明提出了一种视频帧的滤波方法。首先将所述视频帧分为多个16*16的像素子块,对每个16*16的像素子块作下述处理:先确定出16*16的像素子块的垂直分界线和水平分界线;然后将垂直分界线和水平分界线进行边界滤波。滤波之后,确定出滤波后的垂直分界线和滤波后的水平分界线的至少一个交叉点;然后确定出所述至少一个交叉点中每个交叉点的五个像素点;所述五个像素点包括所述周边四个像素点和所述居中像素点;再确定出所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点;然后利用所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点确定出所述居中像素点的当前像素值。本发明将本来要进行2次滤波操作的居中像素点,现在只是判断它周围的像素点是否是图像边界,然后计算像素均值操作,将此均值作为居中像素的当前像素值,大大的减少了计算步骤,提高了编码效率,进而提高了视频帧的滤波效率,减少了视频帧的方块效应。。而且取均值操作其实是针对的是经过滤波操作后的值,而且取均值可以使居中像素点很好的与其周围的像素点相融合,不会显得太突兀。
下面介绍本发明具体的实施过程。
参看图3,该方法包括如下步骤:
步骤11,将垂直分界线和水平分界线进行边界滤波。
滤波之前,本发明会先将视频帧分为多个16*16的像素子块,对每个16*16的像素子块作下述处理:确定出16*16的像素子块的所述垂直分界线和所述水平分界线。
本发明将视频帧分为多个16*16的像素子块(例如图4A,是本发明一个16*16的像素子块的示意图),然后确定出16*16的像素子块的边界线,对每个亮度宏块,先滤波宏块(即:16*16的视频像素块)最左边的边界(如图4A中的a’),然后依次从左到右滤波宏块内三个垂直边界(如图1的b’、c’到d’)。类似的,对水平边界先滤波宏块顶部的边界(如图1中的e’),然后依次从上到下滤波宏块内三个水平边界(如图1中的f’、g’到h’)。
然后,将垂直分界线和水平分界线进行边界滤波。
在具体的滤波过程中,需要先确定边界线的过滤强度。
边界强度(Bs)决定去方块滤波器选择滤波参数,控制去除方块效应的程度。对所有4×4亮度块间的边界,边界强度参数值在0到4之间,它与边界的性质有关。表1说明Bs与相邻图像块的模式及编码条件的关系。表中的条件是从表的上部至下部进行判断的,直到某一条件满足,给Bs相应赋值。
表1
在实际滤波算法中,Bs决定对边界的滤波强度,包括对两个主要滤波模式的选择。当其值为4时表示要用特定最强的滤波模式(后续将介绍具体的滤波方式),而其值为0表示不需要对边界进行滤波。对其值为1到3的标准滤波模式,Bs值影响滤波器对样点的最大修正程度。Bs值的下降趋势说明最强的方块效应主要来自于帧内预测模式及对预测残差编码,而在较小程度上与图像的运动补偿有关。色度块边界滤波的Bs值不另外单独计算,而是从相应亮度块边界的Bs值复制而来。在帧场自适应宏块中,表1中的条件相对复杂些,因为相邻两图像块中的一个可能来自帧编码宏块或来自场编码宏块。滤波强度变化的原则不变。为了避免将图像过度模糊化,对于来自场编码宏块的水平边界需要特别考虑以避免过强的滤波强度,这是因为这种宏块的垂直滤波的空间扩展范围是其它情况的两倍。
根据样点集的Bs值选择两种滤波方式。图5为本发明实施例中样点值取值示意图。特定滤波方式是针对Bs为4的强滤波,普通滤波方式应用于其它情况(Bs=1,2,3)。滤波顺序如图4A所示。
对每种方式,用β阈值估计另外两个空间变化条件,以决定亮度点的滤波范围。
|p2-p0|<β(IndexB) (6.62)
|q2-q0|<β(IndexB) (6.63)
当上述条件成立,说明边界变化强度不大,滤波强度设定值相对实际滤波来说偏大,需要进一步滤波。
图6A-图6B是垂直和水平滤波边界像素情况。滤波运算可以分为基本滤波运算和限幅两个阶段。
Bs值从1到3的边界滤波:
基本滤波运算:
先讨论对亮度点的滤波。对这种模式的滤波,滤波后的p0’和q0’值按下式计算:
p0’=p0+Δ0 (6.64)
q0'=q0-Δ0 (6.65)
其中Δ0分两步计算,先计算它的初始值Δ0i,再对这个初始值进行限幅后代入上式。
初始值Δ0i根据边界两边的样点值计算:
Δ0i=(4(q0-p0)+(p1-q1)+4)>>3 (6.66)
计算p0’的脉冲响应运算为(1,4,4,-1)/8。
只有式(6.62)或(6.63)成立,才修正对应p1或q1值。即如果式(6.62)成立,滤波后的p1’值按下式计算:
p1’=p1+Δp1 (6.67)
同样,如果式(6.63)成立,滤波后的q1’值按下式计算:
q1’=q|1+Δq1 (6.68)
这些同样要经过两步计算。对p1’的初始值Δ按下式计算:
Δpli=(p2+((p0+q0+1)>>1)-2p1)>>1 (6.69)
Δq1i按同样关系式计算,用q2和q1分别代替p2和p1。上式相应的脉冲响应为(1,0,0.5,-0.5)/2,具有很强的低通特性。
限幅:
如果上述初始值Δ0i、Δp1i和Δq1i直接应用在滤波计算中,则可能导致滤波频率过低,出现图像模糊。自适应滤波器的一个重要部分是限制Δ的值。这个过程称为限幅。对于内部和边界上的样点,限幅过程不同。
对于滤波边界p0和q0样点,Δ0i的限幅值由c1和式(6.62)或(6.63)决定。先将它的限幅值c0定为c1。如果式(6.62或(6.63)都成立,说明边界两边内部的变化强度小于β阈值,需要对边界进行更强的滤波(同时如上述需要对p1和/或q1样点进行修正),c0将增加1。这样对边界样点的修正值为:
对色度点滤波,只有p0和q0才被修正。滤波方法与亮度点一样,只是限幅值c。
0为c1加1。这样对Bs小于4的边界没有必要对色度的式(6.62)或(6.63)进行估计,也不必存取变量p2和q2值。
表2,滤波限幅变量c1与indexA和Bs的关系。
表2
Bs值为4的边界滤波:
H.264/MPEG-4AVC的帧内编码在对同一图像区域编码时倾向采用16×16亮度预测模式。这会在宏块边界引起小幅度的方块效应。但是由于Mach band效应,在这种情况下,即使是很小的强度值差别在视觉上的感觉是陡峭的阶梯。为了消除这种马赛克效应,需要在图像内容平滑的两个宏块边界采用较强的滤波器。
对亮度滤波,根据图像内容判断选择较强的4拍或5拍滤波器,还是较弱的3拍滤波器。4拍或5拍滤波器对边界两边的边界点及两个内部点进行修正,而3拍滤波器仅改变边界点。只有下面的跨边界差异的约束条件成立才使用较强的滤波器:
|p0-q0|<(α>>2)+2| (6.73)
注意,式(6.73)与式(6.53)很相似,只是它跨边界的最大样点值差异的约束很严格。
对亮度滤波,当式(6.62)和(6.73)都成立,根据下式计算滤波后的样点值:
p0’=(p2+2p1+2p0+2q0+q1+4)>>3 (6.74)
p1’=(p2+p1+p0+q0+2)>>2 (6.75)
p2’=(2p3+3p2+p1+p0+q0+4)>>3 (6.76)
否则,对色度点或当式(6.62)和(6.73)中只要有一个不成立的亮度点,只根据下式修正p0:
p0’=(2p1+p0+q1+2)>>2 (6.77)
q点值的修正方法相同,只是在选择亮度滤波器时用式(6.63)代替式(6.62)。
步骤12,确定出滤波后的垂直分界线和滤波后的水平分界线的至少一个交叉点。
在具体的实施过程中,垂直分界线和所述水平分界线交叉之后会形成交叉点,参看图4A,交叉点是三条垂直边界线b’、c’、d’和三条水平边界线f’、g’、h’相互交叉形成的交叉点,共9个。
步骤13,确定出所述至少一个交叉点中每个交叉点的五个像素点。
在本发明的每个交叉点中都可以确定出五个像素点,五个像素点包括所述周边四个像素点和所述居中像素点;其中,周边四个像素点分别为:上像素点、下像素点、左像素点、右像素点。这种位置关系是基于以在正视图中,居中像素点的位置为参考标准来设置的。
请参看图4A,图4A是一个16*16的宏块,如果把分割为4*4的像素子块,就会有垂直a’,b’,c’,d’四条边。水平有e’,f’,g’,h’,四条边。其中看到4*4像素子块的右下角有5个像素值,我们设这五个像素点中,中间的是m0,上面m1,下面m2,左边m3,右边m4。
而在具体的实施过程中,参看图4B,是a’,b’,e’,f’滤波之后的示意图。其中,虚线框代表水平滤波,灰色框代表垂直滤波,中间而虚线框和灰色框重叠的部分代表需要水平和垂直2次滤波。
而每个交叉点的m0在两次滤波时,需要跳过这两次滤波,暂时不进行处理。
参看图4C,是m0的示意图,m0是黑色像素点,代表的是居中像素点.从图4C中可以看出,居中像素点实际上有4个,是存在于交叉点的像素点,然后以m0为标准将周边四个像素点确定出来。
从这个地方可以看出,以居中像素点m0来说,其周围的m1和m3是需要滤波的像素点,而m2、m4是跳过滤波的居中像素点,那么在确定m0的像素值时,如果需要用到m2、m4,由于m2、m4没有进行滤波,那么则使用m2、m4的原始像素点值。
步骤14,确定出所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点。
具体的处理过程中,可分别判断所述周边四个像素点相对于所述居中像素点是否为图像边界,进而确定出所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点。
在具体的实施过程中,由于所述周边四个像素点为:上像素点、下像素点、左像素点、右像素点。
故而,分别判断所述周边四个像素点相对于所述居中像素点是否为图像边界,包括:
判断所述上像素点相对于所述居中像素点是否为图像边界。
判断所述下像素点相对于所述居中像素点是否为图像边界。
判断所述左像素点相对于所述居中像素点是否为图像边界。
判断所述右像素点相对于所述居中像素点是否为图像边界。
而这四个判断过程类似,故而本申请仅用判断所述上像素点相对于所述居中像素点是否为图像边界的过程进行举例说明。
承接上述举例,上像素点m1和居中像素点m0的判断方式,具体为:
首先,确定出所述上像素点的像素值和所述居中像素点的原像素值的差值。
其次,判断所述差值的绝对值是否大于一预设阈值。
若是,则所述上像素点相对于所述居中像素点是图像边界的像素点。
由于我们先进行了a’、b’、c’、d’、e’、f’、g’、h’边界滤波,所以m1,m2,m3,m4现在是滤波后的值。
图像边界:是指视频帧里面有很多的物体(如人的眼睛,树木,等),每个物体与物体的边界。而判断是否是物体的边界其实就是判断每个像素点之间是否相差很大,既是否超过某一个阈值。上图中a’、b’、c’、d’、e’、f’、g’、h’其实是像素块的分割边界。
参看图5,主要说明p0、q0像素点是图像边界,因为像素点相差很大,而q0、q1像素点相差很小不是图像边界,p1、p0也不是图像边界。
步骤15,利用所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点确定出所述居中像素点的当前像素值。
在具体的实施过程中,若在周边四个像素点中确定出相对于所述居中像素点不是图像边界的像素点,则获得所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点的像素值。然后基于所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点的像素值和所述居中像素点的原像素值,得到所述居中像素点的当前像素值。
具体来说,是将所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点的像素值和所述居中像素点的原像素值相加,然后求出平均值,所述平均值就是所述居中像素点的当前像素值。
例如,四个像素点相对于居中像素点来说都不是图像边界的像素点,那么则将这四个像素点的值和居中像素点的原像素值相加,然后求出平均值。即:(m1+m2+m3+m4+m0(原))/5=m0(当前)这个平均值就是居中像素点的当前像素点。
经过上面的操作后,原本来要进行2次滤波操作的m0像素点,现在只是判段是否是图像边界然后计算像素均值操作,大大的减少了计算步骤,提高了编码效率。而且取均值操作其实是针对的是经过滤波操作后的值,而且取均值可以使m0像素点很好的与m1,m2,m3,m4像素点相融合,不会显得太突兀。
由于重建帧其实是残差与预测像素值相加,不是真正的当前帧数据,所以预测的像素块与旁边的像素块像素值在a’,e‘边上可能不是平滑的过度,既块之间无法相容,虽然画面内容可以辨认,但显得很突兀,这也是产出块效应的主要原因。而经滤波处理以后块之间就会显得更协调,不会过于突兀。
算法介绍:
1)算法实现:
a.增强的水平滤波和垂直滤波通用的强滤波函数
参数介绍:src:16*16像素子块(输入/输出)xstride:像素块横向宽度(如果xstride=stride,ystride=1垂直过滤,xstride=1,ystride=stride水平过滤)alpha和beta:检查图像内容,以决定每个样本点集是否要被滤波(输入),p2,p1,p0,q0,q1,q2:像素块对应点的像素值(临时)
像素块结构图:
算法流程:
获取对应点像素值,p2,p1,p0,q0,q1,q2。
根据上文(6.55),(6.56),(6.57)式判断是否进行滤波。
根据上文(6.73)式判断是否进行强滤波。
根据上文(6.62)式判断相邻的p2,p1,p0是否进行滤波。
根据上文(6.74),(6.75),(6.76)式对p2,p1,p0进行强滤波处理。
根据上文(6.63)式判断相邻的q0,q1,q2是否进行滤波。
根据上文(6.74),(6.75),(6.76)式对q0,q1,q2进行强滤波处理。
普通的水平滤波和垂直滤波通用的强滤波函数
参数介绍:src:16*16像素子块(输入/输出)xstride:像素块横向宽度(如果xstride=stride,ystride=1垂直过滤,xstride=1,ystride=stride水平过滤)alpha和beta:检查图像内容,以决定每个样本点集是否要被滤波(输入),p2,p1,p0,q0,q1,q2:像素块对应点的像素值(临时)tc0:限幅值(输入)
像素块结构图:
算法流程:
b.获取对应点像素值,p2,p1,p0,q0,q1,q2
c.根据上文(6.55),(6.56),(6.57)式判断是否进行滤波。
d.根据上文(6.62)式判断p1是否进行滤波。
e.根据上文(6.69)式对p1进行滤波,并通过pixel_clip3进行限幅
f.根据上文(6.63)式判断q1是否进行滤波。
g.根据上文(6.69)式对q1进行滤波,并通过pixel_clip3进行限幅
h.根据上文(6.66)式对p0,q0进行滤波,并通过clip_pixel进行限幅
c.增强的水平滤波和垂直滤波通用的强滤波函数
参数介绍:src:16*16像素子块(输入/输出)xstride,ystride:像素块横向宽度和高度(如果xstride=stride,ystride=1垂直过滤,xstride=1,ystride=stride水平过滤)alpha和beta:检查图像内容,以决定每个样本点集是否要被滤波(输入)
算法流程:遍历16个过滤的像素点,通过上文的强滤波函数进行过滤。
c.普通的水平滤波和垂直滤波通用的强滤波函数
参数介绍:src:16*16像素子块(输入/输出)xstride,ystride:像素块横向宽度和高度(如果xstride=stride,ystride=1垂直过滤,xstride=1,ystride=stride水平过滤)alpha和beta:检查图像内容,以决定每个样本点集是否要被滤波(输入),tc0:限幅值(输入)
算法流程:遍历16个过滤的像素点,通过上文的普通滤波函数进行过滤。
基于同一发明构思,本发明公开了一种视频帧的滤波装置,参看图7,包括:
滤波模块71,用于将垂直分界线和水平分界线进行边界滤波;
第一确定模块72,用于确定出滤波后的垂直分界线和滤波后的水平分界线的至少一个交叉点;
第二确定模块73,用于确定出所述至少一个交叉点中每个交叉点的五个像素点;所述五个像素点包括所述周边四个像素点和所述居中像素点;
第三确定模块74,用于确定出所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点;
第四确定模块75,用于利用所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点确定出所述居中像素点的当前像素值。
作为一种可选的实施例,还包括:
划分模块,用于将垂直分界线和水平分界线进行边界滤波之前,将所述视频帧分为多个16*16的像素子块,对每个16*16的像素子块作下述处理:
第五确定模块,用于确定出16*16的像素子块的所述垂直分界线和所述水平分界线。
作为一种可选的实施例,所述第三确定模块74,用于分别判断所述周边四个像素点相对于所述居中像素点是否为图像边界,进而确定出所述周边四个像素点中相对于所述居中像素点不是图像边界的像素点。
作为一种可选的实施例,所述周边四个像素点为:上像素点、下像素点、左像素点、右像素点;
第三确定模块74,用于:
判断所述上像素点相对于所述居中像素点是否为图像边界;
判断所述下像素点相对于所述居中像素点是否为图像边界;
判断所述左像素点相对于所述居中像素点是否为图像边界;
判断所述右像素点相对于所述居中像素点是否为图像边界。
通过本发明的一个或者多个实施例,本发明具有以下有益效果或者优点:
本发明提出了本发明公开了一种视频帧的滤波方法及装置。首先将垂直分界线和水平分界线进行边界滤波后确定出垂直分界线和水平分界线的至少一个交叉点;然后根据交叉点的居中像素的周边的四个像素点来确定出居中像素点的当前像素值,进而避免对居中像素点进行滤波,经过上述操作后原本要进行2次滤波操作的居中像素点,现在只需要判断其周围的像素点是否是图像边界,然后根据周围的像素点来确定出居中像素点的像素值,大大的减少了计算步骤,节约了时间,提高了编码效率,进而提高了滤波效率,减少了方快帧的出现。
尽管已描述了本申请的优选实施例,但本领域内的普通技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。