任意二进制状态数据都能无损压缩,其压缩模型由以下组成:25*25矩阵、障碍格、计数路径、被压缩数据、洗牌、计数器、简化数据等等,建模见(图1),

 其中屏蔽掉120个元素(取名:障碍格,在图3中用2表示),障碍格在模型中是固定的,计数器不会对其计数,

计数路径见(图2-1——图2-4),计数器路径分:A、B、C、D四组,每组25个,分别取名:A-0、A-1、A-2.......A-24,B-0、B-1、B-2.......B-24,C-0、C-1、C-2.......C-24,D-0、D-1、D-2.......D-24,共:4*25=100个计数路径,每个计数路径上面有25个元素。每个元素会被计数4次,计数路径和障碍格的合理布局能有效的提高解压效率和解压时的二义性问题。计数路径举例说明:图3上坐标X=11,Y=12元素的计数路径A-8、B-16、C-17、D-15。

计数器的数量与计数路径数量是相等的,计数器的计数轨迹是由计数路径决定的,计数器只对元素中的1进行累加计数,元素中的0不管,元素中的2表示障碍格也不管。计数器值0-6,用5位二进制表示:0=00001、1=00010、2=00100,3=00000、4=01000、5=10000、6=01010。计数器值3,出现的频率最高用00000表示,计数器值6,出现的频率最低用01010表示,这样能大量简化数据,使1的数量保持在60-80个之间(数据长度505位)。详情见图6-2 

洗牌种类有:4096种,用12位二进制表示,洗牌数据长度是505位二进制数据,最佳洗牌是计数器值不能大于6,计数器结果二进制表达式中的1数量最少。
下面讲一下1200位经150次每次压缩8位,压缩到497位。模型一次处理数据是505位,压缩结果是497位,505位如何压缩到497位的,第一次压缩是对压缩模型写入一个固定的505位数据,经洗牌后得到最佳497位压缩结果见图7,

第一次的压缩结果497位,未洗牌状态下505位数据的填充顺序,前面12位是洗牌号2052转换成二进制100000000100,后面跟着97个计数器值的二进制表达式,其中1的数量64个,加末尾被压缩数据(可以是任意状态的二进制数据)8位,序号:000=11010101其中1的数量5个,497+8=505位(其中1的数量64+5=69个)数据再次写入压缩模型 ,经洗牌后得到最佳497位压缩结果。一直循环压缩150次每次压缩8位,既能把任意1200位的数据压缩到497位。被压缩数据见图4

连续压缩过程见图6-1、图6-2、图6-3、图6-4。

 压缩过程结果见图5

最后一次填充505位经洗牌后的数据见图8

最后一次压缩结果见图9

此数据无损压缩算法可以压缩任意二进制数据。

任意数据无损压缩算法相关推荐

  1. 常用无损压缩算法原理简析

    无损压缩算法原理 压缩一般分为两个步骤,建模和编码.一个完美的模型可以描述数据流是如何产生的,相当于一个python类里面的generator.只需要这个generator就可以产生所有数据,从而大大 ...

  2. 视频压缩算法有哪些php,常用的无损压缩算法有哪些

    常用的无损压缩算法有:1.LZ77算法,该算法是很多其他无损压缩算法的基础:2.LZR算法,是旨在提升LZ77的一个算法:3.LZSS算法,该算法目标是成为LZ77的一个线性时间替换算法:4.DEFL ...

  3. 数仓无损压缩算法:gzip算法

    摘要:一种无损的压缩数据格式,是一个在类Unix上的一种文件解压缩软件. 本文分享自华为云社区<GaussDB(DWS) gzip算法简介>,作者:hw0086. [算法原理] gzip是 ...

  4. 无损压缩算法专题——miniLZO

    目录 一.miniLZO介绍 二.miniLZO的使用 三.VS2013下文件压缩和解压测试 四.STM32F103ZET6平台下的测试 五.总结 六.参考资料 一.miniLZO介绍 miniLZO ...

  5. 无损压缩算法专题——RLE算法实现

    一.前言 本文是基于我的另一篇博客<无损压缩算法专题--无损压缩算法介绍>的基础上来实现的,RLE算法最简单的理解就是用(重复数,数据值)这样一个标记来代替待压缩数据中的连续重复的数据,以 ...

  6. python函数拟合不规则曲线_python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案...

    第一种是进行多项式拟合,数学上可以证明,任意函数都可以表示为多项式形式.具体示例如下. ###拟合年龄 import numpy as np import matplotlib.pyplot as p ...

  7. java字符串 直接能网络传输吗_atitit.二进制数据无损转字符串网络传输

    atitit.二进制数据无损转字符串网络传输 1. gbk的网络传输问题,为什么gbk不能使用来传输二进制数据 gbk会造成信息丢失 由于有些字符在gbk字符集中找不到对应的字符,所以默认使用编码63 ...

  8. 如何为某些HTML标记存储任意数据

    本文翻译自:How to store arbitrary data for some HTML tags I'm making a page which has some interaction pr ...

  9. python图片压缩原理_LZ77无损压缩算法原理详解(结合图片和简单代码)

    LZ77算法是无损压缩算法,由以色列人Abraham Lempel发表于1977年.LZ77是典型的基于字典的压缩算法,现在很多压缩技术都是基于LZ77.鉴于其在数据压缩领域的地位,本文将结合图片和源 ...

最新文章

  1. 软考网络工程师身份证忘记领取啦怎么办
  2. 深入浅出之个性化推荐系统实践
  3. python游戏编程入门电子书-请问自学 Python 有必要买课程吗?
  4. ubuntu 64上的GCC如何编译32位程序
  5. 这种个性化可视化图也太可爱了吧!
  6. Vue 下拉刷新及无限加载组件 - 有你便是晴天 - 博客园
  7. 妈妈花3万给9岁儿子报编程课 网友:全是忽悠!
  8. SpringBoot 整合Shiro实现动态权限加载更新+Session共享+单点登录
  9. Android画布和图形绘制---Canvas and Drawables(一)
  10. 保证一致性吗_谈了千百遍的缓存数据一致性问题
  11. matlab中交点坐标,matlab交点坐标
  12. Dediprog EM100Pro-G2 安装与配置教程
  13. WPF 框架prism代码笔记
  14. 鼠标右键菜单怎么截图?
  15. VISA/MasterCard/AE/DC/JCB卡号结构
  16. 如何成为一名研发主管--关于个人、过程、工具和团队之一
  17. ADNI-MRI-PET-ANALYSIS
  18. 前沿探索:腾讯云数据库自治服务最佳实现
  19. 结对项目-最长英语单词链
  20. 数码相机闪光灯存储卡挑选篇

热门文章

  1. 【持续更新】这个免费的软件资源库,你一定要收藏好!
  2. python 节假日_Python区分工作日、周末、法定假日的方法
  3. i.MX6ULL驱动开发 | 15 - Linux UART 驱动框架
  4. MySQL:备份类型:热备份、温备份、冷备份
  5. 基于YOLOv3的口罩佩戴检测
  6. 区块链快速入门(三)——CFT(非拜占庭容错)共识算法
  7. 循序渐进,QAD ERP 为DHAC “赋能”未来
  8. solidworks二次开发:驱动装配体的尺寸
  9. 64编码格式数据转 json数据 php,PHP的json数据编译和解译,字符编码无关。
  10. jQuery slideToggle