目录
未经过压缩的视频数据量非常大,存储困难,同时也不便于在网络中传输。
以数字电视一秒钟的数据量为例,观看一秒钟数字电视需要等待9秒钟。
数据量约1113KB,如果按照1M传输带宽计算,比特率是9123840,大约需要9秒钟
FPS | Size | Bits/pixel | Bit-rate(bps) | File Size(KB) |
---|---|---|---|---|
30 | 176 * 144 | 12 | 9,123,840 | 1113 |
IPhone6 16G手机,最多只能存储50秒视频。
拍摄10秒钟视频,未经压缩的数据量是2.4G,16G的IPhone6除去系统占用的部分,剩下的存储空间最多是12G
FPS | Size | Bits/pixel | Bit-rate(Mbps) | File Size(MB) | Compressed Size(MB) | Compress-rate(H.264) |
---|---|---|---|---|---|---|
30 | 1920 * 1080 | 32 | 1990 | 2488 | 25 | 100:1 |
要解决视频存储难、传输难的问题,综合考虑软硬件成本,最有效的办法应该是压缩视频体积!
答案是肯定的,因为原始视频包含大量的冗余信息,比如:人的视觉系统有一些先天的特性,对某些细节不敏感。所以从理论上分析,基于人的视觉特性去掉视频冗余信息既可以保证视频质量又可以压缩视频体积。除此之外视频还有很多其他冗余信息可以去除,接下来我们详细介绍一下视频冗余信息。
原始视频至少存在5个方面的信息冗余:空间冗余、时间冗余、编码冗余、视觉冗余、知识冗余,接下来详细讲解一下这5个方面的冗余。
由图可知,在颜色接近的色块区域,相邻像素是非常接近的有较强的相关性,这部分信息其实是冗余的,下文将的条、块编码就是去除这种空间冗余数据。
视频一般由时间轴区间内一组连续画面组成,其中的相邻帧往往包含相同的背景和移动物体,只不过移动物体所在的空间位置略有不同,所以后一帧的数据与前一帧的数据有许多共同的地方,这就称为时间冗余。 如下图所示,或许只有人的嘴巴和手在动,其他大部分的像素都是没有变化的。
先介绍一下等长编码和变长编码的概念
等长码:在一组码字集合C中的所有码字cm (m = 1,2, …,M),其码长都相同,则称这组码C为等长码。
变长码:若码字集合C中的所有码字cm (m = 1,2, …,M),其码长不都相同,称码C为变长码。
【例】设待压缩的数据文件共有100个字符,这些字符均取自字符集C={a,b,c,d,e,f},分别使用等长、变长编码方案对比优劣。
等长编码方案
等长编码需要三位二进制数字来表示六个字符,因此,整个文件的编码长度为300bits。
变长编码方案
变长编码方案将采用Huffman编码,通过码字出现的频率高低构造一个Huffman树,频度高的字符编码设置短,将频度低的字符编码设置较长。
字符 | a | b | c | d | e | f |
---|---|---|---|---|---|---|
频率(次) | 45 | 13 | 12 | 16 | 9 | 5 |
概率 | 0.45 | 0.13 | 0.12 | 0.16 | 0.09 | 0.05 |
变长码字 | 0 | 101 | 100 | 111 | 1101 | 1100 |
定长码字 | 000 | 001 | 010 | 011 | 100 | 101 |
根据计算公式:451+133+123+163+9*4+584=224 整个文件被编码为224bits,比定长编码方式节约了约25%的存储空间。
由此可知,在图像编码中,不同的像素值出现的概率不同,采用定长编码相对变长编码需要更多的存储空间,这一部分冗余就称之为编码冗余。
视觉冗余:人的视觉系统对某些细节不敏感
在介绍视觉冗余之前先来介绍一下人类视觉系统(Human Visual System,简称HVS)的几个特性:
由于人类视觉系统的先天特性,原始图像中有一些数据是人眼感知不到的,在图像压缩过程中可以去掉,在图像恢复后不会影响图像的主观质量,这部分数据就是视觉冗余。例如,人类视觉的一般分辨能力为2的6次方(64)灰度等级,而一般的图像的量化采用的是2的8次方(256)灰度等级,即存在视觉冗余。
知识冗余:规律性的结构可由先验知识和背景知识得到
有许多图像的理解与某些基础知识有相当大的相关性。 例如:人脸的图像有固定的结构,嘴的上方有鼻子。鼻子的上方有眼睛,鼻子位于正脸图像的中线上等等。这类规律 性的结构可由先验知识相背景知识得到,我们称此类冗余为知识冗余。
视频中每帧代表一幅静止的图像,而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的。简单地说,I帧是关键帧,属于帧内压缩。就是和AVI的压缩是一样的。 P是向前搜索的意思。B是双向搜索。他们都是基于I帧来压缩数据。
I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成,因为包含完整画面。
P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据。
B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别,换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累。
视频的二进制码流有一个固定的组织结构,从上到下层依次是:序列层、图像组层、图像层、条带层、宏块层、块层。
序列编码
序列:一段连续编码的并具有相同参数的视频图像。 序列起始码:专有的一段比特串,标识一个序列的压缩数据的开始MPEG-2的序列起始码为十六进制数000001(B3)。 序列头:记录序列信息档次(Profile),级别(Level),宽度,高度,是否是逐行序列,帧率等。 序列结束码:专有的一段比特串,标识该序列的压缩数据的结束,MPEG-2的序列结束码为十六进制数000001(B7)。
图像组编码
图像编码
图像分块编码
条带编码
宏块编码
块编码
预测
通过时间预测、空间预测技术,去除视频中存在的时间冗余和空间冗余,达到压缩的目的。
空间预测
利用图像空间相邻像素的相关性来预测的方法,关键技术是帧内预测技术和Intra图像编码(I帧)
帧内预测:利用当前编码块周围已经重构出来的像素预测当前块
时间预测
利用时间上相邻图像的相关性来预测的方法,关键技术是帧间预测和Inter图像编码。
帧间预测:运动估计(Motion Estimation,ME),运动补偿(Motion Compensation,MC)
运动估计:
搜索算法:
运动补偿:
Inter图像编码:
前向预测编码图像(P帧)
双向预测编码图像(B帧)
变换
视频编码中常见的变换类型有:K-L变换、傅里叶变换、余弦变换、小波变换。
我们以傅立叶变换为例子来讲述一下变换的实现原理。关于傅立叶变换,可以用果汁牛奶打一个比方:
所谓“变换”,就是换个领域看问题(A Change Of Perspective),将某种情况下不易分析处理的领域换成易分析处理的领域。
接下来用一张gif图来展示一下傅立叶变换的过程
从上图可以看出:
傅立叶变换只是分离信号方法中的一种(靠频率分离),由此可以想到傅立叶变换的一些应用有:
DCT(Discrete Cosine Transform),又叫离散余弦变换,是与傅里叶变换相关的一种变换,类似于离散傅里叶变换,但是只使用实数,经常用于信号和图像数据的压缩。经过DCT变换后的数据能量非常集中,一般只有左上角的数值是非零的,也就是能量都集中在离散余弦变换后的直流和低频部分。能量集中是DCT最显著的特征,如下图:
接下来我们看一组用MATLAB进行DCT变换的实验数据
将图像整分成8*8的块进行DCT变换,其中一个小分块变换后的系数分布。
整个图像的DCT系数
保留左上三个单位系数,还原图像。
mask1=
[1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0];%保留3个
量化
量化的基本思想:
量化的策略和模型直接影响图像还原后的质量,举例说明:
采用两个量化区间用1bit表示
采用四个量化区间用2bit表示
扫描
将二维数据转换为一维的数据序列
**编码 用一句话概括就是,把信源用二进制表示。** 在视频编解码领域用到比较多的有:Huffman编码、行程编码、游程编码、二值算术编码、字典编码、等等…..
以大名鼎鼎的Huffman编码为例:
VCEG (Video Coding Experts Group):视频编码专家组,属于ITU-T (Telecommunication)即电信标准化部门的Study Group 16/Question 6 (ITU-T SG16/Q.6)
VCEG制订标准:
MPEG(Moving Picture Experts Group,动态图像专家组)是ISO(International Standardization Organization,国际标准化组织)与IEC(International Electrotechnical Commission,国际电工委员会)于1988年成立的专门针对运动图像和语音压缩制定国际标准的组织。
MPEG制订标准:
所谓封装格式就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中,这个文件也就相当于一个容器。采用不同的方式把视频编码和音频编码打包成一个完整的多媒体文件,也就出现了不同的后缀。
常见的封装格式:
常见的音视频组合方式:
封装容器 视频编码格式 音频编码格式
封装容器 | 视频编码格式 | 音频编码格式 |
---|---|---|
AVI | Xvid | MP3 |
AVI | Divx | MP3 |
MKV | Xvid | MP3 |
MKV | Xvid | AAC |
MKV | H264 | AAC |
MP4 | Xvid | MP3 |
MP4 | H264 | AAC |
3GP | H.263 | AAC |
将人的视觉特性用数学方法描述并用于视频质量评价的方式,结合了主观质量评价和客观质量评价两方面优点。
常用方法:结构相似度(Structural SIMilarity,SSIM)方法,是一种用以衡量两张数字影像相似程度的指标。当两张影像其中一张为无失真影像,另一张为失真后的影像,二者的结构相似性可以看成是失真影像的影像品质衡量指标。
An Intuitive Guide To The Fourier Transform