HEVC学习之一编码框架
接触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学习之一编码框架的更多相关文章
- [源码解析] 深度学习分布式训练框架 horovod (15) --- 广播 & 通知
[源码解析] 深度学习分布式训练框架 horovod (15) --- 广播 & 通知 目录 [源码解析] 深度学习分布式训练框架 horovod (15) --- 广播 & 通知 0 ...
- Java并发包源码学习之AQS框架(四)AbstractQueuedSynchronizer源码分析
经过前面几篇文章的铺垫,今天我们终于要看看AQS的庐山真面目了,建议第一次看AbstractQueuedSynchronizer 类源码的朋友可以先看下我前面几篇文章: <Java并发包源码学习 ...
- Java并发包源码学习之AQS框架(三)LockSupport和interrupt
接着上一篇文章今天我们来介绍下LockSupport和Java中线程的中断(interrupt). 其实除了LockSupport,Java之初就有Object对象的wait和notify方法可以实现 ...
- Java并发包源码学习之AQS框架(一)概述
AQS其实就是java.util.concurrent.locks.AbstractQueuedSynchronizer这个类. 阅读Java的并发包源码你会发现这个类是整个java.util.con ...
- Yaf零基础学习总结2-Yaf框架的安装
接着上一篇文章<Yaf零基础学习总结1-Yaf框架简介>我们对Yaf框架有那么一个大概的了解了,但是对于程序员来说,那些文字都是表面的,他们最想的就是开始敲代码了.当然这也是学习Yaf框架 ...
- golang学习之beego框架配合easyui实现增删改查及图片上传
golang学习之beego框架配合easyui实现增删改查及图片上传 demo目录: upload文件夹主要放置上传的头像文件,main是主文件,所有效果如下: 主页面: 具体代码: <!DO ...
- (转) 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ
特别棒的一篇文章,仍不住转一下,留着以后需要时阅读 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ
- java web 学习笔记 编码问题总结
java web 学习笔记 编码问题总结 1.非form表单中提交的中文参数---------------------------传递给Servlet服务器时,默认以iso-8859-1解码 ...
- 对比深度学习十大框架:TensorFlow 并非最好?
http://www.oschina.net/news/80593/deep-learning-frameworks-a-review-before-finishing-2016 TensorFlow ...
随机推荐
- getElementById,getElementsByName,getElementsByTagName的区别
1.getElementById 作用:一般页面里ID是唯一的,用于准备定为一个元素 语法: document.getElementById(id) 参数:id :必选项为字符串(String) 返回 ...
- Redis和Memcache的区别
Redis和Memcache的区别 总结一: 1.数据类型 redis数据类型丰富,支持set liset等类型 memcache支持简单数据类型,需要客户端自己处理复杂对象 2.持久性 redis支 ...
- winfrom 限制文本框小数点后两位
private void numWeight_KeyPress(object sender, KeyPressEventArgs e) { if (char.IsNumber(e.KeyChar) | ...
- java内存分配--引用
栈内存 对象地址 堆内存 存放属性 public class TestDemo{ public static void main(String args[]){ Person perA =new ...
- 洛谷 P3384 树链剖分(模板题)
题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z 操作2: 格式 ...
- day26 分布式监控系统开发
本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设 ...
- 在Windows上运行InfoPi
一.安装Python Python官网的下载页面: https://www.python.org/downloads/ 请下载Python 3.4或以上版本. (Python 3.5已不再支持Win ...
- 【Unity3D基础教程】给初学者看的Unity教程(四):通过制作Flappy Bird了解Native 2D中的RigidBody2D和Collider2D
作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 在第一篇文章[Unity3D基础教程] ...
- linux开机启动mongodb
方式一(不推荐) ubuntu编辑/etc/rc.local /home/wyt/bin/mongodb-linux-x86_64-ubuntu1404-3.2.8/bin/mongod --dbpa ...
- 使用SPM创建新组件
(前提:已经安装好了spm) 步骤如下: