A Fast HEVC Inter CU Selection Method Based on Pyramid Motion Divergence

《HEVC标准介绍、HEVC帧间预测论文笔记》系列博客,目录见:http://www.cnblogs.com/DwyaneTalk/p/5711333.html

IEEE TRANSACTIONS ON MULTIMEDIA, VOL. 16, NO. 2, FEBRUARY 2014

以PMD作为特征,利用kNN决策判断是否进行CU块划分。

核心公式:

分析:(1)中计算R-D的SSD是原始图像与重建图像差值平方和

但是为了节约时间,一般采用原始图像与预测图像的差值平方和来判断,如下:

     (2)

X为一个CU块,x为X中一个点,m’是预测得到的每个像素点的运动矢量(有专门的算法),t和t-1表示帧号(假设t帧参考t-1帧)。在不考虑光照因素,设每个像素点实际运动矢量为mx,那么

     (3)

      (4)

公式(4)是将率失真优化理论上归到同一帧处理,由于图像符合一阶马科夫过程,所以对于一幅图像:(一阶马科夫系数p为两点的欧氏距离)

       (5)

         (6)

简化模型后,(6)式中一阶马科夫系数满足

                    (7)

然后可以进行如下推理:

        (8)

                     (9)

进行一阶泰勒展开:得到(10)

         (10)

     (11)

最终就是为了得到R-D值和距离平方正相关。下图进一步通过实验,验证了CU块内所有点MV的方差和该CU块的Cost的正相关性

    (12)

然后如上图和公式12就是计算一个CU的特征,左边为当前CU,右边是分成4个子CU,mx是像素级的运动矢量

           

然后上图验证了A 、B两个CU的PA和PB之间相似度和A、B的CU是否划分相同的概率,表名通过判断PA和PB像素来决定CU是否划分的可行性。其中PA和PB相似度ndist如下:

    (13)

kNN决策就是从已编码的CU块中,找到k个和当前块PMD最想的,然后用下面策略进行决策:

       (14)

进行kNN判断相似度时,除了(13)外,还可以用下面(15)

(15)

Lu是k个最近邻CU中决策为unsplit的个数,Ls是k个最近邻CU中决策为split的个数。Unsure表示按照正常的CU划分策略进行决策。

算法流程:

         实际算法流程如下:

首先对图像进行下采样(为了减少Optical Flow Estimation的时间,选择x/4,y/4是为了保证每个TU块中有一个像素参与);

然后通过Optical Flow Estimation算法,得到每个下采样之后的像素点的MV;

对每个CU块,计算PMD特征

根据kNN准则,预测是否spliting。

说明:

Previous Coded CU是一个FIFO队列,存储已经编码的CU块的PMD特征和最终的CU是否划分的判决,kNN决策时,根据FIFO队列和当前块PMD特征最近的k个,如果全是spliting,则当前块split;如果全是not-spliting,则当前块not-spliting。

实验结果:

环境:HM9.0,kNN的k=5,FIFO队列大小300。表格显示了时间、码率和质量的变化。最后一列是下采样优化的Flow Estimation花费时间所占总体时间的比例。下图不同点表示不同的k值对码率、时间的影响。

【HEVC帧间预测论文】P1.6 A Fast HEVC Inter CU Selection Method Based on Pyramid Motion Divergence的更多相关文章

  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.8 Complexity Control of High Efficiency Video Encoders for Power-Constrained Devices

    参考:Complexity Control of High Efficiency Video Encoders for Power-Constrained Devices <HEVC标准介绍.H ...

  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.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 ...

  5. 【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 ...

  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. 一步一步学Silverlight 2系列(7):全屏模式支持

    一步一步学Silverlight 2系列(7):全屏模式支持   概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言V ...

  2. hel软工网络16个人作业1

    1Task1:注册个人博客账号 1Task2:注册码云账号 1Task3:提出问题 3.1问题一:软件工程是什么? 在第一章中我们可以从P8得到: 1.软件工程就是把系统的.有序的.可量化的方法应用到 ...

  3. BZOJ_2683_简单题&&BZOJ_1176_[Balkan2007]Mokia_CDQ分治+树状数组

    BZOJ_2683_简单题&&BZOJ_1176_[Balkan2007]Mokia_CDQ分治+树状数组 Description 维护一个W*W的矩阵,初始值均为S.每次操作可以增加 ...

  4. 「LuoguP2014」 选课

    Description 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课,每门课有个学 ...

  5. Python的多进程锁的使用

    很多时候,我们需要在多个进程中同时写一个文件,如果不加锁机制,就会导致写文件错乱 这个时候,我们可以使用multiprocessing.Lock() 我一开始是这样使用的: import multip ...

  6. 纳尼,Java 存在内存泄泄泄泄泄泄漏吗?

    01. 怎么回事? 纳尼,Java 不是自动管理内存吗?怎么可能会出现内存泄泄泄泄泄泄漏! Java 最牛逼的一个特性就是垃圾回收机制,不用像 C++ 需要手动管理内存,所以作为 Java 程序员很幸 ...

  7. POJ1017 【据说是贪心...】

    题意: 有6种面积的格子,给出这些格子的数量,然后有6*6的格子去容纳这6种面基,问最少需要几个6*6格子,使得所有类型的小格子被容纳. 思路: 按照面积的从大到小放. 一开始还是太天真,还要用各种1 ...

  8. poj1564

    dfs判重 #include<stdio.h> #include<iostream> #include<cstdio> #include<queue> ...

  9. jzoj5980. 【WC2019模拟12.27】字符串游戏

    首先发现双方可以有一个默契,不管谁刻意,都可以把串变为诸如\(...101010101...\)的形式 所以先手要赢的话就是要在上面的基础之上加一个字符使其变为要求的子串 那么就是要求的子串中相邻两个 ...

  10. 力荐!35 个最好用的 Vue 开源库!

    无论是开发新手还是经验丰富的老手,我们都喜欢开源软件包.对于开发者来说,如果没有这些开源软件包,很难想象我们的生活会变得多么疲惫不堪,而且靠咖啡度日也会成为家常便饭.所幸的是,随着 Vue.js 和 ...