图像霍夫曼编码与解码以及熵-平均码长-冗余度的计算.doc

图像霍夫曼编码与解码以及熵-平均码长-冗余度的计算.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DIP上机报告 题 目:数字图像处理上机报告〔第4次〕 学 校: 中国地质大学〔武汉〕 指 导 老 师: 傅华明 姓 名:龙勋 班 级 序 号: 071112-06 目录 TOC \o 1-3 \h \u HYPERLINK 1图像霍夫曼编码与解码以及熵,平均码长,冗余度的计算 3 HYPERLINK 2上机小结 10 注:给定的文件夹中只需运行test脚本就可以得到结果,从workspace中看到相应的数据 题目要求: 对图2实施哈夫曼编码和解码,计算图象熵,平均码长和 冗余度; 算法设计: 1.遍历图像,统计各个像素灰度值的概率 2.找出概率最小的两个,在最小概率所代表的灰度值编码中加1,在另一个较小的概率所代表的灰度值编码中加0 3.合并两个概率,成为一个新的元素,如此重复下去,直到最后剩两个元素 4.进行编码的逆过程,即解码过程 5.计算相应的数据 程序代码: 运行代码: clear in=[2,2,3,5,0,0,5,5, 5,4,1,1,2,2,1,5, 4,6,5,5,7,2,2,3, 5,2,2,2,3,4,4,4, 6,2,1,4,1,1,2,2, 1,5,7,6,5,5,7,2, 2,4,4,1,2,2,1,5, 2,3,1,2,2,1,5,0]; [p,out] = gailv( in ); [code] = Huffman(0:7,p); %进行霍夫曼编码 [Coded_Img]=Encode(in,code); %对图像进行编码 [H,L,R]=GetInfo(code); %计算熵、平均码长、冗余度 [Img]=Decode(Coded_Img,code); %对图像进行解码 图像各像素灰度的概率计算: function[ p,out ]=gailv( in ) [M,N]=size(in); out = zeros(4,8); p = zeros(1,8); for i=1:8 out(1,i)=i-1; end for i=1:M for j=1:N for k=1:8 if in(i,j) == out(1,k) out(2,k)=out(2,k)+1; end end end end for i=1:8 out(3,i)=out(2,i)/(M*N); p(1,i)=out(2,i)/(M*N); end end 霍夫曼编码过程: function [code_out] = Huffman(s,p) [Ms,Ns]=size(s); if (Ms==1) sig=s; else sig=s; end %s为各元素名称 p为各元素概率 [Ms,Ns]=size(sig); [Mp,Np]=size(p); if (Ms~=Np) return; end code=cell(Ms,4);%建立编码cell code_out=cell(Ms,3);%建立输出cell coding=cell(Ms,2);%建立编码过程中用到的cell for i=1:Ms code{i,1}=sig(i,:);%第一列为元素名称 code{i,2}=[];%第二列为编码 code{i,3}=p(i);%第三列为元素概率 code{i,4}=[];%第四列为元素概率排行 coding{i,1}=p(i);%第一行为元素概率 coding{i,2}=i;%第二行表示此概率由哪些元素组成 end [m,l]=Cell_min(coding(:,1));%找出最小值 while (m1)%假设最小值小于1〔编码尚未完成〕 [m1,l1]=Cell_min(coding(:,1));%找出最小值 temp_p=coding{l1,1};%记录下最小概率 coding{l1,1}=2;%将概率改为2,那么以后不会再次取到 [m2,l2]=Cell_min(coding(:,1));%找出次小值 coding{l2,1}=coding{l2,1}+temp_p;%最小概率和次小概率相加得到新元素概率 [k,mp]=size(coding{l1,2});%考虑最小概率包含了哪些元素 for i=1:mp code{coding{l1,2}(i),2}=[1,code{co

您可能关注的文档

文档评论(0)

展翅高飞2020 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档