压缩原理——SVD

图像在计算机中用矩阵储存,值的大小在0~255,在这里我们令图像的矩阵为A。若图片为灰色图片则颜色通道只有一个,所以A为二维矩阵;若为彩色矩阵则颜色通道由3种,分别B,G,R,分别对应三原色蓝色,绿色,红色,即三原色。

我们将A分解为U,D两个正交矩阵呵V这个奇异值矩阵,如下图所示。

在这里我们举例说明一下,A=

在Matlab中我们使用内置函数svd()函数对A进行分解

A = [4 12 8 712 5 8 43 17 56 21]
[U,V,D] = svd(A);

V的结果如下图所示:

U,D结果为正交矩阵,这里不予展示。SVD压缩原理就是保留原矩阵的重要特征,在64.55,13.21,7.42中我们只要保留64.55,13.21这些较大的奇异值,舍弃较小的奇异值,就能保留原矩阵的大部分信息了。当然U,D也要根据奇异值矩阵V进行调整。

我们用matlab编程得到3个程序,后面两个为函数,photo_compress()为压缩函数,调用New_svd()进行奇异值分解。

程序主程序,记得改变图片路径:

%Matlab压缩图片图片
ratio = 0.6;%压缩比例
graycompress = 0;%若为1压缩为灰度图
file_name = 'E:\workplace\wisdom';%文件所在路径
name = 'test.jpg';%图片的名称
photo_address = fullfile(file_name,name);%fullfile()合并制定路径和文件名
save_address = fullfile(file_name,strcat('compress_',name));
tmp=photo_compress(photo_address,save_address,ratio,graycompress);
disp('End')

压缩程序,对应不同的图片给予不同的方法处理:

function [compress_A] = photo_compress(photo_address,save_address,ratio,graycompress)
%图片压缩函数
%参数说明
%photo_address图片所在地址
% save_address压缩图片所在地址
% ration压缩比例
% graycompress默认为0,置彩色图片转成灰色图片再压缩if nargin == 3%获取函数的参数数量,如果为3个参数则默认读入彩色图片graycompress = 0;
end
img = double(imread(photo_address));
if size(img,3)==3 && graycompress == 1img = double(rgb2gray(imread(photo_address)));%将彩色照片转换成灰色照片
end
if size(img,3)==3%判断是否为彩色照片disp('正在压缩彩色照片');R = img(:,:,1);G = img(:,:,2);B = img(:,:,3);%调用压缩函数进行压缩r =new_svd(R,ratio);g= new_svd(G,ratio);b =new_svd(B,ratio);compress_A = cat(3,r,g,b);elsedisp('正在压缩灰色照片');compress_A = new_svd(img,ratio);
end
imwrite(uint8(compress_A),save_address);
disp('压缩完成');
end

奇异值分解函数,根据压缩比例,动态调整奇异值的数量:

function[A_svd] = new_svd(A,ratio)
%奇异值分解比例函数
[U,V,D] = svd(A);
A_diag = diag(V);%取对角值
S = sum(A_diag)
temp=0;
length_A_diag = length(A_diag);
for i=(1:length_A_diag)temp = temp + A_diag(i)if (temp./S) > ratiobreak;end
end
A_svd=U(:,1:i)*V(1:i,1:i)*D(:,1:i)';
svd_ratio = temp./S;
disp(strcat('矩阵压缩比例为',num2str(svd_ratio.*100),'%'));

压缩比例为0.6,结果如下图所示:

