多媒体技术与应用之图像Huffman编解码
多媒体技术与应用之图像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编解码相关推荐
- Huffman编解码
Huffman编解码算法实现与压缩效率分析 一.背景知识及相关公式 1.信源熵 信源熵是信息的度量单位,一般用H表示,单位是比特,对于任意一个随机变量,它的熵定义为,变量的不确定性越大,熵也就越大. ...
- 中科大的AI图像/视频编解码综述
[前言] 长论文ptsd犯病了,这次是一篇35页的AI编解码器的综述,犯病了犯病了. 首先还是保命时刻,以下解读与见解均为我的个人理解,要是我有哪里曲解了,造成了不必要的麻烦,可以联系我删除文章,也可 ...
- 实验三 Huffman编解码算法实现与压缩效率分析
一.Huffman编解码原理 1. Huffman编码 对原始文件进行Huffman编码,首先需要解决以下几点问题: 文件符号的概率分布情况是怎样的? Huffman树是如何建立的? 建立起Huffm ...
- Huffman编解码完全注释
Huffman编解码完全注释 /** huffman - Encode/Decode files using Huffman encoding.* Copyright (C) 2003 Douglas ...
- 数据压缩 实验三 Huffman编解码算法实现与压缩效率分析
实验目的 掌握Huffman编解码实现的数据结构和实现框架, 进一步熟练使用C编程语言, 并完成压缩效率的分析. 实验原理 1.本实验中Huffman编码算法 (1)将文件以ASCII字符流的形式读入 ...
- huffman编解码算法实验与压缩效率分析
一.基本原理 1.huffman编码原理 huffman编码是一种无失真编码方式,是可变长(VLC)编码的一种. huffman编码基于信源的概率统计模型,基本思路是出现概率大的信源符号编长码,出现概 ...
- 实验三—Huffman编解码
一.实验原理 1.Huffman编码的步骤: (1)首先将所有字符发生的概率从小到大进行排序: (2)将最小的两个概率进行两两一合并,之后继续找最小的两个概率进行合并包括前面已经合并的和数: (3)一 ...
- Huffman编解码实现文本压缩
编码方案设计: 实现最基本的哈夫曼编码,对文件进行两次扫描,第一次统计概率,第二次进行编码.压缩和解压缩时分别重新建立树,重新编码,以减小压缩后文件大小. 系统实现方案: typedef struct ...
- 数据压缩实验三--Huffman编解码及压缩率的比较
一,Huffman码 1 Huffman 编码 Huffman Coding (霍夫曼编码)是一种无失真编码的编码方式,Huffman编码是可变字长编码(VLC)的一种. Huffman 编码基于信源 ...
最新文章
- java画满天星_java_java实现的满天星效果实例,本文实例讲述了java实现满天星 - phpStudy...
- ML之RFXGBoost:基于RF/XGBoost(均+5f-CrVa)算法对Titanic(泰坦尼克号)数据集进行二分类预测(乘客是否生还)
- 源路由 小实验 小发现
- Python中yield
- mysql linux 关闭防火墙_linux常用命令和关闭防火墙
- Java 算法 数字分类
- win7+GPU运行py-faster-rcnn
- 使用Blend开发Silverlight VSM
- 用了几年的 Fastjson,我最终替换成了Jackson!
- 步进电机选型及扭矩的计算(粗略计算)
- 论文阅读笔记—Exploring Visual Relationship for Image Captioning
- 如何使用jquery插件
- 非共识与小趋势——复盘罗辑思维7年演化之路
- 互联网和大数据是什么意思_数据化和互联网行业 互联网大数据什么意思
- OpenMP: sections分段并行
- HTML-用户登录界面
- 从 Arm Compiler 5 迁移到 Arm Compiler 6
- 银联unionpay取消订单与超时时间
- STM32使用GSM模块发送中英文短信(TEXT模式到PDU模式的转换)
- 解决诺顿卸载密码的问题【转】