RLE行程长度编码压缩算法.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RLE⾏程长度编码压缩算法 在看emWIN的时候看到⼀个图⽚压缩的算法可以有效的对⼆值图(简单的2中颜⾊或者更多)进⾏压 缩,压缩的效果可以节省空间⽽且不丢失信息! 特点 ⼀种压缩过的⽂件格式,RLE压缩⽅案是⼀种极其成熟的压缩⽅案,特点是⽆损失压缩,既节省了磁盘 空间⼜不损失任何图像数据。 游程编码是⼀种统计编码,该编码属于⽆损压缩编码。对于⼆值图有效。其在对图像数据进⾏编码时, 沿⼀定⽅向排列的具有相同灰度值的像素可看成是连续符号,⽤字串代替这些连续符号,可⼤幅度减少 数据量。 ⾏程编码是连续精确的编码,在传输过程中,如果其中⼀位符号发⽣错误,即可影响整个编码序列,使 ⾏程编码⽆法还原回原始数据。 游程编码所能获得的压缩⽐有多⼤,主要取决于图像本⾝的特点。如果图像中具有相同颜⾊的图像块越 ⼤,图像块数⽬越少,获得的压缩⽐就越⾼。反之,压缩⽐就越⼩。 缺点 在打开这种时,要花费更多时间,此外,⼀些兼容性不太好的应⽤程序可能会打不开。 不过RLE还有⼀个缺点,那要是内容像ABCABCABC的话使⽤这种算法⽂件会增⼤,就是 1A1B1C1A1B1C1A1B1C了,更长,就达不到压缩的效果了。简单来说,游程编码就是⽤⼀个符号值或 串长代替具有相同值的连续符号(连续符号构成了⼀段连续的“⾏程”。⾏程编码因此⽽得名),使符号 长度少于原始数据的长度 RLE压缩⽅式  ABBBBBBBBA - 1A8B1A 下⾯都对byte流压缩。 如输⼊数据 LPBTEpByte={1,1,1,1,1,1}; 压缩的数据为6,1 压缩了4个字符。 但是在⾥⾯不能直接这么替换,⽽应该使⽤特殊的,否则⽆法解压。 ⽐如pByte={6,1,0,1,1,1,1,1,1}; 这样有两个6,1⽆法判断是原有的6,1还是{1,1,1,1,1,1}压缩后的代码。 所以应该有。 (1) 为了达到最⼤压缩率,可以先扫描源数据流,使⽤最少出现的字符做。 如pByte={6,1,0,1,1,1,1,1,1,...}; 扫描后发现0为最少出现的字符。 我们使⽤0作为压缩的控制,其他字符代表他本⾝。源数据⾥⾯的0,⽤0,0来表⽰。 那么pByte压缩后为 6,1,0,0,0,6,1 解压时BYTEa,b,c; a 依次扫描压缩数据,如果输⼊字符为⾮,则直接输出到解压流。 如果为,b 其下⼀字符是否也为控制字符,如果是,在输出流输出控制字符的代码。 如果不是c 读压缩流,然后输出b个c到输出流。 注意:该处对于Ctrlcode的编码需要⾃⼰计算偏移. 如ctrl=2.那么n=3时应该修正为2. 刚才介绍的⽅法是最⼤压缩率的,但是因为对每个输⼊字符需要检查,速度不算快。 (2) 为了增加解压速度,可以采⽤其他的。 主要⽅法是不对每个输⼊字符进⾏检查,只检查较少次就达到⼏乎相同的压缩率。 来看看这个改进的⽅法。 仔细观察,其实对不重复的也可以⽤控制n+数据的⽅式表⽰。这⾥的n带表n个未压缩数据。 还是刚才的数据。 pByte={6,1,0,1,1,1,1,1,1} 不⽤扫描选择0为控制 压缩为3,{6,1,0,}0,6,1 nctrlnm 解压就⾮常⽅便了 扫描数据读⼀个字符, { n=read; if(n) { 字符拷贝n个 } else { n=read(); m=read; write(n个m); } } (3)优化 对(1)的优化。 观察得知,1,1,1这样的数据压缩率为0 下⾯的数组来⾃于emWIN压缩的图标数组:可以看到控制字符为0 /********************************************************************* * * bm0 */ static GUI_CONST_STORAGE unsigned char _ac0[] = { /* RLE: 011 Pixels @ 000,000 */ 11, 0xFF, /* ABS: 010 Pixels @ 01 1,000 */ 0, 10, 0xF6, 0xA8, 0x48, 0x1D, 0x11, 0x0E, 0x1E, 0x47, 0x8E, 0xE7, /* RLE: 021 Pixels @ 021,000 */ 21, 0xFF, /* ABS: 002 Pixels @ 010,001 */ 0, 2, 0xBF, 0x30, /* RLE: 008 Pixels @ 012,001 */ 8, 0x00, /* ABS: 003 Pixels @ 020,

文档评论(0)

139****1921 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档