读数据压缩入门笔记07_自适应统计编码

news2025/1/17 21:36:42

 

1. 位置对熵的重要性

1.1. 为了计算概率总需要多遍历一次数据集,而在计算出整个数据集中各符号的出现概率后,还要继续处理这些数值

1.1.1. 如果是相对较小的数据集,那么这些就不是什么问题

1.2. 随着要压缩的数据集变大,统计编码的结果与熵的偏差也会越来越大

1.2.1. 数据集的不同部分有着不同的概率特征

1.3. 如果处理的是流数据,比如视频流或音频流,由于整个数据集没有“结尾”,因此就不能“遍历两次”

1.4. 数据中总会存在某种类型的局部偏态(locality-dependent skewing)

1.4.1. 在数据流中,字符Q可能会在前三分之一部分出现很多次,而在后三分之二部分则一次也没有出现

1.5. 如果数据流中存在很多局部偏态的情况的话,将数据流分为N块并且每块都单独压缩,那么得到的结果可能会比将数据流整体压缩得到的结果小

1.6. 局部性很重要(locality matters)

1.6.1. 数据流一般以线性的方式生成,因此数据流中很有可能会出现某一部分的特征与其他部分完全不同的情况

2. "动态”或“自适应”统计编码算法

2.1. 具有适应数据流熵的局部特性能力的统计编码算法

2.2. 构成了大多数重要的、高性能的、高压缩率的多媒体数据流(如图片、视频及音频)压缩算法的基础

2.3. 自适应统计编码的关键在于其符号码字对应表并非一成不变,相反,可以根据读到的符号动态地生成VLC

3. 自适应VLC编码

3.1. 仅遍历一次数据集,但是过程要更复杂

3.1.1. 符号码字对应表并非必须一成不变,相反,可以根据读到的符号更新它

3.2. VLC表是静态的

3.3. 动态创建VLC表

3.3.1. 每读取一个符号,编码器都会问

3.3.1.1. 这个符号之前出现过吗?

3.3.1.2. 如果出现过,那么输出当前分配的码字,并更新其出现的概率

3.3.1.3. 如果没有,则进行一些特殊处理

3.3.1.3.1. 动态概率表
3.3.1.3.2. 重置
3.3.1.3.3. 字面值

4. 自适应算术编码

4.1. 其编码步骤与概率表之间的交互很简单

4.2. 只要编码器与解码器在更新概率的正确顺序上达成一致,就能根据需要更新概率表

5. 自适应哈夫曼编码

5.1. Faller于1973年提出

5.2. 1985年高德纳又对此算法做出重大改进

5.3. 所有现代的版本都是建立在Vitter于1987年提出的方法之上

5.4. 哈夫曼树结构的处理比较复杂

5.5. 自适应哈夫曼算法没有每次都重新生成完整的树,而是在读取和处理符号时调整现有的树

5.6. 每读取一个符号都必须要做

5.6.1. 更新概率

5.6.2. 对树的大量结点变换位置并重新排序,以使它们与概率的变化同步

5.6.3. 使树的结构满足哈夫曼树的要求

6. 优点

6.1. 有生成符号码字对应表的能力,无须将符号码字对应表显式地存储在数据流中

6.1.1. 数据流变小后,计算性能就能有所提高

6.2. 有实时压缩数据的能力,无须再将整个数据集作为一个整体来处理

6.2.1. 可以有效地处理更大的数据集

6.2.2. 不用事先知道要处理的数据集有多大

6.3. 有适应信息局部性的能力,即邻近的符号会对码字的长度有影响,这可以显著提高压缩率

7. 其他

7.1. 大多数的统计编码算法主要关注的是图片(WebP)和视频(WebM、H.264)文件的压缩

7.2. 如果处理的是少量的数据,那么简单的静态统计编码算法就可以工作得很好

7.3. 如果处理的是大量的数据或者多媒体数据,而且运行时的性能很重要,那么采用自适应统计编码算法是正确的选择

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/755300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python异常值检测——案例分析

目录 1.单个变量异常值检测 2. 双变量关系中的异常值检测 3. 使用线性回归来确定具有重大影响的数据点 4. 使用k最近邻算法找到离群值 5. 使用隔离森林算法查找异常 1.单个变量异常值检测 如果某个值离平均值有多个标准偏差,并且远离近似标准正态分布的值&#…

Office如何通过VSTO进行WORD插件开发?

文章目录 0.引言1.工具准备2.WORD外接程序创建和生成3.外接程序生成并使用 0.引言 VSTO(Visual Studio Tools for Office )是VBA的替代,是一套用于创建自定义Office应用程序的Visual Studio工具包。VSTO可以用Visual Basic 或者Visual C#扩展…

在 3ds max 中创建逼真的镜像材质

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 选项 1.平面镜面材料 步骤 1 首先,我们需要包含镜像对象和一个或多个镜像对象的场景。您可以在此处下载本教程中使用的场景,也可以使用您自己的场景和对象。对于第一个镜像选项&…

Unreal Engine 与 Blender - 比较指南

虚幻引擎和 Blender 是游戏开发人员中最常用的两种软件,它们在游戏开发工作流程中都有自己的用途和地位。作为进入视频游戏行业的初学者,可能很难从数十种软件中筛选找到最适合您需求的一款。希望本指南能够缓解这一困难并帮助您决定选择哪个软件。 虚幻…

