matlab练习程序(奇异值分解压缩图像)
2012-10-24 20:59
656 查看
介绍一下奇异值分解来压缩图像。今年的上半年中的一篇博客贴了一篇用奇异值分解处理pca问题的程序,当时用的是图像序列,是把图像序列中的不同部分分离开来。这里是用的不是图像序列了,只是单单的一幅图像,所以直接就对图像矩阵进行svd了。
吴军的《数学之美》里其实已经介绍过用svd进行大数据的压缩了,不过我这里还是针对图像进行介绍一下吧。比如一幅1000*1000的图像A,存储就需要1000000个像素了。我们对A进行svd分解,则A=USV’,如果rank(A)=r,那么U就为1000*r的矩阵,S为r*r的矩阵,V为1000*r的矩阵。所以存储的数据就是1000*r+r*r+1000*r个数了,如果这个r比较小,那么存储的空间就会小很多了,当然了,如果r=1000,这时这样来算svd就是既浪费了空间又浪费了时间。所以用这个svd时,还是先看看它的秩为好。
下面给出程序和运行结果,这里使用不同的特征分量对原图像进行重构,可以看一下效果。(这里悲剧的秩就是原图的宽)
下面是效果图:
lena原图
只用第1个特征值进行重构
用前10个特征值进行重构
用前80个特征值进行重构
用前150个特征值进行重构
最后说一些奇异值分解的应用:
1.图像压缩,正如上面的。
2.噪声滤波。
3.模式识别。因为svd就是提取主要的成分嘛。
4.生物,物理,经济方面的一些统计模型的处理。
吴军的《数学之美》里其实已经介绍过用svd进行大数据的压缩了,不过我这里还是针对图像进行介绍一下吧。比如一幅1000*1000的图像A,存储就需要1000000个像素了。我们对A进行svd分解,则A=USV’,如果rank(A)=r,那么U就为1000*r的矩阵,S为r*r的矩阵,V为1000*r的矩阵。所以存储的数据就是1000*r+r*r+1000*r个数了,如果这个r比较小,那么存储的空间就会小很多了,当然了,如果r=1000,这时这样来算svd就是既浪费了空间又浪费了时间。所以用这个svd时,还是先看看它的秩为好。
下面给出程序和运行结果,这里使用不同的特征分量对原图像进行重构,可以看一下效果。(这里悲剧的秩就是原图的宽)
clear all; close all; clc; a=imread('lena.jpg'); imshow(mat2gray(a)) [m n]=size(a); a=double(a); r=rank(a); [s v d]=svd(a); %re=s*v*d'; re=s(:,:)*v(:,1:1)*d(:,1:1)'; figure; imshow(mat2gray(re)); imwrite(mat2gray(re),'1.jpg') re=s(:,:)*v(:,1:20)*d(:,1:20)'; figure; imshow(mat2gray(re)); imwrite(mat2gray(re),'2.jpg') re=s(:,:)*v(:,1:80)*d(:,1:80)'; figure; imshow(mat2gray(re)); imwrite(mat2gray(re),'3.jpg') re=s(:,:)*v(:,1:150)*d(:,1:150)'; figure; imshow(mat2gray(re)); imwrite(mat2gray(re),'4.jpg')
下面是效果图:
lena原图
只用第1个特征值进行重构
用前10个特征值进行重构
用前80个特征值进行重构
用前150个特征值进行重构
最后说一些奇异值分解的应用:
1.图像压缩,正如上面的。
2.噪声滤波。
3.模式识别。因为svd就是提取主要的成分嘛。
4.生物,物理,经济方面的一些统计模型的处理。
相关文章推荐
- 【转】matlab练习程序(奇异值分解压缩图像)
- matlab练习程序(奇异值分解压缩图像)
- matlab练习程序(视频分解为图像序列)
- matlab练习程序(图像放大/缩小,双立方插值)
- matlab练习程序(图像自动聚焦)
- Matlab DIP(瓦)ch8图像压缩练习
- 局部边缘保持滤波(LEP)高动态范围图像HDR压缩 matlab程序(一)
- matlab练习程序(灰度、二值图像腐蚀膨胀)
- matlab练习程序(meanshift图像聚类)
- 局部边缘保持滤波(LEP)高动态范围图像HDR压缩 matlab程序(二)
- matlab练习程序(图像水平/竖直移动)
- matlab练习程序(图像滤波时的边界处理2)
- matlab练习程序(TV模型图像修复)
- matlab练习程序(图像Haar小波变换)
- matlab练习程序(模糊集图像增强)
- matlab练习程序(求灰度图像最大灰度,最小灰度,平均灰度)
- MATLAB - 练习程序,求灰度图像均值、最大、最小数值
- 局部边缘保持滤波(LEP)高动态范围图像HDR压缩 matlab程序(二)
- matlab练习程序(图像旋转,双线性插值)
- 【转载】matlab练习程序(图像Haar小波变换)