PCM 与预测编码(下)| 学习笔记

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

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

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


PCM 与预测编码(下)


内容介绍

一、自适应增量调制(ADM)

二、自适应脉冲编码( APCM )

三、差分脉冲编码调(DPCM )

四、子带编码(SBC )


一、自适应增量调制(ADM)

根据输入信号斜率的变化自动调整量化阶△的大小,使增量调制器的量化阶△能够自适应,同时也能使斜率过载和粒状噪声都减到最小。因此许多研究人员研究了各种各样的方法。

ADM 算法依据:检测到斜率过载时增大量化阶△,而在输入信号的斜率减小时降低量化阶△。

斜率即变化的大小,例如连续两个都为1时,说明步长变小,即在第三个地方加大补偿;相反如果连续两个都在变化,要么1要么0,说明本身原始信号的变化不大,此时步长可以减少。

根据此思想,原来的PCM的原始信号,像1位编码、△编码质量不够高,而PCM编码每个样本是存实际值,而△编码存的是差值的极性。


二、自适应脉冲编码( APCM )

自适应脉冲编码调制(Adaptive Pulse Code Modulation , APCM)是在PCM前面加自适应,其算法思想为根据输入信号幅度大小来改变量化阶大小。可以是瞬时自适应,即量化阶的大小每隔几个样本就改变,也可以在较长时间周期里发生变化,这也取决于算法设计。同时可以根据算法量化器之前自适应还是量化器之后自适应分为前向自适应和后向自适应。

image.png

 

三、差分脉冲编码调制( DPCM )

差分脉冲编码调制 DPCM ( Differential Pulse Code Modulation )

关于让原始信号的值变得更小,以空间冗余为例,会发现连续的蓝天相邻的两个样本之间的颜色值是相同的,比如说都为蓝色,在红绿蓝的分量中蓝色的分量接近255。

假如每个点都用255表示需要八位,而相邻的蓝色基本都在255附近,比如说有250、249、252、251、248。假如把当前的两个样本预测下一个样本,对此两个值求差;例如255的样本预测下一个250,求差为-5;相反用250来预测下一个点,例如用248或者252相减求差。原本在250附近的值就变成0、1、2等值,如果这两个值大面积相同的话,求出来的差变成0。存一个250、255附近的值需要八位,存一个10以内的数字,可能两三位即可,由原来的原始信号的出示的值变成求差值,数据本身没有变化,还原的时候把值加回去即可,这就是差分。

差分脉冲编码调制就是利用样本之间存在的信息冗余进行编码,基本思想是根据过去的样本去估算下一个样本信号的幅度大小,这个值称为预测值,对实际信号值与预测值之差进行量化编码PCM对原始信号进行量化,而 DPCM 对实际值和预测值进行量化减少表示每个样本信号的位数。可以理解为数据压缩变化了一种方式,就可以把数据减少。

如果可以根据差值的大小来自适应改变量化阶的步长,就叫做自适应差分脉冲编码调制( ADPCM )

image.png

使用小的量化阶去编码小的差值,使用大的量化阶去编码大的差值。DPCM已经大大减少,如果利用ADPCM的差值自适应的编程改变量化阶使得进一步更小。

人的视觉系统或者听觉系统对不同频率范围内的信号敏感度不同,比如人对低频范围内的信号很敏感,所以应该给予多的位数。如何对原始信号分成不同的频带,就成为要得到的子带编码。


四、子带编码( SBC )

使用一组带通滤波器(Band-Pass Filter , BPF),把输入信号的频带分成若干个连续的频带,每个频带称为子带;对每个子带中的信号采用单独的编码方案去编码,就把人的视觉、听觉系统对不同信号的感知特性用在编码方法中,人在接受中进行合成来还原信号。即在信道上传送石,将每个子带的代码复合起来,在接收端译码时,将每个子带的代码单独译码,然后组合起来,还原成原来的信号。

如图:编码的时候分开编码,解码的时候分开解完之后在进行合并恢复成原始的信号。

image.png

