[2018年最新整理]多媒体实验报告.docVIP

  • 6
  • 0
  • 约8.02千字
  • 约 22页
  • 2018-04-15 发布于浙江
  • 举报
[2018年最新整理]多媒体实验报告

太原理工大学学生实验报告 学院名称 信息工程学院 专业班级 通信0802 学号 2008001306 实验成绩 学生姓名 吕莹 同组人姓名 实验日期 2011.12 课程名称 多媒体通信技术 实验题目 霍夫曼编码 实验目的 1、学习 Matlab 软件的使用和编程; 2、进一步深入理解 Huffman 编码算法的原理; 3、提高独立进行算法编程的能力。 二、实验内容 1、用 Matlab 实现 Huffman 编码算法程序; 2、要求程序输出显示所有的码字以及编码效率; 3、设计简单的输入界面(可以是简单的文字提示信息),程序运 行时提示用户输入代表信源符号概率的向量;要对用户输入的概 率向量进行合法性检查。 三、实验原理 1、二进制 Huffman 编码的基本原理及算法 1 )把信源符号集中的所有符号按概率从大到小排队。 2 )取概率最小的两个符号作为两片叶子合并(缩减)到一个 节点。 3 )视此节点为新符号,其概率等于被合并(缩减)的两个概率之和,参与概率排队。 4 )重复23两步骤,直至全部符号都被合并(缩减)到根。 5 )从根出发,对各分枝标记 0 和 1。从根到叶的路径就给出了各个码字的编码和码长。 程序设计的原理 1)程序的输入:以一维数组的形式输入要进行 huffman 编码的信源符号的概率,在运行该程序前,显示文字提示信息,提示所要输入的概率矢量;然后对输入的概率矢量进行合法性判断,原则为:如果概率矢量中存在小于 0 的项,则输入不合法,提示重新输入;如果概率矢量的求和大于 1,则输入也不合法,提示重新输入。 huffman 编码具体实现原理: 在输入的概率矩阵 p 正确的前提条件下对 p 进行排序,并用矩阵 L 记录 p 排序之前各元素的顺序,然后将排序后的概率数组 p 的前两项,即概率最小的两个数加和,得到新的一组概率序列,重复以上过程,最后得到一个记录概率加和过程的矩阵 p 以及每次排序之前概率顺序的矩阵 a。 新生成一个 n-1 行 n 列,并且每个元素含有 n 个字符的空白矩阵,然后进行 huffman 编码: 将 c 矩阵的第 n-1 行的第一和第二个元素分别令为 0 和 1(表示 在编码时,根节点之下的概率较小的元素后补 0,概率较大的元 素后补 1,后面的编码都遵守这个原则) 然后对 n-i-1 的第一、二个元素进行编码,首先在矩阵 a 中第 n-i 行找到值为 1 所在的位置,然后在 c 矩阵中第 n-i 行中找到对应 位置的编码(该编码即为第 n-i-1 行第一、二个元素的根节点), 则矩阵 c 的第 n-i 行的第一、二个元素的 n-1 的字符为以上求得 的编码值,根据之前的规则,第一个元素最后补 0,第二个元素 最后补 1,则完成该行的第一二个元素的编码, 最后将该行的其他元素按照“矩阵 c 中第 n-i 行第 j1 列的值等 于对应于 a 矩阵中第 n-i1 行中值为 j1 的前面一个元素的位置 在 c 矩阵中的编码值”的原则进行赋值,重复以上过程即可完成 huffman 编码。 计算信源熵和平均码长,其比值即为编码密码效率。 clear close all; %定义HufData/Len为全局变量的结构体 global HufData; global Len disp(计算机正在准备输出哈夫曼编码结果,请耐心等待……); %原始码字的灰度 a=imread(kids.tif); %分区画出原始图像和灰度直方图 figure; subplot(1,2,1) imshow(a); %取消坐标轴和边框 axis off box off title(MATLAB自带图像,fontsize,13); subplot(1,2,2); axis off box off imhist(a); title(图像灰度直方图,fontsize,13); %图像的灰度统计 GrayStatistics=imhist(a); GrayStatistics=GrayStatistics; GrayRatioo=GrayStatistics/sum(GrayStatistics); GrayRatioNO=find(GrayRatioo~=0); Len=length(GrayRatioNO); %初始化灰度集,防止系统随即赋予其垃圾值 GrayRatio=ones(1,Len); for i=1:Len GrayRatio(i)=GrayRatioo(i); endGrayRatio=abs(sort(-GrayRatio)); %将图像灰度概率赋予结构体 for i=1:Len HufData(i).value=GrayRatio(i); End % 哈夫曼编码

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档