4,视频压缩的基本原理,一些常见压缩算法的概念

本身的这个笔记,废了很久,仍是要坚持写下去,虽然如今看来,质量不过高,并且不少东西貌似没有说到位,只有本身才看得懂,明显不是技术普及的方式。算法

先说基本原理,这个基本就是抄书了,由于不是作科研的,不少东西都是人们用了不少年才逐渐总结出来的。学习

对于算法研究而言,自己就是要先知道哪一个地方能够努力,哪些地方行不通。这些原理,就是指明方向的。编码

一.视频压缩的可行性spa

1.空间冗余视频

一幅静态图像,好比人脸。背景,人脸,头发等处的亮度,颜色,都是平缓变化的。相邻的像素和色度信号值比较接近。具备强相关性,若是直接用采样数来表示亮度和色度信息,数据中存在较多的空间冗余。若是先去除冗余数据再编码,表示每一个像素的平均比特数就会降低,这就是一般说的图像的帧内编码,即以减小空间冗余进行数据压缩。数学

2.时间冗余it

视频是时间轴方向的帧图像序列,相邻帧图像的相关性也很强。一般用下降帧间的方法来减小时间冗余。采用运动估计和运动补偿的技术知足解码重建图像的质量要求。原理

3.符号冗余方法

用相同码表示几率不一样的符号,会形成比特数的浪费。好比10,11,13三个数,若是咱们都用1bytes来表示,就是3bytes(即3×8 = 24bits),可是若是咱们表00b表示10,01b表示11,02b表示13,这样,三个数合起来才用了6bits,较以前能够节省18bits。技术

可变长编码技术的原理就如此,概论大的用较短的码字,几率小的用较长的码字。

4.结构冗余

对于图像内部,各个部分也存在某种关系。咱们能够经过这种关系,减小信息的码字表达。好比:分形图像编码

5.视觉冗余

1),人眼对彩色信号的亮度分辨率高于色彩分辨率,好比rgb-->yuv就是这个原理

2),人眼对静止图像的空间的分辨率大于运动图像的分辨率。

3),人眼对亮度的细小变化不敏感

4),中心敏感,四周不敏感。

其实咱们虽然知道了这些,咱们知道有冗余,可是如何把这些冗余找出来,是个很复杂的过程。也是咱们的算法不断追求的过程。

上面的一段,是全部视频压缩标准的基石。mpeg2,mpeg4,h264,h265这些标准,与其说他们是标准,不如他们提供了一些算法的组合,或简单或复杂,固然简单的算法压缩掉的冗余小,复杂的压缩掉的冗余大。经过算法找到冗余信息在哪,而后压缩掉,实现数据量的减少。这就是咱们的目录。

更近一步的说,就是咱们如何找出数据的相关性

二,常见算法的名词解释

大的分类有两种,一个变换,一个是编码。

先说变换

咱们要找出信号的相关性,时间上很差找怎么办,变换到另一个空间上去。这就是咱们在信号与系统,数字信号处理,高等数学获得的结论

变换

傅里叶变换

walsh-hadamard(沃尔什哈达玛变换)

正弦变换

余弦变换----应用最广

斜变换

哈尔变换

k-L变换

小波变换

对于这些变换来讲,不少东西只在数学上有意义,对于工程来讲,或者没有快速算法,或者变换后相关性比较低,或者其余缘由。只有余弦变换是最最普遍的,为了减少咱们的学习压力(固然若是你是要对比其中的差别的另当别论),咱们只掌握余弦变换就能够了。

编码

又分无失真编码与限失真编码,从名字上咱们就能够看出差别了。呵呵,很少解释

无失真编码的种类:

哈夫曼编码,算术编码,游程编码

限失真编码

预测编码,变换编码,矢量量化,基于模型的编码。

对于编码这块,上述的算法,基本要所有掌握才行。

jpeg/mpeg2先用了游程编码减少的0这个数占用的比特位,而后用了哈夫曼压缩。

h264用了算术编码来作最后一道压缩工序

运动补偿与运动估计,用到预测编码。

mpeg4用到了基于模型的编码

变换完成后,进行了矢量量化。

相关文章
相关标签/搜索