跳转到内容

数据压缩/有损与无损压缩

来自维基教科书,自由的教科书,为一个开放的世界

有损压缩与无损压缩

[编辑 | 编辑源代码]

有损图像压缩和有损视频压缩(如JPEG压缩、MPEG压缩和分形图像压缩)比数据压缩几乎任何其他领域都能提供更好的尺寸减小(更高的压缩率)。

有损压缩最适合用于减小视频数据的大小,其中图像中的缺陷可以被隐藏,只要图像的总体结构保持完整即可。这种压缩类型被称为有损压缩,因为它压缩如此好的部分原因是,视频图像中的实际数据被丢失,然后被一些近似值所代替。

分形压缩基于分形中自相似的概念。它使用具有自相似性的分形组件,这些组件与图像中周围区域的其余部分具有自相似性。

存储如此不准确,以至于通过用加密文本替换一些分形数据,很难看到图像的差异,这意味着可以将重要信息嵌入到视频图像中,而无需担心被检测到。 [需要引用]

如果我们能够在不丢失数据的情况下实现相同的压缩水平,我们就不会使用有损压缩,因为图像会有不可察觉的质量损失。

有损压缩仍然存在一些新技术的原因之一是,只有非常不精确的数据结构才能经受住有损压缩。通常情况下,丢失单个比特会导致整个短语或行数据变得不准确。这就是为什么我们试图构建越来越稳定的内存系统的原因。例如,最近从RD RAM到SD RAM的转变,部分原因是RD RAM需要更多地对数据进行交互式维护。

如果我们如此保护数据的记忆,那么我们必须保护我们用来存储和检索数据的压缩方案就说得通了。因此,有损压缩唯一可以使用的地方是,在比特级别上的准确性不会实质性地影响数据质量的地方。

图像压缩

[编辑 | 编辑源代码]

大多数图像压缩和视频压缩算法具有4层:这些东西有标准术语吗?

  • 一个“建模”或“预处理”[1]或“滤波”[1]或“去相关”层将原始像素转换为有关图片的更抽象的信息 - 并且,在解码器中,一个“渲染”部分将这些抽象信息转换回原始像素。
  • 一个“量化器”层,它丢弃这些抽象信息中人类不太可能注意到的某些细节 - 并且,在解码器中,一个“反量化器”,它恢复信息的近似值。
  • 一个“熵编码器”层,它压缩并将每个信息片段打包到要传输的比特流中 - 并且,在解码器中,“熵解码器”,它接收比特流并解压缩每个信息片段。
  • 一个在传输前向原始比特流添加同步、交织和错误检测的层。

由于我们在本书的其他地方讨论了熵编码,并且数据编码理论一书讨论了同步和错误检测,因此本节将重点介绍其他层。

某些类型的“建模”过程会提供对数据压缩以外的其他事情有用的信息,例如“去噪”和“分辨率增强”。

一些流行的“建模”或“去相关”算法包括

  • 差分编码
  • 傅里叶变换 - 使用快速傅里叶变换 (FFT) 计算 - 特别是离散余弦变换 (DCT)
  • 小波变换 - 使用快速小波变换 (FWT) 计算 - 特别是一些离散小波变换 (DWT)
  • 运动补偿
  • 匹配追踪
  • 分形变换[2][3][4][5]


原始的未压缩电影中包含大量信息。所有电影和图像压缩算法都可以归类为以下两种:

  • 无损方法:对图像不进行任何更改的方法;未压缩图像与原始图像在比特级别上完全相同。
  • “非降级方法”或“透明方法”:对图像进行一些微小更改的方法;未压缩图像并不完全与原始图像在比特级别上相同,但更改(希望)对人眼来说是不可见的。 [6]
  • “降级方法”或“低质量方法”:对图像引入可见更改的方法。

...“幂等”一次性损失与每次迭代的“世代”损失...


Clipboard

待办事项
数据压缩/多个变换#一些信息论术语部分移到这里?


理论上,任何类型的“完美”压缩文件都不应该包含任何剩余的模式。许多致力于压缩算法的人会将压缩数据绘制成图像,就好像它本身就是一张图像一样。 [7] 人类视觉系统对数据中的(某些类型的)模式非常敏感。如果人能够足够精确地描述压缩数据中的重复模式,就可以使用该描述来更准确地建模原始图像,从而导致更小的压缩图像文件。

