问题标签 [lossless-compression]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
85 浏览

lossless-compression - 保存 13268 位(1.66kBytes)的数组数据压缩

即数组对于每架飞机有 100*125 位数据+8 个 ascii 消息,每个 12 个字符我应该对这些数据应用什么压缩技术

0 投票
8 回答
79410 浏览

javascript - JavaScript 中的字符串压缩

我正在寻找一个给定字符串返回压缩(较短)字符串的 JavaScript 函数。

我正在开发一个将长字符串 (HTML) 保存到本地数据库的 Chrome Web 应用程序。出于测试目的,我尝试压缩存储数据库的文件,但它缩小了五倍,所以我认为如果我压缩它存储的内容,它将有助于使数据库更小。

我在 JavaScript 中找到了 LZSS 的实现:http ://code.google.com/p/u-lzss/ (“U-LZSS”)。

当我用简短的示例字符串(decode === encode)“手动”测试它时,它似乎工作了,而且在 Chrome 中它也相当快。但是当给定大字符串(100 ko)时,它似乎会混淆/混淆字符串的后半部分。

U-LZSS 是否有可能需要短字符串而不能处理更大的字符串?是否可以调整一些参数以移动该上限?

0 投票
2 回答
1579 浏览

c++ - 节省空间将位集写入 C++ 中的文件

我想知道如何在 C++ 中将位集写入文件(可能使用 iostream)来节省空间。将位集分解为大小为 8 的位集,然后将每个单独的位集写入文件会节省空间吗?你对此有何看法。这就是数据压缩的目的。

0 投票
0 回答
840 浏览

