介绍一下奇异值分解来压缩图像。今年的上半年中的一篇博客贴了一篇用奇异值分解处理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时,还是先看看它的秩为好。

  下面给出程序和运行结果,这里使用不同的特征分量对原图像进行重构,可以看一下效果。(这里悲剧的秩就是原图的宽)

close all;
clc;

a=imread('lena.jpg');

imshow(mat2gray(a))
[m n]=size(a);

a=rgb2gray(a);
a=double(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.生物,物理,经济方面的一些统计模型的处理。

参考 http://www.cnblogs.com/tiandsp/archive/2012/10/24/2737769.html

转载于:https://www.cnblogs.com/zhanjxcom/p/4122239.html

【转】matlab练习程序(奇异值分解压缩图像)相关推荐

  1. matlab练习程序(简单图像融合)

    通过本篇和上一篇的结合,应该就能做出拉普拉斯图像融合了. 这里用的方法很简单,就是用模板和两个图像相乘,然后对处理后的两个图像再相加就可以了. 拉普拉斯融合就是对金字塔的每一层图像做这样的操作,然后再 ...

  2. matlab对图像聚类,matlab练习程序(meanshift图像聚类)

    关于这个meanshift,一来能够用来做为目标跟踪,二来能够用来进行图像聚类.我这里只实现了图像聚类,固然,是按本身的理解编写的程序.至于目标跟踪未来必定也是要实现的,由于我最初看这个算法的缘由就是 ...

  3. matlab 脉冲压缩算法,线性调频脉冲压缩原理及其MATLAB仿真+程序

    摘 要:脉冲压缩技术在现代雷达系统和超带宽通信系统等领域具有越来越重要的应用.本文首先阐述了线性调频脉冲压缩的基本原理,并提出了增大信号等效带宽可以提高雷达距离分辨率,然后分析了匹配滤波器的特性,给出 ...

  4. 图像压缩编码码matlab实现——一维无损预测编码压缩图像

    function y = LPCencode(x, f) %LPCencode函数用一维无损预测编码压缩图像x,f为预测系数,如果f默认,则f=1, %就是前值预测. error(nargchk(1, ...

  5. 处理火焰的MATLAB程序,炉膛火焰图像预处理的MATLAB实现

    技术创新 中文核心期刊 <微计算机信息>(管控一体化)2007 年第 23 卷第 6-3 期 360元 / 年 邮局订阅号:82-946 <现场总线技术应用 200 例> 图 ...

  6. Python极简代码压缩图像十到百倍

    技术要点: 1)Python标准库zlib提供了字节串压缩与解压缩功能,压缩比取决于原始信息中数据重复度. 2)Python扩展库pillow中ImageGrab模块提供了屏幕截图功能,Image提供 ...

  7. MATLAB梯度和拉普拉斯算子在图像边缘检测中的应用

    MATLAB梯度和拉普拉斯算子在图像边缘检测中的应用 数学方法 边缘检测最通用的方法是检测灰度值的不连续性,这种不连续性用一阶和二阶导数来检测. (1)一阶导数:一阶导数即为梯度,对于平面上的图像来说 ...

  8. matlab密度特征,关于用MATLAB应用程序估算风险中性密度的性能分析和介绍

    由于场外期权合约的买卖在交易双方间私下进行而非通过公开市场,因而可能很难确定合约的价格有利于买方还是卖方.为对这些合约进行定价,金融分析师往往依据看涨期权或看跌期权价格估算出风险中性密度(RND)值. ...

  9. matlab识别岩石破坏,MATLAB环境下岩石SEM图像损伤分形维数的实现

    总第182期 2009年第8期 舰船电子工程 Ship Electronic Engineering Vol.29No.8 144 MA T LAB 环境下岩石SEM 图像损伤分形维数的实现 3 王凤 ...

最新文章

  1. 十二年来最强购房潮:报价 6 次,疯狂加价,华人程序员在硅谷买房太难了!...
  2. postman怎么传session_十几行代码实现分布式 Session
  3. Android开发之Java的IO流读写的十种方法
  4. release8_如何在Windows 8 Release Preview中将Chrome用作Metro浏览器
  5. 东南亚的IT公司,我劝你善良!
  6. [转载] Python中TFTP的理解
  7. 上手测试GaussDB(for Redis) 和开源 Redis,只为推荐质优价廉的Redis
  8. xml模块、项目开发过程
  9. 基于MATLAB的线性规划
  10. 哔哩哔哩mac客户端!亲测!支持big sur系统
  11. 怎么把video文件改成mp4_怎么将MP4视频转换成EXE格式?
  12. Uncaught ReferenceError: is not defined
  13. 全球地名中英文对照表(M)
  14. 全面的关于OLAP数仓总结
  15. php抓取网页上的指定内容
  16. 环境温度 和气温的区别,有区别吗
  17. 元宇宙是骗局,还是人类的未来?
  18. 英语基础-英语的句子中的谓语
  19. [附源码]JAVA毕业设计评标专家管理信息系统(系统+LW)
  20. Java项目:Springboot养老院管理系统

热门文章

  1. Ten years of pedestrian Detection-论文整理
  2. leetcode - 21. 合并两个有序链表
  3. Java实现数据批量导入数据库(优化速度-2种方法)
  4. TensorFlow第九步CNN BP算法学习
  5. 利用坐标变换证明惯性主轴方向是惯性矩的极值方向
  6. 误删/var/lib/dpkg/info,文件解决方案(是否完全解决,不确定)
  7. 725 - Division
  8. Namomo Spring Camp Div2 Week1 - 第五次打卡
  9. python有哪些知识_Python有哪些基础知识
  10. win10切换桌面_总说win7最好用,那是你还不知道win10系统,竟有这些强大的功能!...