语音处理:霍夫曼编码算法原理分析

  • 前言
  • 霍夫曼编码解密
  • 扩展资料

前言


  • 分类:无损编码中常见的为熵编码,主要分为霍夫曼编码和算术编码。霍夫曼编码是无损编解码中的经典压缩算法
  • 效果:如果没有压缩算法,一张未经压缩的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编码,得到sizebit
    • (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个字节

扩展资料


  1. 恒泽aac/mp3中的霍夫曼编码,https://www.cnblogs.com/gaozehua/archive/2012/05/08/2489483.html
  2. jpeg图像压缩原理,DCT变换,https://www.cnblogs.com/Arvin-JIN/p/9133745.html
  3. 霍夫曼编码清晰易懂, https://thecodeway.com/blog/?p=522
  4. DCT变换中DC系数和AC系数,https://blog.csdn.net/qingkongyeyue/article/details/58130001

语音处理:霍夫曼编码算法原理分析相关推荐

  1. 霍夫曼算法_霍夫曼编码算法

    霍夫曼算法 In this tutorial, we'll be discussing and implementing the Huffman Coding Algorithm in Java. 在 ...

  2. labview霍夫曼编码_香农编码与霍夫曼编码

    一.香农-范诺编码 香农-范诺(Shannon-Fano)编码的目的是产生具有最小冗余的码词(code word).其基本思想是产生编码长度可变的码词.码词长度可变指的是,被编码的一些消息的符号可以用 ...

  3. 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的实现 ...

  4. 数据结构与算法 / 霍夫曼树、霍夫曼编码和解码

    一. 诞生原因 找出存放一串字符所需的最少的二进制编码. 二. 构造方法 首先统计出每种字符出现的频率,即:概率.权值. 例如:频率表 A:60,    B:45,   C:13   D:69   E ...

  5. 哈夫曼编码压缩率计算_程序员的算法课(8)-贪心算法:理解霍夫曼编码

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m0_37609579/article/ ...

  6. C语言Huffman Encode霍夫曼编码的算法(附完整源码)

    C语言Huffman Encode霍夫曼编码的算法 C语言Huffman Encode霍夫曼编码的算法完整源码(定义,实现,main函数测试) C语言Huffman Encode霍夫曼编码的算法完整源 ...

  7. 贪心算法之最小堆实现霍夫曼编码

    贪心算法之最小堆实现霍夫曼编码 实现之前需要学习的地方: 如果你不了解堆.堆的插入.堆的删除,可以先看下我前面几篇博客 http://blog.csdn.net/u011068702/article/ ...

  8. 贪心算法(Greedy Algorithm)之霍夫曼编码

    文章目录 1. 贪心算法 2. 应用 2.1 找零钱 2.2 区间覆盖 2.3 霍夫曼编码 霍夫曼编码完整代码 1. 贪心算法 我们希望在一定的限制条件下,获得一个最优解 每次都在当前的标准下做出当下 ...

  9. 算法科普:有趣的霍夫曼编码

    前言 霍夫曼编码 ( Huffman coding ) 是一种可变长的前缀码.霍夫曼编码使用的算法是 David A. Huffman 还是在MIT 的学生时提出的,并且在 1952 年发表了名为&l ...

  10. 程序员的算法课(8)-贪心算法:理解霍夫曼编码

    一.一种很贪婪的算法定义 贪心是人类自带的能力,贪心算法是在贪心决策上进行统筹规划的统称. [百度百科]贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体 ...

最新文章

  1. 洛谷 [P1801] 黑匣子
  2. 如何遍历numpy数组?
  3. 水表读数自动识别,基于DB和CRNN的方法
  4. eclipse中server name选项变灰
  5. 有戏!低于4000的iPhone SE2买不买?
  6. 边工作边刷题:70天一遍leetcode: day 56-1
  7. SQL SERVER 和EXCEL的数据导入导出
  8. 如何使用MIME类型
  9. roseha linux,RoseHA 9.0 for Linux快速安装说明_v2.0-2015-04.pdf
  10. MySQL 有这一篇就够(呕心狂敲37k字,只为博君一点赞!!!)
  11. 多旋翼无人机动力系统发展历程
  12. 常用的20个js简洁代码
  13. Java+MySQL基于SSM的爱心救助车队管理系统的设计与实现 开题 毕业设计
  14. 基于html5动画效果毕业论文,毕业设计(论文)-基于HTML5和CSS3的响应式网页制作.doc...
  15. 30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)(转)
  16. Android N Preview Notification API (通知)
  17. Android通过OMA获得ESE的CPLC
  18. 易快借的额度有多少?易快借的利息怎么计算?
  19. 【时间序列】季节性问题
  20. 怎样修复小米服务器,小米手机照片误删怎么恢复?教你巧用小米云服务回收站恢复数据...

热门文章

  1. system/build.prop参数说明
  2. Bluetooth基础知识--蓝牙的几种通讯方式
  3. arduino蓝牙通讯代码_arduino笔记二:arduino与手机蓝牙通讯
  4. 复合辛普森公式matlab,复合梯形公式、复合辛普森公式 matlab
  5. php 格林尼治标准时间,PHP函数第18款:返回格林威治标准时间MyDate
  6. IDF实验室之牛刀小试
  7. windows透明加密 minifilter
  8. 音频-音频术语名词解释
  9. python实现火车票查询_火车票查询(python版)
  10. UnitySDK新接入记录