stream - 如何在无损压缩少量数据时达到最小尺寸?

  1. 我不明白“为什么 gzip/deflate 压缩小文件会导致许多尾随零?”(为什么 gzip/deflate 压缩一个小文件会导致很多尾随零?

  2. 您将如何在 .NET 环境中将 ½-2 KB 的少量数据压缩到最小大小?(运行时对我来说不是问题。我可以用速度换大小吗?我应该使用第 3 方产品吗?开发者许可费用可以,但运行时许可不行。)

  3. 关于如何改进以下代码的任何建议:
    (a)更高的压缩比?
    (b) 更恰当地使用流?

这是需要改进的 C# 代码:

0 投票
3 回答
2043 浏览

lossless-compression - 用于无损压缩的霍夫曼编码

我真的需要 Huffman Coding for Lossless 压缩方面的帮助。我即将参加考试,需要理解这一点,有没有人知道为理解这一点而制作的简单教程,或者有人可以解释一下。

考试中的问题可能是:

假设字母表为[A, B, C],已知概率分布为P(A)=0.6,P(B)=0.2,P(C)=0.2。为简单起见,我们还假设编码器和解码器都知道消息的长度始终为 3,因此不需要终止符。

  1. 使用霍夫曼编码对消息 ACB 进行编码需要多少位?您需要为每个符号提供 Huffman 树和 Huffman 代码。(3 分)

  2. 通过算术编码对消息 ACB 进行编码需要多少位?您需要提供编码过程的详细信息。(3 分)

  3. 使用上述结果,讨论算术编码相对于霍夫曼编码的优势。(1 分)

答案:

  1. 霍夫曼码:A - 1, B - 01, C - 00。编码结果是10001,所以需要5位。(3 分)

  2. 算术编码的编码过程: Symbol Low high range 0.0 1.0 1.0 A 0.0 0.6 0.6 C 0.48 0.6 0.12 B 0.552 0.576 0.024 最终二进制码字为0.1001,即0.5625。因此需要 4 位。(3 分)

  3. 在霍夫曼编码中,每个符号的码字长度必须是整数。但它在算术编码中可以是分数。因此,算术编码通常比霍夫曼编码更有效,如上图所示。(1 分)

0 投票
1 回答
513 浏览

java - 无损和相同的方式 - BufferedImage to File

我有一个BufferedImage对象,我对它进行了像素操作(数值)。现在我怎样才能将它保存到一个文件中——最好是 JPEG 文件——而不改变像素值???

0 投票
5 回答
2963 浏览

c++ - 编写一个程序,将文本作为输入并生成一个再现该文本的程序

最近我遇到了一个很好的问题,它看起来很容易理解,但很难找到任何解决方法。问题是:

编写一个程序,从输入中读取文本并在输出上打印一些其他程序。如果我们编译并运行打印的程序,它必须输出原始文本。

输入文本应该相当大(超过 10000 个字符)。

唯一(也是非常严格的)要求是存档(即打印的程序)的大小必须严格小于原始文本的大小。这使得不可能的明显解决方案像

我相信这里会用到一些归档技术。

0 投票
8 回答
65579 浏览

h.264 - h264无损编码

是否可以在 h264 中进行完全无损编码?无损,我的意思是如果我给它输入一系列帧并对其进行编码,然后如果我从编码的视频中提取所有帧,我将得到与输入中完全相同的帧,逐像素,逐帧. 这真的可能吗?举个例子:

我生成一堆帧,然后将图像序列编码为未压缩的 AVI(使用 virtualdub 之类的东西),然后应用无损 h264(帮助文件声称设置 --qp 0 可以进行无损压缩,但我不确定是否这意味着在过程的任何一点都没有损失,或者只是量化是无损的)。然后,我可以使用 mplayer 从生成的 h264 视频中提取帧。

我先尝试了 Handbrake,但事实证明它不支持无损编码。我试过 x264 但它崩溃了。这可能是因为我的源 AVI 文件是 RGB 颜色空间而不是 YV12。我不知道如何将一系列 YV12 位图以及以什么格式提供给 x264,所以我什至无法尝试。

总之,我想知道是否有办法

一系列无损位图(在任何颜色空间中)-> 一些转换 -> h264 编码 -> h264 解码 -> 一些转换 -> 原始系列无损位图

如果有办法做到这一点?

编辑:关于无损 H264 有一个非常有效的观点没有太大意义。我很清楚,我无法(仅凭我的眼睛)分辨出未压缩剪辑和另一个在 H264 中以高速率压缩的剪辑之间的区别,但我认为它并非没有用处。例如,它可能有助于存储视频以进行编辑,而不会占用大量空间,并且不会在每次保存文件时损失质量和花费太多编码时间。

更新 2:现在 x264 不会崩溃。我可以使用 avisynth 或无损 yv12 lagarith 作为源(以避免颜色空间压缩警告)。但是,即使使用 --qp 0 和 rgb 或 yv12 源,我仍然会得到一些差异,虽然很小但存在。这很麻烦,因为我发现的关于无损预测编码 (--qp 0) 的所有信息都声称整个编码应该是无损的,但我无法验证这一点。

0 投票
3 回答
195 浏览

algorithm - 使整数列表更人性化

这是我为解决工作中无法修复的问题而进行的一个副项目。我们的系统输出一个代码来表示另一个事物的组合。一些示例代码是:

9-9-0-4-4-5-4-0-2-0-0-0-2-0-0-0-0-0-2-1-2-1-2-2-2- 4

9-5-0-7-4-3-5-7-4-0-5-1-4-2-1-5-5-4-6-3-7-9-72

9-15-0-9-1-6-2-1-2-0-0-1-6-0-7

到目前为止,我看到的其中一个插槽中的最大数量约为 150,但它们可能会更高。

在设计系统时,并没有要求该代码是什么样子。但是现在客户希望能够从一张纸上手动输入,而上面的代码并不适合。我们已经说过我们不会对此做任何事情,但这似乎是一个有趣的挑战。

我的问题是哪里是开始无损压缩此代码的好地方?明显的解决方案(例如使用较短的密钥存储此代码)不是一种选择;我们的数据库是只读的。我需要构建一种双向方法来使这段代码更人性化。

0 投票
1 回答
5757 浏览

java - 如何在java中使jpeg无损?

有没有人可以告诉我如何lossless在java中使用压缩来编写'jpeg'文件?

我使用下面的代码读取字节来编辑字节

而且我需要再次将字节写为“jpeg”文件而不压缩在lossy.