1. 平场域定标(Flat Field Calibration)

Flat Field定标工具通过选择图像中一块具有高反射率、光谱变化平坦的区域,利用这个区域的平均光谱值来模拟飞行时的大气条件下的太阳光谱。将每个像元的DN值除以选择区域的平均光谱值得到相对反射率,以此来消除大气的影响。

在使用这个工具前,需要利用ENVI提供的感兴趣区绘制工具(ROI Tool)在被定标图像上选择感兴趣区作为平场域(Flat Field),感兴趣区可选择沙漠、大块水泥地、沙地等区域。操作过程如下:

(1) 在主菜单中,选择Basic Tools->Preprocessing-> Calibration Utilities-> Flat FieldCalibration Input File对话框中,选择输入文件,单击“OK”。

(2) 在打开的Flat Field Calibration Parameters面板中(图13.4),在标有“Select ROI for Calibration”一栏中,选择感兴趣区(只能选择一个),作为平场域定标的平均波谱区。

(3) 选择输出路径及文件名,单击“OK”执行定标处理。

图13.4 Flat Field Calibration Parameters面板

2. 对数残差(Log Residuals)

对数残差定标工具将数据除以波段几何均值,后再除以像元几何均值,可以消除光照、大气传输、仪器系统误差、地形影响和星体反照率对数据辐射的影响。定标结果的值在1附近。操作过程如下:

(1) 在主菜单中,选择Basic Tools->Preprocessing->Calibration Utilities->Log Residuals,在Log Residuals Calibration Input File对话框中,选择输入文件,单击“OK”。

(2) 在打开的Log Residuals Calibration ParametersOK执行定标处理。

3. 内部平均(IAR)反射率定标

IAR (Internal Average Relative) Reflectance定标工具假定整幅图像的平均光谱基本代表了大气影响下的太阳光谱信息。把图像DN值与整幅图像的平均辐射光谱值相除,得到的结果为相对反射率。该工具特别适用于没有植被的干旱区域。操作过程如下:

(1) 在主菜单中,选择Basic Tools->Preprocessing->Calibration Utilities-> IAR Reflectance。在打开的Calibration Input File对话框中,选择输入文件,单击“OK”。

(2) 在打开的IARR Calibration Parameters面板中,选择输出到“File”或“Memory”。点击“OK”执行定标处理。

4. 经验线性定标(Empirical Line Calibration)

Empirical Line 定标方法是假设图像DN值与反射率之间存在线性关系:

反射率= 增益 * DN值+ 偏移

利用两个已知点的地面反射光谱值,再计算图像上对应像元点的平均DN值,然后利用线性回归求出增益和偏移值,建立DN值与反射率之间的相互关系式,进行反射率的定标。消除了太阳辐亮度和大气程辐射。

ENVI的Empirical Line定标工具要求至少需要一个已知区域的地面反射光谱值(Field Spectra)作为参照波谱,以及图像上对应像元点的波谱曲线(Data Spectra)。它们可以来自波谱剖面或波谱曲线、波谱库、感兴趣区、统计文件和ASCII文件。输入的波谱将自动被重采样,以与选择的数据波长相匹配。也可以用已经存在的系数对数据集进行定标。

1) 计算系数并定标(Compute Factors and Calibrate)

Empirical Line 定标工具时,一般可以在图像上选择一个暗区和一个亮区作为已知区域(假定这些区域中的参照波谱是可以获得的)。使用越多的已知波谱也可以提高定标精度,至少需要一组已知区域的波谱。操作过程如下:

(1) 选择Basic Tools->Preprocessing-> Calibration Utilities-> Empirical Line-> Compute Factors and Calibrate。在打开的Empirical Line Input File对话框中,选择输入文件。单击“OK”,

(2) 在打开的Empirical Line Spectra面板中(图13.5),需要选择地面反射光谱值(Field Spectra)以及图像上对应像元点的波谱值(Data Spectra)。

图13.5 Empirical Line Spectra面板

l 选择数据(图像)波谱

在Empirical Line Spectra对话框中,单击“Import Spectra”按钮,打开Data Spectral Collection对话框(图13.6)。

