数字图像算术编码python_算术编码的python实现

课程实验题目:算术编码及其应用 完成时间:2019.6.15 说明:1. 实验成绩占总成绩10%,每人独立完成实验并撰写实验报告。 2. 不限定软件,实验程序应能对1000kb的英文文本编解码。不能使用网络上现成的代码(如:自适应图像算术编码等)。 3. 可以参考 Jyotika Doshi的二次幂总频率算法或 Amir Said的基于树的累积分布更新算法。 4. 实验报告应包含算法原理;关键算法的伪代码;实验结果(压缩比、运行时间和解码错误占比等);算法的主要代码部分。

《信息论课程大作业》

算术编码及其应用

班级: 1601014

姓名: 马秋平

学号:16010140048

一 算法原理

算术编码的主要思想是计算输入信源符号序列所对应的区间,然后在区间中间任取一点,以二进制表示适当截断作为序列的编码结果。

算术编码用到两个基本的参数:符号的概率和它的编码间隔。信源符号的概率决定压缩编码的效率,也决定编码过程中信源符号的间隔,而这些间隔包含在0到1之间。编码过程中的间隔决定了符号压缩后的输出。

算术编码方法是将被编码的一则消息或符号串(序列)表示成0和1之间的一个间隔,即对一串符号直接编码成[0,1]区间上的一个浮点小数。符号序列越长,编码表示它的间隔越小,表示这一段间隔所需的位数也就越多。信源中的符号序列任然需要根据某种模式生成概率的大小来减少间隔。可能出现的符号概率要比不太可能出现的符号减少范围小,因此,只正加较少的比特位。

在传输任何符号串之前,0符号串的完整范围设置为[0,1]。当一个符号被处理时,这一范围就依据分配这一符号的范围变窄。算术编码的过程,实际上就是依据信源符号的发生概率对码区间进行分割的过程。

给定事件序列的算术编码步骤如下:

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

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

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

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

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

算术编码的译码过程就是一系列的比较过程,每一步比较与的大小,为前面已经译出的字符串序列,是的分布函数,即对应区间的下界,是此区间内下一个输入符号所占区间的宽度,对于K元信源,译每一个码元最多需要K-1次比较以确定是信源符号集中的哪一个。

二 算法流程框图

三 实验过程测试文档(test.txt)

Financial regulators in Britain have imposed a rather unusual rule on the bosses of big banks. Starting next year, any guaranteed bonus of top executives could be delayed 10 years if their banks are under investigation for wrongdoing. The main purpose of this “clawback” rule is to hold bankers accountable for harmful risk-taking and to restore public trust in financial institutions. Yet officials also hope for a much larger benefit: more long-term decision making, not only by banks but by all corporations, to build a stronger economy for future generations.实验代码(Python实现)

# -*-coding:utf-8-*

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值