基于块的视频编码的一个典型特点就是在图像中会出现偶发的可察觉的块结构,这是由于重构块的边缘像素与块内部像素相比恢复精度要低,块效应是目前压缩编码最明显的视觉失真之一。在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. MySQLdb 1031 Error

    Python import MySQLdb 有可能报:site-packages/pkg_resources.py:1031: UserWarning: /home/***/.python-eggs ...

  2. IOC-AOP

    IOC,依赖倒置的意思,所谓依赖,从程序的角度看,就是比如A要调用B的方法,那么A就依赖于B,反正A要用到B,则A依赖于B.所谓倒置,你必须理解如果不倒置,会怎么着,因为A必须要有B,才可以调用B,如 ...

  3. pig hive 区别

    Pig是一种编程语言,它简化了Hadoop常见的工作任务.Pig可加载数据.表达转换数据以及存储最终结果.Pig内置的操作使得半结构化数据变得有意义(如日志文件).同时Pig可扩展使用Java中添加的 ...

  4. UIRefreshControl自动刷新

    不知道UIRefreshController是什么的朋友可以参考iOS6新特征:UIRefreshControl[下拉刷新]使用示例 一文了解这是什么,这里只提怎么使用代码的方式触发UIRefresh ...

  5. TCP/IP、Http、Socket的区别--特别仔细

    网络由下往上分为 物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可 ...

  6. 黑马程序员——【Java高新技术】——反射机制

    ---------- android培训.java培训.期待与您交流! ---------- 一.概述 1.Java反射机制:是指“在运行状态中”,对于任意一个类,都能够知道这个类中的所有属性和方法: ...

  7. Libgdx 开发指南(1.2) 应用框架——模块概览

    模块概览 引言 LibGDX由一些为一个典型游戏架构中的各个步骤提供服务的模块组成. Input:为所有平台提供一致的输入模型与处理器.支持键盘.触屏.加速度传感器与鼠标. Graphics:使用硬件 ...

  8. kinnect相关

    1. kinnect的现状. http://tech.qq.com/a/20150909/046760.htm 2. kinnect的相关工作 http://baike.baidu.com/link? ...

  9. LintCode Validate Binary Search Tree

    Validate Binary Search Tree Given a binary tree, determine if it is a valid binary search tree (BST) ...

  10. 关于配置服务器(IIS7)(二)

    然 ,你以为这样就解决问题了? 图样 图森破(too yong too simply).......... HTTP 错误 500.21 - Internal Server Error 处理程序“Pa ...