import matplotlib.image as mpimg # mpimg 用于读取图片mapping
import numpy as np
import matplotlib.pyplot as plt
img = mpimg.imread("D:/swift.jpg")
img = img[:, :, :]/255
print("原始图像尺寸:", img.shape)
# 灰度化:灰度化是一个加权平均的过程!
a1, a2, a3 = 0.2989, 0.5870, 0.1140
img_gray = img[:,:,0]*a1+img[:,:,1]*a2+img[:,:,2]*a3
print("灰度化后尺寸:", img_gray.shape)
# 奇异值分解,用于压缩图像
M, Q, N = np.linalg.svd(img_gray, full_matrices=True)
Q=np.diag(Q) #对角化处理
re_img=M[:, 0:50] @ Q[0:50, 0:50] @ N[0:50, :] # 恢复图像
plt.imshow(np.real(re_img), cmap=plt.get_cmap("gray"))
plt.show()
原始图像:
压缩后图像: