基于奇异值分解的图像压缩.ppt

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于奇异值分解的图像压缩

基于奇异值分解的图像压缩及实现 小组成员: 吴朝霞 卜秋月 钟以婷 殷沙沙 实验方法及原理 奇异值:矩阵A的奇异值定义如下:设(r0),且的特征值分别为 奇异值分解定理:设Σ=diag(),由式(1)可知,(i=1,2,…,r)为A的非零奇异值。U为m阶酉矩阵(n阶复方阵U的n个列向量是U空间的一个标准正交基,则U是酉矩阵),V为n阶酉矩阵,若满足矩阵等式 (2) 则称式(2)为A的奇异值分解。 若U写成U =[ ]的形式,V写成V=[ ]的形式,则式(2)可写成如下形式: (3) 由于大的奇异值对图像的贡献大,小的奇异值对图像的贡献小,所以可以从r个奇异值生成矩阵中选取前k个(kr)近似表示图像A,即取:   (4) 近似表示图像A。 存储图像A需要mn个数值,存储图像需(m+n+1)k个数值,若取   (5) 则可达到压缩图像的目的,比率 (6) 称为压缩率 实验过程 1. 实验数据来源: 本实验所需要的实验原图片是lena.bmp, 处理后的图片设置为lena2.bmp。并获取图片的描述矩阵,为512*512阶8位的方阵。设为A,同时也是原始矩阵,本实验主要是对A进行奇异值分解,用一个更小阶的矩阵来描述A,从而达到实验目的。 2.实验过程: 提取图像lena.bmp数据,将图片读入Matlab中,存储的是数据矩阵并且设置为512*512的矩阵A,将矩阵A中的数据转换为double型,以适应svd函数的要求,运用函数[U,S,V]=svd(A)进行图像的奇异值分解,分别得到对角奇异值矩阵S为512*1阶,以及U左奇异值矩阵为512*512阶,V右奇异值矩阵为512*512阶。将S对角化后,显示的奇异值见图1: 然后利用分解后的矩阵重构原矩阵A,并进行数据格式转换,设置压缩数k,分别令k=40、80、120、160、200五个数据,利用svds函数将选择k之后的新矩阵进行A的重构,即运用U*S*V’进行重构,其中S为40*40的对角矩阵,U为512*40的左奇异值矩阵,V为512*40的右奇异值矩阵,重构时需将重构的矩阵进行字型转换为uint8类,将重构后的矩阵放置在outfile中,最后显示重构后的图像。( Matlab实现代码见附录1. ) 附录1 infile=E:\lena.bmp; A=imread(infile); imshow(A);xlabel(‘原始图像’); A=double(A); [U,S,V]=svd(A); S=diag(S); plot(S);xlabel(‘奇异值曲线’); k=40; [U,S,V]=svds(A,k); im=uint8(U*S*V); imwrite(im,outfile); imshow(im); k=80; [U,S,V]=svds(A,k); im=uint8(U*S*V); imwrite(im,outfile); imshow(im) k=120; [U,S,V]=svds(A,k); im=uint8(U*S*V); imwrite(im,outfile); imshow(im) k=160; [U,S,V]=svds(A,k); im=uint8(U*S*V); imwrite(im,outfile); imshow(im) k=200; [U,S,V]=svds(A,k); im=uint8(U*S*V); imwrite(im,outfile); imshow(im) 3.压缩与解压流程设计 (1)图片压缩流程如图2所示: (2)图像重构流程图见图3 . 实验结论 由式(5)、(6)可知,如果从分解后的对角矩阵中选择k个大奇异值以及这些奇异值相对应的左

文档评论(0)

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

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

1亿VIP精品文档

相关文档