我想知道是否有人有数据压缩算法列表。我基本上都不知道数据压缩,我希望能够了解更多关于不同算法的知识,看看哪些是最新的,还有很多ASIC尚未开发。
我希望实现一种数据压缩ASIC,它与进入的数据类型(音频,视频,图像等)无关。
如果我的问题太开放,请告诉我,我会修改。谢谢
答案 0 :(得分:37)
那里有大量的压缩算法。你需要的是无损压缩算法。无损压缩算法压缩数据,使得它可以被解压缩以实现压缩之前给出的精确值。相反的是有损压缩算法。有损压缩可以从文件中删除数据。 PNG图像使用无损压缩,而JPEG图像可以并且经常使用有损压缩。
一些最广为人知的压缩算法包括:
ZIP存档使用霍夫曼编码和LZ77的组合,可以提供快速压缩和解压缩时间和相当好的压缩率。
LZ77几乎是RLE的一种通用形式,它通常会产生更好的结果。
Huffman允许最重复的字节表示最少的位数。 想象一下看起来像这样的文本文件:
aaaaaaaabbbbbcccdd
Huffman的典型实现将产生以下映射:
Bits Character
0 a
10 b
110 c
1110 d
因此该文件将被压缩为:
00000000 10101010 10110110 11011101 11000000
^^^^^
Padding bits required
18个字节变为5.当然,该表必须包含在文件中。该算法可以更好地处理更多数据:P
如果Wiki不够,Alex Allain对霍夫曼压缩算法有a nice article。
随时询问更多信息。这个话题非常广泛。
答案 1 :(得分:5)
以下是一些无损算法(可以使用这些算法完美地恢复原始数据):
许多众所周知的格式,如png或gif,都使用这些变体或组合。
另一方面,也存在有损算法(压缩数据的准确性会降低,但通常效果很好)。最先进的有损技术结合了差分编码,量化和DCT等思想。
要详细了解数据压缩,建议https://www.elsevier.com/books/introduction-to-data-compression/sayood/978-0-12-809474-7。这是一个非常容易获得的介绍文本。第3版以PDF格式在线发布。
答案 2 :(得分:4)
有大量的数据压缩算法。如果你正在寻找百科全书的东西,我推荐Salomon等人的数据压缩手册,它与你可能得到的一样全面(并且在原理和实践方面有很好的部分)还有数据压缩。
我最好的猜测是,基于ASIC的压缩通常是针对特定应用实现的,或者是作为SoC的专用元素实现的,而不是作为独立的压缩芯片实现的。我也怀疑寻找“最新和最好的”压缩格式是这里的方式 - 我希望标准化,成熟度和适合特定目的的适应性更重要。
答案 3 :(得分:3)
我的论文A Survey Of Architectural Approaches for Data Compression in Cache and Main Memory Systems(永久链接here)回顾了许多压缩算法以及在现代处理器中使用它们的技术。它审查了研究级和商业级压缩算法/技术,因此您可能会发现一个尚未在ASIC中实现的算法/技术。
答案 4 :(得分:0)
LZW或Lempel Ziv算法是一个非常无损的算法。伪代码在这里:http://oldwww.rasip.fer.hr/research/compress/algorithms/fund/lz/lzw.html