ASTER连续光谱向传感器通道光谱转换

15 篇文章 9 订阅
本文介绍了ASTER光谱库,包含2300多种地物光谱,覆盖矿物质、岩石、土壤等多种自然及人造地物。文章详细阐述了从连续反射率向宽通道反射率/发射率转换的方法,提供了传感器通道反射率和发射率转换的公式,并分享了IDL语言实现的代码。
摘要由CSDN通过智能技术生成
ASTER光谱数据介绍

     ASTER光谱库包含三个子库,分别是 Johns Hopkins University (JHU) 光谱库、Jet Propulsion Laboratory (JPL) 光谱库和 United States Geological Survey (USGS) 光谱库。ASTER 光谱库包含多达 2300 余种典型地物的光谱,包括矿物质、岩石、土壤、植被、水体、冰雪等各类自然地物以及人造地物等类别,其波谱范围从 0.4 μm 到 15.4 μm。

问题描述

     但由于ASTER测量的光谱是400到15400nm波段范围的地表连续反射,而我们的目的是获得宽波段传感器通道的反射率或者发射率,因此需要进行由连续反射率向宽通道反射率/发射率的转换。
     传感器通道反射率转换公式为
在这里插入图片描述
其中ρ,S分别代表光谱反射率和通道光谱响应函数,λ1,2则是传感器通道起止波长。
因为 Incident Energy = Emitted Energy + Transmitted Energy + Reflected Energy。但一般地物的透射率为0。
所以100% = Emissivity + Reflectivity,传感器通道发射率转换公式如下。
     传感器通道发射率转换公式为
在这里插入图片描述
ps:关于通道发射率的转换,查阅了不少论文都没有贴出明确的公式,理论推导上来说公式应该是这样的。但最后计算结果有点不符合实际,欢迎有了解的老师们留言指教。

2020-5-27 更新: 在文献中找到了相关公式,验证了上面的通道比辐射率推导没错
在这里插入图片描述
ε i 为通道 i 的加权平均比辐射率, ε λ 为 地物光谱比辐射率,fi ( λ )为通道 i 的光谱响应函数

数据格式

ASTER光谱数据,以一个海水的光谱为例,植被,土壤,水,人造物总共2300+条。

图片替换文本

MERSI2 Band25光谱响应,以波数(cm-1)为单位,所以还要做一个向波长(nm)单位的转换处理。
单位的转换关系在之前的博客中讲过。

传感器通道波长单位换算
图片替换文本

IDL实现
pro aster_intergral
  compile_opt idl2
  
  fn = dialog_pickfile(title = '选择光响应函数文件', filter = ['*.txt'])
  openr, lun, fn, /get_lun
  
  ;逐行读取 读到Wavenumber的时候 新建数组 逐行读取响应函数值 
  str_line = ' '
  flag = 0 
  while flag eq 0 do begin
    readf, lun, str_line
    if strpos(str_line, 'Wavenumber') ne -1 then begin
      flag = 1
      i = 0
      sensor = fltarr(2,1000)
      temp = fltarr(2)      
      while eof(lun) ne 1 do begin
        readf, lun, temp
        sensor[*,i] = temp
        i = i + 1
      endwhile     
    endif
  endwhile  
  free_lun, lun
  
  ;10nm间隔
  sensor = sensor[*,0:i-1]
  sensor = transpose(sensor)
  sensor = reverse(sensor)
  sensor[*,0] = 10e6	 / sensor[*,0] 
  
  ;插值到1nm间隔
  start_wl = sensor[0,0]
  end_wl = sensor[-1,0]
  interpol_wl = [0:round(end_wl - start_wl):1] + start_wl
  
  wl = sensor[*,0]
  re = sensor[*,1]
  
  sensor_interpol_re = interpol(re, wl, interpol_wl)

  ;逐行读取ASTER光谱数据,读到‘Additional Information’新建数组
  fn = dialog_pickfile(title = '选择ASTER光谱数据', filter = ['*.txt'])
  
  openr, lun, fn, /get_lun
  
  str_line = ' '
  flag = 0
  while flag eq 0 do begin
    readf, lun, str_line
    if strpos(str_line, 'Additional Information') ne -1 then begin
      flag = 1
      i = 0
      aster = fltarr(2,5000)
      temp = fltarr(2)
      while eof(lun) ne 1 do begin
        readf, lun, temp
        aster[*,i] = temp
        i = i + 1
      endwhile
    endif
  endwhile 
  free_lun, lun
    
  aster = aster[*,0:i-1]
  aster = transpose(aster)
  aster = reverse(aster)
  aster[*,0] = aster[*,0] * 10^3
  aster[*,1] = 100 - aster[*,1] 

  ;插值到和传感器同样波段范围的1nm间隔 
  wl = aster[*,0]
  re = aster[*,1]
  
  aster_interpol_re = interpol(re, wl, interpol_wl)
    
  ;计算积分
  up = int_tabulated(interpol_wl, sensor_interpol_re * aster_interpol_re)
  down = int_tabulated(interpol_wl, aster_interpol_re)
  fashelv = up / down
  print,up,down,fashelv
  
end

转换结果:

      984.210      993.957     0.990194
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值