本章主要介绍一些有关视频编码的概念

时域模型(Temporal Model)

时域模型的作用是去除帧间冗余。如:将第二帧减去第一帧,得到的剩余信息,其能量会远小于第二帧本身。

基于块的运动估计和补偿

运动估计:针对于当前帧的M*N大小的块,在参考帧中寻找与它最相近的块(找相减后剩余能量最小的)。
运动补偿:当前帧的块减去参考帧中匹配的块,得到一个剩余块。
运动向量:上述两个块之间的位移。

宏块(Macroblock)

在多数视频编码标准中(MPEG-1,MPEG-2,MPEG-4 Visual, H.261,H.263,H.264),单帧中的一个16*16(通常的大小)的像素区域被称之为一个宏块。

宏块的编码方式有如下两种:

  • 帧内(intra)编码:比如场景切换的时候,由于邻近帧的内容与当前帧会有较大的差距,因此如果采用残差+运动补偿的编码方式,压缩效率并不会太高,因此直接采用帧内编码。
  • 帧间(inter)编码:即参考邻近帧的相似宏块进行编码,在两帧内容变化不大的情况下能够有效的压缩数据。

宏块的大小

如书中第35页配图,在没有运动补偿的情况下,相邻两帧相见的剩余帧依然会有比较多的能量,加上运动补偿后,剩余能量显著降低。此时随着宏块的变小,剩余能量也会不断地下降,但是越小的宏块意味着越复杂的算法复杂度(需要搜索更多的宏块区域)以及更多的运动向量,因此两者之间是一个相互平衡的关系。

在例如H.264等视频标准中,可以采用自适应的宏块大小。

子像素(Sub-pixel)

搜索宏块时,如果把搜索的基本单位细化到半像素,甚至四分之一像素,或许可以得到更加精确的结果,但是要表示浮点型的运动向量,则需要更多的数据位数。

因此:更精确的运动补偿需要更多的位数对运动向量进行编码,但由于匹配变得更加精确,因此剩余块的编码所需要的位数会降低;反之,不太精确的运动补偿所需要的位数会减少,但是因为匹配也变得不太精确,所以剩余块的编码所需要的位数会增加。这还是一个在两者之间需要平衡的问题。

基于区域的运动补偿

通常自然界中的很多物体都不会是矩形,对特定区域内的像素进行运动补偿有时候会有更好的效果,在MPEG-4 Visual中有支持这方面特性的工具。

图像的预测编码

有DPCM等。

图像的变换编码

这里列出常见的几种

DCT

对图像做DCT变换,得到的DCT洗漱其实对应了不同基底的系数,常见的二维DCT基底在书中48页给出

小波

思想和DCT其实比较类似。二维小波变换将图像变成四个子图像(LL,HL,LH,HH),其中第一个为低频分量,后面三个都是高频分量。

熵编码

用来压缩数据冗余,例如JPEG中使用的是霍夫曼编码。

