数据压缩是减少文件大小,同时保留相同或可比较的数据近似值的过程。这是通过消除不必要的数据或重新格式化数据以提高效率来实现的。
压缩数据时,可以使用丢失或无损方法。丢失方法永久擦除数据,而无损保留所有原始数据。您使用的类型取决于您需要的文件的保真度高。
在本文中,您将发现六种不同类型的无损数据压缩算法,以及四种基于深度学习的图像和视频压缩算法。
6 无损数据压缩算法
无损压缩算法通常用于存档或其他高保真度目的。这些算法使您能够减小文件大小,同时确保文件在需要时可以完全还原到其原始状态。
当您需要执行无损压缩时,您可以选择多种算法。以下是六个常用的。
1. LZ77
LZ77 于 1977 年发布,是许多其他无损压缩算法的基础。它使用”滑动窗口”方法。在此方法中,LZ77 管理使用三重表示的字典:
-
偏移 — 短语开头和文件开头之间的距离。
-
运行长度 – 构成短语的字符数。
-
偏离字符 — 指示新短语的标记。这包括短语等于原始短语和哪些字符不同的指示。
在分析文件时,将动态更新字典以反映压缩的数据内容和大小。例如,包含字符串”abbadabba”的文件被压缩到字典条目”abb(0,1,’d’)(0,3,’a’)”。您可以在下面看到此过程的细目。
位置 |
象征 |
输出 |
0 |
a |
a |
1 |
B |
B |
2 |
B |
B |
3 |
a |
(0,1,’d’) |
4 |
D |
|
5 |
a |
(0,3,’a’) |
6 |
B |
|
7 |
B |
|
8 |
a |
在此示例中,替换比输入稍大,但使用逼真的输入(这是更长的时间),替换通常要小得多LZR
LZR,由迈克尔·罗德于1981年发行,修改LZ77。它设计为 LZ77 的线性替代,但可用于文件中的任何偏移。当非线性使用时,它需要大量的内存,这使得LZ77成为更好的选择。
3. LZSS
伦佩尔-齐夫-斯齐曼斯基(LZSS)于1982年发布,是一种改进LZ77的算法。它通过包括一个检测替换是否减小文件大小的方法来进行此工作。如果没有,则输入以原始形式保留。LZSS 还消除了使用偏离字符,仅使用偏移长度对。此方法通常用于存档格式(如 RAR)或网络数据的压缩。
4. 消减
1993年由菲尔·卡茨发布的DEFLATE将LZ77或LZSS预处理器与哈夫曼编码相结合。霍夫曼编码是1952年开发的一种算法。它是一种熵编码方法,它根据字符的频率分配代码。
5. LZMA
伦佩尔-齐夫马尔科夫链算法(LZMA),发布于1998年,是LZ77的修改,专为7-Zip归档器设计与.7z格式。它使用链压缩方法,在位而不是字节级别应用修改后的 LZ77 算法。然后,使用算术编码处理此压缩的输出,以便进一步压缩。根据确切的实现,也可以执行其他压缩步骤。
6. LZMA2
LZMA2 于 2009 年发布,是 LZMA 的改进。它提高了 LZMA 的性能,提高了多线程功能,并改进了不可压缩数据的处理。
基于深度学习的 4 种图像和视频压缩算法
除了上面介绍的静态算法外,还有几种算法是基于深度学习,您可以使用。
1. 基于多层感知器 (MLP) 的压缩
MLP 是一种使用多个神经元层来获取、处理和输出数据的技术。它可以应用于尺寸缩减任务和数据压缩。第一个基于MLP的算法于1988年开发,并集成了现有的过程:
-
二进制编码— 标准双符号编码。
-
量化 — 从连续集到离散集的输入约束。
-
空间域变换 — 逐像素更改数据。
MLP 算法在分解神经网络中使用上述进程的输出来确定最佳的二进制代码组合。后来,该方法通过预测技术进行了改进,通过反向传播,能够精确近似基于相邻数据的数据深度编码器 – 基于深度神经网络的视频压缩
DeepCoder是一个基于卷积神经网络(CNN)的框架,它提供了传统视频压缩技术的替代方案。该模型使用单独的卷积神经网络 (CNN) 进行预测和残余信号。它使用标量量化和传统文件压缩算法 Huffman 编码将特征映射编码为二进制流。该模型据说提供卓越的性能相比,著名的H.264/AVC视频编码标准。见整张纸。
3. 基于卷积神经网络 (CNN) 的压缩
CNN 是分层神经网络,通常用于图像识别和特征检测。当应用于压缩时,这些网络使用卷积运运计算相邻像素之间的相关性。
CNN 的压缩效果优于基于 MLP 的算法,提高了超分辨率性能和减少伪影性能。此外,基于 CNN 的压缩通过降低峰值信噪比 (PSNR) 和结构相似性 (SSIM) 提高了 JPEG 图像的质量。基于 CNN 的压缩还可以通过使用熵估计实现高效视频编码 (HEVC) 标准的性能。
4. 基于生成对抗网络 (GAN) 的压缩
GAN 是神经网络的一种形式,它在竞争中使用两个网络来生成更准确的分析和预测。基于 GAN 的压缩算法于 2017 年首次开发。这些算法可以压缩文件,比其他常用方法(如 JPEG 或 WebP)小两个半倍。
您可以使用基于 GAN 的方法使用并行处理进行实时压缩。此方法的工作原理是根据最相关的功能压缩图像。解码后,将根据这些要素所做的预测重建图像。与基于 CNN 的压缩相比,基于 GAN 的压缩可以通过消除对抗性损耗来生成更高质量的图像。
结论
压缩算法可以帮助您优化文件大小。不同的算法提供不同的结果。本文回顾了六种无损压缩静态算法和四种深度学习用法算法。但是,如果您在此处找不到正确的算法,可以查看本指南并优化搜索。算法并不短缺,但在为项目寻找合适的算法时,您需要具体。