然而,在完全没有模式(真正随机数据)的情况下,人眼往往会看到“团块”和其他“模式”,这些模式对数据压缩没有用处。(有些艺术家会将随机放置的数据精心调整,使它们更均匀地分布,使它们看起来是随机的,但实际上结果的随机性更低,通常可以至少压缩一点点,不像真正的随机数据)。

JPEG DCT 的二维“基函数”。

标准 JPEG 使用(有损)离散余弦变换 (DCT),标准 MP3 使用(有损)修改后的离散余弦变换 (MDCT)。由这些标准变换引起的原始输入和解码输出之间的差异小于由量化引起的误差,而量化引起的误差通常小到难以察觉。

整数变换

[编辑 | 编辑源代码]

几个小波变换只使用整数系数,例如那些用于渐进式图形文件 (PGF)、无损 JPEG 2000、CineForm、ICER 等的系数。

一些类似 DCT 的变换只使用整数系数,例如 MPEG 整数 IDCT 标准 [8],H.264 中使用的 4×4 和 8×8 整数变换,以及 JPEG XR 中使用的 4×4 变换。

这些变换中的大多数最初是为了在嵌入式系统中快速运行而开发的 - 这些系统中,标准 JPEG/MPEG 使用的浮点变换运行速度太慢。


2012 年,压缩研究人员 Rock Brentwood 发布了几个针对一维 DCT 和 IDCT 的无损近似值,包括以下内容:[9]

LDCT 正向变换变换矩阵

17 17 17 17 17 17 17 17
24 20 12 6 −6 −12 −20 −24
23 7 −7 −23 −23 −7 7 23
20 −6 −24 −12 12 24 6 −20
17 −17 −17 17 17 −17 −17 17
12 −24 6 20 −20 −6 24 −12
7 −23 23 −7 −7 23 −23 7
6 −12 20 −24 24 −20 12 −6

ILDCT 逆变换逆变换矩阵是 LDCT 矩阵的转置

17 24 23 20 17 12 7 6
17 20 7 −6 −17 −24 −23 −12
17 12 −7 −24 −17 6 23 20
17 6 −23 −12 17 20 −7 −24
17 −6 −23 12 17 −20 −7 24
17 −12 −7 24 −17 −6 23 −20
17 −20 7 6 −17 24 −23 12
17 −24 23 −20 17 −12 7 −6

JPEG 数据压缩算法和文件格式在维基教科书 JPEG - Idea and Practice 中有详细介绍。


Clipboard

待办事项
提供一些关于 JPEG 压缩的一般概念和具体细节。


JFIF:JPEG 文件交换格式

[编辑 | 编辑源代码]
Clipboard

待办事项
扩展


JPEG 2000

[编辑 | 编辑源代码]

JPEG 2000 在需要极高质量的应用中很有用,例如 DICOM 医学图像格式,因为压缩器可以选择比早期 JPEG 标准更高的质量设置,包括完全无损模式。

JPEG 2000 是一种基于小波技术的图像编码系统。 [10] JPEG 2000 压缩标准使用双正交 CDF 5/3 小波(也称为 LeGall 5/3 小波)进行无损压缩,并使用 CDF 9/7 小波进行有损压缩。但是,在实验数据压缩算法中已经提出并使用了一些其他类型的小波。 [11]

JPEG 2000 的开源实现可用。 [12]

颜色变换

[编辑 | 编辑源代码]

大多数图像压缩算法使用某种颜色空间变换来去相关每个像素的 R、G、B 值。我们在 数据压缩/多重变换#颜色变换 中讨论了颜色变换。

音频压缩

[编辑 | 编辑源代码]

正如我们所见,压缩不仅取决于应用的算法,还取决于要压缩的数据类型以及解压缩时生成的副本的质量。这在上一节中已经涉及,对于图像来说非常重要,对于声音也一样。

声音和图像的一个重要区别是,公众通常没有能力对音频进行合格的区分,这是由于感官的主观性和缺乏对复杂音频制作内在原理的了解。


Clipboard

待办事项
涵盖动态范围 - “响度战争”并区分声波压缩与数据压缩


如今,由于数字音频文件传输的重要性日益提高。这似乎最终得到了音乐媒体巨头的支持,消费者对质量的重视至关重要。

