1、前言
传感器配置允许用户修改ALG Conf文件夹中Sensorconf.xml文件中存储的一组预定义传感器的光谱配置(即光谱范围、分辨率和光谱响应)。所选择的传感器可以是多光谱或高光谱。它们之间的区别在于:
(1)多光谱传感器(例如,OLCI/Stinel-3)具有预定义的光谱通道及其相应的中心波长、光谱分辨率(FWHM)和光谱响应(ISRF)。
(2)高光谱传感器,具有由其最小/最大波长、FWHM、光谱采样间隔(SSI)和ISRF定义的预定义光谱带。
高光谱光谱响应函数模拟:
https://blog.csdn.net/qq_41358707/article/details/134781987?spm=1001.2014.3001.5501
2、添加传感器信息
以添加GF5B高光谱传感器为例。由于在ALG界面中添加波段过程过于繁琐,因此,先生成符合格式的信息,再添加到Sensorconf.xml即可。
(1)ALG预配置
设置界面选择添加新传感器,设置为多光谱,定义Sensor name为“GF5BTest”,(以下信息随意设置一下,生成该波段模型根节点),Apply
(2)查看 Sensorconf.xml信息
新添加的传感器一般在文件最后面,可以看到添加了对应的节点。
查看其他高光谱配置,如MSI_S2A,按照此格式进行对应编写
(3)Matlab编写Txt
程序中输入xlsx文件格式:表格1中存储各波段的波长信息,以列为单位(下左图);表格二中存储各波段光谱响应函数(下右图)(以上链接文件输出)
clc;
clear;
%% 向Sensor配置文件中添加GF5B传感器,1、2、3、4根据传感器设置自定义
%% 1、存储高光谱波段及光谱响应的表格
SensorFilename='C:\Users\Administrator\Desktop\Test_GF5B_ResponseFunc_1nm.xlsx';
OutFile='C:\Users\Administrator\Desktop\TestSensorConf.txt'; %2、输出txt路径
[wl_dataset]=xlsread(SensorFilename,1); %存储波段信息
nsize=size(wl_dataset);
numBands=nsize(2);
[srfvalue_dataset]=xlsread(SensorFilename,2); %存储光谱响应信息
fid=fopen(OutFile,'w');
for i=1:numBands
isrf_wvl=wl_dataset(:,i); %单波段波长
isrf_value=srfvalue_dataset(:,i); %单波段光谱响应函数
% 按照Conf.xml格式输出文本
fprintf(fid,' <band fwhm="4.33"'); %3、半高宽
fprintf(fid, '\n');
fprintf(fid,' isrf_value="');
fprintf(fid, '%f\t', isrf_value);
fprintf(fid,'"');
fprintf(fid, '\n');
fprintf(fid,' isrf_wvl="');
fprintf(fid, '%f\t', isrf_wvl);
fprintf(fid,'"');
fprintf(fid, '\n');
fprintf(fid,[' ','max_wvl="',num2str(isrf_wvl(end)),'"']);
fprintf(fid, '\n');
fprintf(fid,[' ','min_wvl="',num2str(isrf_wvl(1)),'"']);
fprintf(fid, '\n');
fprintf(fid,' ssi="1"/>'); %4、光谱分辨率,nm
fprintf(fid, '\n');
end
fclose(fid);
输出文件如下:
(4)添加配置
将以上信息替换到Sensorconf.xml中②,添加后xml文件如下。完整的波段信息由以下三部分组成。
(5)ALG界面配置更新
查看传感器设置,该传感器配置已更新。
Matlab只用于功能实现,待优化。