参考:Complexity Control of High Efficiency Video Encoders for Power-Constrained Devices
《HEVC标准介绍、HEVC帧间预测论文笔记》系列博客,目录见:http://www.cnblogs.com/DwyaneTalk/p/5711333.html
2011 期刊
 
核心思想:
        通过以frame为单位,限制帧内每个CU的最大depth来实现对视频序列编码复杂度的控制。
思路分析:
        实验环境:HM2, low delay and low complexity, 1280*768  504-frames Basketball、BQTerrace and Cactus video sequence。64-bits and 2.27GHz CPU
        复杂度(computional complexity)衡量:通过特殊的检测软件分析器(software profiler)统计编码过程中,各个部分消耗的时间。
        图1、不同CU深度在编码中所占复杂度比例
       

如图1:统计的是视频序列中,对于64x64的CTU编码过程中,depth=1、2、3和4 对应的CU块的编码复杂度。灰色区域是对应depth下的CU进行帧间预测复杂度,黑色是对应depth下其他操作的复杂度。编码64x64的CTU时,在CTU的树形结构中depth=1对应的32x32的CU进行帧间预测复杂度占据整个CTU的编码复杂的14.6%,对应depth=2、3和4时,占据的整个CTU复杂度比例分别是15%、17.4%和47.2%。

        上图数据说明:在CTU的递归编码过程中,随着depth的增加,所需要的计算复杂度逐渐增加,特别是当depth为4时,此时CU size为8*8,由于一个64*64的CTU,包含64个8*8的CU,所以在不进行加速优化时,depth占据将近一般的计算复杂度,因此限制CTU的maxinum depth是本论文的核心和出发点。
图2、视频序列中co-location的CTU实际编码深度的连续性       

如图2:显示了对于BQTerrace视频序列,对于505个frame中随意某个位置的CTU的编码深度变化,可以看出:1、编码过程中编码深度为4的frame约50%左右,有很大的复杂度优化空间;2、CTU编码深度在时域上有很大的temporal consistency,最小的两次CTU depth变化也在20帧以上,这个特性为预测优化CTU深度提供前提和优化空间。

算法介绍:
        总体思想:
图3、视频序列编码过程中控制示意图
        Fu(unconstrained frame):不加深度限制的帧,视频序列第一帧一般定义为Fu,帧内按标准流程进行编码;
        Fc(constrained frame):对于帧内所有CTU都进行最大depth限制的帧,编码复杂度降低的帧。

如图:将视频帧定义为Fu和Fc两类。对于每个Fu,编码过程中按照标准中正常的流程进行编码,Fu编码结束后,记录每一个64*64CTU的最大编码深度。Fu随后的Nc个Fc帧,编码时,对于每个CTU,编码的最大CU depth为前一个Fu的对应位置CTU的最大编码深度(Fu帧编码时以存储先来)。编码过程中,NC个Fc帧之后,Nc的值会根据目标复杂度、已编码序列的复杂度和剩余未编码帧数进行动态调整。

        具体步骤:
