Python实现Global Reed-Xiaoli(GRX)高光谱异常检测算法
生活随笔
收集整理的這篇文章主要介紹了
Python实现Global Reed-Xiaoli(GRX)高光谱异常检测算法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import scipy.io as scio
import numpy as np
import matplotlib.pyplot as plt
import timedef GRX(mat):rows, cols, bands = mat.shape # XX為圖像的長度 YY為圖像的高度 band為圖像的波段數X = np.reshape(mat, (rows * cols, bands))cov_X = np.cov(X.T) # 得到矩陣r的協方差矩陣K,K為band乘band的矩陣X_mean = np.expand_dims(np.mean(X.T, axis=1), 0).T # 求r矩陣即每一個波段所有像素的均值,u為均值列向量Y = X.T - np.repeat(X_mean, rows * cols, axis=1)result = np.zeros((1, rows * cols))cov_inv = np.linalg.pinv(cov_X)for i in range(rows * cols):result[0][i] = np.dot(np.dot(Y[:, i].T, cov_inv), Y[:, i])result = np.reshape(result, (rows, cols))return resultif __name__ == '__main__':t1 = time.time()dataFile = 'Airport.mat'data = scio.loadmat(dataFile)result = GRX(data['data'])t2 = time.time()print('time:', round(t2 - t1, 3), 's')plt.imshow(result)plt.show()
總結
以上是生活随笔為你收集整理的Python实现Global Reed-Xiaoli(GRX)高光谱异常检测算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows7梦幻桌面
- 下一篇: android 刷路由器,荣耀立方WS8