Encoding 在移动到前端变换和BWT后应用游程长度变换是否有效?

Encoding 在移动到前端变换和BWT后应用游程长度变换是否有效?,encoding,compression,transformation,run-length-encoding,burrows-wheeler-transform,Encoding,Compression,Transformation,Run Length Encoding,Burrows Wheeler Transform,我对编码还不熟悉,所以我正在努力理解基本知识。我遇到了一个描述无损文本压缩技术的文档,在这个文档中有一个图说明了它们的压缩工作原理。它是这样工作的: Source -> BWT -> MTF -> RLT -> Proprietary Entropy Encoder 我不明白为什么他们会在移动到前端转换之后使用游程长度转换,这对我来说似乎并不有效。据我所知,MTF本身不会产生很多运行,因此使用RLT后记是没有用的 如果您能解释一下,我们将不胜感激 效率不高 这可能是一篇

我对编码还不熟悉,所以我正在努力理解基本知识。我遇到了一个描述无损文本压缩技术的文档,在这个文档中有一个图说明了它们的压缩工作原理。它是这样工作的:

Source -> BWT -> MTF -> RLT -> Proprietary Entropy Encoder
我不明白为什么他们会在移动到前端转换之后使用游程长度转换,这对我来说似乎并不有效。据我所知,MTF本身不会产生很多运行,因此使用RLT后记是没有用的

如果您能解释一下,我们将不胜感激

效率不高

这可能是一篇关于BWT的旧论文。当时,使用RLE(游程编码器)是提高速度的常用技巧。 RLE,顺便说一句,不仅在BWT之后使用,而且在BWT之前使用,以加速BWT阶段。 同样的逻辑也适用于熵编码器,但它不太可能提供这么多好处

如今,这种伎俩已经完全过时了。
在BWT之前,您可能会发现某种LZP预处理,特别是对于长距离比赛(超出块大小),在速度提高方面与RLE的意图大致相同,但功能更强大。MTF也被完全取代,因为它过于CPU密集,成本也没有那么高。

BWT之后MTF的目标是缩小符号范围,这有利于熵编码。MTF将符号替换为其秩,由于BWT生成的重复,秩通常较小。由于MTF可能产生大量的0(这只是RLE的一种特殊情况,其中只有0的运行按长度进行编码),因此在此之后可以应用零长度编码


请看一看实现示例。您可以使用带或不带MTF+ZLE的块编解码器运行块压缩器。

。这是有道理的。我仍然不明白使用MTF的意义。你觉得你能解释一下吗?奇怪的是这篇论文发表于2009年。是那篇论文的链接。也许你能发现我没有发现的东西?第2页描述了该方案。我认为学生(和他的老师)的重点更多地是关于BWT阶段之前的单词转换。事实上,此转换已针对许多其他压缩算法进行了测试。因此,他们只是重复使用了一个旧的BWT实现,Bzip2“照原样”来进行说明。MTF可替换为距离编码(DC)。虽然DC产生的输出通常比MTF+ZLE短,但熵编码后通常不正确。不过,我不知道是否有其他MTF的替代品。