图4、编码步骤伪代码
        变量含义:(下面叙述中,计算复杂度可以理解为计算资源)
                Nt:视频序列中,所有帧的数目;
                Nd:当前已处理的帧数;
                Nc:连续Fc帧的数目;
                Tt:对于当前视频序列,预先定义的目标计算复杂度,可以根据CPU资源、电量或者用户自定义来确定。
                Td:当前已处理的Nd帧,所消耗的计算复杂度;
                Te:对于最新的Fu帧和其随后的Nc帧Fc帧,所消耗的计算复杂度(只有Nc个Fc帧编码完成后,才会用到Te的值);
                Tp:根据估计,计算得到的剩余的Nt-Nd帧,还剩余的计算复杂度,按照线性比例估计。公式如下:
        根据上面伪代码,初始化相关变量之后:
            S1、先编码Fu帧,按照没有优化的流程记性所有深度的CU搜索尝试,然后将每个CTU的depth存储到MaxCUD_history[n]中,Nd++;
            S2、对于之后的Nc个Fc帧,按照每个CTU的最大depth为MaxCUD_history[i]进行编码,每处理一帧Nd++;
            S3、重新获得Te、Td(=Td+Te)和Tp(=公式1)的值;
            S4、更新Nc的值:1、如果Td+Tp>Tt*1.1(预计全部帧编码完成消耗的计算复杂度多余目标),那么Nc++,使得下一个Fu帧之后,有更多的Fc帧,从而节省计算复杂度。2、如果Td+Tp<Tt*0.9(预计全部帧编码完成消耗的计算复杂度少于目标),那么Nc--,使得下一个Fu帧之后,有更少的Fc帧,从而使用更多的计算复杂度。3、否则,NC的值保持不变。
            S5、如果编码所有帧没有完成,那么从S1继续。
            PS:对于FR(帧率)的使用,是为了保证每一秒的视频序列内有一个Fu帧,避免长期编码Fc帧,使得质量下降太多。而对于当Nc达到FR是,预计使用的编码复杂度仍然大于目标复杂度时,通过使用MaxCUD_history[i]-1来作为最大CTU深度,对计算复杂度进一步控制。
实验展示:

        Fig6展示的是对于三个视频序列,目标计算复杂度和实际计算复杂度,表明算法在对复杂度的控制,基本上达到了目标计算复杂度的要求。Fig7展示的是在编码一个视频序列的504帧过程中,Nc的编码过程,从图中可以看出帧率是大于25fps的。

        Fig8展示的是,对于50帧测试序列,编码过程中每帧平均CU深度(黑色、左边坐标)的变化和码率(灰色、右边坐标)变化,可以看出二者都是每隔一定帧数会有一个峰值,这一帧就对应着Fu帧,而在其他帧,CU深度和码率都有一定的下降。Fig9展示的是平均CU深度和PSNR,Fig10展示的是平均CU深度和编码时间,二者与Fig8有相同的规律。

        Fig11-13,分辨从不同目标计算复杂度(不进行优化时计算复杂度的40%、60%、80%和100%)下码率、PSNR个率失真性能三个方面衡量了算法的性能,可以看出在60%、80%和100%时,码率、PSNR和率失真性能基本没有变化。只有当40%时,码率略有增加,PSNR略有降低,率失真曲线略有下降。

        表2-4,则分别展示了三个视频序列,在四个不同目标计算复杂度下,运行时间、码率、PSNR的表现和变化。

