使用 ENVI Classic 计算 landsat 7 ETM+ 图像ROI的星上反射率

 

 

 

使用 ENVI Classic 计算 landsat 7 ETM+ 图像ROI的星上反射率

 

 

    在 USGS GloVis 网站上下载的 landsat 7 ETM+ 遥感影像是图像的DN值,在计算NDVI等指数之前需要将DN值转化为相应的反射率。

 

一、所需材料

  • NIVI Classic 版本:5.3 (32-bit)
  • IDL 版本:8.5 (32-bit)
  • 卫星遥感影像:landsat 7 ETM+ (编号:LE07_L1TP_122044_20020107_20170201_01_T1,珠江入海口地区)

二、操作步骤

 

    1. 运行 NIVI Classic,点击“File”菜单中的“Open Image File”选项,找到遥感图像所在目录,选择并打开卫星图像文件夹中的MTL文件,即名为“LE07_L1TP_122044_20020107_20170201_01_T1_MTL.txt”的文本文件。MTL文件存储了遥感图像的元数据(Matadata)信息。此时图像所有波段都已加载进“Band List”。

 

使用 ENVI Classic 计算 landsat 7 ETM+ 图像ROI的星上反射率_第1张图片

 

    2. 点击图中“RGB Color”选项,依次点击三个波段可以进行RGB真、假彩色合成。

 

   3. 依次点击 Band 3、Band 2、Band 1,Load Band,得到合成的真彩色遥感影像。三个新窗口如下图所示,分别为Image(最上)、Scroll(左下)、Zoom(右下)。

 

 

 

使用 ENVI Classic 计算 landsat 7 ETM+ 图像ROI的星上反射率_第2张图片

 

    4. 点击Image图像上的“Tools”菜单栏,在下拉菜单“Region Of Interest”中选择“ROI tool“,便可以通过ROI Tool创建多个region,选择合适的Window界面选项画图。在ROI_Type可以选择不同的形状。这里使用矩形工具,选择的区域如下:

 

 

使用 ENVI Classic 计算 landsat 7 ETM+ 图像ROI的星上反射率_第3张图片        使用 ENVI Classic 计算 landsat 7 ETM+ 图像ROI的星上反射率_第4张图片

 

    5. 在 ROI Tool 的”File“菜单中点击”save“保存当前的ROI文件(”PearlRiver.roi“)。

 

    6. 在 ROI Tool 的”File“菜单中点击”Subset Data via ROIs“,导出提取的文件(”PearRiver“)。

 

 

    7. 为了使用IDL语言的”read_tiff“命令,需要将提取的”PearRiver“转化为TIFF格式。在ENVI Classic主菜单中 save file as ”TIFF/GeoTIFF“,命名为”PearlRiver.tif“。

 

    8. 编程计算 TOA Reflectance,IDL代码如下:

 

pro CalcRefl
  ;参数从MTL文件中获得
  REFLECTANCE_MULT_BAND_1 = 1.1619E-03
  REFLECTANCE_MULT_BAND_2 = 1.3074E-03
  REFLECTANCE_MULT_BAND_3 = 1.2383E-03
  REFLECTANCE_MULT_BAND_4 = 1.8146E-03
  REFLECTANCE_MULT_BAND_5 = 1.7302E-03
  REFLECTANCE_MULT_BAND_7 = 1.6390E-03
  REFLECTANCE_MULT_BAND_8 = 2.2468E-03
  REFLECTANCE_ADD_BAND_1 = -0.010412
  REFLECTANCE_ADD_BAND_2 = -0.011782
  REFLECTANCE_ADD_BAND_3 = -0.011198
  REFLECTANCE_ADD_BAND_4 = -0.016280
  REFLECTANCE_ADD_BAND_5 = -0.015438
  REFLECTANCE_ADD_BAND_7 = -0.014707
  REFLECTANCE_ADD_BAND_8 = -0.013071
  
  filename = 'C:\My_File\PearlRiver.tif'
  img = read_tiff(filename, geotiff = tag)
  
  idx = where(img ne 0)
  img_nonzero = img[idx]
  help,img
  min_DN = min(img_nonzero)
  max_DN = max(img_nonzero)
  print," min nonzero value in img: ", min_DN
  print," max nonzero value in img: ", max_DN
  
  img_new = img*1.0
  img_new[0,*,*] = img_new[0,*,*] * REFLECTANCE_MULT_BAND_1 + REFLECTANCE_ADD_BAND_1
  img_new[1,*,*] = img_new[1,*,*] * REFLECTANCE_MULT_BAND_2 + REFLECTANCE_ADD_BAND_2
  img_new[2,*,*] = img_new[2,*,*] * REFLECTANCE_MULT_BAND_3 + REFLECTANCE_ADD_BAND_3
  img_new[3,*,*] = img_new[3,*,*] * REFLECTANCE_MULT_BAND_4 + REFLECTANCE_ADD_BAND_4
  img_new[4,*,*] = img_new[4,*,*] * REFLECTANCE_MULT_BAND_5 + REFLECTANCE_ADD_BAND_5
  img_new[5,*,*] = img_new[5,*,*] * REFLECTANCE_MULT_BAND_7 + REFLECTANCE_ADD_BAND_7
  
  idx_new = where(img_new ne 0)
  img_new_nonzero = img_new[idx_new]
  help,img_new
  min_DN_new = min(img_new_nonzero)
  max_DN_new = max(img_new_nonzero)
  print," min nonzero value in img_new: ", min_DN_new
  print," max nonzero value in img_new: ", max_DN_new
  
  write_path = 'C:\My_File\PR_Refl.tif'
  write_tiff, write_path, img_new, geotiff = tag, /float
  
  end

    9. 生成的“PR_Refl.tif”即为 ROI 的星上反射率图像。

你可能感兴趣的:(IDL语言,ENVI,卫星遥感,IDL,ENVI)