[二维压缩] | Move-to-front编码


一、Move-to-front

这种方法的基本思想是保持符号的字母表A作为一个列表,其中经常出现的符号位于前面附近。符号s被编码为此列表中它前面的符号数。因此,如果 A = ( t , h , e , s , . . . ) A=(t,h,e,s,...) A=(thes...)和要被编码的输入流中的下一个符号是e,那么它将被编码为2,因为它前面有两个符号。这种方法有几种可能的变体;其中最基本的是增加了一个步骤:在符号s被编码后,它被移到列表a的前面。因此,在编码e之后,字母表被修改为 A = ( e , t , h , s , . . . ) A=(e,t,h,s,...) A=(eths...)。这一向前移动的步骤反映了一旦e被读取更多次,至少在一段时间内,将成为一个共同的符号。移动到前的方法是局部自适应的,因为它可以适应输入流局部区域的符号的频率。如果输入流满足这个期望,即如果它包含相同符号的浓度(如果符号的局部频率在输入流的区域之间发生显著变化),该方法会产生良好的结果。
在这里插入图片描述

二、Move-to-front编码代码实现

class Move_to_Front:
    # Move-to-front transform algorithm
    def move_to_front(self, input, inputcodon):
        dst = []

        for srcValue in input:
            dst.append(inputcodon.index(srcValue))
            inputcodon.remove(srcValue)
            inputcodon.insert(0, srcValue)

        for dstValue in range(len(dst)):
            dst[dstValue] = str(dst[dstValue])
        dst = ''.join(dst)
        return dst

input :  021000011011002100222100
codon :  ['0', '1', '2']
output :  022200010110102220200220

总结

以上就是今天要讲的内容,本文仅仅简单介绍了Move-to-front编码的相关定义和其中简单代码实的实现方法。


参考

[1] Salomon, David, and Giovanni Motta. Handbook of data compression. London; New York: Springer, 2010.

本文部分参考自《Handbook of Data Compression 》,该内容仅供学习研究之用,如若喜欢请支持购买正品书籍。
转载本文请联系原作者获取授权,同时请注明本文来自池鱼醉故渊博客。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值