奇异值分解(SVD)的原理与应用
1. 奇异值分解基础与图像压缩
奇异值分解(SVD)是一种强大的矩阵分解技术,在许多领域都有广泛应用。下面我们先来看如何使用SVD进行图像压缩。
1.1 绘制奇异值和累积和
# Plot singular values and cumulative sum
subplot(1,2,1), semilogy(diag(S),'k')
subplot(1,2,2), plot(cumsum(diag(S))/sum(diag(S)),'k')
1.2 使用SVD压缩图像
以下是使用Python实现SVD进行图像压缩的代码:
# First, we load the image
from matplotlib.image import imread
import os
import numpy as np
import matplotlib.pyplot as plt
A = imread(os.path.join('..','DATA','dog.jpg'))
X = np.mean(A, -1); # Convert RGB to grayscale
img = plt.imshow(X)
# Take the SVD
U, S, VT = np.linalg.svd(X,full_matrices=False)
S = np.diag(S)
# Approximate matrix with truncated SVD for var
超级会员免费看
订阅专栏 解锁全文
1128

被折叠的 条评论
为什么被折叠?



