1.程序功能:
用ENVI打开TM数据,将数据传到IDL工作空间,在IDL环境下进行大气校正,并将结果回传给ENVI。
2.程序源代码:
Function AtmoCorr32,test
;**************** 读入数据 *********************;
size_image=size(test)
samples=size_image[1];TM列数
lines=size_image[2];TM行数
bands=size_image[3];TM波段数
;读取 TM 的 Gain 和 Offset 值到 data 中
fn_calib='辐射定标参数txt文件存储路径';
openr,lun,fn_calib,/get_lun
data=fltarr(2,6)
data1=fltarr(3,6)
readf,lun,data0
readf,lun,data1
free_lun,lun
gain=data0[0,0:5];增益值
offset=data0[1,0:5];偏移值
;用定标系数将原始DN值转换为大气层顶太阳辐亮度L
L=fltarr(size_image[1],size_image[2],size_image[3]);定义辐亮度
for i=0,bands-1 do begin
L[*, *, i]=gain[i]*test[*,*,i]+offset[i];
Endfor
;输出辐射定标后文件
envi_write_envi_file,out_name='大气校正参数txt文件路径',L
;读取大气校正参数
a=data1[0,*]
b=data1[1,*]
c=data1[2,*]
;设置一个数组准备存放大气校正的结果
E=fltarr(size_image[1],size_image[2],size_image[3])
;大气校正
for i=0,bands-1 do begin
y=a[i]*L[*,*,i]-offset[i];
E[*,*,i]=y/(1+c[i]*y);
Endfor
;输出大气校正文件
envi_write_envi_file,out_name='输出大气校正结果txt文件路径',E
return,E
end
**注意:**首先要打开 ENVI+IDL联合程序, 然后用ENVI加载影像,并将需要使用的影像导入到 IDL 中,最后在IDL命令窗口中输入函数:如 E=AtmoCorr32(test)
3.结果
来源引用:地理遥感生态网平台