相关文章
|
Ubuntu Linux Docker
[笔记]Centos/Ubuntu/Windows/Docker 安装使用Aria2及Aria2基本使用
[笔记]Centos/Ubuntu/Windows/Docker 安装使用Aria2及Aria2基本使用
1167 0
|
小程序 Android开发 网络架构
uni-app中使用scroll-view滚到底部时多次触发scrolltolower
uni-app中使用scroll-view滚到底部时多次触发scrolltolower
1635 0
uni-app中使用scroll-view滚到底部时多次触发scrolltolower
|
Kubernetes NoSQL 测试技术
在 K8S 中快速部署 Redis Cluster & Redisinsight
在 K8S 中快速部署 Redis Cluster & Redisinsight
1807 0
在 K8S 中快速部署 Redis Cluster & Redisinsight
|
9月前
|
JavaScript 前端开发 Java
Idea启动SpringBoot程序报错:Veb server failed to start. Port 8082 was already in use;端口冲突的原理与解决方案
本文解决了Idea启动SpringBoot程序报错:Veb server failed to start. Port 8082 was already in use的问题,并通过介绍端口的使用原理和操作系统的端口管理机制,可以更有效地解决端口冲突问题,并确保Web服务器能够顺利启动和运行。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
12月前
|
设计模式 前端开发 搜索推荐
前端必须掌握的设计模式——模板模式
模板模式(Template Pattern)是一种行为型设计模式,父类定义固定流程和步骤顺序,子类通过继承并重写特定方法实现具体步骤。适用于具有固定结构或流程的场景,如组装汽车、包装礼物等。举例来说,公司年会节目征集时,蜘蛛侠定义了歌曲的四个步骤:前奏、主歌、副歌、结尾。金刚狼和绿巨人根据此模板设计各自的表演内容。通过抽象类定义通用逻辑,子类实现个性化行为,从而减少重复代码。模板模式还支持钩子方法,允许跳过某些步骤,增加灵活性。
700 11
|
10月前
|
缓存 NoSQL 中间件
Redis,分布式缓存演化之路
本文介绍了基于Redis的分布式缓存演化,探讨了分布式锁和缓存一致性问题及其解决方案。首先分析了本地缓存和分布式缓存的区别与优劣,接着深入讲解了分布式远程缓存带来的并发、缓存失效(穿透、雪崩、击穿)等问题及应对策略。文章还详细描述了如何使用Redis实现分布式锁,确保高并发场景下的数据一致性和系统稳定性。最后,通过双写模式和失效模式讨论了缓存一致性问题,并提出了多种解决方案,如引入Canal中间件等。希望这些内容能为读者在设计分布式缓存系统时提供有价值的参考。感谢您的阅读!
388 6
Redis,分布式缓存演化之路
|
安全 Cloud Native 网络安全
阿里云飞天企业版PaaS平台通过等保四级能力评估
近日,阿里云飞天企业版PaaS平台(专有云平台)安全防护能力获得权威机构公安部第三研究所认可。阿里云飞天企业版PaaS平台(专有云平台)参照等级保护第四级开展安全能力建设,在近日的安全评估活动中,获得优异成绩。本次评估验证了飞天企业版PaaS平台及容器安全能力,证明阿里云可以为政企客户提供更高水平的云原生安全能力。
637 1
|
存储 人工智能 物联网
FLUX第三弹:直面天命,FLUX.1-LoRA/IP-adapter「黑神话:悟空」生图实战
应近日来诸多社区开发者的学习诉求,特为大家推出一期 FLUX.1-LoRA/IP-adapter+ComfyUI +“顶流”IP「黑神话:悟空」的模型推理实战教程,玩转一把AI悟空生图 👀
|
安全 Java 测试技术
【Java】已解决Java中的java.util.NoSuchElementException异常
【Java】已解决Java中的java.util.NoSuchElementException异常
1109 1
|
存储 异构计算 内存技术
【硬件工程师面试宝典】常见面试题其一
- Setup时间:时钟前数据需稳定的最小时间。 - Hold时间:时钟后数据需保持稳定的时间。 - 竞争现象:不同路径信号汇合导致输出不稳定。 - 冒险现象:竞争引起的短暂错误状态。 - D触发器实现2倍分频电路。
285 5