HSI异常检测算法RX—Matlab code

高光谱异常检测算法系列

RX算法

  介绍:RX算法作为HSI异常检测的基准算法,常被用于作为标准去衡量所提算法的检测精度;根据作用范围不同,其主要分为Global RX和Local RX两个版本。
RX主要表达式如下所示:
R R X ( x i ) = ( x i − μ ) T C − 1 ( x i − μ ) R_{RX}(x_i)=(x_i-μ)^TC^{-1}(x_i-μ) RRX(xi)=(xiμ)TC1(xiμ)
  其中,μC分别代表着HSI的均值向量和协方差矩阵。

Matlab 代码部分

GRX code
function d_GRX_show = GRXfunc(data,groundtruth)
%% 数据大小信息赋值
[rows,cols,bands]=size(data);
X=reshape(data,rows*cols,bands);
%% RX算法部分
X_mean = mean(X);%计算每个波段的均值;
X = X - repmat(X_mean,rows*cols,1);
X=X';
M=rows*cols;
Sigma = (X * X')/(M);%计算矩阵的协方差
Sigma_inv = inv(Sigma); 
for m = 1:M
 D(m) = X(:, m)' * Sigma_inv * X(:, m);  %RX表达式计算式
end
d_GRX_show=reshape(D,rows,cols);%得到异常图
%% 结果数据收集部分
d_GRX_show = (d_GRX_show-min(d_GRX_show(:)))/(max(d_GRX_show(:))-min(d_GRX_show(:)));%归一化处理
%% 显示结果
figure;
imshow(d_GRX_show);
colormap(jet); 
[TPR,FPR,~] = roc(reshape(groundtruth,M,1)',reshape(d_GRX_show,M,1)');%计算ROC;
AUC = polyarea([0;sort(FPR','ascend');1;1],[0;sort(TPR','ascend');1;0]);%计算AUC;
figure;
plot(FPR,TPR,'-','LineWidth',1.5);
ylim([0,1]);
xlim([0,0.1]);
ylabel("Probability of detection");
xlabel("False alarm rate");
%%注意:计算ROC需要使用Matlab中的Deep Learning Toolbox插件
%%安装过程:主页——附加功能——搜索Deep Learning Toolbox——安装
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>