【c++源码】瑞佳飞飞彩虹端分享老飞飞源码

里面功能包含。离线摆摊,内挂,宠物系统,宠物进阶,任意商店,回收装备,模型查看,个人排行榜,物品分解,全物品升级,钥匙开箱子,外观变更,…

电商数据采集方式有哪些

不管是做渠道管控、还是价格监测,数据采集都是基础,只有数据准确了,品牌才能更好的管控乱价、治理渠道。同时当品牌有数据分析需求时,对数据采集的要求也会越高。 力维网络有自主开发的数据采集监测系统,可为品牌提供多…

SpringCloud整合Sentinel

文章目录 1、Sentinel介绍2、安装Sentinel控制台3、微服务整合Sentinel 1、Sentinel介绍 阿里开源的流量控制组件官网:https://sentinelguard.io/zh-cn/index.html承接了阿里双十一大促流量的核心场景,如秒杀、消息削峰填谷、集群流量控制、实时熔断下游…

关于Java的网络编程

网络的一些了解 网络通信协议 链路层:链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤、网线提供的驱动。网络层:网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组&…

【EXCEL】数据录入的快捷键和正确格式

目录 0.环境 1.内容概述 2.具体内容 2.1数据录入换行换列的快捷键(标准的数据输入方式) 2.2日期的正确格式和使用(标准日期格式与长日期) 2.2.1 标准日期 2.2.2 长日期 2.2.3 显示当前日期和时间的快捷键 2.3百分比的正确…

华为Mate60 Pro曝光:麒麟芯片9100 or 骁龙8Gen2+5G,7699元起,你觉得如何?

最近网上关于华为Mate60系列的爆料逐渐增多,尤其是对于新机到底支不支持5G,众说纷纭,而且老是变动。7月14日,有数码博主爆料称,华为Mate60系列确实分前期和后期版本,前期为了秀肌肉,会展示新的成…

更改el-select-dropdown_item selected选中颜色

更改el-select-dropdown_item selected选中颜色 默认为element主题色 在修改element select下拉框选中颜色时会发现不生效,原因是:el-select下拉框插入到了body中 解决办法: 在select标签里填写:popper-append-to-body"false"属性…

window关闭固定端口号

查看所有:netstat -ano 查看对应端口:netstat -ano|findstr "9004"关闭端口: 任务管理器中的详细信息 对应的PID就是占用的端口 关闭即可 命令行关闭端口: taskkill -PID 进程号 -F

基于weka手工实现多层感知机(BPNet)

一、BP网络 1.1 单层感知机 单层感知机,就是只有一层神经元,它的模型结构如下1: 对于权重 w w w的更新,我们采用如下公式: w i w i Δ w i Δ w i η ( y − y ^ ) x i (1) w_iw_i\Delta w_i \\ \Delta w_i\eta(y…

Java Jsp+Json+阿贾克斯

0目录 1.补充阿贾克斯 2.实战(加入Json) 1.补充阿贾克斯 创建工程,加入jason依赖和数据库 新建数据库,表和实体类 先新建一个查询方法 FruitServlet 修改Web.xml 加入Js包(版本1.9.1) …

electron在BrowserWindow中禁止右键菜单

最近使用 electron vite solid.js 做一个网络流量实时监控的小工具,其中需要禁止用户在获取 BrowserWindow 焦点后弹出默认右键菜单。 解决方案 在 new BrowserWindow 后中添加以下代码: // 禁止右键菜单弹出 startmainWindow.hookWindowMessage &…

吴恩达机器学习2022-Jupyter-Scikit-Learn教学

1可选实验室: 线性回归使用 Scikit-Learn 有一个开源的、商业上可用的机器学习工具包,叫做 scikit-learn。本工具包包含您将在本课程中使用的许多算法的实现。 1.1目标 在这个实验室里: 利用 scikit-学习使用线性回归梯度下降法来实现 1.2工具 您将利用 sciki…

CSS3绘制3D银行卡片层叠展示特效

使用纯css3绘制3D银行卡层叠展示特效 具体示例如下 <template><div><div class"tariffCards"><div class"economy"><img src"../images/css-article-imgs/example-css3D-card/tarcs.png" alt"中信银行" he…

2022 Robocom CAIP国赛 第四题 变牛的最快方法

原题链接&#xff1a; PTA | 程序设计类实验辅助教学平台 题面&#xff1a; 这里问的是把任意一种动物的图像变成牛的方法…… 比如把一只鼠的图像变换成牛的图像。方法如下&#xff1a; 首先把屏幕上的像素点进行编号&#xff1b;然后把两只动物的外轮廓像素点编号按顺时针记…

python 第十四章 模块和包

系列文章目录 第一章 初识python 第二章 变量 第三章 基础语句 第四章 字符串str 第五章 列表list [] 第六章 元组tuple ( ) 第七章 字典dict {} 第八章 集合set {} 第九章 常用操作 第十章 函数 第十一章 文件操作 第十二章 面向对象 第十三章 异常 文章目录 系列文章目录14.…

【阅读笔记】Rapid, Detail-Preserving Image Downscaling

Rapid, Detail-Preserving Image Downscaling&#xff08;快速的图像缩放技术&#xff09; 该论文提出了一种基于卷积滤波器的算法&#xff0c;并确定滤波器的权值&#xff0c;使重要的细节保留在缩小比例的图像。更具体地说&#xff0c;它为更偏离局部图像邻域的像素分配更大…