为什么GIF格式不是自然图像最紧凑的格式?

Ada*_*nch 3 compression algorithm image gif

我们的样本试卷中的完整问题:

通过突出显示算法的相关部分来解释,为什么GIF格式不是用于表示具有自然内容的图像的最紧凑格式.

据我所知,使用GIF对于自然图像不是很好,因为它限制为256种颜色,但为什么它不能提供足够紧凑的文件?如果有的话,你会认为较少的颜色意味着较小的文件大小.

在我们的笔记中,我们被告知使用的LZW压缩比Huffman更好,原因有几个(包括它只进行一次).Huffman编码/压缩会导致较小的文件吗?

根据维基百科,PNG格式提供比GIF更好的压缩.LZW很可能是当时的罪魁祸首,但为什么呢?哪个"算法部分"支持它"不是表示图像的最紧凑格式"的论点,特别是对于自然图像?

Li-*_*Yip 8

我不确定LZW编码的细节,但我相信它通过构建一个公共位序列的字典来压缩数据(每次出现时都必须相同).这意味着线条图等压缩得非常好,因为它们包含许多"实心"颜色区域(即相同的像素颜色重复相同,连续多次.)如果您的区域为100个白色像素,则可以通过说它是' 连续相同的白色像素的100'来压缩它.

"自然图像",例如由数码相机产生的图像,不包含纯色区域.蓝色墙壁的照片实际上会包含许多不同的蓝色 - 相机噪音,至少会使每个像素与其邻居略有不同.LZW将无法找到许多重复序列,因此无法对数据进行太多压缩.


JPEG实现了比GIF更小的文件大小,因为它不怕丢失图片中的一些信息 - 它有损.诀窍在于,JPG的设计只会丢失人类看不到的信息.(参见注释1.)我们擅长在图像的"平滑"区域看到伪影,但不擅长在图像中的锐利过渡附近看到伪影.

它也是一种完全不同的压缩算法,基于将图像编码为2-D频域表示(数字信号处理类型的东西),而不是试图找到重复的比特子序列.


注1:JPEG是一种"感知"压缩方法.它起到人类视觉优势和弱点的作用 - "平滑"颜色区域的小错误很容易看到,但图像"繁忙"区域的小错误很容易在细节中错过.

MP3音频的工作原理相同.它抛弃了我们听不到的信息; 例如,如果发出响亮的声音,然后发出安静的声音,我们通常听不到安静的声音 - 我们的耳朵已经被大声的声音所震撼,并且不会拾起它后面传来的安静声音.MP3编码抛弃了安静的声音,专注于发出响亮的声音.


笔记2:

我刚才意识到我还没有真正解决过PNG问题.

PNG实现了比GIF更好的压缩,因为它在无损压缩之前应用了预过滤步骤(即DEFLATE大致相当于LZW).请参阅Wikipedia对PNG过滤的解释.

这个想法是相邻像素可能彼此略微不同(由于噪声),但它们将是大致相同的值.

说我们有数据:

132 133 134 135 136 137 138
Run Code Online (Sandbox Code Playgroud)

LZW看着这个并说"这些价值观都不同;我无法压缩它."

PNG根据值之间的差异来看待这个:

132 +1 +1 +1 +1 +1 +1 +1
Run Code Online (Sandbox Code Playgroud)

也就是说,第一个数据元素是132,并且通过添加获得以下元素1.这种表示与LZW相当吻合.