欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数字图像处理课程设计.doc

    • 资源ID:17614889       资源大小:214.50KB        全文页数:8页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数字图像处理课程设计.doc

    【精品文档】如有侵权,请联系网站删除,仅供学习与交流数字图像处理课程设计.精品文档.数 字 图 像 处 理 课程设计报告题 目:基于矢量量化技术的编码 专业班级: 学 号: 姓 名: 基于矢量量化技术的图像编码一、 设计目的1.1掌握MATLAB GUI 程序设计1.2学习和熟悉MATLAB图像处理工具箱1.3学会运用MATLAB工具箱对图像进行处理和分析二、设计环境Window XP,MATLAB 7.0三、总体设计数字图像处理技术是20世纪60年代发展起来的一门新兴学科,随着图像处理理论和方法的进一步完善,使得数字图像处理技术在各个领域得到了广泛应用,并显示出广阔的应用前景。矢量量化技术是一种有损压缩技术,它根据一定的是真测度在码书中搜引出与输入适量失真最小的码字的索引,传输时仅传输这些码字的索引,接收方根据码字索引字,码书中查找对应码字,再现输入矢量。矢量量化分三个主要步骤:一是训练码书,二是编码,三是解码。有好的码书,才能进行有效的数据压缩编码,因此码书的设计是矢量量化的关键。用M个训练矢量生成包含N(N<M)个码字的码书,也就是说把M个训练适量分成N类最佳分类,并把各类的中心矢量最为码书中的码字,这里介绍一种直观有效的矢量量化码书设计算法,即LGB算法。1) 生成初始码书。可以用随机方法生成,也可以将训练样本随机分配于码书中。2) 进行迭代训练。每次迭代中,每一个训练矢量X1(i=12M)与码书中各个码Yj(j=1,2,.N)相比较,找到与该训练适量最相近的一个码字Yk,并把所有与Yk(j=1,2,.N)最相近的训练矢量归为一类,这样一共有N类。然后计算个训练矢量与其在码书中最相近的码字的距离的平方之和,得到当前迭代的中矢量。若这次迭代的总矢真与上次迭代的总矢量之间的相对误差满足给定要求,则停止迭代,否则求出个类的中心矢量作为新的码书进行下一次迭代。 矢量量化的编码就是根据一定的失真测度在码书中搜索出与输入矢量失真最小的码字的索引,编码过程就是完成输入矢量的马子搜索过程。 矢量量化的解码过程很简单,即根据接收到的码字索引在码书中找到该码字,并将该码字最为输入适量的替代矢量。 若矢量量化编码中用N个k维码字组成码书,那么对某个输入矢量序列进行编码后,其对应的标号需要log2N比特传输。 下面将用一个实例来讲解Matlab如何实现适量量化压缩,原图像为:1.码书设计:对图像进行矢量量化时,首先要选择码书的尺寸和码字的大小,这两个参数与图像压缩效果有直接的关系。另外,不同的码书训练方法生成的码书性能也有所不同。这里我们用最简单的LBG方法训练码书。码字为4*4的子图像块,码书的尺寸为64,其Matlab程序如下:function LBGdesign()%读入标准图像,用于码书的训练figure(1);sig=imread('1.bmp');%用size函数得到图像的行数和列数m_sig,n_sign=size(sig);%设置码字的大小,4*4siz_word=4;%设置码书的大小siz_book=64;%将图像分割成4*4的子图像,作为码书训练的输入向量num=m_sig/siz_word;ss=siz_word*siz_word; %码字的大小nn=num*num; %子图像个数,即输入矢量个数re_sig=;for i=1: m_sig for j=1:m_sig f1=floor(i./siz_word); m1=mod(i,siz_word); if m1=0 m1=siz_word; f1=f1-1; end f2=floor(j./siz_word); m2=mod(j,siz_word); if m2=0 m2=siz_word; f2=f2-1; end re_sig(num*f1+f2+1,siz_word*(m1-1)+m2)=sig(i,j); endend%码书初始化,从nn个输入矢量随机取siz_book个矢量作为初始矢量codebook=;for i=1:siz_book r=floor(rand*nn)+1; codebook=codebook;re_sig(r,:);end%LBG训练算法%d0,d1用于存放各训练矢量与其在码书中最近的码字的距离的平方之和%sea用于存放迭代精度d0=0;for i=1:nn d0=d0+vectordistance(ss. re_sig(i,:),codebook(1,:);endwhile 1 d1=0.0; for i=1:siz_book vectornumber(i)=0; end for i=1: nn codenumber(i)=1; min=vectordistance(ss. re_sig(i,:),codebook(1,:); for j=2:siz_book d=0.0; for l=2: ss d=d+(re_sig(i,l)-codebook(j,l)2; if d>=min break; end end if d<min min=d; codenumber(i)=j; end end vectornumber(codenumber(i)=vectornumber(codenumber(i)+1; d1 =d1+min; end sea=(d0-d1)/d1; if sea<=0.0001 break; end d0=d1; for j=1: siz_book if vectornumberj=0 dd=zeros(1,ss); for l=1: nn if codenumber(l)=j for k=1: ss dd(k)=dd(k)+re_sig(1,k); end end end for k=1: ss codebook(j,k)=dd(k)/vectornumber(j); end else l=floor(rand*nn)+1; codebook(j,:)=re_sig(1,:); end endendsave codebook_kn codebook;%函数vectordistance是计算矢量间距离的函数function z=vectordistance(siz_word,vector1,vector2)z=0;for i=1:siz_word z=z+(vector1(i)-vector2(i)2;end程序运行结果为如图:2.编码:可将任意一幅要压缩图像分割成4*4的字图像块,然后按照码书中的码字索引进行编码,也就是说每一个子图像经过编码后仅用一个索引号表示,实现编码的Matlab程序如下:funtion LBGencode()%打开和显示要编码的图像figure(1)sig=imread('1,bmp');imagesc(sig);colormap(gray);axis square axis off m_sig, n_sig=size(sig); %根据已有的码书设置分割子图像的大小和码书的大小 siz_word=4; siz_book=64; %调用码书 load codebook_kn %根据码书的要求,分割要编码的图像 num=m_sig/siz_word; ss=siz_word*siz_word; nn=num*num; re_sig=; for i=1:m_sig for j=1:m_sig f1=floor(i./siz_word); m1=mod(i,siz_word); if m1=0 m1=siz_word; f1=f1-1; end f2=floor(j./siz_word); m2=mod(j,siz_word); if m2=0 m2=siz_word; f2=f2-1; end re_sig(num*f1+f2+1,siz_word*(m1-1)+m2)=sig(i,j); end end %用LBG算法编码 d1=0.0; for i=1:nn codenumber(i)=1; min =vectordistance(ss,re_sig(i,:),codebook(1,:); for j=2:siz_book d=0.0; for l=1: ss d=d+(re_sig(i,l)-codebook(j,l)2; if d>=min break; end end if d<=min min=d; codenumber(i)=j; end end d1=d1+min; end经过编码后,每个图像块都和码书中的某个码字相对应,也就是可以用这个索引号替代子图像块,起到压缩编码的效果运行图像如下:3.解码:解码就是按照索引号将码书中的码字找出来吗,用找到的码字将图像重建出来。重建图像和原始图像之间存在一定的失真,只要失真控制在一定的范围内,则认为该图像压缩是有效的。实现解码的Matlab程序如下:function LBGdecode()%解码算法for i=1: nn re_sig(i,:)=codebook(codenumber(i),:);end%重建图像for ni=1: nn for nj=1: ss f1=floor(ni./num); f2=mod(ni,num); if f2=0 f2=num; f1=f1-1; end m1=floor(nj./siz_word)+1; m2=mod(nj,siz_word); if m2=0 m2=siz_word; m1=m1-1; end re_re_sig(siz_word*f1+m1,siz_word*(f2-1)+m2)=re_sig(ni,nj); endend%显示解压后的图像,即压缩图像figure(2);imagesc(re_re_sig);colormap(gray);axis squareaxis off运行图像为:四:小结通过十六个学时的数字图像处理课程设计让我对数字图像处理有了更深层次的了解,一遍遍的翻书查资料也让我又回顾了这一学期来所学的知识。对于此课程设计中的课题中,我们做的是基于矢量量化技术的图像编码,矢量量化技术是一种有损压缩技术,它根据一定的失真测度在码书中搜索与矢量失真最小的码字的索引,传输时仅传输这些码字的索引,接收方根据码字索引在码书中查找对应码字,再现输入矢量。由于图像数据占据大量的存储容量和较宽的传输信道,因此在信息社会中,数字图像压缩技术在图像处理中的地位越来越重要。这次课程设计让我对这门技术有了基础的理解。这门课程设计也用到了MATLAB,在学习这门课程得过程中又巩固了MATLAB的知识。在编程的过程中大家都特别齐心,共同商量怎么编程,使我们的团队意识进一步加强。当最终图像显示出来时,那种成功的喜悦油然而生。总之,这次课设让我学会了很多。谢谢老师在学习中的教导与课程设计中耐心的指导!

    注意事项

    本文(数字图像处理课程设计.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开