我们的样本试卷中的完整问题:
通过突出显示算法的相关部分来解释,为什么GIF格式不是用于表示具有自然内容的图像的最紧凑格式。
据我所知,使用GIF对于自然图像来说不是很好,因为它仅限于256种颜色,但为什么它不能提供足够紧凑的文件?如果有的话,你会认为较少的颜色意味着较小的文件大小。
在我们的笔记中,我们被告知使用的LZW压缩比Huffman更好,原因有几个(包括它只进行一次)。 Huffman编码/压缩会导致较小的文件吗?
According to Wikipedia,PNG格式提供比GIF更好的压缩。 LZW很可能是罪魁祸首,但为什么?算法的哪些部分支持“它不是表示图像最紧凑的格式”的论点,特别是对于自然图像?
答案 0 :(得分:8)
我不确定LZW编码的细节,但我相信它通过构建一个公共位序列字典(每次出现时必须相同)来压缩数据。这意味着线条图等压缩得非常好,因为它们包含许多“纯色”区域(即相同的像素颜色重复相同,连续多次。)如果你有一个在100个白色像素的区域中,您可以通过将其称为“连续相同白色像素中的100个”来压缩它。
“自然图像”,例如由数码相机产生的图像,不包含纯色区域。蓝色墙壁的照片实际上会包含许多不同的蓝色 - 相机噪音,至少会使每个像素与其邻居略有不同。 LZW将无法找到许多重复序列,因此无法对数据进行太多压缩。
JPEG实现了比GIF更小的文件大小,因为它不怕丢失图片中的一些信息 - 它有损。诀窍在于,JPG的设计只会丢失人类无论如何都不会看到的信息。(参见注释1)我们擅长在图片的“平滑”区域看到文物,但不是很好看到图像中急剧过渡附近的人工制品。
它也是一种完全不同的压缩算法,基于将图像编码为2-D频域表示(数字信号处理类型的东西),而不是试图找到重复的比特子序列。
注1:JPEG是一种“感知”压缩方法。它起到人类视觉优势和弱点的作用 - “平滑”颜色区域的小错误很容易看到,但图像“繁忙”区域的小错误很容易在细节中错过。
MP3音频的工作原理相同。它抛弃了我们听不到的信息;例如,如果发出响亮的声音,然后发出安静的声音,我们通常听不到安静的声音 - 我们的耳朵已经被大声的声音所震撼,并且不会拾起它后面传来的安静声音。 MP3编码抛弃了安静的声音,专注于发出响亮的声音。
注2:
我刚刚意识到我实际上并没有解决过PNG问题。
PNG实现了比GIF更好的压缩,因为它在无损压缩之前应用了预过滤步骤(即DEFLATE
,大致相当于LZW。)请参阅Wikipedia's explanation of PNG filtering。
这个想法是相邻像素可能彼此略有不同(由于噪音),但它们大致相同的值。
说我们有数据:
132 133 134 135 136 137 138
LZW看着这个并说“这些值都不同;我无法压缩它。”
PNG根据值之间的差异来看待这一点:
132 +1 +1 +1 +1 +1 +1 +1
即,第一个数据元素是132
,并且通过添加1
获得以下元素。 这个表示与LZW压缩得很好。