问题标签 [run-length-encoding]

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 投票
6 回答
4488 浏览

algorithm - Run length encoding using O(1) space

Can we do the run-length encoding in place(assuming the input array is very large) We can do for the cases such as AAAABBBBCCCCDDDD A4B4C4D4

But how to do it for the case such as ABCDEFG? where the output would be A1B1C1D1E1F1G1

0 投票
1 回答
271 浏览

computer-science - C# LinkedList vs List 用于运行长度编码?

其中哪一个更适合字节上的 RLE?我需要能够相当快地在列表中插入数据,但我还需要能够快速找出未压缩字节 3987 的位置(这可能更重要,我认为最好的方法是通过所有直到我得到 3987 以下最接近的一个?)。

0 投票
5 回答
349 浏览

python - 从 RLE 模式中删除代码重复,而不求助于 Haskell?

RLE(运行长度编码)模式似乎在我的工作中出现了很多。

其本质是,每次看到“中断”到达输入末尾时,您输出自上次“中断”以来遇到的元素的减少。

(在实际的 RLE 中,'break' 只是这个字符与最后一个字符不匹配,但在现实世界中它通常更复杂一些,但仍然是当前和最后一个元素的函数。)

我想删除last_val != None: rle.append((last_val, count))循环中和最后出现的重复条件和动作。

问题是:

  1. 用函数调用替换它们会产生更多的代码,而不是更少。
  2. 保持命令式(例如,在 Haskell 中,问题就消失了)。

命令式 Python 代码是:

PS 用函数式语言可以轻松解决:

0 投票
7 回答
35751 浏览

java - java 运行长度编码

我不知道如何开始我的任务。

我们必须制作一个运行长度编码程序,

例如,用户输入以下字符串:

aaaaPPPrrrrr

被替换为

4a3P5r

有人可以帮我开始吗?

0 投票
1 回答
805 浏览

java - 就地运行长度编码链表(Java)

我的 LinkedList 是单一链接的(每个节点都有一个计数 + 下一个引用)。

我需要创建 runlengthencode 方法,该方法采用 LinkedList 并返回列表的运行长度编码版本,而不创建任何新节点 - 即到位。它恰好在 Java 中

我遇到的问题是跟踪代表运行开始的节点,当我沿着它运行时,它将出现在新列表中。在下面的外部while 循环中,我应该在哪里添加 rle 节点 ?

目前我有一个名为 CurrRun 的引用和一个来自 CurrRun 的跑步者,而 CurrRun 和 CurrRun.next 的值是相同的。

当心:此代码已尽可能去除其丑陋的 Java 语法

任何指针将不胜感激。

MOAN:在美国大学校,他们应该教我们这个,但我们只能自己动手

0 投票
4 回答
9986 浏览

matlab - Matlab中的运行长度编码

我对 MatLab 很陌生,我有运行长度编码代码,但它似乎不起作用,你能帮我吗?

我有这个输入:

我想把它变成 RLE 输出:

这是我的代码:

但这不起作用,我仍然对如何打印这样的输出感到困惑。

我希望你能帮助我。谢谢你。

0 投票
3 回答
3915 浏览

python - Python 压缩运行长度编码

我正在尝试了解运行长度编码,但我在网上发现了这个我做不到的挑战。它要求您编写一个名为 compression(strg) 的压缩函数,它将长度为 64 的二进制字符串 strg 作为输入并返回另一个二进制字符串作为输出。输出二进制字符串应该是输入字符串的游程编码。

压缩('1010101001010101101010100101010110101010010101011010101001010101')

'1010101001010101*4'

这是我所拥有的,但这没有找到模式:

我需要一些帮助来解决这个问题。

0 投票
3 回答
4736 浏览

java - java字节与c++字节

我知道 Javabyte范围是 -128 到 127,但 C++BYTEunsigned char(0 到 255。)

我想将 C++ 函数转换为 Java,在 C++ 中我有一个LPBYTE(它是指向BYTE数组的指针。)我尝试使用byte数组而不是LPBYTEC++ 函数,但我的 Java 函数仍然无法正常工作。

我的 C++ 函数适用于 BMP 文件,它的算法是自定义运行长度编码。在将其转换为 Java 时,我使用 aBufferedImage并将其内容作为byte[]. 我猜 Java 函数由于类型不匹配而无法正常工作。

我应该在 Java 中使用哪种类型?

0 投票
2 回答
1537 浏览

encoding - 在移动到前变换和 BWT 后有效地应用游程变换?

我是编码新手,所以我试图了解基础知识。我遇到了一个描述无损文本压缩技术的文档,在这个文档中,有一张图说明了他们的压缩是如何工作的。它是这样工作的:

我不明白为什么他们会在 Move to Front Transform 之后使用 Run-Length Transform,这对我来说似乎效率不高。据我了解,MTF 本身不会产生很多运行,因此使用 RLT 后记没有用。

一些解释将不胜感激!

0 投票
2 回答
649 浏览

c++ - 基于 DCT 的视频编码过程

我遇到了一些问题,希望您能够澄清。我自学了一个类似于 Mpeg2 的视频编码过程。过程如下:

  1. 将 RGBA 图像拆分为 4 个单独的通道数据存储块。所以一个包含所有 R 值的数组,一个单独的 G 值数组等。

  2. 获取数组并获取一个 8x8 像素数据块,使用离散余弦变换 (DCT) 对其进行变换。

  3. 使用预先计算的量化矩阵量化这个 8x8 块。

  4. 之字形编码量化步骤的输出。所以我应该得到一个连续数字的踪迹。

  5. 运行长度编码 (RLE) 之字形算法的输出。

  6. Huffman 编码 RLE 阶段后的数据。使用预先计算的霍夫曼表中的值替换。

  7. 返回第 2 步并重复,直到所有通道数据都已编码

  8. 返回第 2 步并为每个通道重复

第一个问题是我是否需要将 RGBA 值转换为 YUV+A (YCbCr+A) 值才能使进程正常工作,还是可以继续使用 RGBA?我问,因为 RGBA->YUVA 转换是一个繁重的工作量,我想尽可能避免。

下一个问题。我想知道 RLE 存储应该只运行 0 还是可以扩展到数组中的所有值?请参阅以下示例:

最后一个问题是关于霍夫曼阶段的单个符号是什么?例如,要替换的符号是 2 或 4 之类的值,还是符号是运行级别对 [2,4]。

感谢您花时间阅读并帮助我。我阅读了许多论文并观看了许多 youtube 视频,这有助于我理解各个算法,但不能帮助我理解它们如何链接在一起以形成代码中的编码过程。