• PUDN用户
    了解作者
  • matlab
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 84
    下载次数
  • 2009-11-22 22:21
    上传日期
HUffman编码二叉树算法,能够对图像或文件进行Huffman编码
huffmantree.rar
  • huffmantree.m
    2.4KB
内容介绍
function[res,code]=huffmantree(image) % 输入参数图像必须是 灰度图 % 程序用 Huffman树 结构实现 data=double(image); [w,h]=size(data); hist=imhist(image); hist=hist.*1.0./(w*h); %%%%%%%%%%%%%%%%%%%% %% Huffman Tree %%%%%%%%%%%%%%%%%%%% num=length(hist); %newhist=[1/6,1/4,5/12,1/6]; %num=4; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 初始化 for i=1:2*num-1 ht(i).lch=0; ht(i).rch=0; ht(i).pare=0; ht(i).weight=0; end for i=1:num ht(i).weight=hist(i); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 建树 n=length(hist); for i=num+1:2*num-1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 直接选择最小的两个比排序后选前两个更快 min=100; for j=1:i-1 if ht(j).weight<min && ht(j).pare==0 s1=j; min=ht(j).weight; end end min=100; for j=1:i-1 if ht(j).weight<min && ht(j).pare==0 && j~=s1 s2=j; min=ht(j).weight; end end ht(s1).pare=i; ht(s2).pare=i; ht(i).lch=s1; ht(i).rch=s2; ht(i).weight=ht(s1).weight+ht(s2).weight; end %for i=1:2*num-1 %if ht(i).pare==0 % i %end %ht(i).pare %end %ht(end).weight %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 编码 for i=1:num res{i}=blanks(260); cd=blanks(260); start=num; c=i; p=ht(c).pare; while(p>0) if(ht(p).lch==c) cd(start)='0'; else cd(start)='1'; end c=p; p=ht(c).pare; start=start-1; end %%% 反转字符串数组,去掉最后面的空串 cd=deblank(cd); res{i}=seqreverse(cd); res{i}=deblank(res{i}); res{i}=seqreverse(res{i}); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 下面为图像编码 %% 时间较长,与原图像大小有关 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %p=0; code=['Code Begin :'] for i=1:w for j=1:h %p=p+1 code=strcat(code,res{data(i,j)+1}); end end code=strcat(code,': The End!'); end
评论
    相关推荐
    • Huffman编码(二叉树应用).zip
      Huffman编码二叉树的应用)其中包含了源代码及实验截图
    • Huffman编码压缩二进制
      a)构造二叉树 b)编码 (3)依次读取原始文件的每个字节,查找其对应的哈弗曼编码,将这些位写入到压缩文件中(注意:要凑够8位二进制才写入到文件中)。 (4)将原始文件中各字节及出现的次数也写入到压缩文件中。 2...
    • 数据结构课程设计 Huffman编码(二叉树应用)
      一、实验三:Huffman编码(二叉树应用) 二、实验的目的和要求: 1.要求对文件进行Huffman编码的算法,以及对乙编码文件进行解码的算法,为简单起见,可以假设文件是存放在一个字符向量; 2.熟练掌握二叉树的应用;具体要求...
    • Huffman编码(二叉树应用)
      数据结构 Huffman编码(二叉树应用) Huffman编码(二叉树应用)
    • 实现Huffman编码
      HUFFMAN编码又称哈夫曼编码,是一种可变长编码方式,是由美国数学家David Huffman创立的,是二叉树的一种特殊转化形式。编码的原理是:将使用次数多的代码转换成长度较短的代码,而使用次数少的可以使用较长的编码,...
    • 数据结构上机实验 Huffman编码二叉树) C语言
      实验三、Huffman编码二叉树)  实验目的:熟练掌握二叉树应用(Huffman编码)的基本算法实现。  实现功能:对输入的一串电文字符实现Huffman编码,再对Huffman编码生成的代码串进行译码,输出电文字符串。实现...
    • Huffman编码(二叉树应用)
      一、实验三:Huffman编码(二叉树应用) 二、实验的目的和要求: 1.要求对文件进行Huffman编码的算法,以及对一编码文件进行解码的算法 2.………………………… 3.熟练掌握计算机系统的基本操作方法,了解如何编辑、编译、...
    • huffman编码实现文件压缩
      国外的一个java上机练习题,包括建立二叉树二叉树遍历,huffman编码,文件流操作。
    • Huffman编码树最优二叉树
      哈夫曼二叉树编码译码器 里面有课程设计报告 课程是数据结构
    • Huffman编码
      1.要求对文件进行Huffman编码的算法,以及对一编码文件进行解码的算法 2.熟练掌握二叉树的应用;具体要求如下: 最小冗余码/哈夫曼码