数字图像入门 图像的压缩
夏昆冈 于 2012.02.15 10:21:24 | 源自:www.soomal.com | 版权:原创 | 平均/总评分:09.36/103

虽然存储成本在持续减低,但图像的压缩还是非常有必要。举个实例,一张1600万像素的数码照片,采用压缩格式JPG保存,它可能只需要6M左右的存储空间,而使用无压缩的BMP格式,它需要45M+的存储空间。上一篇我们提到矢量图像的一大优点就是尺寸小,但数字图像不可能都矢量化,要节约存储空间,图像压缩技术必不可少,图像对节约网络传输带宽也有重要意义,网页中的图像,大部分都是压缩后的。压缩又分为有损于无损的两大类,这里简单介绍一下几种常见的压缩编码。

行程长度编码

  • 假设某张图像一共有三种颜色,分别为A/B/C三个值,排列为AAAAAABBCCCC,这种记录方法浪费空间,它需要12个单位的记录空间,如果使用A6B2C4这样的记录方式,它只需要6个单位的空间,这就是行程长度编码,这是一种无损的压缩方式。行程长度编码对应的英文是Run- Length Encoding,缩写为RLE,相信很多搞图像处理的读者对RLE应该比较眼熟。

    RLE有派生出很多分支算法,例如PCX行程编码、BI_RLE8、BI_RLE4等方法,根据RLE8又发展出了紧缩位[Packbits]压缩方法。这些方法针对不同的图像设计,有各自的局限[RLE8最高只支持256色的图像],但有一点是肯定的,它们都是可以进行逆运算的编码,即无损的编码方案。行程长度编码以及其衍生编码,是无损编码中非常重要的一支,很多重要的图像格式都采用它,例如BMP、TIFF、PCX等。

    LWZ编码

  • LWZ,全称Lempel-Ziv-Welch Encoding,这也是一种无损编码的方法。它的基本原理是将频繁出现的序列用一个短的字串来替代,例如示意图中AAAAAABBCCCC,用αβ代替,这样就节省了大量的存储空间,这有点类似于用π来表示无穷尽不循环的圆周率一样。原始数据中某数据重复频率越高时,压缩率就越大,这种算法可逆运算,也是无损编码。TIFF格式中也运用了该编码。因为存在替换,编码过程会创建自适应字典。

    霍夫曼编码

  • 这是通过霍夫曼编码“this is an example of a huffman tree”句子得到的字母频率并来建构霍夫曼树。此图来自维基百科。
  • 霍夫曼编码[Huffman Coding]也是一种常见的编码,有时也被翻译成哈夫曼算法,这是一种对数据频率进行评估的一种算法,高频的数据采用短数据替代,从而实现压缩,示意图中,显示了对“this is an example of a huffman tree”这个句子进行分析,并得到各个字母的出现次数的结果,这种分析结构叫霍夫曼树。 这些无损算法被广泛适用于各类图像格式当中,它也被适用于一般性文档的压缩当中。当然,我们并不是数学高手也不是程序员,对于这类算法,我们没必要了解到非常深入,只要知道一点就行,无损算法是可逆的,它对图像不会产生任何画质的影响。无损算法也不仅限于这些,还有一些其他的,不同的算法也可以组合使用,例如TIFF格式的就用到了多种无损编码。

    JPEG

    JPEG即Joint Photographic Experts Group[联合图像专家小组],这种编码与我们的生活很近,JPEG其实分为无损和有损两种算法,但无损算法并没有流行,而有损算法则被广泛使用。因此我们的印象当中,JPEG是有损的,这并没错,只是不够全面。JPEG还可以是基于JPEG编码的图像,常见的扩展名即jpg,几乎所有的数码相机都支持将照片保存为jpg图像 Soomal的文章配图都是jpg的,这是一种运用非常广泛的图像类型。

    它的简单流程是,首先将RGB色彩体系转换成YUV色彩体系,Y表示像素亮度,UV一起表示色调与饱和度。然后利用人眼对亮度的敏感程度高于对于色彩敏感程度的特点,进行缩减取样,即减少UV的数据量,从而实现数据的压缩。根据采样的缩减量会产生不同的压缩率,JPEG在高压缩率会丢失大量数据而产生马赛克。

    关于图像的压缩,我们就简单的介绍这些,要说得再深入一些,我们也无能为力了,这篇文章读起来相当枯燥,其实,写这篇文章的目的并不是让各位发奋研究算法,而是告诉大家,图像的压缩有无损与有损多种,压缩不等于一定会产生画质损失,而使用JPEG时,应该注意设置压缩率,避免画质损失过大,也应该回避反复编辑,多次打开、编辑、存储的过程会让有损编码造成的损失累计为明显可察觉的程度。

    请评分
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    03
    最爱这类科普文章了,再多一些配图来举例子就更赞了,或者给出一些参考文献来源链接,供有兴趣的读者继续学习
    发表于2014.03.10 15:49:00
    42
    060.028.122.***
    060.028.122.***
    发表于2012.10.25 13:53:30
    40
    03
    “而使用JPEG时,应该注意设置压缩率,避免画质损失过大,也应该回避反复编辑,多次打开、编辑、存储的过程会让有损编码造成的损失累计为明显可察觉的程度。”
    发表于2012.02.20 19:31:53
    39
    03
    对算法的研究博大精深。
    发表于2012.02.18 21:04:03
    38
    03
    发表于2012.02.18 13:29:06
    36
    221.205.098.***
    221.205.098.***
    发表于2012.02.17 17:07:27
    35
    03
    发表于2012.02.17 11:57:34
    34
    125.085.249.***
    125.085.249.***
    发表于2012.02.17 02:13:05
    32
    03
    发表于2012.02.17 02:12:50
    31
    03
    长知识了……
    发表于2012.02.16 22:32:10
    30
    03
    发表于2012.02.16 20:15:42
    29
    03
    发表于2012.02.16 20:13:28
    28
    111.161.046.***
    111.161.046.***
    发表于2012.02.16 16:11:35
    27
    058.247.171.***
    058.247.171.***
    发表于2012.02.16 13:36:55
    26
    03
    不知道png是属于哪种无损压缩格式?
    发表于2012.02.16 13:34:12
    25
    提示
    本贴不可匿名回复,回复等级为:1 ,您现在正处在潜水状态
    回复
    验证码
    7188 为防止广告机贴垃圾,不得已而为之
    表情
    正文
    京ICP备11010137号 京ICP证110276号 京公网安备110114000469号