• 呼吸效应


    一、 闪烁现象(flicker,呼吸效应)

    在视频编码中,闪烁是一种时域伪影。它经常发生在低码率情况下的I帧切换过程中,I帧和P帧之间的主观质量因编码方式不同而有明显的波动。周期性的时域视觉波动会导致视频闪烁,影响观看体验。闪烁在同质纹理区域中较为明显,尤其是没有出现移动物体或相机运动很小时。场景变化的I帧一般不会感知到闪烁。

    闪烁的感觉主要是因为编码视频的帧间差异比原始视频的帧间差异增加。因此flicker 客观度量方法主要是通过比对编码后视频的帧间差异与原视频的帧间差异,
    如下式度量编码块的闪烁值。

    二、 产生ficker 的原因
    (1) 闪烁的感觉主要是因为编码视频的帧间差异比原视频的帧间差异增加。帧间差异的增加主要是由于两个连续的原始帧分别经过不同的有损编码过程,例如不同的预测方式(帧内预测和帧间预测)、不同的编码模式、不同的量化参数(QP)等。
    (2) 码率分配不够合理也会造成闪烁现象。在hevc 中,从比特分配角度看,根据属于同一级别的先前编码图像将剩余bit 分配给尚未编码的CTU ,并且在当前的I帧速率控制方案中CTU 之间的bit 分配没有做整体优化。这种自上而下的顺序过程可能会导致先编码CTU的比特预算超支、后面编码的CTU bit 不足。从QP确定的角度来看,通常采用R-lambda模型来实现基于给定比特分配的CTU的QP分配。 给定的 CTU 比特分配是根据前一帧的 MAD 预测的,对整个 CTU 采用统一的模型不能产生最优结果。

    三、 解决方法(目的:帧间平滑)
    研究者们提出在编码过程中、编码前、编码后减轻闪烁现象的方法。根据其核心思想将各种分为基于区域划分的比特分配方法、基于I P重建帧滤波方法、编码前后处理法、无闪烁P帧参考法、加入flicker 损失项率失真优化法、恒定质量法。

    (1) 基于区域划分的比特分配方法
    文[2014-Region-based Intra-Frame Rate-Control Scheme for High Efficiency Video Coding] 提出了一种基于区域的帧内速率控制方案,以提高客观质量并减少I帧 CTU 之间的 PSNR 波动。 首先,将I 帧的 CTU 根据其特征和复杂性分为运动区、平坦区、纹理区三个区域。 并且提出了一种基于区域的比特分配来预先确定不同区域之间的比特。 其次,提出了一种用于帧内的速率-复杂性-质量模型来调整 QP 以实现平滑的感知质量。 方法分为四步,
    第一步:区域属性划分
    运动区域判断:计算块的帧间平均像素差来判断是否是运动区,


    平坦区判断:使用前一编码帧的MAD来判断CTU是否属于平滑区域。 如果CTU的MAD不属于运动区域,且CTU的MAD小于编码帧的MAD,则认为CTU属于平滑区域; 否则,CTU 属于复杂区域。
    第二步:不同区域bit 分配,k=1,w=0.8

    第三步:根据R-lambda 模型初始化CTU的QP
    第四步:QP调整。为了保持质量一致性,相邻CTU的PSNR将基于以下两个约束被裁剪在一个较窄的范围内: 一个是来自先前编码的 CTU 的约束,当前 CTU 的 PSNR 值保持接近左相邻 CTU 的 PSNR,最大 PSNR 差异设置为 0.1; 另一个是不同区域之间的边界约束:不同区域之间的 PSNR 差异限制为 0.2。
    为了实现约束PSNR 的QP调整,需要找出帧内 PSNR、编码复杂度和 QP 之间的关系。经过实验仿真得出:

    C_k^I 是复杂度,实验表明,I帧编码得到的PSNR值与图像梯度不是线性关系,而是与图像梯度的立方根的倒数呈线性关系。


    实验结果表明,与HM12.0采用的方案相比,该方案可以实现更高的编码性能和一致的视觉质量。该方法将具有相似特征的CTU分类到相同的区域中,并且使用区域而不是帧作为帧内帧级速率控制的基本单位, 它可以减少相邻CTU的比特预算透支;此外对块之间的PSNR约束,保证帧内的质量稳定。
    该方法给平坦区分配较多bit 可以减轻闪烁。 如果CTU属于平滑区域,闪烁伪影非常明显,这是因为在帧间编码中,平滑区域的CTU通常采用SKIP模式(当前CTU直接替换为对应的重构CTU 在参考帧中的位置),可以保持相邻视频帧之间的质量连续性,因此提出的方案将更多的目标比特率分配给平滑区域的CTU,提高CTU的质量,提高I的整体质量。 I帧将与其相邻的 P 帧保持一致,因此将有效抑制闪烁伪影。
    文[2016-Complexity-based Intra Frame Rate Control by Jointing Inter-Frame Correlation for High Efficiency Video Coding]提出了一种帧间帧内速率控制算法,旨在提供改进和流畅的视频质量。文章联合考虑编码的帧内和帧间的内容复杂度(帧级),以及帧内不同纹理区域中不同 CTU的内容复杂度(CTU级)。首先,提出了一种基于帧级内容复杂度的比特分配平衡技术,通过共同考虑I帧与先前编码帧的帧间相关性,实现P帧和I帧平滑的视觉质量。其次,提出了一种基于区域的帧内速率控制方案,并提出了一种帧内CTUs复杂度预测度量,结合帧间相关性,使得比特估计误差和PSNR波动可以减少。此外,通过更新相关的模型参数来获得速率控制精度。
    基于帧间相关性的复杂度估计模型

    α∙C^β的范围较大。
    在HM中,每个CTU的内容复杂度用于分配比特率,内容复杂度P帧中相同位置的CTU的MAD(平均绝对差)来测量。然而,在JCT-VC K0103中,每个CTU的QP直接设置为帧内帧的值。后来提出哈达玛变换用前一个编码的I帧来估计当前I帧 CTU的复杂度。如果周期太长,两个相邻I帧距离太远,那么二者之间相关性较弱。针对前I帧和前P帧的CTU复杂度估计,建立了基于帧间相关性的模型,如下所示:

    p表示第p个CTU,C_p表示其复杂度,N是周期长度;SATD是应用Hadamard变换后得到的系数绝对值之和,(〖SATD〗p^I ) ̅ 表示前一个I帧 第p个CTU相同位置处的平均系数绝对值;|∑(i=1)N▒(〖SATD〗_pI ) ̅ |/N 表示前一周期内所有P帧的第p个CTU相同位置处的平均系数绝对值之和的平均值;v是由前一I帧与前一P帧之间的相互关系的加权因子

    周期越大,v的值越大。

    将I帧内分为运动区和非运动区,非运动区分为平坦区和纹理区,各有对应R-λ 曲线。

     a)	帧级bits 分配
    

    I帧及其CTU的码率分配,I帧的target bits

    RintraAvg是每个周期的平均bits数,BRn 是buffer 的占用率


    〖QP〗(n-1)^(I_act) 、R(n-1)^(I_act)表示第n-1 个周期的I帧实际QP、实际bits 数,〖QP〗(n-1)^(NI_act ) (i) 、R(n-1)^(NI_act ) (i)表示第n-1 个周期的第i个P帧的实际QP、实际bits 数
    参数更新:

    b) 基于复杂度的区域bits 分配


    c) ctu 级bits 分配

    R_(K,i)表示第k区域的第i个CTU,R_(K,RemBits) 表示第k区域的剩余bits数,R_K表示第k区域的目标bits 数,R_(K,actp) 表示已编码的第p个CTU的实际bits数,R_(K,p)表示已编码的第p个CTU的目标bits数


    参数更新

    (2) 基于帧滤波方法
    文[Standard-Compliant Low-Pass Temporal Filter to Reduce the Perceived Flicker Artifact]提出 时域低通滤波


    该方法拉长了 比特分配模型的建模范围

    (3) 前处理、后处理方法
    (4) IP帧方法

    四、 总结

  • 相关阅读:
    Lucene全文检索
    数据库设计样例
    tortoisegit 保存用户名密码
    ServletContextListener 解析用法
    !! 浅谈Java学习方法和后期面试技巧
    佳能2780打印机老出5100错误
    蓝屏
    股市口诀
    如何准确进行T+0操作
    通达信:显示K线图日期
  • 原文地址:https://www.cnblogs.com/linjin/p/16310780.html
Copyright © 2020-2023  润新知