在Data Spectral Collection对话框中,选择Import->from ROI/EVF from input file,选择定义好的感兴趣区文件,点击“Apply”,波谱名被输入到Empirical Line Spectra面板中。点击“Cancel”,关闭Data Spectra Collection对话框。

图13.6 Data Spectral Collection对话框

l 选择参照波谱

在Empirical Line Spectra对话框中,单击“Import Spectra”按钮,打开Feild Spectra Collection对话框,这个对话框与Data Spectra Collection对话框类似。

在Feild Spectra Collection对话框中,选择Import->from ASD binary file,选择对应图像波谱区域用ASD波谱仪测量波谱文件。点击“Apply”,波谱名被输入到Empirical Line Spectra面板中。点击“Cancel”,关闭Feild Spectra Collection对话框。

(3) 回到Empirical Line Spectra面板中,在顶部的列表内点击波谱名选择数据波谱。在底部的列表中,点击相应的参照波谱名,单击击“Enter Pair”按钮使两个波谱相关联,相关联的波谱将被列在“Selected Pairs”文本框中。(说明:如果错误的选择了关联波谱,在“Selected Pairs”文本框中单击关联波谱可移除)

(4) 重复(3)(4)步骤可选择关联波谱。

(5) 单击击“OK”。打开Empirical Line Calibration Parameters对话框。

(6) 在Empirical Line Calibration Parameters对话框中,选择输出定标结果文件路径及文件名,将定标系数保存在ASCII文件中,在“Output Calibration Filename”文本框中键入第二个文件名,定标系数文件的默认扩展名是 .cff。

(7) 单击OK执行定标过程。

2) 使用现有系数定标(Calibrating Using Existing Factors)

Calibrate Using Existing Factors工具可以使用另一个定标过程中存储的纠正系数来运行经验行定标功能。

(1) 在主菜单中,选择 Basic Tools- >Preprocessing-> Calibration Utilities-> Empirical Line->Calibrate Using Existing Factors。选择输入文件,点击“OK”。

(2) 在打开的Enter Calibration Factors Filename对话框中,选择一个之前定标过程中创建的定标系数文件(.cff)。点击“OK”。

在打开的Empirical Line Calibration Parameters对话框中,选择输出路径及文件名。单击“OK”执行定标过程。

摘自《ENVI遥感图像处理方法》科学出版社

利用IDL实现ENVI下计算地形起伏度

地形起伏度:是指在一个特定的区域内,最高点海拔高度与最低点海拔高度的差值。它是描述一个区域地形特征的一个宏观性的指标。

在很多具有栅格分析的软件中都没有提供计算地形起伏度的功能,虽然可以根据现有的工具进行组合计算,但是还是比较麻烦。ENVI/IDL的栅格运算功能强大,效率高。本文利用IDL制作了计算地形起伏度的程序,并且能集成在ENVI中使用。

注意事项:

将dixingqifudu.pro文件放到ENVI的安装目录\ProgramFiles\ITT\IDLxx\products\enviXX\save_add下,启动ENVI+IDL,出现在ENVI的topographic菜单下:(或者编译成sav文件,只打开ENVI即可。)

源码:

;;===界面居中的函数======================

PRO CENTERTLB, tlb, x, y, NoCenter=nocenter

COMPILE_OPT StrictArr

geom = WIDGET_INFO(tlb, /Geometry)

IF N_ELEMENTS(x) EQ 0 THEN xc = 0.5 ELSE xc = FLOAT(x[0])

IF N_ELEMENTS(y) EQ 0 THEN yc = 0.5 ELSE yc = 1.0 - FLOAT(y[0])

center = 1 - KEYWORD_SET(nocenter)

;

oMonInfo = OBJ_NEW('IDLsysMonitorInfo')

rects = oMonInfo -> GetRectangles(Exclude_Taskbar=exclude_Taskbar)

pmi = oMonInfo -> GetPrimaryMonitorIndex()

OBJ_DESTROY, oMonInfo

screenSize =rects[[2, 3], pmi]

; Get_Screen_Size()

IF screenSize[0] GT 2000 THEN screenSize[0] = screenSize[0]/2 ; Dual monitors.

