数字图像处理图像编码.doc

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE \* MERGEFORMAT PAGE \* MERGEFORMAT 1 数字图像处理上机实习报告 (DIP4DIP7) 学生姓名: 杜坤 班 级: 071123 学 号: 20121003699 指导老师: 傅 华 明 DIP-4 图像编码 一.题目要求 对图实施费诺-香农编码和解码,计算图像熵,平均码长和冗余度。 二.算法设计 1.测试脚本的程序框图 2.编码程序框图 读入图像的直方图,将图像的灰度值按照概率大小排序,按照香农编码的规则编码。 香农编码将概率由大到小,由上到下排成一排,然后分为两组。是将大的一组概率赋值为0,概率小的一组赋值为1,这是赋值的原则。然后依次的重复,直到每组只有一种输入元素为止。 3.解码程序框图 三.实现代码 1.脚本文件 clear all load mat p = impr(a); %统计概率 code = FanoCodeInit(p); %Fano编码初始化 code = FanoEncoder(code);%Fano编码 outstream = FanoCodeStream(a,code); %输出 data = FanoDecoder(outstream,code);%解码 data = reshape(data,8,8); %恢复8*8的形状 data = data; %转置 I = abs(p.*log2(p)); disp(图像的熵为:); H = sum(I(:)) %计算熵 disp(图像的平局码长为:) B = FanoCodeLength(code); %求平均长度 disp(编码冗余度为:); r = B/H - 1 %求冗余 disp(编码效率为:) e = H/B %求编码效率 if isequal(a,data) msgbox(解码后的数据和输入的数据完全吻合); end 统计灰度的概率 function [p]= impr(f) %概率统计 [m,n] = size(f); graymax = max(f(:)); %找出灰度最大值,划定统计范围 p = zeros(1,graymax + 1); for i = 1:m for j = 1:n x = f(i,j) + 1; p(x) = p(x) + 1; end end p = p/(m*n); End 3.码字的初始化 function [code] = FanoCodeInit(p) %FanoShano码字初始化 [m,n] = size(p); for i = 1:n code(i).gray = i - 1; code(i).p = p(i); code(i).str = ; end %冒泡法排序 for i = 1:n for j = 1:n-i if code(j).p code(j+1).p temp = code(j); code(j) = code(j+1); code(j+1) = temp; end end end end 编码 function [pin] = FanoEncoder(pin) %FanoShano编码 [m,n] = size(pin); flag = 1; while (flag) start = 1; stop = 1; temp = pin(1); for i = 1:n-1 if isequal(temp.str,pin(i+1).str) stop = stop + 1; elseif stop == start start = i + 1; stop = start; temp = pin(i+1); else break; end

文档评论(0)

peace0308 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档