高光譜數據預處理算法——多元散射校正(MSC)

多元散射校正(MSC)是高光譜數據預處理常用的算法之一,MSC可以有效的消除由於散射水平不同帶來的光譜差異,從而增強光譜與數據之間的相關性。該方法通過理想光譜修正光譜數據的基線平移偏移現象,而實際中,我們無法獲取真正的理想光譜數據,因此我們常常假設所有光譜數據的平均值作爲”理想光譜”。

MSC具體實現方法如下:

①求得所有光譜數據的平均值作爲“理想光譜“;

②將每個樣本的光譜與平均光譜進行一元線性迴歸,求解最小二乘問題得到每個樣本的基線平移量和偏移量;

③對每個樣本的光譜進行校正:減去求得的基線平移量後除以偏移量,得到校正後的光譜;

下面給出MSC算法的MATLAB代碼:

function x_msc=my_msc(x,x_sta)

% This function can perform multivariate scattering correction on the data
% x is the input data,x_sta is standard data,x_msc is output data
% Auther:等等登登-Ande
% Email:[email protected]

[m,n]=size(x);
A=[ones(1,n)' x_sta'];
%對A矩陣SVD分解
[u s v]=svd(A);
%SVD求解最小二乘問題
A_plus=v*pinv(s)*u';
C=A_plus*x';%C即爲所要求解的係數矩陣
%對原始光譜進行處理,減去偏移量與係數
P=C(1,:)
bais=P'*ones(1,n);
x_msc1=x-bais;
P=C(2,:);
coeff=P'*ones(1,n);
x_msc=x_msc1./coeff;

MSC效果圖如下: 

原始數據
原始數據
校正數據

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章