Chapter 3. Video Coding Concepts的更多相关文章

  1. Overview of the High Efficiency Video Coding (HEVC) Standard阅读笔记

    1.INTRODUCTION High Efficiency Video Coding(HEVC) <-> H.265 MPEG-4 Advanced Video Coding(AVC) ...

  2. Deep Learning-Based Video Coding: A Review and A Case Study

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 1.Abstract: 本文主要介绍的是2015年以来关于深度图像/视频编码的代表性工作,主要可以分为两类:深度编码方案以及基于传统编码方 ...

  3. Chapter 2. Video Formats and Quality

    本章节主要介绍一些视频格式相关的基础知识. 交织(Interlace) 即每一个采样帧采样时隔行采样,奇数行和偶数行交替. YCbCr 人眼视觉系统(Human Visual System, HVS) ...

  4. DeepCoder: A Deep Neural Network Based Video Compression

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Abstract: 在深度学习的最新进展的启发下,我们提出了一种基于卷积神经网络(CNN)的视频压缩框架DeepCoder.我们分别对预测 ...

  5. Chapter 1. Introduce

    前言 本书全名是<H.264 and MPEG-4 Video Compression, Video Coding For Next-generation Multimedia>,作者为 ...

  6. video codec 学习笔记

    一. H.264 (http://www.baike.com/wiki/H264)  三大标准: AVC(Advanced Video Coding,AVC) H.264,同时也是MPEG-4第十部分 ...

  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. Video processing systems and methods

    BACKGROUND The present invention relates to video processing systems. Advances in imaging technology ...

  9. RTP Payload Format for H264 Video

    基础传输结构 rtp中对于h264数据的存储分为两层,分别是 VCL: video coding layer 视频编码层 这是h264中block, macro block 以及 slice级别的定义 ...

随机推荐

  1. 使用java对文件批量重命名

    有时候从网络上下载的电视剧或者动漫,名字上都会被该网站加上前缀或者后缀,如图: 那么处女座的同学就不同意了,不行,我就是想让它按照我的习惯方式命名!但是呢,一个个修改是不是特别麻烦,如果是上百个呢?如 ...

  2. ASP.Net WebAPI与Ajax进行跨域数据交互时Cookies数据的传递

    前言 最近公司项目进行架构调整,由原来的三层架构改进升级到微服务架构(准确的说是服务化,还没完全做到微的程度,颗粒度没那么细),遵循RESTFull规范,使前后端完全分离,实现大前端思想.由于是初次尝 ...

  3. Python beautifulsoup 中文乱码

    在爬百度"今日热点事件排行榜"的时候发现打印在控制台的中文全部显示乱码,开始怀疑控制台的原因导致了乱码,后来输出一个中文,发现显示正常. #-*- coding:utf-8 -*- ...

  4. JSP中include指令和include动作区别

    首先 <%@ include file=” ”%>:为指令元素 <jsp:include page=” ” flush=”true”/>:为 动作元素 先说指令元素: incl ...

  5. PF2.1版本总结,在设计过程中遇到的问题以及技术分享

    在距离上一次的版本发布已经过去4个月的时间,因为个人的能力以及时间有限,所以这次的版本会推迟这么久.可是无论怎样,PF2.1带着自身的完善总算不负所望推出.在这次的版本调整中让我深有体会到了程序设计中 ...

  6. CentOS下SparkR安装部署:hadoop2.7.3+spark2.0.0+scale2.11.8+hive2.1.0

    注:之前本人写了一篇SparkR的安装部署文章:SparkR安装部署及数据分析实例,当时SparkR项目还没正式入主Spark,需要自己下载SparkR安装包,但现在spark已经支持R接口,so更新 ...

  7. [翻译] 编写高性能 .NET 代码--第五章 通用编码与对象设计 -- 类 vs 结构体

    本章介绍了本书其它部分未涉及到的一些编码和设计原则.包含了一些.NET的应用场景,有些不会造成太大危害,有些则会造成明显的问题.剩下的则根据你的使用方法会产生不同的效果.如果要对本章节出现的原则做一个 ...

  8. Java IO流--练习

    1)将若干个Student对象,若干个Teacher对象,写出到d:/0404/a.txt中 2)将该文件中所有Student对象反序列化回来装入List, 所有的Teacher对象反序列化回来转入另 ...

  9. 如何在require中使用VUE

    现在网上抄的沸沸扬扬的VUE看来是个很NB的东西啊,看了一下,确实相对于angular1来说简化了不少东西,性能方面也比angular1要好很多,所以现在用的人越来越多了,于是作为前端,学习一下新东西 ...

  10. wap网站的优化建设

    我们在成功建立wap网站之后,不要觉得一时没有达到自己想要的效果就丢之气之,让其成为垃圾链接,我们既然前期做了大量的工作来建立起来这个网站,一定要坚持耐心的把这个网站培养下去,其实就如同我们栽种一个树 ...