接触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. tomcat 7.0 之文件配置

  2. 统计Apache或Nginx访问日志里的独立IP访问数量的Shell

    1.把IP数量直接输出显示: cat access_log_2011_06_26.log |awk '{print $1}'|uniq -c|wc -l 2.把IP数量输出到文本显示: cat acc ...

  3. Delphi常用关键字用法详解

    本文详细介绍了Delphi中常用的各个关键字名称及用法,供大家在编程过程中借鉴参考之用.详情如下: absolute: ? 1 2 3 4 5 6 7 8 9 10 //它使得你能够创建一个新变量, ...

  4. C/C++中const的用法 分类: C/C++ 2015-07-05 00:43 85人阅读 评论(0) 收藏

    const是C语言的关键字,经C++进行扩充,变得功能强大,用法复杂.const用于定义一个常变量(只读变量),当const与指针,引用,函数等结合起来使用时,情况会变得复杂的多.下面将从五个方面总结 ...

  5. Android学习十一:高德地图使用

    写这篇文章主要有三个目的: 1.使用高德地图api定位 2.获取天气数据 3.编程练手 文件结构 清单文件信息说明: <?xml version="1.0" encoding ...

  6. iscsi与multipath

    2016-10-01/21:07:24 http://www.cnblogs.com/wuchanming/p/4019660.htmlhttp://czmmiao.iteye.com/blog/20 ...

  7. mysqlbinlog 导出日志

    1.找到日志所在的位置 ls 正好我需要的日志在000011这个二进制文件里,所以直接执行下面的语句: mysqlbinlog --no-defaults --start-datetime=" ...

  8. Javascript中数组与字典(即map)的使用

    简述: 简单记录一下数据结构Map和数组, 其实在Javascript这种弱类型的脚本语言中,数组同时也就是字典,下面主要就是字典数组的简易使用   代码: 1. 数组中添加map <!DOCT ...

  9. 【linux】 解决linux下vsftp 500 OOPS: cannot change directory:/home/ftp/ 办法

    用FileZilla连接ftp出现错误,500 OOPS: cannot change directory:/home/ftp 原因是CentOS系统安装了SELinux,因为默认下是没有开启FTP的 ...

  10. Ajax服务请求原理 简单总结

    刚开始以为Ajax是一种新的语言,接触之后才知道,ajax是用于服务器交换数据并更新部分网页的Web应用程序的技术. 第一次看到Ajax请求代码时,感觉一脸萌逼,这些代码竟然把后台数据请求过来了,神奇 ...