当前位置: 首页 > web >正文

视频编码中熵编码之基于上下文的变长编码(Huffman霍夫曼编码和指数哥伦布)

视频编码中熵编码之基于上下文的变长编码(Huffman霍夫曼编码和指数哥伦布)

视频编码中熵编码之基于上下文的变长编码Huffman霍夫曼编码和指数哥伦布)

  • 视频编码中熵编码之基于上下文的变长编码(Huffman霍夫曼编码和指数哥伦布)
  • 前言
    • 一、霍夫曼(Huffman)算法简介
    • 二、霍夫曼(Huffman)编码步骤(分为两类 赋值与反推)
    • 三、霍夫曼(Huffman)编码特点
      • 1、霍夫曼编码是瞬时唯一的可解块编码
      • 2、霍夫曼编码是唯一可译码。短的码不会成为更长码的起始部分
      • 3、霍夫曼编码的平均码长接近于熵
      • 4、与计算机的数据结构不匹配
      • 5、需要多次排序, 耗费时间
    • 四、Huffman编码特点
    • 五、Huffman编码举例
      • 1、简单编码流程
      • 2、Huffman编码(树结构分析法)
  • 总结


视频编码流程图

1、霍夫曼(Huffman)算法简介

2、霍夫曼(Huffman)编码步骤

3、霍夫曼(Huffman)编码特点

4、霍夫曼(Huffman)编码举例

①、视频编码中熵编码之熵及熵编码基本原理

②、视频编码中熵编码之"Z"字扫描原理(变换DCT系数和小波变换系统分布特性和统计特性)

③、视频编码中熵编码之基于上下文的变长编码(Buffman霍夫曼编码和指数哥伦布)

④、视频编码中熵编码之基于上下文的算术编码

⑤、视频编码中熵编码之位平面编码

⑥、视频编码中熵编码之零数编码

⑦、视频编码中熵编码之游程编码

5、 环路滤波

前言

视频编码中熵编码的目标是去除信源符号在信息表达上的表示冗余,也称为信息熵冗余或者编码冗余。 熵编码技术是视频编码系统中的基础性关键技术之一。

一、霍夫曼(Huffman)算法简介

  • Huffman编码是1952年为压缩文本文件所设计的编码方法,也是目前消除视频信息冗余最常使用的方法之一
  • 对出现概率最大的符号赋以最短的码字, 概率越小表示的码字越长, 从而表示每个符号的平均比特数最小

二、霍夫曼(Huffman)编码步骤(分为两类 赋值与反推)

  1. 把信源符号按照概率大小顺序排列(概率排序)
  2. 在分配码字长度时,首先将两个出现概率最小的两个符号的概率相加,合成一个概率;(合并)
  3. 把这个合成概率看作是一个新组合符号的概率, 重复上述做法,直到最后只城下两个符号的概率为之(置换)
  4. 完成上述步骤后,在返回向前进行编码,每一层有两个分支,分别赋予0和1(大的赋0或者小的赋1 但是必须一致)

三、霍夫曼(Huffman)编码特点

1、霍夫曼编码是瞬时唯一的可解块编码

  • ① 瞬时:符号串中每个码字无需参考后继符号就可解码
  • ② 唯一可解码:任何符号串只能以一种方式解码
  • ③ 块编码:每个信源符号都映射到一个编码符号的固定序列中

2、霍夫曼编码是唯一可译码。短的码不会成为更长码的起始部分

3、霍夫曼编码的平均码长接近于熵

4、与计算机的数据结构不匹配

5、需要多次排序, 耗费时间

注意: 1、霍夫曼编码的算法是确定的, 但是编出的码并非是唯一的
2、由于霍夫曼编码的依据是信源符号的概率分布, 故其编码效率取决于信源的统计特性

原因是: 在编码步骤过程中赋值 是有区别的(例如: 大赋0, 小赋1)

四、Huffman编码特点

  1. 霍夫曼编码的局限性在于,该编码方法只适用于离散信源,即信源符号个数为有限数
  2. 编码时需要知道输入符号集的概率分布
  3. 在进行Huffman编码压缩时,计算量大而复杂,尤其是译码复杂度较高
  4. 由于码长不等,还存在一个输入与输出的速率匹配问题

五、Huffman编码举例

1、简单编码流程

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、Huffman编码(树结构分析法)

在这里插入图片描述

在这里插入图片描述

总结

数字视频编码技术原理地址:https://chensongpoixs.github.io/cvideo_codec/

http://www.xdnf.cn/news/15574.html

相关文章:

  • 网络编程-epoll模型/udp通信
  • css 边框颜色渐变
  • 【linux V0.11】init/main.c
  • JAVA青企码协会模式系统源码支持微信公众号+微信小程序+H5+APP
  • Spring MVC 执行流程详解:一次请求经历了什么?
  • 基于铸造机床的Canopen转Profinet协议转换网关应用研究
  • 涨停板池,跌停板池,炸板池,次新股池,强势股池数据接口
  • Python命令行计算2的22次方方法
  • 轻松管理多个Go版本:g工具安装与使用
  • keeplived双击热备配置
  • Spring Security 实践及源码学习
  • 如何轻松将音乐从安卓设备传输到安卓设备
  • 504网关超时可能是哪些原因导致?
  • 短剧小程序的「技术革命」:从「粗放生长」到「精准运营」
  • Docker镜像导入、导出操作指南
  • 工业喷涂机器人的革新:艾利特协作机器人引领人机交互新纪元
  • Zookeeper入门安装与使用详解
  • PyTorch 数据加载实战:从 CSV 到图像的全流程解析
  • OpenCV 对数变换函数logTransform()
  • 手提式干粉灭火器检查工作,如何做到可执行、可追溯、可管理?
  • 基于深度学习的LSTM、GRU对大数据交通流量分析与预测的研究
  • 06-C语言:第06天笔记
  • 通过 1Panel MCP 自动部署静态网站
  • Flink Watermark原理与实战
  • Python 中 sys 库的全面解析与实战应用​
  • Agentic AI 的威胁与缓解措施
  • 【编程】-环形缓冲区
  • Basilisk库教程(二)
  • TimSort 类:论Arrays.sort的稳定性
  • Axios 和 Promise 区别对比