前言
之前整理过的
视频编解码器工作原理
消除视频冗余的方法及原理
视频的压缩是基于图像压缩,本文介绍图像压缩原理
为什么要压缩
一张原始图像(1920x1080),如果每个像素32bit表示(RGBA),那么,图像需要的内存大小
1920x1080x4 = 8294400 Byte
如果考虑视频,那么带宽和存储都不够。
压缩方法
空间冗余
一幅图像表面上各采样点的颜色之间往往存在着空间连贯性,没有细节上的考虑,就可以直接压缩
时间冗余
这种冗余主要针对视频。
运动图像(视频)一般为位于一时间轴区间的一组连续画面,其中的相邻帧往往包含相同的背景和移动物体,只不过移动物体所在的空间位置略有不同,所以后一帧的数据与前一帧的数据有许多共同的地方,这种共同性是由于相邻帧记录了相邻时刻的同一场景画面,所以称为时间冗余。
视觉冗余
多用于实时性很强的情况,如实时监控,对画质要求不一样视觉冗余能压就压
同时,对画面要求高的情况下,如电影要求画质较高,就不能压
人类的视觉系统由于受生理特性的限制,对于图像场的注意是非均匀的,人对细微的颜色差异感觉不明显。
例如,人类视觉的一般分辨能力为26灰度等级,而一般的图像的量化采用的是28灰度等级,即存在视觉冗余。
人类的听觉对某些信号反映不太敏感,使得压缩后再还原有允许范围的变化,人也感觉不出来。
心理视觉冗余与实在的视觉信息相关,它是因人而异的,不同的人对于同一张照片产生的心理视觉冗余是不同的。
去除心理视觉冗余数据必然导致定量信息的损失,并且该视觉信息损失是不可逆转的操作。
就好比一张图像(无法放大)比较小时,人眼是无法直接判断出其分辨率,为了压缩图像的数据量,可以去除一些人眼无法直接观察出的信息,但当其放大时,没有去除心理视觉冗余的图像将和去除心理视觉冗余的图像产生明显差别。
压缩方法
无失真压缩
无失真压缩要求解压以后的数据和原始数据完全一致。解压后得到的数据是原数据的复制,是一种可逆压缩。
无失真压缩法去掉或减少数据中的冗余,恢复时再重新插到数据中,因此是可逆过程
根据目前的技术水平,无损压缩算法一般可以把普通文件的数据压缩到原来的1/2-1/4。一些常用的无损压缩算法有赫夫曼(Huffman)算法和LZW(Lenpel-Ziv & Welch)压缩算法
压缩比例较小,在实际应用场景中意义不大
有失真压缩
解压以后的数据和原始数据不完全一致,是不可逆压缩方式。有失真压缩还原后,不影响信息的表达
例如,图像、视频、音频数据的压缩就可以采用有损压缩方法,因为其中包含的数据往往多于我们的视觉系统和听觉系统所能接收的信息,丢掉一些数据而不至于对声音或者图像所表达的意思产生误解,但可大大提高压缩比。图像、视频、音频数据的压缩比可高达100:1,但人的主观感受仍不会对原始信息产生误解。
预测编码
基本思想是利用已被编码的点的数据值,预测邻近的一个像素点的数据值
以压缩原理分类,此处作为了解,详细学习消除视频冗余的方法及原理
变换编码
基本思想是将图像的光强矩阵变换到系数空间上,然后对系数进行编码压缩
以压缩原理分类,此处作为了解,详细学习消除视频冗余的方法及原理
统计编码
根据信息出现概率的分布特性而进行的压缩编码。比如霍夫曼编码。
以压缩原理分类,此处作为了解,详细学习消除视频冗余的方法及原理
一些常用概念
图像压缩的要素
-
压缩比
压缩前后文件大小之比,越高越好,但受速度、消耗资源等的影响。 -
图像质量
还原后与原图像相比,评估的方法有客观评估和主观评估。 -
压缩与解压缩速度
与压缩方法和压缩编码的算法有关,一般压缩比解压缩计算量大,因而压缩比解压缩慢。
视频压缩中的概念
-
H.264 profile: 图像清晰度的一个标准(可以理解为普通的清晰度,高清的清晰度)
BP(基本的,清晰度最差的,这种编码速度快,压缩比也会高)
MP(中等的,主流的)
HP(高清的,清晰度最好) -
JPEG:用来做图片的,不是视频
-
MOTION JPEG(MJPEG) : 早于H.264的视频压缩标准,过时了
-
H.265 只支持MP
-
码率控制器(RC):
什么是码率?码率就是数据传输时单位时间传送的数据位数。一般我们用的单位是kbps即千位每秒。
通俗一点理解就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件。
但是文件体积与取样率是成正比的,所以几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真。