基于块的视频编码的一个典型特点就是在图像中会出现偶发的可察觉的块结构,这是由于重构块的边缘像素与块内部像素相比恢复精度要低,块效应是目前压缩编码最明显的视觉失真之一。在H.264/ AVC视频编码标准中,块效应有两种来源。最显著的一个是在Intra和Inter帧预测残差编码中的整数4×4变换,对变换系数的粗量化会导致可见的块边缘不连续。第二个是来自运动补偿预测。预测从可能的不同参考帧中把内插像素数据拷贝出来形成运动补偿块,由于几乎没有正好合适的数据,被拷贝块的数据引起的边缘不连续性会上升;另外,在拷贝过程中参考帧中存在的不连续性又被搬到将要被补偿块的内部。虽然H.264/AVC使用的4×4变换尺寸多少使这种效应变得不很明显,但为了增强编码性能,一个去块效应滤波器仍旧是很有用的工具。

  滤波器被应用到每个解码模块以减少由块效应所引起的失真.在编码端,进行反变换之后,再应用去块效应滤波器(在重建和存储宏块用于将来预测之前);在解码端,在重建和显示之前,应用去块效应滤波器.滤波器平滑了块的边界,改善了解码帧的质量.滤波后的宏块被用于将来帧的运动补偿预测,这能够提高压缩性能,因为滤过的图像比一个有块效应的未滤波的图像更接近原始图像.滤波器的默认操作如下,编码端可以选择滤波器的强度或者禁止使用滤波器.(JM18.6中的字段Macroblock结构体中的DFDisableIdc用来控制滤波器的使用或禁止,0表示使用滤波器,1表示禁止)

滤波器被应用到每个宏块的4x4块的垂直和水平的边界(除了条带边界),顺序如下:
1)滤波亮度分量的4个垂直边界(顺序从左向右abcd)
2)滤波亮度分量的4个水平边界(顺序从上向下efgh)
3)滤波每个色度分量的两个垂直边界(顺序从左向右ij)
4)滤波每个色度分量的两个水平边界(顺序从上向下kl)
 
  每个滤波操作影响边界两边的三个象素,下图显示了相邻块p和q的垂直边界的两边的四个象素(p0,p1,p2,p3和q0,q1,q2,q3).滤波强度(滤波量)依赖于当前的量化器,相邻块的编码方式以及边界上图像象素的梯度.
 
边界强度
滤波输出的选择依赖与边界强度和边界上图像象素的梯度.边界强度参数BS依据一下原则进行选择(编码是逐行帧时) :
1) p或q是帧内编码的,同时边界是宏块边界,则BS=4(最强的滤波强度)
2) p或q是帧内编码的,同时边界不是宏块边界,则BS=3
3) p和q都不是帧内编码的,同时p或q包含编码系数,则BS=2
4) p和q都不是帧内编码的,同时p和q都不包含编码系数,p和q使用不同的参考帧或者使用不同数目的参考帧或者两者运动矢量差值大于一个亮度象素,则BS=1,否则BS=0
应用这些原则的结果是在可能有明显块效应出现的地方滤波强度很大,例如帧间编码宏块的边界以及包含编码系数的块之间的边界.
滤波器判决
集合(p2,p1,p0,q0,q1,q2)的一组象素值在下列情况下才进行滤波:
1) BS>0
2) |p0−q0| < α and |p1−p0| < β and |q1−q0| < β.
α和β是标准中定义的阈值,它们随着两个块p和q量化参数QP的增长而增长.滤波器选择的效果就是当在原始图像块边界有明显变化时,关掉滤波器.当QP很小的时候,除了边界上的很小梯度,其他都应该是图像本身的特征(而不是块效应),所以应该保留,因此阈值α和β很小.当QP很大的时候,块效应可能更明显,所以α和β很大,更需要滤波更多的边界象素点.
滤波器的实现
1)BS属于{1,2,3}
输入是p1,p0,q0,q1,使用一个四阶滤波器,产生输出结果p'0和q'0.如果|p2-p0|小于阈值β,则使用另一个四阶滤波器,即输入是p2,p1,p0和q0,则输出结果是p'1(仅仅亮度分量);如果|q2-q0|小于阈值β,则使用另一个四阶滤波器,即输入是q2,q1,q0和p0,则输出结果是q'1(仅仅亮度分量);
2)BS=4
如果|p2-p0|小于阈值β并且|p0-q0|小于round(α/4),并且是亮度块,则:
p'0是对p2,p1,p0,q0,q1进行五阶滤波得到的;p'1是对p2,p1,p0,q0进行四阶滤波得到;p'2是对p3,p2,p1p0和q0进行五阶滤波得到的.否则,p'0是对p1,p0,q1进行三阶滤波得到的.
如果|q2-q0|小于阈值β并且|p0-q0|小于round(α/4),并且是亮度块,则:
q'0是对q2,q1,q0,p0,p1进行五阶滤波得到的;q'1是对q2,q1,q0,p0进行四阶滤波得到;q'2是对q3,q2,q1,q0和p0进行五阶滤波得到的.否则,q'0是对q1,q0,p1进行三阶滤波得到的.

