常用的无损压缩算法有:1、LZ77算法,该算法是很多其他无损压缩算法的基础;2、LZR算法,是旨在提升LZ77的一个算法;3、LZSS算法,该算法目标是成为LZ77的一个线性时间替换算法;4、DEFLATE算法;5、LZMA算法等等。
数据压缩是保留相同或绝大部分数据前提下减小文件大小的过程。 它的原理是消除不必要的数据或以更高效的格式重新组织数据。在进行数据压缩时,你可以选择使用有损方法或无损方法。有损方法会永久性地擦除掉一些数据,而无损方法则能保证持有全部的数据。使用哪类方法取决于你要让你的文件保持多大的精准度。
本文会为你介绍6种不同的无损数据压缩算法,以及4种基于深度学习的图像/视频压缩算法。
6款无损数据压缩算法
无损压缩算法通常被用于归档或其他高保真目的。这些算法能够让你在确保文件可被完整恢复的同时减少文件大小。有很多种无损压缩算法供你选择。下面介绍6种常用的算法:
1. LZ77
LZ77算法发布于1977年。作为很多其他无损压缩算法的基础,它使用了“滑动窗口”的概念。在这个概念中,LZ77管理了一个字典。该字典使用三元组的方式:
偏移量(Offset):短语起始处于文件开头之间的距离
行程长度(Run length):组成短语的字符数
偏离字符:表明新短语的标记符,匹配结束后,前向缓冲区中的第一个符号
当文件被解析时,字典会被实时更新以反映最新的压缩数据和大小。举个例子,如果一个文件包含字符串"abbadabba",那么被压缩到字典中的项就是"abb(0,1,'d')(0,3,'a')"。你可以看下下表的拆解过程:
这个例子中,被压缩后的数据并不比初始数据小多少。但一般情况下,当文件很长时,这种压缩效果就会显现出来。
2. LZR
LZR由Michael Rodeh于1981年提出,它是在LZ77的基础上发展而来。这个算法目标是成为LZ77的一个线性时间替换算法,但编码后Udell指针可能指向文件的任意偏移量,意味着需要耗费可观的内存,因此表现不如LZ77。
3. LZSS
LZSS,全称Lempel-Ziv-Storer-Szymanski,于1982年提出。它也是旨在提升LZ77的一个算法。它引入了一个方法能够检测是否真的减少了文件大小。如果未能起到压缩效果,就保持原来的输入格式。LZSS还移除了对偏离字符的使用,只使用<偏移量,长度>对。这个压缩算法广泛用于归档格式,如RAR以及网络数据的压缩。
4. DEFLATE
DEFLATE算法于1993年提出。作者是Phil Katz。该算法结合了LZ77或LZSS预处理器与霍夫曼编码。霍夫曼编码是1952年提出的诉法。它是一种熵编码,主要基于字符出现频度分配编码。
5. LZMA
LZMA算法,全称是Lempel-Ziv Markov chain Algorithm(LZMA),于1998年提出,是LZ77的改进版,旨在实现.7z格式的7-ZIp文件归档。它使用链式压缩方法,在比特而非字节级别上应用修改后的LZ77算法。该压缩算法的输出稍后被算数编码进行处理以便后续进一步压缩。根据具体的实现不同,可能会引入其他的压缩步骤。
6. LZMA2
LZMA2算法于2009年提出,是LZMA的改良版。它提升了LZMA在多线程能力上的性能以及提升了处理不可压缩类型数据的表现。
4种基于深度学习的图像/视频压缩算法
除了上面介绍的静态压缩算法,还有基于深度学习的压缩算法可供选择。
1. 基于多层感知机的压缩算法
多层感知机(Multi-Layer Perceptron,MLP)技术使用多层神经元来获取、处理以及输出数据。它能够被应用到数据降维任务和数据压缩。首个基于MLP的算法于1988年被提出,目前已经被应用到:
二进制编码——标准的双符号编码
量化——限制从连续集到离散集的输入
特定领域内的转换——像素级的数据变更
MLP算法利用分解神经网络上一步的输出来确定最佳的二进制码组合。后面,使用预测技术优化这个方法。预测技术能够通过反向传播基于相邻数据来提升数据准确度。
2. DeepCoder -- 基于视频压缩的深度神经网络
DeepCoder是一个基于卷积神经网络(CNN)的框架,它是传统视频压缩技术的替代。该模型为预测信号和残留信号使用单独的CNN。它使用标量量化技术和一个传统的文件压缩算法——霍夫曼编码——将编码特征映射到一个二进制流中。一般认为,该模型的性能要优于著名的H.264/AVC视频编码规范。
3. 基于CNN的压缩算法
CNN是分层的神经网络,通常用于图像识别和特征检测。当应用到压缩时,这些神经网络使用卷积操作来计算相邻像素点之间的相关性。CNN展示出了比基于MLP算法更好的压缩结果,提升了超分辨率下的性能以及减少了伪影。另外,基于CNN的压缩还提升了JPEG图像的品质,因为它减少了峰值信噪比(PSNR)和结构相似性(SSIM)。基于CNN的压缩通过使用熵估计法还实现了HEVC的性能。
4. 基于生成式对抗网络(GAN)的压缩算法
GAN属于神经网络的一种,它使用两个神经网络彼此竞争的方式来产生更精确的分析和预测。最早基于GAN的压缩算法于2017年被提出。这些算法的文件压缩比例是其他常见方法(如JPEG、WebP等)的2.5倍。你可以使用基于GAN的方法通过并行化处理来实现实时压缩。主要的原理是基于最相关的特征来压缩图片。当解码的时候,算法基于这些特征来重建图像。和基于CNN算法相比,基于GAN的压缩算法通过消除对抗损失能够产生更高品质的图像。
总结
压缩算法能够帮助你优化文件大小。不同的算法有不同的结果。本文简述了6种静态的无损压缩算法以及4种基于深度学习的压缩算法。当然,如果这些算法都不适用于你的场景,你可以查看这篇文章来寻找适合你场景的算法。算法有很多,总有一款适合你!
以上是常用的无损压缩算法有哪些的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

SublimeText3汉化版
中文版,非常好用

WebStorm Mac版
好用的JavaScript开发工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器