【HEVC帧间预测论文】P1.8 Complexity Control of High Efficiency Video Encoders for Power-Constrained Devices的更多相关文章

  1. 【HEVC帧间预测论文】P1.9 Coding Tree Depth Estimation for Complexity Reduction of HEVC

    Coding Tree Depth Estimation for Complexity Reduction of HEVC <HEVC标准介绍.HEVC帧间预测论文笔记>系列博客,目录见: ...

  2. 【HEVC帧间预测论文】P1.4 Motion Vectors Merging: Low Complexity Prediction Unit Decision

    Motion Vectors Merging: Low Complexity Prediction Unit Decision Heuristic for the inter-Prediction o ...

  3. 【HEVC帧间预测论文】P1.7 Content Based Hierarchical Fast Coding Unit Decision Algorithm

    Content Based Hierarchical Fast Coding Unit Decision Algorithm For HEVC <HEVC标准介绍.HEVC帧间预测论文笔记> ...

  4. 【HEVC帧间预测论文】P1.6 A Fast HEVC Inter CU Selection Method Based on Pyramid Motion Divergence

    A Fast HEVC Inter CU Selection Method Based on Pyramid Motion Divergence <HEVC标准介绍.HEVC帧间预测论文笔记&g ...

  5. 【HEVC帧间预测论文】P1.5 Fast Coding Unit Size Selection for HEVC based on Bayesian Decision Rule

    Fast Coding Unit Size Selection for HEVC based on Bayesian Decision Rule <HEVC标准介绍.HEVC帧间预测论文笔记&g ...

  6. 【HEVC帧间预测论文】P1.3 Fast Inter-Frame Prediction Algorithm of HEVC Based on Graphic Information

    基于图形信息的HEVC帧间预测快速算法/Fast Inter-Frame Prediction Algorithm of HEVC Based on Graphic Information <H ...

  7. 【HEVC帧间预测论文】P1.2 An Efficient Inter Mode Decision Approach for H.264 Video Codin

    参考:An Efficient Inter Mode Decision Approach for H.264 Video Coding <HEVC标准介绍.HEVC帧间预测论文笔记>系列博 ...

  8. 【HEVC帧间预测论文】P1.1 基于运动特征的HEVC快速帧间预测算法

    基于运动特征的 HEVC 快速帧间预测算法/Fast Inter-Frame Prediction Algorithm for HEVC Based on Motion Features <HE ...

  9. H.264学习笔记3——帧间预测

    帧间预测主要包括运动估计(运动搜索方法.运动估计准则.亚像素插值和运动矢量估计)和运动补偿. 对于H.264,是对16x16的亮度块和8x8的色度块进行帧间预测编码. A.树状结构分块 H.264的宏 ...

随机推荐

  1. parquet文件格式——本质上是将多个rows作为一个chunk,同一个chunk里每一个单独的column使用列存储格式,这样获取某一row数据时候不需要跨机器获取

    Parquet是Twitter贡献给开源社区的一个列数据存储格式,采用和Dremel相同的文件存储算法,支持树形结构存储和基于列的访问.Cloudera Impala也将使用Parquet作为底层的存 ...

  2. 后台while收发过程

    fuse_loop_mt.c 中fuse_do_work函数使用while循环在后台不断运行,每一个while循环中,主要有两个操作. 1. fuse_session_receive_buf(mt-& ...

  3. Swagger测试工具

    http://www.360doc.com/content/16/0509/08/1355383_557462195.shtml

  4. SideBar---fixed定位

      <style> /*外层fixed*/ body{ width:2000px; height:2000px; background:#000; } .wrap { position: ...

  5. 【HDU 2089】 不要62

    [题目链接] 点击打开链接 [算法] 数位DP 和上一题 : HDU3555很像 [代码] #include<bits/stdc++.h> using namespace std; #de ...

  6. 【转】Chrome调试鼠标悬停后出现的元素

    原文地址:https://blog.csdn.net/sparrowflying/article/details/80996550 调试小技巧:调试样式的时候,有一类元素是鼠标悬停在特定位置才会出现的 ...

  7. 【推荐】 体验SubSonic

    SubSonic简介 SubSonic配置 利用sonic.exe来生成代码 通过Substage来生成代码 简单操作示例 1.SubSonic简介 一句讲完就是:SubSonic就是一个ORM开源框 ...

  8. 任务38:JWT 设计解析及定制

    任务38:JWT 设计解析及定制 改造jwt token token的值不放在Authorize里面,而是放在header的token里面 asp.net core的源代码 在Security的下面 ...

  9. bzoj 1023: [SHOI2008]cactus仙人掌图【tarjan+dp+单调队列】

    本来想先求出点双再一个一个处理结果写了很长发现太麻烦 设f[u]为u点向下的最长链 就是再tarjan的过程中,先照常处理,用最长儿子链和次长儿子链更新按ans,然后处理以这个点为根的环,也就是这个点 ...

  10. CF580D Kefa and Dishes 【状压dp】By cellur925

    题目传送门 友情链接:new2zydalao%%%  一篇优秀的状压文章 题目大意:$n$个菜有$k$个规则,如果kefa在吃完第$xi$个菜之后吃了第$yi$个菜(保证$xi$.$yi$不相等), ...