1700506830
1700506831
圆心坐标(x, y),圆的半径r,圆的颜色RGB。从理论上说,在64位计算机操作系统中,用48字节就能把这个圆的信息描述完成,对立方体则描述顶点位置与颜色即可。如果想将图形放大,也是没有限制的,放大过程中不会产生锯齿效果(看看后面关于标量图的介绍就能知道区别了)——这种描述是一种“连续型”的描述,可以“延展”而不失真。
1700506832
1700506833
矢量图当然也有局限性,那就是当文件中描述的图形比较细碎的时候,描述起来就比较困难(因为对每个对象都要声明其颜色、形状、轮廓、大小和位置等属性)。很明显,用矢量图描述简单的图标或图形对象信息还是比较方便的,而对于人眼能够识别的曲度、颜色等极为丰富的图形信息则变得极为不便。
1700506834
1700506835
(2)标量图
1700506836
1700506837
一般来说,人们在记录(例如摄影照片、大幅面不规则且色彩丰富的画面信息)的时候会使用标量图。比较早的标量图就是微软在Windows中使用的 .bmp后缀的BITMAP格式。在局部放大以后,我们能明显看到其中有锯齿的效果,原因在于这种文件内容的描述方式是基于像素单位的离散描述(如图9-13和图9-14所示)。
1700506838
1700506839
1700506840
1700506841
图9-13 150×150的位图文件 图9-14 150×150的位图文件的锯齿效果 这种格式的描述是:在一个平面直角坐标系中,以左上角为点(0, 0),向右为x轴正方向,向下为y轴正方向,每一个点都用一个24位的RGB通道来描述,那么这个BMP文件的大小应该是:
1700506842
1700506843
1700506844
1700506845
1700506846
67500字节,也就是67.5KB。加上文件描述等额外开销,这个文件实际占用了67854字节。将它保存成 .JPG格式以后,文件的占用空间明显变小了(如图9-15所示)。文件的大小缩小到5401字节,仅为原来的7.96%,而像素数仍旧是150×150,这一点没有变化(如图9-16所示)。既然我们已经有了无损压缩的思路,那么从这个文件的特点上也能看出一些端倪。大量的白色信息恰恰是一种字符串高频度冗余,所以使用字符串压缩的算法也能够对刚才这个.BMP文件进行无损压缩。不过,.JPG格式是怎么做到的呢?应该说,这种有损压缩更为高明。
1700506847
1700506848
1700506849
1700506850
图9-15 .BMP文件占用的空间 图9-16 .JPG文件占用的空间 与MP3压缩的思路一样,JPEG(6)在对数字图片进行压缩的过程中也对人类感知进行了研究,发现人眼对颜色中亮度变换的敏感度比对色彩变换的敏感度高很多,于是就尝试着在编码中用角度的数据空间对亮度进行描述。所以,JPEG中对颜色的描述其实不是RGB三通道方式,而是YCbCr颜色空间方式,转换公式如下:
1700506851
1700506852
1700506853
1700506854
1700506855
对应的逆运算也能得到:
1700506856
1700506857
1700506858
1700506859
1700506860
这里没有什么技巧,只是三元一次方程组的运算。下一步的采样比较重要。
1700506861
1700506862
目前主要的采样格式有YCbCr 4∶2∶0、YCbCr 4∶2∶2、YCbCr 4∶1∶1和YCbCr 4∶4∶4,几种标准的名称分别是YUV420、YUV422、YUV411、YUV444(7),其中YUV411比较常用。
1700506863
1700506864
以YUV411为例,每个点保存一个8位的亮度值(也就是Y值),每2×2个点保存一个Cb和Cr值,图像在肉眼中的感觉不会有太大的变化。所以,理论上使用RGB模型每个点需要24位来描述,而使用YUV411仅需要12位。这种方法从抽样环节开始就进行了有损压缩,损失的部分是人眼相对不敏感的色彩变换信息。
1700506865
1700506866
下面就是进行DCT变换,即离散余弦变换(Discrete Cosine Transform)。DCT是指将一组光强描述数据转换成光谱频率描述数据。这个地方非常有意思。
1700506867
1700506868
1700506869
1700506870
1700506871
其中,x和y代表图形数据矩阵某点的坐标,u和v是奇函数频率域中的坐标——相当于傅里叶变换中的ω;N是块大小,习惯上取8,也就是在8×8的空间里进行离散余弦变换。这种思想实际上可以认为是把音频信号中的f(t)迁移到二维离散空间来使用。变换完成后,每个波形利用无限多的不同周期的余弦波叠加而成的性质可以用来做周期的取舍,优先处理低频分量,通过舍弃高频分量来牺牲对于波形还原的精度。
1700506872
1700506873
这种变换完成之后,在一个8×8的矩阵中,有64个点的信息表示64个不同的波的振幅信息,低频分量的信息都集中在左上角的(0, 0)点,而向右向下,高频分量的信息增加,在(7, 7)点集中了所有的高频信息(如图9-17所示)。
1700506874
1700506875
1700506876
1700506877
1700506878
图9-17 DCT变换中的基函数
1700506879
[
上一页 ]
[ :1.70050683e+09 ]
[
下一页 ]