数字图像处理实验六压缩编码.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字图像处理实验六压缩编码

实验六 统计压缩编码 实验目的: 1,掌握不等长编码的基本原理及方法 2,掌握衡量压缩效果的技术指标 3,掌握Huffman编码的方法 二,实验条件 1,MATLAB 2,典型的灰度、彩色图像文件 三,原理 1.去除数据冗余度可以有效的压缩数据 2.图像编码的主要技术指标:压缩比、客观评价值SNR、主观评价值 四,实验内容: 1,通过MATLAB编程,对8*8图像子块实施Hiffman编码并计算平均码长 2,计算上述编码的效率,压缩比并对相应数据作出解释。 五,实验步骤 1,Huffman编码的方法与步骤如下所示: (1)将概率按从小到大的顺序排列 (2)给两个概率最小的信源符号和各分配一个码位“0”和“1”,将这两个信源符号合并成一个新符号,并用这两个最小的概率之和最为新符号的概率,结果得到一个只包含(n-1)个信源符号的新信源,称为信源的第一次缩减信源,用S1表示。 (3)将缩减信源S1的符号仍按概率从大到小的顺序排列,重复步骤2,得到只含(n-2)个符号的缩减信源S2。 (4)重复上述步骤,直至缩减信源只剩两个符号为止,此时所剩的两个符号的概率之和为1。然后从最后一级缩减信源开始,依编码路径向前返回,就得到各信源符号所对应的码字。 2,假设这个8*8的字块是由0-5这六个像素组成,对这个字块进行概率统计,并按概率从小到大的顺序排列,如下所示: P=(0.25 0.25 0.2 0.15 0.1 0.05) 则对于假设的字块进行Huffman编码的matlab程序如下所示: n=input(N=);% L=0; H=0; for i=1:n P(i)=input(P=);%输入像素概率分布 s=s+P(i); end if s~=1 error(不符合概率分布); end P=sort(P); p=P; mark=zeros(n-1,n); %mark为n-1行,n列矩阵,用来记录每行概率排列次序 for i=1:n-1 [P,num]=sort(P); %对输入元素排序并记录 mark(i,:)=[num(1:n-i+1),zeros(1,i-1)]; P=[P(1)+P(2),P(3:n),1]; end for i=1:n-1 table(i,:)=blanks(n*n); %blanks 创建空格串 end table(n-1,n)=1; table(n-1,2*n)=0 for i=2:n-1 table(n-i,1:n-1)=table(n-i+1,n*(find(mark(n-i+1,:)==1))-(n-2):n*(find(mark(n-i+1,:)==1))); %按mark的记录依次赋值 table(n-i,n)=1; table(n-i,n+1:2*n-1)=table(n-i,1:n-1); table(n-i,2*n)=0; for j=1:i-1 table(n-i,(j+1)*n+1:(j+2)*n)=table(n-i+1,n*(find(mark(n-i+1,:)==j+1)-1)+1:n*find(mark(n-i+1,:)==j+1)); %mark的记录依次赋值 end end %得到编码后的码字 for i=1:n W(i,1:n)=table(1,n*(find(mark(1,:)==i)-1)+1:find(mark(1,:)==i)*n); l(i)=length(find(abs(W(i,:))~=32)); %32表示空字符,要找不是空字符的个数,即为每个数编码的个数 L=L+p(i)*l(i); %计算平均码长 H=H-p(i)*log2(p(i));%计算信源熵 end xiaolv=H/L; %计算编码效率 disp(输出每个概率的编码); disp(W); disp(输出平均码长L:); disp(L); disp(输出编码效率xiaolv:); disp(xiaolv); 3,计算结果如下: (1)输出每个灰度级的编码 0001 0000 001 11 10 01 (2)计算其平均码长和编码效率 平均码长 L= 2.4500 编码效率 xiaolv= 0.9891 图一 运行及结果 实验总结: 在实验中,假设了灰度级为6,即像素值为0-5。同时,只是简单的对一个8*8字块进行概率统计,然后进行Huffman编码,这相对于

文档评论(0)

kakaxi + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档