SVD matlab图像处理

news/2024/7/3 18:15:39

SVD 图像处理
奇异值分解在图形压缩中的应用

文章目录

  • (1) 奇异值分解
  • (2) 利用 SVD 对原数据进行降维
  • (3) matlab的相关操作
    • 1. 对单张图片的处理
    • 2. 对文件夹中的图片批量处理
    • 3. 视频处理

(1) 奇异值分解

A m × n = U m × m ∑ m × n V n × n T A_{m\times n}=U_{m\times m}\sum\nolimits_{m\times n}V^T_{n\times n} Am×n=Um×mm×nVn×nT

  • 奇异值矩阵:大小和 A A A 相同,除了主对角线上元素不为 0 0 0 以外,其余位置的元素均为 0 0 0 。例如:
     

    [ 5 0 0 0 4 0 ] \left[ \begin{matrix} 5&0&0\\ 0&4&0 \end{matrix} \right] [500400]
     

  • U m × m U_{m\times m} Um×m 的求解

    • 计算 P = A × A T P=A\times A^T P=A×AT,这是一个 m m m 阶的对称矩阵。
    • P P P 进行相似对角化,并按特征值从大到小排列,就可得到 P = U B 1 U T P=UB_1U^T P=UB1UT
  • V n × n V_{n\times n} Vn×n 的求解

    • 计算 Q = A T × A Q=A^T\times A Q=AT×A,这是一个 n n n 阶的对称矩阵。
    • Q Q Q 进行相似对角化,并按特征值从大到小排列,就可得到 Q = V B 2 V T Q=VB_2V^T Q=VB2VT
  • ∑ m × n \sum\nolimits_{m\times n} m×n 的求解

    • 由于 A × A T , A T × A A\times A^T,A^T\times A A×ATAT×A,非零特征值相同。
    • 将这些非零特征值开方并从大到小填入一个和 A A A 大小相同全零矩阵,形成奇异值矩阵。

(2) 利用 SVD 对原数据进行降维

  • 对原理的直观理解:
    • 首先,一个矩阵是由不同的基组成的,矩阵的基通过一定规律的组合就可以将原矩阵还原,而使用 SVD 方法就是将组成矩阵的基找到, U m × m U_{m\times m} Um×m 反映的就是找到的基,而保证 U m × m U_{m\times m} Um×m 是一个正交单位矩阵,是由于正交的矩阵其基的冗余信息最少。
    • 其次,每一个基在原矩阵中的“重要性”不同,而 ∑ m × n \sum\nolimits_{m\times n} m×n 就反映这个权重。
    • V n × n V_{n\times n} Vn×n 是一个记录基的组合方式,进而完成还原的矩阵。

在这里插入图片描述

  • 通过保留较少的特征值,可以实现降维,注意这里的降维不是表示矩阵的大小减小,而是降低矩阵的秩。
  • 计算保留原矩阵的特征比例 λ = 8.45 + 4.94 8.45 + 4.94 + 1.11 × 100 % = 92.34 % \lambda=\frac{8.45+4.94}{8.45+4.94+1.11}\times 100\%=92.34\% λ=8.45+4.94+1.118.45+4.94×100%=92.34%

(3) matlab的相关操作

1. 对单张图片的处理

① ① matlab 进行奇异值分解
[U,S,V]=svd(A) ,注意这里的 V 是没有进行过转置的,A 要是一个 n × n n\times n n×n 的矩阵。
② ② matlab 返回主对角线元素 P=diag(A)
③ ③ matlab 读入图片
img=imread(图片地址),注意这样读出来的是一个 uint8 类型的矩阵,要转化成 double 型的才能进行 SVD 操作
④ ④ matlab 转化为灰色图片 I = rgb2gray(A)
⑤ ⑤ matlab 将 RGB 三个颜色矩阵整合成一个 img=cat(3,r,g,b)
⑥ ⑥ matlab 保存图片
imwrite(uint8(A), 保存地址),注意这里要把颜色矩阵转化回 uint8。

2. 对文件夹中的图片批量处理

① ① matlab 将文件名拼接

