无损压缩编码(下)| 学习笔记

简介: 快速学习无损压缩编码(下),介绍了无损压缩编码(下)系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【高校精品课-华中科技大学 -智能媒体计算无损压缩编码(下)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/811/detail/15682


无损压缩编码(下)


内容介绍:

一、香农-范诺编码

二、举例


一、香农-范诺编码

1.香农-范诺(Shannon-Fano)编码

最早阐述和实现这种编码的是 Shannon ( 1948年)和 Fano ( 1949年)

2.采用从上到下的方法进行编码

按照符号出现的频度或概率排序编码中的符号可以是多媒体信号中音频的采样、可以是图像中的灰度值,也可以是图像中的颜色值、也可以是颜色值中的某一个分量.

排序可以从大到小排,例如 A、B、C、D 和 E,分别统计他们的概率后把其排序出来。

3. 使用递归方法分成两个部分,每一部分具有近似相同的概率

例如有五个 A、B、C、D 和 E,可以分为两组,这两组的依据是使这两组有最可能接近的和。


二、举例

香农-范诺编码中继续二分就是递归,分到只有两个部分不能再分为止。如下表:

符号

出现的次数

概率

A

15

15/40(0.375)

B

7

7/40(0.175)

C

7

7/40(0.175)

D

6

6/40(0.150)

E

5

5/40(0.125)

根据其概率再进行排序,如下(从大到小排序):

A(0.375)  B(0.175)  C(0.175)  D(0.150)  E(0.125)

第二步是将这五个按照其概率值再进行分组:

可以将 A 和 B 分在一起,加一起概率是0.55,C、D、E 为一组,概率和就为0.45,这样分两组的概率和才接近。

将其中一组用0表示,另一组用1表示。

(分成两组的原因:因为是用二进制编码)

继续分,可以将 C、D、E 这一组再分为两组,发现 D、E 分为一组然后 C 为单独一组的概率和更加接近。然后将 C 这单独一组赋为0,D、E 组赋为1。

然后 D、E 也可以继续二分,再将 D赋为0,E赋为1,A、B 组也可以拆分,将 A 赋0,B赋1。

这样后就可以将编码输出,编码为:00 01 10 110 111

如下图所示:

image.png

最小的概率是0.125,编码是由3位表示,大概率用2位表示,说明概率越大,码字越短。

然后可以计算需要多少位,如下表:

符号

出现的次数(Pi)

log2(1/Pi)

分配的代码

需要的位数

A

15(0.375)

1.4150

00

30

B

7(0.175)

2.5145

01

14

C

7(0.175)

2.5145

10

14

D

6(0.150)

2.7369

110

18

E

5(0.125)

3.0000

111

15

计算出编码得到的总位数为91(说明是无损的)

压缩比如何计算:

压缩比如果都用三位表示,需要120位,120/91 就是其压缩比(也就是1.3:1)以上就是最早的统计编码。

相关文章
|
存储 C# C语言
字符串终止符
字符串终止符
1203 2
|
8月前
|
人工智能 监控 算法
搬运5款实用型WIN10小工具
推荐5款实用Win10小工具,提升办公学习效率。1. EDiary:本地加密日记软件,支持富文本与云同步;2. ColorPicker:智能取色工具,提供多种格式转换;3. 3171.cn:在线AI工具箱,涵盖视频、音频、图片等编辑功能;4. MultiPar:文件恢复工具,采用纠错算法保护数据;5. 1Password:密码管理器,保障账号安全。这些工具简单便捷,满足不同场景需求。
171 0
|
11月前
|
存储 供应链 安全
合同与订单管理:CRM自动化的商业价值
在快节奏的商业环境中,CRM系统已成为企业提升效率、优化客户体验和增强竞争力的关键工具。本文探讨CRM自动化管理在合同签署和订单处理中的作用与优势。通过电子签名集成、合同模板管理、审批流程自动化和合同状态跟踪,CRM系统显著提高了合同签署的效率和准确性。订单处理方面,自动化的订单创建与同步、库存管理和调度、发货和物流跟踪以及发票和付款处理,确保了订单信息的准确性和及时性。CRM自动化不仅提升了运营效率,减少了人为错误,还增强了客户体验和数据安全性,成为企业数字化转型的重要推动力。
|
9月前
|
前端开发 持续交付 网络安全
零成本快速搭建美观个人网站
这是一份详细的零成本个人网站搭建指南,采用 Hugo + PaperMod 主题生成静态网站并托管于 GitHub Pages,实现全自动部署与全球 CDN 加速。方案包含基础配置、内容添加、进阶美化技巧及优化方法,如配色调整、响应式布局和 SEO 优化等。相比传统 WordPress 方案,本方法完全免费、加载速度快且无需服务器维护,适合开发者快速建立专业在线形象。
488 6
|
12月前
|
存储 缓存 Oracle
Java线程池,白话文vs八股文,原来是这么回事!
本文介绍了Java线程池的原理、实现方式及相关参数。首先,通过类比公司员工的方式解释了线程池的核心概念,如核心线程、最大线程数、任务队列和拒绝策略。接着,详细描述了线程池的任务处理流程,并提供了使用`ThreadPoolExecutor`和`Executors`创建线程池的代码示例,强调了`ThreadPoolExecutor`的灵活性和`Executors`的局限性。最后,总结了线程池的相关参数及不同类型的线程池实现,并附带常见面试题及其解答,帮助读者全面理解线程池的应用场景和优化方法。
162 4
|
JavaScript
Vue3评分(Rate)
这是一个基于 Vue 3 的评分组件 `Rate.vue`,支持多种自定义设置,包括是否允许清除、半选状态、星星总数、字符样式、字符大小、选中颜色、字符间距及是否禁用等。组件内置四种 SVG 图标,并允许使用自定义字符。通过 `v-model:value` 实现双向绑定,并提供了 `change` 和 `hoverChange` 事件回调。 组件演示了不同的使用场景,如禁用状态、不同形状的图标、自定义字符和颜色等。同时提供了一个评分配置器,可以动态调整各项参数以满足不同需求。在线预览效果展示了各种配置下的评分显示样式。
343 1
Vue3评分(Rate)
|
前端开发 JavaScript PHP
技术心得:前端点击按钮,导入excel文件,上传到后台,excel接收和更新数据
技术心得:前端点击按钮,导入excel文件,上传到后台,excel接收和更新数据
212 0
|
缓存 资源调度 JavaScript
yarn安装和使用及与npm的区别
yarn安装和使用及与npm的区别
439 0
|
Cloud Native Java Docker
【Spring云原生】Spring官宣,干掉原生JVM,推出 Spring Native!整体提升性能!Native镜像技术在Spring中的应用
【Spring云原生】Spring官宣,干掉原生JVM,推出 Spring Native!整体提升性能!Native镜像技术在Spring中的应用