接触H265时间不是很长,看了一些东西,但是一直没有时间静下心来整理。H265的学习主要是参考万帅、杨付正的《新一代高效视频编码 H265/HEVC 原理、标准与实现》移书,这本书对H265有详细易懂的讲解,作为入门教材真心觉得不错。这里会先把前期看的东西记录下来,后续会不断的补充。HEVC学习系列的文章也算是对自己学习H265做的笔记吧。

H265/HEVC仍旧沿用了H264的混合编码框架,但是在变换、量化、熵编码、帧内预测、帧间预测以及环路滤波等模块中都引入了新的编码技术。H265/HEVC的编码框架如图:

在编码流程上依次为  分块---->预测---->变换---->量化---->熵编码

1. 帧内预测

主要是去除图像空间相关性。与H264相比,H265/HEVC支持更多的帧内预测模式,H264亮度4X4块支持9种方向,8X8块支持9种方向,16X16支持4中方向,色度支持4种方向;H265/HEVC所有尺寸编码块,亮度支持多达35种预测方向,测度也支持5种预测方向。

2. 帧间预测

主要是去除图像的时间相关性。与H264相同,H265/HEVC可以采用单向和双向的参考图像来进行预测,也有类似H264的B帧结构。但是H265在H264的基础上增加了插值的抽头系数个数,改变抽头系数值以及增加运动矢量预测值得候选个数,最终减少预测残差。H265增加了运动矢量预测值候选的个数,而相应的H264预测值则只有一个。

3. 变换量化

主要是对参差数据进行变换量化,从而去除频域相关性,对数据进行有损压缩。变换编码将图像从时域信号变换至频域,能量集中在低频区域。原理上两者是属于相互独立的过程,但是在H265/HEVC中两个过程结合在一起了,减少了计算复杂度。

4. 样点自适应补偿

简称SAO,处于去方块滤波之后,通过解析去方块滤波后图像的统计特性,为像素增加相应的偏移值,一定程度上可以消弱振铃效应。位于Deblock之后,做法是通过对重建图像的分类,对每一类图像像素值加减一个偏移。

除了上面提到的采样点自适应补偿、不同角度的帧内预测模式H265/HEVC还有很多新的技术,包括基于四叉树的灵活块分割结构(RQT)、内部位深度扩展(IBDI).

HEVC学习之一编码框架的更多相关文章

  1. [源码解析] 深度学习分布式训练框架 horovod (15) --- 广播 & 通知

    [源码解析] 深度学习分布式训练框架 horovod (15) --- 广播 & 通知 目录 [源码解析] 深度学习分布式训练框架 horovod (15) --- 广播 & 通知 0 ...

  2. Java并发包源码学习之AQS框架(四)AbstractQueuedSynchronizer源码分析

    经过前面几篇文章的铺垫,今天我们终于要看看AQS的庐山真面目了,建议第一次看AbstractQueuedSynchronizer 类源码的朋友可以先看下我前面几篇文章: <Java并发包源码学习 ...

  3. Java并发包源码学习之AQS框架(三)LockSupport和interrupt

    接着上一篇文章今天我们来介绍下LockSupport和Java中线程的中断(interrupt). 其实除了LockSupport,Java之初就有Object对象的wait和notify方法可以实现 ...

  4. Java并发包源码学习之AQS框架(一)概述

    AQS其实就是java.util.concurrent.locks.AbstractQueuedSynchronizer这个类. 阅读Java的并发包源码你会发现这个类是整个java.util.con ...

  5. Yaf零基础学习总结2-Yaf框架的安装

    接着上一篇文章<Yaf零基础学习总结1-Yaf框架简介>我们对Yaf框架有那么一个大概的了解了,但是对于程序员来说,那些文字都是表面的,他们最想的就是开始敲代码了.当然这也是学习Yaf框架 ...

  6. golang学习之beego框架配合easyui实现增删改查及图片上传

    golang学习之beego框架配合easyui实现增删改查及图片上传 demo目录: upload文件夹主要放置上传的头像文件,main是主文件,所有效果如下: 主页面: 具体代码: <!DO ...

  7. (转) 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ

    特别棒的一篇文章,仍不住转一下,留着以后需要时阅读 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ

  8. java web 学习笔记 编码问题总结

       java web 学习笔记 编码问题总结 1.非form表单中提交的中文参数---------------------------传递给Servlet服务器时,默认以iso-8859-1解码 ...

  9. 对比深度学习十大框架:TensorFlow 并非最好?

    http://www.oschina.net/news/80593/deep-learning-frameworks-a-review-before-finishing-2016 TensorFlow ...

随机推荐

  1. 最小生成树——kruskal算法

    kruskal和prim都是解决最小生成树问题,都是选取最小边,但kruskal是通过对所有边按从小到大的顺序排过一次序之后,配合并查集实现的.我们取出一条边,判断如果它的始点和终点属于同一棵树,那么 ...

  2. JavaScript模块化编程

    为什么模块化很重要?因为有了模块,我们就可以更方便的使用别人的代码,想要什么功能,就加载什么模块. 万事都有规矩,就是规范化! 目前,通行的Javascript模块规范有两种: CommonJS和AM ...

  3. PullToRefreshGridView刷新加载

    <com.handmark.pulltorefresh.library.PullToRefreshGridView        xmlns:ptr="http://schemas.a ...

  4. HTTP Code

    所有 HTTP 状态代码及其定义. 代码  指示  2xx  成功  200  正常:请求已完成.  201  正常:紧接 POST 命令.  202  正常:已接受用于处理,但处理尚未完成.  20 ...

  5. Servlet执行流程和生命周期【慕课网搬】

    Servlet执行流程(GET方式为例) 首先用户客户端浏览器发出Get方式(点击超链接方式)向浏览器发出请求. 服务器接收到客户端点击超链接,接收到GET请求之后,服务器到WEB.xml中<s ...

  6. Nginx-解读内置非默认模块 ngx_http_stub_status_module

    1.Background ngx_http_stub_status_module 是一个 Nginx 的内置 HTTP 模块,该模块可以提供 Nginx 的状态信息.默认情况下这个模块是不被编译进来的 ...

  7. web跨域访问,session丢失的问题

    web跨域访问,session丢失的问题25 http://www.iteye.com/problems/71265 http://www.iteye.com/topic/264079 具体情况如下: ...

  8. GDB详解

    1 简介 2 生成调试信息 3 启动GDB 的方法 4 程序运行上下文 4.1 程序运行参数 4.2 工作目录 4.3 程序的输入输出 5 设置断点 5.1 简单断点 5.2 多文件设置断点 5.3 ...

  9. MyBatis入门学习教程-优化MyBatis配置文件中的配置

    一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: 1 <?xml version=" ...

  10. Lab_7_Automating_v2.5

    System Operations - Lab 7: Automating Deployments with CloudFormation - 2.5 ======================== ...