去块率波 Deblocking filter的更多相关文章

  1. h.264 去块滤波

    块效应及其产生原因 我们在观看视频的时候,在运动剧烈的场景常能观察到图像出现小方块,小方块在边界处呈现不连续的效果(如下图),这种现象被称为块效应(blocking artifact). 首先我们需要 ...

  2. InnoDB缓存读命中率、使用率、脏块率(%) 缓冲池的读命中率(%) 缓冲池的利用率(%) 缓冲池脏块的百分率(%)

    InnoDB缓存读命中率.使用率.脏块率(%) 缓冲池的读命中率(%) 缓冲池的利用率(%) 缓冲池脏块的百分率(%)

  3. h264和h265多维度区别

    h264和h265多维度区别 1.  概述 h265旨在在有限带宽下传输更高质量的网络视频,仅需原先的一半带宽即可播放相同质量的视频,很多朋友不知道h264和h265如何区别,下面让我们一起来了解一下 ...

  4. h.264并行解码算法分析

    并行算法类型可以分为两类 Function-level Decomposition,按照功能模块进行并行 Data-level Decomposition,按照数据划分进行并行 Function-le ...

  5. FFmpeg的HEVC解码器源代码简单分析:环路滤波(Loop Filter)

    ===================================================== HEVC源代码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpe ...

  6. x264源代码简单分析:滤波(Filter)部分

    ===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...

  7. Atitit   图像处理 平滑 也称 模糊, 归一化块滤波、高斯滤波、中值滤波、双边滤波)

    Atitit   图像处理 平滑 也称 模糊, 归一化块滤波.高斯滤波.中值滤波.双边滤波) 是一项简单且使用频率很高的图像处理方法 用途 去噪 去雾 各种线性滤波器对图像进行平滑处理,相关OpenC ...

  8. 【HEVC简介】DB-DeBlock Filter

    参考论文:HEVC Deblocking Filter <HEVC标准介绍.HEVC帧间预测论文笔记>系列博客,目录见:http://www.cnblogs.com/DwyaneTalk/ ...

  9. 【HEVC简介】ALF-Adative Loop Filter

    由于HEVC在HM4.0之后,就把ALF去掉,所以ALF的介绍是基于AVS2. <HEVC标准介绍.HEVC帧间预测论文笔记>系列博客,目录见:http://www.cnblogs.com ...

随机推荐

  1. 网页中插入QQ在线功能

    网页中插入QQ在线功能 本随笔记录的是网页中如何插入qq在线聊天,这里讲解的是 普通QQ在线聊天操作. 例:第一种方式  使用 tencent://message/?uin=QQ号码&Site ...

  2. net 的单元测试 初学

    1. 都要以一个方法 这样的去测试 2. 利用工具 Install-Package Moq -Version 4.0 (最高的是4.5  4.0适用于自己项目的版本)   Moq.dll 进行测试   ...

  3. SharePoint\O365 CSOM操作"请求访问设置"功能

    博客地址:http://blog.csdn.net/FoxDave 请求访问设置是在SharePoint网站权限菜单中的一个功能,如下图: 它用来设置成员是否可以共享网站以及个别文件和文件夹,是否允许 ...

  4. 性能测试报告的指标选择、数据选择和分析的参考【以Apache AB test为例】

    前几天尝试用loadrunner初试了一下性能测试,对于如何选择数据.生成数据后如何分析很是迷惑,刚刚翻看一篇网友的博客,很有条理,特此记录一下,以供参考 转自: http://liriguang.i ...

  5. Umap2:开源USB host安全评估工具

    Umap2是一款由NCC Group和Cisco SAS小组开发的.基于python的USB host安全评估工具. 它拥有第一版所支持的所有功能: umap2emulate:USB设备枚举 umap ...

  6. Flask微型框架入门笔记

    例程: from flask import Flask app = Flask(__name__) # 新建一个Flask可运行实体(名字参数如果是单独应用可以使用__name__变量,如果是modu ...

  7. flask开发遇到 Must provide secret_key to use csrf解决办法

    开发flask的时候,遇到了 Must provide secret_key to use csrf错误提醒.原来是没有设置secret_key .在代码中加上 app.config['SECRET_ ...

  8. 理解伪元素 :before和:after

    在CSS中有一特性允许我们添加额外元素而不扰乱文档本身,就是伪元素. 下面举例说明: html: <blockquote>  blockquote只是一个块引用 </blockquo ...

  9. JavaWeb用Jdbc操作MySql数据库(二)

    一.仍然使用前面的环境和示例数据库. 二.建立发出注册请求的页面index3.jsp. <%@ page language="java" import="java. ...

  10. QString转换为char* (转)

    Qt下面,字符串都用QString,确实给开发者提供了方便,想想VC里面定义的各种变量类型,而且函数参数类型五花八门,经常需要今年新那个类型转换 Qt再使用第三方开源库时,由于库的类型基本上都是标准的 ...