Mp3 不仅是一种压缩类型,也是一种数据格式。它用于音频的有损压缩,并作为数字音频分发和分类的工具。

大多数人将无法区分原始(自然音频)和 256kbps mp3 有损重放。

经过大量声音压缩的音频文件,在应用 mp3 压缩后,通常会让人耳听起来比原始音频更差,尤其是在 128 kbps(或更低)的编码情况下。

AAC 主要由苹果使用,有时与苹果无损音频编解码器 (ALAC) 编码在一起,但 AAC 兼容各种非苹果设备;请参阅维基百科关于 AAC 的页面。


Clipboard

待办事项
添加更多信息


FLAC 使用无损压缩。


Clipboard

待办事项
完整


有损和残差产生无损

[编辑 | 编辑源代码]

有时人们会下载(高度压缩的)图像、视频或音乐文件,用它来决定是否真的要花(更长的时间)下载该文件的无损高分辨率版本。

而不是删除原始(有损)文件版本并从头开始下载无损版本,一些人正在尝试使用某种方法来利用有损版本文件中的部分信息,以减少下载“残差”所需的时间,也称为“残余”——文件的“剩余部分”(即,填充有损压缩器丢弃的细节)。

[13] [14] [15] [16] [17] [18] [19] [20] [21]

只要(压缩的)残差的大小明显小于以独立无损格式存储的文件的大小,用户就节省了时间——即使总的有损+残差大小通常大于独立无损格式。

GIF 和 PNG 是专为通过相对较慢的调制解调器下载而设计的图像文件格式,它们具有一些这种特性——它们被设计为支持“部分下载”。

此类无损格式包括 JPEG XR、DTS-HD Master Audio、MPEG-4 SLS(无损音频压缩)、Wavpack Hybrid、OptimFROG DualStream 等。

参考文献

[编辑 | 编辑源代码]
  1. a b Greg Roelofs。 "PNG: The Definitive Guide: Chapter 9. Compression and Filtering"
  2. Wikipedia: fractal transform
  3. "基于分形的图像压缩算法(以及源代码)" [1]
  4. 分形/迭代函数系统
  5. "FAQ:What is the state of fractal compression?"
  6. Sergei Vasilyev。 "Contour-Based Image Compression for Fast Real-Time Coding"。1999。引用:“有损 REIC 属于非降级方法……因为一旦应用,对同一图像重复应用不会对图像造成任何进一步改变。”
  7. "Technical Overview of Cartesian Perceptual Compression" (c) 1998-1999 Cartesian Products, Inc.
  8. http://www.reznik.org/software.html#IDCT
  9. Rock Brentwood。 "Lossless & Non-Degrading Lossing DCT-Based Coding"
  10. 联合图像专家组:JPEG 2000 标准
  11. 小波讨论论坛
  12. JasPer 项目 由 Michael D. Adams 开发,是 JPEG-2000 第 1 部分的实现。
  13. "灵活的'可扩展至无损'?"
  14. Detlev Marpe、Gabi Blättermann、Jens Ricke 和 Peter Maaß "A two-layered wavelet-based algorithm for efficient lossless and lossy image compression" 2000。
  15. GCK Abhayaratne 和 DM Monro。 "Embedded to lossless coding of motion compensated prediction residuals in lossless video coding"
  16. G.C.K. Abhayaratne 和 D.M. Monro。 "Embedded to Lossless Image Coding (ELIC)"。2000。
  17. CH Ritz 和 J Parsons。 "无损宽带语音编码". 2004. "通过在标准化宽带语音编码器产生的有损基础层上添加无损增强层来实现宽带语音的无损编码"
  18. Nasir D. Memon,Khalid Sayood,Spyros S. Magliveras。 "用于增强有损加无损图像压缩方案性能的简单方法" 1993.
  19. 张奇 云阳 戴 阔,C.-C.J. Ming Hsieh "基于残差图像预测和编码 (RIPC) 的无损视频压缩". 2009.
  20. Gianfranco Basti 和 M. Riccardi 和 Antonio L. Perrone。 "使用动态预处理进行哈勃太空望远镜拟合图像的有损加无损残差编码" 1999.
  21. Majid Rabbani 和 Paul W. Jones。 "数字图像压缩技术". 1991. 第 8 章:有损加无损残差编码。


华夏公益教科书