xCenter = screenSize[0] * xc

yCenter = screenSize[1] * yc

xHalfSize = geom.Scr_XSize / 2 * center

yHalfSize = geom.Scr_YSize / 2 * center

XOffset = 0 > (xCenter - xHalfSize) < (screenSize[0] - geom.Scr_Xsize)

YOffset = 0 > (yCenter - yHalfSize) < (screenSize[1] - geom.Scr_Ysize)

WIDGET_CONTROL, tlb, XOffset=XOffset, YOffset=YOffset

END

;;;================================================

;自动添加envi菜单

PRO dixingqifudu_define_buttons, buttonInfo

ENVI_DEFINE_MENU_BUTTON, buttonInfo, VALUE = '地形起伏度计算', $

uValue = '', $

event_pro ='dixingqifudu', $

REF_VALUE = 'Topographic',position=2

end

pro qifudu_result, pp, flag, out_name=out_name ;pp是窗口大小,flag是存贮方式

compile_opt idl2

envi_batch_init

pp=pp;窗口大小

p1=(pp-1)/2;用于建立窗口大小

envi_select,fid=fid,pos=pos,dims=dims

if fid eq -1 then begin

envi_batch_exit

return

endif

ENVI_FILE_QUERY, fid, bnames=bnames

nl=dims[4]-dims[3]+1

ns=dims[2]-dims[1]+1

nb=size(pos)

nb=nb[1]

; print,nb

tfid=indgen(nb)

posss=intarr(nb);因为后面生成的都是单波段文件及r_fid,所以都是0表示第一个波段。

FOR g=0,nb-1 DO BEGIN

data1 = ENVI_GET_DATA(DIMS=dims, FID=fid , POS=pos[g])

inherit = envi_set_inheritance(fid, dims, pos[g], /full)

data2=data1

FOR i =p1,ns-p1-1 DO BEGIN

FOR j =p1, nl-p1-1 DO BEGIN

;获取一个pp*pp的窗口

t= data1[[i-p1]:[i+p1],[j-p1]:[j+p1]]

tmax=max(t,min=tmin)

data2[i,j]=tmax-tmin

ENDfor

ENDFOR

ENVI_WRITE_ENVI_FILE, data2,inherit=inherit ,r_fid=t,out_name=out_name+bnames[pos[g]] ;,/NO_OPEN

; ENVI_FILE_MNG, id=t, /REMOVE

tfid[g]=t ENDfor

if flag eq 1 then begin

envi_doit, 'cf_doit', fid=tfid, pos=posss, dims=dims, $

remove=0, out_name=out_name, r_fid=r_fid

endif else begin

envi_doit, 'cf_doit', fid=tfid, pos=posss, dims=dims, $

remove=0, /IN_MEMORY, r_fid=r_fid

endelse

end

;事件响应程序

pro dixingqifudu_event,event

widget_control,event.top,get_uvalue=pstate

if TAG_NAMES(event,/STRUCTURE_NAME) eq 'WIDGET_KILL_REQUEST' then begin WIDGET_CONTROL,event.top,/destroy

ptr_free,pstate

RETURN

endif

widget_control,event.id,get_uvalue=uval

case uval of

'list': begin

(*pstate).chuangkou=fix(event.str) print, fix(event.str) ; if event.index eq -1 then a=fix(event.str)

; help,fix(event.str)

end

'file_m':begin

