随着科学技术的发展,人们的业余生活越来越丰富,个人对生活品质的要求也越来越高。卓别林的时代,无声的黑白电影都可以让人津津乐道,发展至今,1080P的画质都已经慢慢落伍了。2K、4K、3D的视频正在慢慢渗透,这些需求又反过来倒逼技术的发展。
从本质上来说,视频就是一种彩色像素点的三维排列。其中两个维度反映画面在空间上(水平和垂直)的运动方向,另一维度则反映时间域。数据帧是指某一时间点下的一组像素点。简单说,一帧就是一副静止画面。综合分析目前的视频压缩算法,基本都采用了如下几个法典:
·色域转换,利用人眼的感官特征,减少非敏感的数据量。
·帧内预测,利用相邻像素的相似性,减少空间冗余。
·帧间预测,利用连续图像的相似性,减少时间冗余。
·频域转换,利用图像的特征,将无排列规律的时域信息转换成有规律的频域信息。
·量化,在基本不伤害人眼的主观感受的前提下,牺牲部分细节数据。
·编码,利用统计规律用短码字表示常见信息,减少传输的数据量。
1.色域转换
三基色(红绿蓝、RGB)是我们最早接触到的颜色空间的概念,利用红绿蓝这三种颜色可以组合出人眼能看到的各种颜色。RGB颜色空间能够直观的展示物体的颜色,但由于这三种分量的重要性一致,不利用视频压缩。
目前各大压缩算法多采用YUV颜色空间,利用人眼对亮度更加敏感的特征,可以适当减少色度分量(UV)的传输,譬如YUV420,从而在不降低人眼主观感受的前提下,充分减少原始数据量。
譬如一帧1080P的图像,如果用RGB颜色空间,一帧原始数据量为1920×1080×3Byte,总计5.93MB。而采用YUV420颜色空间,一帧的数据量将为1920×1080×1.5Byte,合计2.97MB。直接少掉一半的数据量。
2.帧内预测
一帧图像由一个一个像素点组成,这些像素点就像一个家族、一个部落,彼此之间存在各种各样的关系。就一幅画面而言,每个相邻的像素点都具有一定的相似性,我们用宏块边缘的像素点对当前宏块进行预测,往往能得到差不多的效果。(www.xing528.com)
帧内预测就利用了这些特点,将原先像素点的传输改为残差值的预测,传输的数据量大大减少。早期的静态图像压缩算法多采用了这种方式,譬如我们熟悉的JPEG。
3.帧间预测
帧间预测比帧内预测更近了一步,将像素的代际关系加入到考虑当中。利用时间上连续画面的相关性,将预测值变得更加精准,残差值更小,从而降低输出的数据量。
想象一段足球射门的画面,不同的画面主要是运动员动作和足球轨迹的区别,如果我们能够精确的描述运动员和足球的运动向量,利用前一帧加运动向量的方式,我们将得到媲美原bit。
4.频域转换
前面的帧内预测、帧间预测充分利用了像素之间的代际关系,利用时间和空间的相似性来得到比较精确的预测值,进而补充传输残差值。
频域转换就可以看作是对像素点的DNA分析,用DNA来寻找一个家族的内在共同点。前面提到像素点之间存在一定的相似性,点与点、帧与帧之间的变换往往是平滑的,在时域上会看到差不大的残差值,但是残差值的数量还是比较客观的,仍然不适合压缩处理。频域转换将时域的残差值转变为频域残差值,大部分的数据就会集中到低频部分,高频部分多数会变得很小,甚至为0。
5.量化
前面从像素的代际关系、DNA深层分析讲述了帧内预测、帧间预测以及频域转换在视频压缩中的作用。那么,量化就好比一把DNA手术刀,将那些不重要的基因变异剔除掉。
具体来说,频域转换之后的数据都集中在低频部分,高频会有少部分的小数据,经过量化这些小的扰动数据就会被滤掉,进而变成0,减少后续编码的数据量。
6.编码
经过前面的色域转换、帧内预测、帧间预测、频域转换和量化这些步骤处理之后,需要传输的数据量大大减少。那么编码阶段就好比对数据的精加工,利用这些数据继承的依赖关系来进一步降低传输的数据量,基本的思想就是利用短码字传输高概率的信息,利用长码字传输低概率的信息,从而进一步降低传输的数据量。
视频从最初的模拟电视(CVBS)发展到如今的各种高清电影、电视剧,人类在为了满足自己推动视频压缩算法的一次又一次的进步,从最初的M—JPEG、MPEG—1/H.261,MPEG—2/H.263一直发展到H.264/AVC。随着手机、电视、虚拟现实的发展,更大分辨率、更高帧频的视频需求也越来越强烈,H.264/AVC越来越难满足人类的口味,H.265/HEVC应运而生。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。