数据压缩算法----游程编码和霍夫曼编码

本文介绍了数据压缩中的游程编码和霍夫曼编码。游程编码通过记录连续相同符号的长度来压缩数据,适用于比特流冗余情况,如图像和扫描文档。霍夫曼编码则根据字符频率分配短编码,减少了频繁字符的表示比特数。文章详细阐述了两种编码的定义、应用场景、解码和压缩操作,并提供了简单的代码实现。
摘要由CSDN通过智能技术生成

游程编码

定义:

用一个 符号值/串 代替具有相同值的连续符号(连续符号构成了一段连续的“游程”。游程编码因此而得名),使符号长度少于原始数据的长度。

应用场景:

游程编码经典应用场景就是比特流中的冗余情况。例如有一串比特流:0000000000000001111111000000011111111111,该比特流中有15个0,然后是7个1,然后是7个0,然后是11个1。因为0和1总是交替出现的,我们只要表示出游程长度即可。上面的比特流可用游程编码压缩为:1111011101111011(15=1111,7=0111,7=0111,11=1011)。

游程编码被广泛使用于保存图像和扫描文档。不适用于比特流不含较长游程的情况(比如典型的英文文档)。

Q:

  1. 应该用多少比特记录游程长度?
  2. 某个游程长度超过了能够记录的最大长度怎么办?
  3. 当游程长度所需的比特数小于记录长度的比特数怎么办?

A:

  1. 游程长度应该在0-255之间,使用8位编码;
  2. 在需要的情况下使用长度为0的游程来保证所有游程的长度小于256;
  3. 较小的游程
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值