基于Python的算术编码的设计与实现
基于Python的算数编码实验
一、实验目的
给出算术编码实现的详细原理。
编制编解码程序
设计并实现自适应算术编码(选做)
二、实验环境
硬件环境:windows 10; VScode
编程语言:python3.7
三、实验原理
算术编码是图像压缩的主要算法之一。 是一种无损数据压缩方法,也是一种熵编码的方法。和其它熵编码方法不同的地方在于,其他的熵编码方法通常是把输入的消息分割为符号,然后对每个符号进行编码,而算术编码是直接把整个输入的消息编码为一个数,一个满足(0.0 ≤ n < 1.0)的小数n。
算术编码的基本原理: 根据信源可能发现的不同符号序列的概率,把[0,1]区间划分为互不重叠的子区间,子区间的宽度恰好是各符号序列的概率。这样信源发出的不同符号序列将与各子区间一一对应,因此每个子区间内的任意一个实数都可以用来表示对应的符号序列,这个数就是该符号序列所对应的码字。显然,一串符号序列发生的概率越大,对应的子区间就越宽,要表达它所用的比特数就减少,因而相应的码字就越短。
在给定符号集和符号概率的情况下,算术编码可以给出接近最优的编码结果。使用算术编码的压缩算法通常先要对输入符号的概率进行估计,然后再编码。这个估计越准,编码结果就越接近最优的结果。
编码过程:
编码器在开始时将“当前间隔” [ L, H) 设置为[0,1)。
对每一事件,编码器按步骤(a)和(b)进行处理
编码器将“当前间隔”分为子间隔,每一个事件一个。
个子间隔的大小与下一个将出现的事件的概率成比例,编码器选择子间隔对应于下一个确切发生的事件相对应,并使它成为新的“当前间隔”。
最后输出的“当前间隔”的下边界就是该给定事件序列的算术编码。
解码过程:解码前首先需要对区间[0,1)按照初始时的符号频度进行分割。然后观察输入的小数位于那个子区间。输出对应的符号,选择对应的子区间,然后从选择的子区间中继续进行下一轮的分割。不断的进行这个过程,直到所有的符号都解码出来。
四、实验过程与结果
程序演示截图:
基于Python的算术编码的设计与实现相关推荐
- python版植物大战僵尸源码_基于python的植物大战僵尸游戏设计与实现.docx
湖南理工学院毕业设计(论文) PAGE PAGE 1 学 号 毕业设计(论文) 题目:基于python的植物大战僵尸游戏设计与实现 作 者 届 别 届 院 别 信息与通信工程学院 专 业 信息工程 指 ...
- 基于Python的图书推荐系统的设计与实现
基于Python的图书推荐系统的设计与实现 课题描述 在这个数据爆炸的年代,人们的需求逐渐增多,而所对应的资源更是海量. 一个人要从无数的选择中选中自己所感兴趣的无异于大海捞针. 本系统在实现个人信息 ...
- python网络爬虫的流程图_基于Python的网络爬虫的设计与实现
龙源期刊网 http://www.qikan.com.cn 基于 Python 的网络爬虫的设计与实现 作者:高祖彦 来源:<商情> 2020 年第 33 期 [摘要]一个爬虫从网上爬取数 ...
- 基于python可视化的网页搜索引擎设计#毕业设计
开发环境 项目编号:基于python可视化的网页搜索引擎设计#毕业设计 开发语言:Python python框架:django 软件版本:python3.7/python3.8 数据库:mysql 5 ...
- 基于Python的数据分析系统的设计和实现
<基于Python的数据分析系统的设计和实现>该项目采用技术Python的django框架.mysql数据库 ,项目含有源码.论文.PPT.配套开发软件.软件安装教程.项目发布教程.核心代 ...
- 可视化平台python_基于Python的可视化数据分析平台设计与实现
Computer Era No. 12 2017 0 引言 随着云计算.物联网.社交网络等的兴起和数据库技术的成熟,社会中的各类数据正在以前所未有的速度增长.传统的数据处理方式难以发掘出海量数据中所隐 ...
- 基于Python的数独游戏的设计与实现
源码获取:https://www.bilibili.com/video/BV1Ne4y1g7dC/ 基于Python的数独游戏的设计与实现
- 基于python的飞机大战游戏设计与实现
基于python的飞机大战游戏设计与实现,采用MySQL+pygame+Tkinter实现飞机大战游戏,主要功能有注册+登录+游戏初始化(开始游戏+游戏操作说明+版权信息)+游戏主界面[设置敌机种类并 ...
- 基于Python的汽车销售系统的设计和实现
<基于Python的汽车销售系统的设计和实现>该项目采用技术Python的django框架.mysql数据库,项目含有源码.论文.PPT.配套开发软件.软件安装教程.项目发布教程.核心代码 ...
最新文章
- 在Ubuntu 14.04 64bit上安装Master PDF Editor 3.2.81
- Windows 7 上怎样打开SQL Server 配置管理器
- 吴恩达《构建机器学习项目》精炼笔记(1)-- 机器学习策略(上)
- mongodb 安装启动
- android 图片缓存工具类,Android工具类系列-Glide图片缓存与圆角
- [css] 举例说明你对指针事件(pointer-events)的理解
- 年味十足的手绘年画风新年春节海报PSD模板
- 7-34 通讯录的录入与显示 (10 分)
- 转帖:django中操作mysql
- 软件体系结构期末复习资料
- GDOI2017小结
- RDL 报表 - 查询条件使用下拉框
- FireFox更改缓存路径
- PLC实验 S7-300超详细硬件组态实验过程
- php离线bt下载,transmission + nginx = 离线BT下载站
- Python+Vue计算机毕业设计网上美妆购物商城8k7w5(源码+程序+LW+部署)
- SASS _ 入门版
- RocketMQ消息生产者是如何选择Broker的
- ACdream1735	输油管道
- PCB相关知识-元器件+原理图
热门文章
- “字面量”和“符号引用”
- Tkinter教程之Grid篇
- 微软宣布2011年4月发布Windows 7 SP1
- Echarts 地图使用,以及tooltip轮播使用
- linux只W25Q256驱动,使用m25p80,支持w25q系列nor flash
- 谷粒商城11——认证服务、短信验证、Gitee-OAuth 社交登录、分布式session
- 【Access + SQL + VBA】更新查询同一字段多条件更新
- 【OpenCV-Python】教程:3-1 颜色空间转换与抠图
- javascript 编码转换
- Jack Server--Android N AOSP编译--Failed to contact Jack server