# 对图像进行标准化处理 means = np.mean(img, axis=0).reshape(1, -1) std = np.std(img, axis=0).reshape(1, -1) img_std = (img - means) / std # 进行主成分分析 eigValue, eigVector = np.linalg.eig(np.cov(img_std)) w_args = np.flip(np.argsort(eigValue)) eigVector = eigVector[:, w_args] eigValue = eigValue[w_args] # 按照指定的维度进行降维处理 k = int((img[0, :]).size / 4) C = np.matmul(img_std, eigVector) img_new = np.matmul(C[:, :k], eigVector.T[:k, :]) img_new = img_new * std + means im = Image.fromarray(img_new) im = im.convert('L') im.show() im.save(r'E:\资料\课程\\biu\大数据分析\实验\实验5\test-new0.25.jpg')
时间: 2024-04-13 11:26:10 浏览: 131
这段代码是对图像进行标准化处理、主成分分析和降维操作,并保存为新的图像。首先,通过计算图像的均值和标准差,对图像进行标准化处理。然后,使用主成分分析(PCA)方法计算图像的协方差矩阵,并得到特征值和特征向量。接下来,将特征值按降序排序,并将特征向量按相应顺序重新排列。根据指定的维度k,将标准化后的图像矩阵与特征向量相乘,得到降维后的图像矩阵。最后,将降维后的图像矩阵乘以标准差并加上均值,得到恢复后的图像。该图像会以灰度图像的形式进行展示,并保存到指定路径中。
阅读全文