||
能够把简单的问题讲复杂,说明学术水平.能把复杂的问题讲简单,说明实际水平.我试图将图象压缩这个命题写的让所有有高中文化程度的能明白.
1.静图压缩
静态图象压缩的主流是JPEG,简单说JPEG图象压缩编码是将图象顺序取8x8的图象块进行离散余弦变换,按照一定压缩率要求量化,对量化以后的数据进行数据压缩编码,一般是霍夫曼编码,压缩过程就完成了.解码是这个过程的反过程,也就是霍夫曼解码,离散余弦反变换.解压缩过程不可能进行反量化恢复原来的数据,所以恢复的图像是有损失的.
现在我们开始解释静图压缩的实质.
任何连续信号(图象、声音等)都可以用另外一种分解的形式表示,比如一个50赫兹的方波,可以用50赫兹的正弦波,加一点100赫兹的正弦波,再加一点150赫兹,然后200、250等等50赫兹的倍频正弦拨波表示。计算出每个频率需要的幅度,理论上叫傅立叶变换。如果用余弦函数做傅立叶变换就叫做余弦变换,如果将信号数字化,再进行余弦变换,就叫做离散余弦变换。
如果我们只做变换,那么对信号的压缩没有任何意义。压缩的关键在于第二步,量化。所谓量化就是把频率高的那些幅度很小的干脆就不要了。就像我们就用50赫兹的正弦波代替50赫兹的方波。我们总能在只取一个贡献最大的基本频率和把取无限个贡献极小的高频率信号中间取一个折中,这就是量化的本质。我们取的频率数量越少,原来的信号损失就越大,相反我们考虑的频率越多,信号就能更好的还原。当然,量化还包含将对信号贡献大的频率,用比较多的位数表示。这样就建立了一个表,压缩的时候使用这张表,解压缩使用相同的表,来表示使用那些频率表示这个信号,哪个频率用几位表示。
比较重要的是变换表示必须是一个连续信号。而是不是8x8,并不一定。由于算法发明的时候的计算机都是8位,按照8x8比较好构造算法。
霍夫曼编码是一种无损数据压缩算法,不是图象压缩特有的。如果编解码一致,你可以采用任何一种更高效的算法,构造你自己的图象压缩。
2、动图压缩
最简单的动图压缩就是将每一幅图象使用JPEG算法。
后来人们发现动图一般是连续的,图象之间差别不大,是否能只压缩不同的部分,而把上一幅收到的图象直接使用呢?根据这个想法人们想出了动态检测的方法。就是说所谓MPEG就是动态检测加JPEG。
动态检测被学术界描述的神乎其神,好象计算机程序真的能发现上一幅图象的脸在下一幅图象中移动了几个象素。我们可以完全抛开那些公式,用最简单形象的方式描述动态检测。因为JPEG是按照8X8的块进行运算的,所以MPEG也是以8x8进行动态检测的。程序根本不用判断这些数据是什么,仅仅按照一个算法算出一个数,然后按照同样的算法看看在上一幅图象中是不是可以找到比较接近的,压缩率不同这个判别是否相同的数不同,这个数差别越小,图象就越接近,压缩率就越小。这个数差别越大,图象还原越差,压缩率就越大。所以,我们很可能用大腿的一个块代替了胳膊的一个图象块。因为虽然不是这个图象块的移动,但是这两个图象块的差别最小。