fullfile('dir1', 'dir2', ..., 'filename')
f = fullfile('dir1', 'dir2', ..., 'filename')
具体例子:
输入:f = fullfile('C:','User','matlab','matlab.m')
得到:f =C:\User\matlab\matlab.m

② ② matlab 文件结构数组

dirOutput=dir('正则表达式');
dirOutput = 

  包含以下字段的 struct 数组:

    name
    folder
    date
    bytes
    isdir
    datenum

3. 视频处理

① ① matlab 读取视频文件

VideoObj=VideoReader(视频文件的地址)

VideoReader - 属性:
Name - 视频文件名
Path - 视频文件路径
Duration - 视频的总时长(秒)
FrameRate - 视频帧速(帧/秒)
NumberOfFrames - 视频的总帧数
Height - 视频帧的高度
Width - 视频帧的宽度
BitsPerPixel - 视频帧每个像素的数据长度(比特)
VideoFormat - 视频的类型, 如 'RGB24'.
Tag - 视频对象的标识符,默认为空字符串''
Type - 视频对象的类名,默认为'VideoReader'.

② ② matlab 读取指定帧 video = read(v,index) 只读取 index 指定的帧。


http://www.niftyadmin.cn/n/2133350.html

相关文章

[PHP] 编译构建最新版PHP源码

获取最新PHP代码git clone https://git.php.net/repository/php-src.git构建编译环境apt-get install build-essential 编译:./buildconf报错autoconf not found,apt-get install autoconf ./configure --help./configure --prefix/tmp/ --disable-all /…

并查集的一般操作 ②

RT 题目描述 明天就是母亲节了,电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢?听说在某个网站上有卖云朵的,小朋友们决定一同前往去看看这种神奇的商品,这个店里有n朵云,云朵已经被老板…

数模必备插值拟合

插值与拟合 两者都可用于对较少数据量的补充&#xff0c;但是一般插值用于数据量较少的情况n<30 拟合用于数据量较多的情况 n>30。 文章目录(1)插值与拟合采用的方法1.插值2.拟合(2)具体的代码操作方法1.插值的matlab2.拟合的matlab(1)插值与拟合采用的方法 1.插值 拉格…

Windows+Ubuntu-18.04双系统装机指南

WindowsUbuntu-18.04双系统装机指南 在看了网上很多的指南和教程之后&#xff0c;外加踩了好几个坑&#xff0c;最后终于安装成功&#xff0c;这里做一个记录&#xff0c;免得以后又需要安装。 文章目录(0) 准备工具(1) 准备分区(2) 制作启动U盘(3) 进入BIOS(4) 安装Ubuntu(5) …

规划模型的典型例题

规划模型的典型例题 文章目录(1) 平板装货问题(2) 选修课策略问题问题1问题2(3) 最优组队问题(1) 平板装货问题 有七种规格的包装箱要装到两辆平板车上。包装箱的宽和高是一样的&#xff0c;但厚度t (厘米)和重量w (公斤)是不同的。下表给出了每种包装箱的厚度&#xff0c;重量…

传统多线程开发

Android开发高级进阶 第一章学习 传统多线程开发 概要&#xff1a; 之前的文章里写过了AsyncTask的一些坑&#xff0c;这次就不讲它了&#xff0c;使用传统的 Handler和Message来进行线程的使用&#xff0c;并且第一次添加了CallBack方式的接口进行回调操作 多线程 这概念并不需…

Linux 中 Vi 的使用

vi —— 终端中的编辑器 目标 vi 简介打开和新建文件三种工作模式常用命令分屏命令常用命令速查图 01. vi 简介 1.1 学习 vi 的目的 在工作中&#xff0c;要对 服务器 上的文件进行 简单 的修改&#xff0c;可以使用 ssh 远程登录到服务器上&#xff0c;并且使用 vi 进行快…

Jupyterlab 插件安装后侧边栏找不到的解决

Jupyterlab 插件重新安装后侧边栏找不到的解决 截止发帖时间&#xff0c;JupyterLab 有这样一个 bug&#xff0c;在官方文档找不到解决方案&#xff0c;我找了好几天找到了一个 issue 才解决&#xff1a; JupyterLab 安装 extension &#xff08;插件&#xff09;时&#xff0…