多媒体技术与应用之图像Huffman编解码
一、实验内容
1.了解BMP图像的格式,实现BMP图片格式的数据域及文件头的分离
2.熟悉Huffman编码原理
3.使用Huffman编码算法对给定图像文件进行编码和解码
二、Huffman编码简介
基于图像统计特征的变长编码方法概率小的符号用较长的码字表示,概率大的符号用较短的码字表示。如图2.1.1所示:

位图BMP文件格式,如图2.1.2所示:

三、算法流程图
1.主函数流程图:

2.编码流程图:

3.解码流程图:

四、实验结果与分析
1.实验结果

2.编解码结果:
平均码长 L = 7.4682 压缩比 CR = 1.0712
信息熵 H = 7.4455 编码效率 CE = 0.9970
3.结果分析:
huffman码不仅适用于图像文件,经过符号合并后也可以用于二进制文件和文本文件。但视界应用中还存在以下的不足:输入数据数受限于可实现的huffman表尺寸;译码较为复杂;需要知道输入数据的频率分布。此外,由于码长不等,还存在一个输入与输出的速率匹配问题,其解决的办法是设置一定容量的缓冲寄存器。而其算法的突出优点是压缩以后的图像没有失真,压缩后的单元像素最接近图像的实际熵值,因此相对于其他乌石镇压缩算法来说,它的压缩比应该是最高的。
从编解码结果可以看出,本次编程结果比较成功,结果符合实际情况,原图和编解码后得到的图像几乎完全相同。
本次试验的关键点有三个,第一个为编码,如何实现huffman树的构建,第二个为如何储存压缩矩阵,因为matlab中没有以字节为单位存储,因而必需提出解决办法,尽量减少压缩矩阵的存储空间,否则压缩和没有压缩相同。第三个为解码,如何从压缩矩阵中还原出原来的huffman编码,同时通过编码还原灰度图像。当完成好这三点,本次试验就会实现的比较成功了。

多媒体技术与应用之图像Huffman编解码相关推荐

  1. Huffman编解码

    Huffman编解码算法实现与压缩效率分析 一.背景知识及相关公式 1.信源熵 信源熵是信息的度量单位,一般用H表示,单位是比特,对于任意一个随机变量,它的熵定义为,变量的不确定性越大,熵也就越大. ...

  2. 中科大的AI图像/视频编解码综述

    [前言] 长论文ptsd犯病了,这次是一篇35页的AI编解码器的综述,犯病了犯病了. 首先还是保命时刻,以下解读与见解均为我的个人理解,要是我有哪里曲解了,造成了不必要的麻烦,可以联系我删除文章,也可 ...

  3. 实验三 Huffman编解码算法实现与压缩效率分析

    一.Huffman编解码原理 1. Huffman编码 对原始文件进行Huffman编码,首先需要解决以下几点问题: 文件符号的概率分布情况是怎样的? Huffman树是如何建立的? 建立起Huffm ...

  4. Huffman编解码完全注释

    Huffman编解码完全注释 /** huffman - Encode/Decode files using Huffman encoding.* Copyright (C) 2003 Douglas ...

  5. 数据压缩 实验三 Huffman编解码算法实现与压缩效率分析

    实验目的 掌握Huffman编解码实现的数据结构和实现框架, 进一步熟练使用C编程语言, 并完成压缩效率的分析. 实验原理 1.本实验中Huffman编码算法 (1)将文件以ASCII字符流的形式读入 ...

  6. huffman编解码算法实验与压缩效率分析

    一.基本原理 1.huffman编码原理 huffman编码是一种无失真编码方式,是可变长(VLC)编码的一种. huffman编码基于信源的概率统计模型,基本思路是出现概率大的信源符号编长码,出现概 ...

  7. 实验三—Huffman编解码

    一.实验原理 1.Huffman编码的步骤: (1)首先将所有字符发生的概率从小到大进行排序: (2)将最小的两个概率进行两两一合并,之后继续找最小的两个概率进行合并包括前面已经合并的和数: (3)一 ...

  8. Huffman编解码实现文本压缩

    编码方案设计: 实现最基本的哈夫曼编码,对文件进行两次扫描,第一次统计概率,第二次进行编码.压缩和解压缩时分别重新建立树,重新编码,以减小压缩后文件大小. 系统实现方案: typedef struct ...

  9. 数据压缩实验三--Huffman编解码及压缩率的比较

    一,Huffman码 1 Huffman 编码 Huffman Coding (霍夫曼编码)是一种无失真编码的编码方式,Huffman编码是可变字长编码(VLC)的一种. Huffman 编码基于信源 ...

最新文章

  1. java画满天星_java_java实现的满天星效果实例,本文实例讲述了java实现满天星 - phpStudy...
  2. ML之RFXGBoost:基于RF/XGBoost(均+5f-CrVa)算法对Titanic(泰坦尼克号)数据集进行二分类预测(乘客是否生还)
  3. 源路由 小实验 小发现
  4. Python中yield
  5. mysql linux 关闭防火墙_linux常用命令和关闭防火墙
  6. Java 算法 数字分类
  7. win7+GPU运行py-faster-rcnn
  8. 使用Blend开发Silverlight VSM
  9. 用了几年的 Fastjson,我最终替换成了Jackson!
  10. 步进电机选型及扭矩的计算(粗略计算)
  11. 论文阅读笔记—Exploring Visual Relationship for Image Captioning
  12. 如何使用jquery插件
  13. 非共识与小趋势——复盘罗辑思维7年演化之路
  14. 互联网和大数据是什么意思_数据化和互联网行业 互联网大数据什么意思
  15. OpenMP: sections分段并行
  16. HTML-用户登录界面
  17. 从 Arm Compiler 5 迁移到 Arm Compiler 6
  18. 银联unionpay取消订单与超时时间
  19. STM32使用GSM模块发送中英文短信(TEXT模式到PDU模式的转换)
  20. 解决诺顿卸载密码的问题【转】

热门文章

  1. 从零开始学CIRCOS绘制圈图(三)
  2. quartus仿真系列0:基于原理图仿真的基本操作
  3. 【CAD插件】YQ插件辅助
  4. 基于深度学习和3D图像处理的精密加工件外观缺陷检测系统
  5. 免费下载pdf阅读器
  6. python 完美压缩文件夹为zip格式
  7. 操作系统期末复习知识点总结
  8. 在游戏研发中如何有效防止外挂程序
  9. 最优化建模、算法与理论(二)—— 典型优化问题
  10. 关注楼主 初级通信工程师证书考了有用吗?要不要直接跳考中级?