基于Python的算数编码实验

一、实验目的

  • 给出算术编码实现的详细原理。

  • 编制编解码程序

  • 设计并实现自适应算术编码(选做)

二、实验环境

硬件环境:windows 10; VScode

编程语言:python3.7

三、实验原理

算术编码是图像压缩的主要算法之一。 是一种无损数据压缩方法,也是一种熵编码的方法。和其它熵编码方法不同的地方在于,其他的熵编码方法通常是把输入的消息分割为符号,然后对每个符号进行编码,而算术编码是直接把整个输入的消息编码为一个数,一个满足(0.0 ≤ n < 1.0)的小数n。

算术编码的基本原理: 根据信源可能发现的不同符号序列的概率,把[0,1]区间划分为互不重叠的子区间,子区间的宽度恰好是各符号序列的概率。这样信源发出的不同符号序列将与各子区间一一对应,因此每个子区间内的任意一个实数都可以用来表示对应的符号序列,这个数就是该符号序列所对应的码字。显然,一串符号序列发生的概率越大,对应的子区间就越宽,要表达它所用的比特数就减少,因而相应的码字就越短。

在给定符号集和符号概率的情况下,算术编码可以给出接近最优的编码结果。使用算术编码的压缩算法通常先要对输入符号的概率进行估计,然后再编码。这个估计越准,编码结果就越接近最优的结果。

编码过程:

  • 编码器在开始时将“当前间隔” [ L, H) 设置为[0,1)。

  • 对每一事件,编码器按步骤(a)和(b)进行处理

  • 编码器将“当前间隔”分为子间隔,每一个事件一个。

  • 个子间隔的大小与下一个将出现的事件的概率成比例,编码器选择子间隔对应于下一个确切发生的事件相对应,并使它成为新的“当前间隔”。

  • 最后输出的“当前间隔”的下边界就是该给定事件序列的算术编码。

解码过程:解码前首先需要对区间[0,1)按照初始时的符号频度进行分割。然后观察输入的小数位于那个子区间。输出对应的符号,选择对应的子区间,然后从选择的子区间中继续进行下一轮的分割。不断的进行这个过程,直到所有的符号都解码出来。

四、实验过程与结果

程序演示截图:

基于Python的算术编码的设计与实现相关推荐

  1. python版植物大战僵尸源码_基于python的植物大战僵尸游戏设计与实现.docx

    湖南理工学院毕业设计(论文) PAGE PAGE 1 学 号 毕业设计(论文) 题目:基于python的植物大战僵尸游戏设计与实现 作 者 届 别 届 院 别 信息与通信工程学院 专 业 信息工程 指 ...

  2. 基于Python的图书推荐系统的设计与实现

    基于Python的图书推荐系统的设计与实现 课题描述 在这个数据爆炸的年代,人们的需求逐渐增多,而所对应的资源更是海量. 一个人要从无数的选择中选中自己所感兴趣的无异于大海捞针. 本系统在实现个人信息 ...

  3. python网络爬虫的流程图_基于Python的网络爬虫的设计与实现

    龙源期刊网 http://www.qikan.com.cn 基于 Python 的网络爬虫的设计与实现 作者:高祖彦 来源:<商情> 2020 年第 33 期 [摘要]一个爬虫从网上爬取数 ...

  4. 基于python可视化的网页搜索引擎设计#毕业设计

    开发环境 项目编号:基于python可视化的网页搜索引擎设计#毕业设计 开发语言:Python python框架:django 软件版本:python3.7/python3.8 数据库:mysql 5 ...

  5. 基于Python的数据分析系统的设计和实现

    <基于Python的数据分析系统的设计和实现>该项目采用技术Python的django框架.mysql数据库 ,项目含有源码.论文.PPT.配套开发软件.软件安装教程.项目发布教程.核心代 ...

  6. 可视化平台python_基于Python的可视化数据分析平台设计与实现

    Computer Era No. 12 2017 0 引言 随着云计算.物联网.社交网络等的兴起和数据库技术的成熟,社会中的各类数据正在以前所未有的速度增长.传统的数据处理方式难以发掘出海量数据中所隐 ...

  7. 基于Python的数独游戏的设计与实现

    源码获取:https://www.bilibili.com/video/BV1Ne4y1g7dC/ 基于Python的数独游戏的设计与实现

  8. 基于python的飞机大战游戏设计与实现

    基于python的飞机大战游戏设计与实现,采用MySQL+pygame+Tkinter实现飞机大战游戏,主要功能有注册+登录+游戏初始化(开始游戏+游戏操作说明+版权信息)+游戏主界面[设置敌机种类并 ...

  9. 基于Python的汽车销售系统的设计和实现

    <基于Python的汽车销售系统的设计和实现>该项目采用技术Python的django框架.mysql数据库,项目含有源码.论文.PPT.配套开发软件.软件安装教程.项目发布教程.核心代码 ...

最新文章

  1. 在Ubuntu 14.04 64bit上安装Master PDF Editor 3.2.81
  2. Windows 7 上怎样打开SQL Server 配置管理器
  3. 吴恩达《构建机器学习项目》精炼笔记(1)-- 机器学习策略(上)
  4. mongodb 安装启动
  5. android 图片缓存工具类,Android工具类系列-Glide图片缓存与圆角
  6. [css] 举例说明你对指针事件(pointer-events)的理解
  7. 年味十足的手绘年画风新年春节海报PSD模板
  8. 7-34 通讯录的录入与显示 (10 分)
  9. 转帖:django中操作mysql
  10. 软件体系结构期末复习资料
  11. GDOI2017小结
  12. RDL 报表 - 查询条件使用下拉框
  13. FireFox更改缓存路径
  14. PLC实验 S7-300超详细硬件组态实验过程
  15. php离线bt下载,transmission + nginx = 离线BT下载站
  16. Python+Vue计算机毕业设计网上美妆购物商城8k7w5(源码+程序+LW+部署)
  17. SASS _ 入门版
  18. RocketMQ消息生产者是如何选择Broker的
  19. ACdream1735 输油管道
  20. PCB相关知识-元器件+原理图

热门文章

  1. “字面量”和“符号引用”
  2. Tkinter教程之Grid篇
  3. 微软宣布2011年4月发布Windows 7 SP1
  4. Echarts 地图使用,以及tooltip轮播使用
  5. linux只W25Q256驱动,使用m25p80,支持w25q系列nor flash
  6. 谷粒商城11——认证服务、短信验证、Gitee-OAuth 社交登录、分布式session
  7. 【Access + SQL + VBA】更新查询同一字段多条件更新
  8. 【OpenCV-Python】教程:3-1 颜色空间转换与抠图
  9. javascript 编码转换
  10. Jack Server--Android N AOSP编译--Failed to contact Jack server