基于奇异值分解的图片压缩
基于奇异值分解的图片压缩
一、目的
在网络空间安全数学基础上,老师给出了一种基于奇异值分解的图片压缩办法。在本篇文章中,对此进行简单的实现。
二、简单的数学原理
step1:我们考虑一个 n * n 的方阵A,其总满足:
假设有好多特征值 Lambda 与特征向量 x 都满足上述公式,则有:
可以得到:
这样,我们就把一个方阵 A 进行了分解。
step2:同理,任意 m * n 的矩阵 M,都可分解为这样的形式,我们把它称为奇异值分解。
step3:我们将 M 分解为如下图所示:
化简一下,就变为:
我们看到,这个式子大概加了 n 次,如果我们将图片变为矩阵,n是很大的,那如果只保留前 k 项,对矩阵 M 的影响如何呢?
(注意:la_1 > la_2 >…> la_n)
三、Matlab代码实现:
在此,我们将一个图片化为矩阵,只保留奇异值分解的前 k 项,观察对图片的影响。
I = imread('C:\Users\dell\Desktop\IMG_20190405_111109.jpg');
I=double(I); %将图片 0~255 转化为 double 形式,方便奇异值分解
[u s v]=svd(I(:,:,1)); %奇异值分解只能分解二维矩阵
k=200; %保留项数为200
left=u(:,1:k);
val=s(1:k,1:k);
right=v(:,1:k);
out=left*val*right';
low=min(min(out));
high=max(max(out));
imshow(out,[low,high]); %看一下图片啥样的啊
imwrite(uint8(out), 'C:\Users\dell\Desktop\result.jpg');%保存一下
四、测试结果:
我们所处理的图片:5.87 MB
1.当 k = 200 时,大小为1.6 MB:
2.当 k = 50 时,大小为1.0 MB:
基于奇异值分解的图片压缩相关推荐
- 基于Plupload的图片压缩上传
前言 这里的上传工具基于JQuery.Plupload 传送门:Plupload官方.中文文档 为什么要做图片压缩? 现在手机拍照都快10M了,但是有时候图片上传只要看得清楚就可以了,比如上传身份证2 ...
- 基于Matlab的图片压缩(超简单)
压缩原理--SVD 图像在计算机中用矩阵储存,值的大小在0~255,在这里我们令图像的矩阵为A.若图片为灰色图片则颜色通道只有一个,所以A为二维矩阵:若为彩色矩阵则颜色通道由3种,分别B,G,R,分别 ...
- 用Kotlin撸一个图片压缩插件-实战篇(三)
简述: 由于个人原因,已经有很长一段时间没有写过文章,有句话是那么说的只要开始就不会太晚,所以我们开始<用Kotlin撸一个图片压缩插件>系列文章最后一篇实战篇.实际上我已经把源码发布到了 ...
- matlab-利用SVD(奇异值分解)来进行图片压缩
参考博客 参考博客1(大致上的理论理解):https://www.cnblogs.com/MrLJC/p/4158818.html?utm_source=tuicool 参考博客2(压缩率):http ...
- 基于vue + axios + lrz.js 微信端图片压缩上传
业务场景 微信端项目是基于Vux + Axios构建的,关于图片上传的业务场景有以下几点需求: 1.单张图片上传(如个人头像,实名认证等业务) 2.多张图片上传(如某类工单记录) 3.上传图片时期望能 ...
- 基于奇异值分解的图像压缩和信息隐藏
基于奇异值分解的图像压缩和信息隐藏 将图像进行奇异值分解后,通过对对角矩阵进行一系列操作,可以达到压缩图像以及信息隐藏的目的.不仅如此,随着计算机网络和网络技术的不断发展,数字图像.音频和视频产品越来 ...
- Android性能优化之图片压缩优化
1 分类 Android图片压缩结合多种压缩方式,常用的有尺寸压缩.质量压缩.采样率压缩以及通过JNI调用libjpeg库来进行压缩. 参考此方法:Android-BitherCompress 备注: ...
- 【Android 内存优化】Android 原生 API 图片压缩原理 ( Bitmap_compress 方法解析 | Skia 二维图形库 | libjpeg 函数库 | libpng 函数库 )
文章目录 一. 图片质量压缩方法 二. Skia 二维图形库 三. libjpeg.libpng 函数库引入 在博客 [Android 内存优化]图片文件压缩 ( Android 原生 API 提供的 ...
- 服务器搭建:3.1、openresty图片压缩之GraphicsMagick
2019独角兽企业重金招聘Python工程师标准>>> 服务器环境 CentOS6 版本 openresty 1.7.10.2 下载地址:https://openresty. ...
最新文章
- pull to load more data
- 实验中遇到的Quartus II的Warning的解释、原因以及解决方法
- VS2015:安装适用于windows桌面的visual c++2015
- openlayers根据坐标定位_车辆定位技术概述
- python做接口测试的优点_python做接口测试的必要性
- Futter基础第13篇: 实现Drawer侧边栏、以及侧边栏内容布局
- 【UVa10674】Tangents(两圆公切线的切点--验板子题)
- nginx 代理ssh
- Android企业级项目实战——基础篇(系列文章)
- Chartboost ane sdk 使用教程
- 2013全年3GPP RAN1会议关于D2D(Device-to-Device)技术的提案分析
- Win2000请求拨号路由服务详解
- 分享20个高质量的学习网站!
- 白话解读“中台”技术
- 外贸用什么邮箱好,如何选择一个好用的外贸企业邮箱
- 诺基亚升级Android10,诺基亚发布第五次Android 10更新 ,诺基亚7+可升级
- 286 Walls and Gates
- Gait Part论文阅读笔记
- Tyecho 完美配置评论回复邮件提醒 的简单方法
- c51停车场车位管理系统