高光谱数据预处理算法——多元散射校正(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效果图如下: 

原始数据
原始数据
校正数据

 

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