基于奇异值分解(svd)的图像压缩技术研究_1012201039_刘畅_图像文件的容.doc
- 文档编号:18821664
- 上传时间:2023-12-20
- 格式:DOC
- 页数:7
- 大小:625.50KB
基于奇异值分解(svd)的图像压缩技术研究_1012201039_刘畅_图像文件的容.doc
《基于奇异值分解(svd)的图像压缩技术研究_1012201039_刘畅_图像文件的容.doc》由会员分享,可在线阅读,更多相关《基于奇异值分解(svd)的图像压缩技术研究_1012201039_刘畅_图像文件的容.doc(7页珍藏版)》请在冰点文库上搜索。
基于奇异值分解(SVD)的图像压缩技术研究
1012201039刘畅
图像文件的容量一般都很大,它的存储和传输,特别是网间传输会因此受到很大影响。
图像压缩技术是解决此问题的关键。
当前对图像压缩的算法有很多,特点各异,从而形成了各种专门的图像格式。
除了专门的图像压缩软件外,一般数据压缩工具的压缩率都不是太高,例如Winzip的压缩只有两倍左右。
本文通过奇异值分解完成可调压缩率的图像压缩。
1.基本原理
主要从奇异值分解的基本原理出发,详细阐述基于奇异值分解的图像压缩的原理和方法。
用Matlab编程实现了该方法对图片的压缩,最后对该方法实验图片的压缩效果进行讨论与总结,可以看出该方法对于压缩图像奇异值衰减较快的图片较为有效。
众所周知,位图格式的图像,其特点是他的数据和图像像素点一一对应,组成三个矩阵,以往的处理是对数据本身进行分析,找出规律,然后再用相应的算法进行处理,本研究将图像作为矩阵,运用奇异值分解(SVD)对矩阵进行压缩。
1.1奇异值分解定理
奇异值的定义:
设(r>0),的特征值为:
(1)
则称(i=1,2,…,n)是A的奇异值;规定零矩阵0的n个奇异值都是0.
奇异值分解定理:
设(r>0),则存在m阶酉矩阵U和n阶酉矩阵V,使得
(2)
其中,而σ1,σ2,…,σr,是矩阵A的所有非零奇异值,并且称式
(2)是矩阵A奇异值分解,若U写成的形式,V写成,则
(2)式可以写成如下形式:
(3)
1.2图像压缩基本思路
由于大得奇异值对图像的贡献大,小的奇异值对图像的贡献率小,所以可以从r个奇异值中选取前k(k 即取: (4) 其中用Ak近似表示图像A。 存储图像A需要m*n个数值,存储图像Ak需要数值,若取 (5) 就可以达到压缩图像的目的,并称为压缩比。 下面用一个例子说明处理过程: 选取一个9×10的矩阵A,如下所示,对其进行奇异值分解,三个矩阵记为: U(9×9),S(9×10),V(10×10)。 选取k=4,通过奇异值分解就可得到Uk,Sk,Vk , 由公式(4)计算Ak得到 比较发现,Ak和A几乎相同,下面通过具体的图像压缩来说明奇异值分解的应用。 2.实验验证 2.1实验数据来源: 本实验所需图片是Matlab自带的tif格式图片。 TIFF以任何颜色深度存储单个光栅图像,被认为是印刷行业中受到支持最广的图形文件格式。 TIFF格式是可扩展的格式。 这意味着程序员可以修改原始规范以添加功能或满足特定的需要。 调用Matlab自带函数读取图片,获取图片的描述矩阵,为256*256阶的8为方阵。 本实验主要对进行奇异值分解,用一个更小阶的矩阵来描述,从而达到实验目的。 图1原始图像 2.2实验过程 (1)提取图像数据,将图片读入Matlab中,存储的是数据矩阵并设为A,将数据转换为double型,以适应SVD函数的要求,运用函数进行图像的奇异值分解,分别得到对角奇异值矩阵S为256*1型,以及U左奇异值矩阵为256*256型,V右奇异值矩阵为256*256型。 提取奇异值作为行向量,绘制奇异值曲线如下: 图2奇异值曲线 (2)利用分解后的矩阵重构原矩阵A的近似矩阵Ak,并进行数据格式转换。 设置压缩数k,试验中分别是指k=20,40,60,80,100,120;利用svds函数将选择k之后的新矩阵进行重构得到Ak,重构后需的矩阵需进行数据类型转换,转换为unit8类。 2.3流程图 根据上述奇异值分解的图像压缩原理,利用Matlab软件编制程序,虽任意选取的一幅图像进行压缩与解压处理,程序流程如图所示 图3压缩与解压程序流程 3.实验结果分析 重构后的图像(图4)输出如下: (a)k=20(b)k=40(c)k=60 (d)k=80(e)k=100(f)k=120 图4重构图像 由于大的奇异值对图像的贡献率大,小的奇异值对图像的贡献率小。 而且我们从奇异值曲线可以看出,奇异值衰减很快,只有前面50个奇异值较大,后面的奇异值较小,这为我们用较少的奇异值重构原图像而不会带来大的失真成为可能。 压缩数k越小,需要保存的数据越少,但重构后的图像与原始图像相差越大;k越大,需保存的数据越多,重构后的图像与原始图像越接近。 从图4可以看出,k=20时,如图4(a)所示,重构图像与原始图像相差较大,图像较为模糊;当k=80时,如图4(d)所示,重构图像与原始图像基本相似;当k=120时,如图4(f)所示,重构图像与原始图像以很好的吻合。 4.结论 本研究讨论了一种基于奇异值分解的图像压缩方法,压缩的基本原理是用具有较少元素的压缩矩阵(U,S,V)代替原始图像矩阵,再用压缩矩阵生成原始图象的近似图像。 再分解过程中,根据奇异值分解基本原理即可得到U,V。 通过调节压缩率可以达到不同的压缩效果。 本研究通过实验验证了奇异值分解是一种实现过程简单而行之有效的压缩方法,具有一定的应用前景。 Matlab程序 clear,clc infile='D: \ProgramFiles\Matlab\toolbox\images\imdemos\trees.tif' A=imread(infile);%读取图像 figure (1);imshow(A);xlabel('原始图像'); A=double(A);%数据格式转换 [U,S,V]=svd(A);%对数据进行奇异值分解 S=diag(S);%提取奇异值组成列向量 figure (2); plot(S);xlabel('奇异值曲线'); figure(3); k=20;[U,S,V]=svds(A,k); im=uint8(U*S*V'); imshow(im);xlabel('k=20'); figure(4); k=40;[U,S,V]=svds(A,k); im=uint8(U*S*V'); imshow(im);xlabel('k=40'); figure(5); k=60;[U,S,V]=svds(A,k); im=uint8(U*S*V'); imshow(im);xlabel('k=60'); figure(6); k=80;[U,S,V]=svds(A,k); im=uint8(U*S*V'); imshow(im);xlabel('k=80'); figure(7); k=100;[U,S,V]=svds(A,k); im=uint8(U*S*V'); imshow(im);xlabel('k=100'); figure(8); k=120;[U,S,V]=svds(A,k); im=uint8(U*S*V'); imshow(im);xlabel('k=120');
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 奇异 分解 svd 图像 压缩 技术研究 _1012201039_ 刘畅 图像文件
![提示](https://static.bingdoc.com/images/bang_tan.gif)