基于Matlab的图片压缩(超简单)相关推荐

  1. 基于奇异值分解的图片压缩

    基于奇异值分解的图片压缩 一.目的 在网络空间安全数学基础上,老师给出了一种基于奇异值分解的图片压缩办法.在本篇文章中,对此进行简单的实现. 二.简单的数学原理 step1:我们考虑一个 n * n ...

  2. matlab 浮雕,基于MATLAB根据图片快速制作陶瓷浮雕的方法与流程

    本发明属于陶瓷制作技术领域,尤其涉及基于MATLAB根据图片快速制作陶瓷浮雕的方法. 背景技术: 印模成形是传统的陶艺成形工艺之一,它具有制作简便.省时省力.对制作者没有过多的技艺要求的优点,因而直到 ...

  3. 怎么打包图片_超简单的免费批量图片压缩技巧,只需3步

    我们在上传图片的时候,经常会遇到一个问题,那就是图片文件太大,无法上传.那这个时候我们该怎么办呢?我们一般都会想到把图片进行压缩之后,重新上传.那么我们要怎么压缩图片呢?如果图片数量很多,能不能进行批 ...

  4. 基于Plupload的图片压缩上传

    前言 这里的上传工具基于JQuery.Plupload 传送门:Plupload官方.中文文档 为什么要做图片压缩? 现在手机拍照都快10M了,但是有时候图片上传只要看得清楚就可以了,比如上传身份证2 ...

  5. python课堂笔记手抄图片_超简单又漂亮的手抄报图片

    办手抄报是一项综合性训练,它融作文.书法.绘画于一体,可以有效地提高学生的思维能力.写作能力和审美能力.小编为大家带来的超简单手抄报图片简单又漂亮,希望大家喜欢. 超简单手抄报的图片欣赏 超简单手抄报 ...

  6. 如何压缩jpg大小?jpg图片压缩的简单方法

    我们日常的学习.工作中,经常需要收发很多jpg图片.当这些jpg图片体积过大的时候,不仅会减缓我们传输的速度,还会占用大量的电脑储存空间.那么如何将图片压缩(https://www.yasuotu.c ...

  7. gettext()方法输出空白_如何将文档内容输出为无水印图片?超简单的操作方法看这里...

    在实际的工作生活中,我们可能会遇到这样的情况:文档内容太多,想截图以图片的形式展现,但是文档超过一屏无法全部截取,将其保存为图片的形式,但使用WPS将文档直接输出为无水印图片需要开启WPS会员. 一连 ...

  8. 基于matlab的漏电保护器仿真,基于MATLAB的小电流接地系统简单故障仿真实验

    在我国,中性点直接接地方式被规定用于110kV及以上的电压等级的系统,而小电流接地方式(即中性点不接地或经消弧线圈接地)被规定用于35kV及以下的配电系统.在小电流接地系统中,如果发生了单相接地故障, ...

  9. 基于Matlab的图片平滑和锐化处理

    在本实验中我分别采用了系统自带的fspecial函数和自己编写的均值平滑模板和两个锐化模板进行图片处理. 目录 空间域平滑增强 空间域锐化增强 空间域平滑增强 实验要求:采用均值平滑模板对图片进行处理 ...

最新文章

  1. java中的二进制运算简单理解
  2. Linux下动态链接库so文件覆盖导致coredump
  3. 关于Java中的String类
  4. pdf保存如何带批注_带有批注的SpringSelenium测试
  5. scikit-learn安装
  6. 正确评估SQL数据库性能,你必须知道的原理和方法!
  7. 项目内出现广告位引争议,开源如何持续健康运营?
  8. python函数参数的引用传递_Python初学者笔记(八):函数参数的值传递和引用传递...
  9. python可以处理哪些文件_Python(文件处理)
  10. Nginx源码分析 - HTTP模块篇 - HTTP模块的阶段处理PHASE handler(23)
  11. 设计模式以及类图的实现
  12. es 怎么验证是否安装成功_ElasticSearch(ES)预警服务 Watcher安装以及探究
  13. 从0到1实现VueUI库思路
  14. 华为手机鸿蒙系统官方下载入口,华为鸿蒙系统升级入口
  15. 在php中cm和kg用什么表示,将g/cm³换算为kg/m³ (克每立方厘米换算为千克每立方米)...
  16. 转载四代重歼的一片博文 - 漏斗子:“三大战役”完成 人民币国际化就登场
  17. P1069 微博转发抽奖
  18. vfc格式linux,2021-03-17 在linux上将vcf文件转plink的格式bed,bim,fam
  19. 下载美国气候数据中心地址
  20. 【论文解读】Exploring Complementary Strengths of Invariant and Equivariant Representations(小样本等变和不变的互补)

热门文章

  1. 【视频笔记】Java并发(狂神)
  2. 支付宝可以休矣,淘宝才是阿里社交的正确选择
  3. 港科百创 | 教授企业安建科技B轮融资¥1.8亿,开创半导体产业新势力!
  4. Ajax和jQuery
  5. input pattern中常用的正则表达式
  6. 直播APP开发:直播新动作,“直播+”继续
  7. 突袭4 linux版本,突袭4配置要求一览 突袭4配置要求高吗
  8. 信息收集FPing 的ip段扫描和Hping3部分功能
  9. linux工作室桌子,工作室桌子摆放有什么讲究?
  10. 每周一个小轮子之 贴纸效果