语音处理:霍夫曼编码算法原理分析
语音处理:霍夫曼编码算法原理分析
- 前言
- 霍夫曼编码解密
- 扩展资料
前言
分类
:无损编码中常见的为熵编码,主要分为霍夫曼编码和算术编码。霍夫曼编码是无损编解码中的经典压缩算法。效果
:如果没有压缩算法,一张未经压缩的2M图片,同样内存可以放下70万字的鸿篇巨著红楼梦。特点
:霍夫曼编码虽无法达到算术编码逼近信息熵极限的压缩效率,但由于算法简单、实现优美且可以避免大量算术编码的专利封锁,应用十分广泛,如mp3、aac、jpeg等均采用了此算法。
霍夫曼编码解密
本文结合文章《JPEG算法解密(四):霍夫曼编码》进行分析解读,有兴趣的读者可相互参照,增进理解。
jinchao霍夫曼思路分析:
效果:将64个byte数据,无损压缩成10byte,压缩率达84%
- 霍夫曼核心:RLE编码 + BIT编码
- 数据分组
- 原则:0最高频,优先分组
- 若无零,则非零组成一组
- 若有零,则连续零+非零形成一组
- 若组内0个数超过16,则拆分
- 最后形成单组:
0, 0, 0, ..., val
- RLE编码过程
- 一个组形成一对
(zero_count, val)
zero_count
表示0的个数val
表示结尾的数值- 若为最后一个组且全零,则单独编EOB
- 根据值范围,设计码本
- 结构体:
val, size, bit
- 结构体:
- 对
val
编码,得到size
和bit
(zero_count, val)
组成新数据(zero_count, size, bit)
- 将zero_count和size合并成一个 byte,高四位给zc,低四位给size
- 得到
(new_val, bit)
,前者为直流数据,后者为交流数据
- 一个组形成一对
- BIT编码过程
- 对
new_val
进行霍夫曼编码 - 数组第一个是DCT变换后的直流部分,表征总体能量,用第一个霍夫曼码本表示
- 之后的分组数据为交流部分,用第二个霍夫曼码本表示
- 查表得到霍夫曼编码结果,最后将其组合
- 对
个人理解:
- 疑惑点
- 第1、2个霍夫曼码本咋来的?
- 编码后的01数据如何解码呢?
- 压缩效果对比:
- 压缩前,64个数据,需64个字节
- 压缩后,只需10个字节
扩展资料
- 恒泽aac/mp3中的霍夫曼编码,https://www.cnblogs.com/gaozehua/archive/2012/05/08/2489483.html
- jpeg图像压缩原理,DCT变换,https://www.cnblogs.com/Arvin-JIN/p/9133745.html
- 霍夫曼编码清晰易懂, https://thecodeway.com/blog/?p=522
- DCT变换中DC系数和AC系数,https://blog.csdn.net/qingkongyeyue/article/details/58130001
语音处理:霍夫曼编码算法原理分析相关推荐
- 霍夫曼算法_霍夫曼编码算法
霍夫曼算法 In this tutorial, we'll be discussing and implementing the Huffman Coding Algorithm in Java. 在 ...
- labview霍夫曼编码_香农编码与霍夫曼编码
一.香农-范诺编码 香农-范诺(Shannon-Fano)编码的目的是产生具有最小冗余的码词(code word).其基本思想是产生编码长度可变的码词.码词长度可变指的是,被编码的一些消息的符号可以用 ...
- Zlib压缩算法:LZ77、LZ78、霍夫曼编码、滑动窗口、Rabin-Karp算法、哈希链、I/O缓冲区
Table of Contents 1.简介 1.1 什么是zlib 2.压缩算法 2.1 放气 2.2 LZ77 2.2.1 滑动窗口 2.2.2 长距离对 2.3 霍夫曼编码 3. zlib的实现 ...
- 数据结构与算法 / 霍夫曼树、霍夫曼编码和解码
一. 诞生原因 找出存放一串字符所需的最少的二进制编码. 二. 构造方法 首先统计出每种字符出现的频率,即:概率.权值. 例如:频率表 A:60, B:45, C:13 D:69 E ...
- 哈夫曼编码压缩率计算_程序员的算法课(8)-贪心算法:理解霍夫曼编码
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m0_37609579/article/ ...
- C语言Huffman Encode霍夫曼编码的算法(附完整源码)
C语言Huffman Encode霍夫曼编码的算法 C语言Huffman Encode霍夫曼编码的算法完整源码(定义,实现,main函数测试) C语言Huffman Encode霍夫曼编码的算法完整源 ...
- 贪心算法之最小堆实现霍夫曼编码
贪心算法之最小堆实现霍夫曼编码 实现之前需要学习的地方: 如果你不了解堆.堆的插入.堆的删除,可以先看下我前面几篇博客 http://blog.csdn.net/u011068702/article/ ...
- 贪心算法(Greedy Algorithm)之霍夫曼编码
文章目录 1. 贪心算法 2. 应用 2.1 找零钱 2.2 区间覆盖 2.3 霍夫曼编码 霍夫曼编码完整代码 1. 贪心算法 我们希望在一定的限制条件下,获得一个最优解 每次都在当前的标准下做出当下 ...
- 算法科普:有趣的霍夫曼编码
前言 霍夫曼编码 ( Huffman coding ) 是一种可变长的前缀码.霍夫曼编码使用的算法是 David A. Huffman 还是在MIT 的学生时提出的,并且在 1952 年发表了名为&l ...
- 程序员的算法课(8)-贪心算法:理解霍夫曼编码
一.一种很贪婪的算法定义 贪心是人类自带的能力,贪心算法是在贪心决策上进行统筹规划的统称. [百度百科]贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体 ...
最新文章
- 洛谷 [P1801] 黑匣子
- 如何遍历numpy数组?
- 水表读数自动识别,基于DB和CRNN的方法
- eclipse中server name选项变灰
- 有戏!低于4000的iPhone SE2买不买?
- 边工作边刷题:70天一遍leetcode: day 56-1
- SQL SERVER 和EXCEL的数据导入导出
- 如何使用MIME类型
- roseha linux,RoseHA 9.0 for Linux快速安装说明_v2.0-2015-04.pdf
- MySQL 有这一篇就够(呕心狂敲37k字,只为博君一点赞!!!)
- 多旋翼无人机动力系统发展历程
- 常用的20个js简洁代码
- Java+MySQL基于SSM的爱心救助车队管理系统的设计与实现 开题 毕业设计
- 基于html5动画效果毕业论文,毕业设计(论文)-基于HTML5和CSS3的响应式网页制作.doc...
- 30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)(转)
- Android N Preview Notification API (通知)
- Android通过OMA获得ESE的CPLC
- 易快借的额度有多少?易快借的利息怎么计算?
- 【时间序列】季节性问题
- 怎样修复小米服务器,小米手机照片误删怎么恢复?教你巧用小米云服务回收站恢复数据...