Chapter 3. Video Coding Concepts
本章主要介绍一些有关视频编码的概念
时域模型(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的更多相关文章
- Overview of the High Efficiency Video Coding (HEVC) Standard阅读笔记
1.INTRODUCTION High Efficiency Video Coding(HEVC) <-> H.265 MPEG-4 Advanced Video Coding(AVC) ...
- Deep Learning-Based Video Coding: A Review and A Case Study
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 1.Abstract: 本文主要介绍的是2015年以来关于深度图像/视频编码的代表性工作,主要可以分为两类:深度编码方案以及基于传统编码方 ...
- Chapter 2. Video Formats and Quality
本章节主要介绍一些视频格式相关的基础知识. 交织(Interlace) 即每一个采样帧采样时隔行采样,奇数行和偶数行交替. YCbCr 人眼视觉系统(Human Visual System, HVS) ...
- DeepCoder: A Deep Neural Network Based Video Compression
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Abstract: 在深度学习的最新进展的启发下,我们提出了一种基于卷积神经网络(CNN)的视频压缩框架DeepCoder.我们分别对预测 ...
- Chapter 1. Introduce
前言 本书全名是<H.264 and MPEG-4 Video Compression, Video Coding For Next-generation Multimedia>,作者为 ...
- video codec 学习笔记
一. H.264 (http://www.baike.com/wiki/H264) 三大标准: AVC(Advanced Video Coding,AVC) H.264,同时也是MPEG-4第十部分 ...
- 【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帧间预测论文笔记>系列博 ...
- Video processing systems and methods
BACKGROUND The present invention relates to video processing systems. Advances in imaging technology ...
- RTP Payload Format for H264 Video
基础传输结构 rtp中对于h264数据的存储分为两层,分别是 VCL: video coding layer 视频编码层 这是h264中block, macro block 以及 slice级别的定义 ...
随机推荐
- Kafka学习-入门
在上一篇kafka简介的基础之上,本篇主要介绍如何快速的运行kafka. 在进行如下配置前,首先要启动Zookeeper. 配置单机kafka 1.进入kafka解压目录 2.启动kafka bin\ ...
- jquery之属性操作
jQuery之属性操作 相信属性这个词对大家都不陌生.今天我就给大家简单地介绍一下JQuery一些属性的操作 属性一共分三大类 一.基本属性 1.attr 2.removeAttr 3.prop 4. ...
- 如何使用.bas文件
1. 确保你安装的是word 2010,打开word文档,,按ALT + F11打开VBE编辑器. 2.点击Normal,右键,在弹出的对话框中选择导入文件. 2. 选择需要使用的脚本的位置,然后点击 ...
- C#反射通过类名的字符串获取生成对应的实例
在.net core 1.1环境下 今天项目中遇到这个问题了,稍微查了一下并没有现成的样例.自己实现了. static void Main(string[] args) { TestGetAssemb ...
- python基础:各种类型的转换
1.str转dict #借助eval,dict str="{"data":"123","result":"ok" ...
- AlertDialog中的EditText不能输入
一.描述 在项目中有碰到使用AlertDialog,给他设置自定义布局,自定义布局中有包含EditText,但是运行起来后发现EditText不能输入文字,没有焦点,一开始还以为是事件拦截掉了,后来试 ...
- 数组的重排序方法reverse()和sort()
js数组中存在两个可以直接用来重排序的方法:reverse()和sort(). reverse()方法比较简单,直接反转数组项的顺序: var arr = [1, 3, 2, 4, 5]; arr.r ...
- 关于关系型数据库(MySQL)的一些概念
主键:关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录, 该属性组就可以成为一个主键,主键不允许为空,主键只能有同一个 外键:如果一个表的某个属性是另一个表的主 ...
- 【AngularJS中的自定义服务service VS factory VS provider】---它们的区别,你知道么?
在介绍AngularJS自定义服务之前,我们先来了解一下AngularJS~ 学过HTML的人都知道,HTML是一门很好的伪静态文本展示设计的声明式语言,但是,要构建WEB应用的话它就显得乏力了. 而 ...
- Plotting trees from Random Forest models with ggraph
Today, I want to show how I use Thomas Lin Pederson's awesome ggraph package to plot decision trees ...