整理低秩的理解

news/2024/7/21 3:51:50 标签: 图像处理

秩的定义是矩阵中非零特征值的个数。比如一个NxN的矩阵,它的秩为r,r远小于N,我们可以说它是低秩的。

但还有另一种情况:这个矩阵的的秩接近N,但它的特征值大多数接近于0,只有少数几个特征值特别大,这种也可以认为是低秩的。如果我们将低秩图像的特征值从大到小排列,会得到这样一条曲线:
在这里插入图片描述
(纵坐标为特征值的大小,横坐标为不同的特征值下标)

可以从特征向量的角度来理解低秩的含义:矩阵只需要极少数的几个特征向量就能近似还原出原先矩阵中的每个向量。

在用这些特征向量还原矩阵的过程中,这些特征向量起到的作用是有差异的,特征值越大的特征向量,它和矩阵中的大部分向量越相似,所以只需要用前几个重要特征向量进行线性组合,就能近似的还原矩阵中的大多数向量

如果我们将低秩矩阵X分解为A*Z,可以将A看作是特征向量,或者说是基向量组(基底),Z为图像的系数表示矩阵。那么可以取前r个特征向量 A ′ = A ∈ R N × r A'=A \in R^{N \times r} A=ARN×r和对应的系数矩阵 Z ′ = Z ∈ R r × N Z'=Z \in R^{r \times N} Z=ZRr×N相乘,得到 X ′ = A ′ ∗ Z ′ X'=A'*Z' X=AZ的和原矩阵X是很接近的。

下面选用了一张有较多重复图案的图像,这类图像由于图像细节的相似性往往具有低秩特点,在RGB三通道上进行依次选用前k个特征向量来还原原图:
在这里插入图片描述
可以看到,仅使用一个特征向量便能大致刻画图像的图案特征,当选用前20个特征向量时,基本能很好的还原出原始图像的细节了。

在刚接触PCA时,常将其用于数据压缩,比如一个多分类问题,每条样本包含大量的属性,而有些属性并不关键,去掉这些属性对分类影响不大,于是通过PCA将原先由N个属性表示的样本压缩为r(r<<N)个属性表示,使数据的处理更加方便。在这个过程中,剩下的信息也是用少数r个特征向量来表示的,它们对应的特征值都较大。

我们会用能量来表示特征向量的作用,它计算很简单,第i个特征向量的能量为:该特征值 / 所有特征值之和。对于低秩矩阵来说,用能量占90%以上的前几个特征就能表示出原矩阵了,恢复的误差很小。即使是一般的图像,也常常会用类似的方式进行压缩,在图像的传输中,为节省流量往往进行压缩,我们有时候会看到一些高糊的表情包,可能就是不断压缩的结果(趣称为“电子包浆”)。


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

相关文章

使用 React Flow 构建一个思维导图应用

思维导图是围绕共同主题或问题将思想、概念、信息或任务分组的视觉表示。思维导图应用是一种软件应用&#xff0c;允许您创建、可视化和组织您的思想、想法和信息作为思维导图。本文将向您展示如何实现自己的思维导图应用程序。 在我们开始之前&#xff0c;我想向您展示一下我们…

开发知识点-uniapp微信小程序-开发指南

uniapp uni.chooseLocationgetCurrentPages美团外卖微信小程序开发uniapp-美团外卖微信小程序开发P1 成果展示P2外卖小程序后端&#xff0c;学习给小程序写http接口P3 主界面配置P4 首页组件拆分P13 外卖列表布局筛选组件商家 布局测试数据创建样式 请求商家外卖数据封装请求并…

JAVA for 循环训练 Pattern

import java.util.Scanner;public class Pattern {public static void main(String[] args) {int[] arr {0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0};Scanner in new Scanner(System.in);System.out.print("请输入n:");int n in.nextInt();in.close();for …

PVE Win平台虚拟机下如何安装恢复自定义备份Win系统镜像ISO文件(已成功实现)

环境: Virtual Environment 7.3-3 Win s2019 UltraISO9.7 USM6.0 NTLite_v2.1.1.7917 问题描述: PVE Win平台虚拟机下如何安装恢复自定义备份Win系统镜像ISO文件 本次目标 主要是对虚拟机里面Win系统备份做成可安装ISO文件恢复至别的虚拟机或者实体机上 解决方案: …

MIUI解锁BL

解锁BL锁会清空手机数据!!! 解锁工具下载: http://www.miui.com/unlock/download.html 解压运行.exe文件 注意点: 手机绑定的账号与解锁工具登录的账号应是同一个账号 在Fastboot界面, 一直无法显示连接手机 USB3.0接口的问题, 巨坑!!! 解决方案参考下面第二篇文章 参考文…

Java中对象引用是什么意思

在Java中&#xff0c;对象的引用指的是一个变量&#xff0c;该变量存储了对象在内存中的地址。Java是一门面向对象的编程语言&#xff0c;所有的数据都被视为对象。在Java中&#xff0c;变量可以是基本数据类型&#xff0c;也可以是引用类型。 当我们创建一个对象时&#xff0…

01_面向对象高级_static

Static static 的中文意思是"静态"&#xff0c;它可以修饰成员变量、成员方法 1. Static 修饰成员变量 static 修饰的成员变量&#xff0c;也称之为"类变量"类变量它是属于类的&#xff0c;与类一起加载&#xff0c;在内存中只有一份&#xff0c;会被类…

使用Flink处理Kafka中的数据_题库子任务_Java语言实现

2024年职业院校技术大赛-高职大数据应用开发赛项专题。 使用Flink处理Kafka中的数据_题库子任务1、2、3_Java语言实现使用Flink处理Kafka中的数据_题库子任务4、5、6_Java语言实现使用Flink处理Kafka中的数据_题库子任务7、8、9_Java语言实现