data填补 envi no,ENVI正射校正、统计大气校正、地形起伏度与影像清晰度计算相关推荐

  1. ENVI(一)——图像正射

    ENVI正射 1.打开ENVI,File----open image file ,打开图像,选择tiff格式图像 2.选择工具栏MAP-----Orthorectification------Gene ...

  2. 应用RSD对高分6号(GF6)WFV进行一键正射校正和大气校正

    同其它一些高分辨率卫星数据一样,RSD对GF6 WFV也是一键完成正射和大气校正. 正射校正需要为RSD配置DEM数据,可以使用90m或者30m的缺省DEM,配置方法见RSD软件的安装说明或者去QQ群 ...

  3. 应用RSD对高分6号(GF6)MUX/PAN一键正射校正和大气校正

    同GF6 WFV一样,RSD对GF6 MUX也是一键完成正射和大气校正.配置正射校正的DEM以及大气校正的辅助数据与高分6号WFV一样.高分6号(GF6)MUX/PAN不是共享免费的,样例数据请自行准 ...

  4. 转载,envi对高光谱进行辐射定标和大气校正

    原文地址:http://blog.sina.com.cn/s/blog_764b1e9d0102v59e.html 目录 辐射定标和大气校正 概述 辐射定标 多光谱数据FLAASH大气校正 3.1 F ...

  5. RSD处理高分5号高光谱(GF5 AHSI)数据(一)——正射校正和大气校正

    RSD对高光谱数据处理增加了一种层类型,在原来的SWATH.GRID基础上增加了一种HYPER,HYPER大部分结构与GRID基本相同,主要区别是GRID处理数据通道上限是40个,HYPER增加到40 ...

  6. ENVI对GF-5高光谱数据进行FLAASH大气校正

    照博客:https://www.ixxin.cn/2019/05/10/gf5_ahsi_ac/ 1.辐射定标 ENVI添加中国卫星支持插件,打开GF-5高光谱.xml文件: Metadata中有Ga ...

  7. 辐射定标、辐射校正、大气校正、正射校正等相关概念

    作为初学者,容易将这几个概念搞混.为了较好地理解这几个概念,先介绍一下相关的术语 terminology. DN值(Digital Number ):遥感影像像元亮度值,记录地物的灰度值.无单位,是一 ...

  8. 几何校正,正射校正,影像配准,辐射定标,辐射校正,大气校正,地形校正概念详解

    几何校正,正射校正,影像配准,辐射定标,辐射校正,大气校正,地形校正概念详解 一.几何校正 1.概念 是指消除或改正遥感影像几何误差的过程: 是为了实现对数字化数据的坐标系转换和图纸变形误差的纠正(黄 ...

  9. 辐射定标与大气校正(ENVI和6s模型对比)

    辐射定标与大气校正 实验目的与任务 实验目的 遥感图像通常是用无量纲的数字量化值(DN) 记录信息的,进行遥感定量化分析时,常用到辐射亮度值.反射率值和温度值等物理量.通过辐射定标可以实现DN值与这此 ...

最新文章

  1. 路由跟踪工具0trace
  2. CTFshow 反序列化 web255
  3. 2012年初的10个绝对让你惊喜的jQuery插件
  4. no.5_得到4升的水
  5. Silverlight 5 Beta新特性博文索引
  6. Eclipse用法和技巧六:自动生成get和set方法1
  7. Spring Boot 集成 WebSocket,轻松实现信息推送!
  8. linux: tee日志记入文件
  9. 在CentOS6.7搭建Qt5.6.2环境
  10. ctfshow-菜狗杯-WEB-wp
  11. 开源共轴双桨无人机 Tdrone 软硬件全部在 GitHub 开源
  12. Shifting More Attention to Video Salient Object Detection (CVPR 2019)
  13. 小甲鱼python入门_python基础笔记(非系统/自用/参考小甲鱼的零基础入门学习python)上...
  14. 服务器500系列错误解释
  15. 六月:手动学数据分析(task02)
  16. Pywinauto基础03--控件操作
  17. Java转义字符(转载)
  18. cpu上干硅脂怎么清理_安装CPU或者清理灰尘时CPU导热硅脂的使用方法及注意事项...
  19. 5月15日,心情惆怅
  20. Visual Studio Community 2019 问题

热门文章

  1. android 系统应用流量,android获取手机流量使用情况
  2. powerworld电力系统仿真,潮流计算,短路计算,电力系统分析。潮流计算对比,牛拉法,PQ分解法对比
  3. Matlab的基本语法和常用函数总结
  4. MapReduce学习笔记(1)
  5. JS动态添加div,然后在div中添加元素
  6. 根据WADL生成REST风格WebService的客户端代码
  7. [小工具] chrome上日语翻译工具
  8. knuth《mathematical analysis of algorithms》学习笔记
  9. FFmpeg花屏解决(修改源码,丢弃不完整帧)
  10. mysql 批量更新和单条更新(循环)