1. SNOMAP算法简介
SNOMAP算法是Hall等提出的基于Landsat 5 TM数据的积雪识别算法。其物理基础体现在:① 积雪在可见光波段有较高的反射率,在短波红外波段有较强的吸收特征;② 大部分云在可见光波段有较高的反射率,在短波红外波段反射率依然很高。利用该特点,采用NDSI阈值提取方法可以很好的识别积雪。基于Landsat 5 TM数据的NDSI(Normalized Difference Snow Index)计算方法为:
其中,
但考虑到植被覆盖度对积雪识别的影响,SNOAMAP算法中还充分考虑了植被的影响。当0.1≤NDSI≤0.4,但NDVI≥0.38,同时b4 ≥ 0.11时,该像元同时被识别为积雪。其中基于基于Landsat 5 TM数据的NDVI(Normalized Difference Vegetation Index)计算方法为:
其中,
2. SNOMAP算法在ENVI中的实现
SNOMAP算法在ENVI中利用决策树实现,决策树是基于遥感图像数据及其他空间数据,通过专家经验总结、简单的数学统计和归纳的方法,获得分类规则并进行遥感分类。分类的规则易于理解,分类过程也符合人的认知过程,最大的特点是利用多源数据。SNOMAP算法在ENVI中的实现步骤如下:
(1) 准备数据
Landsat 5 TM原始数据是没有经过定标的DN值,而SNOMAP算法需要Landsat 5 TM数据各个波段的反射率,因此运算前需要对原始Landsat 5 TM数据进行几何纠正、大气纠正和传感器定标。
(2) NDSI、NDVI计算
利用ENVI主菜单﹣> Basic Tools﹣>Band Math,在公式输入栏中输入:
FLOAT (B2-B5)/( B2-B5)以及FLOAT (B2-B5)/( B2-B5)。NDSI和NDVI都是介于0-1之间的数据,需要在计算公示前加FLOAT,以生成浮点型的数据
(3) 决策树建立
利用ENVI主菜单﹣> Classification﹣>Decision Tree﹣> Build New Decision Tree,打开ENVI Decision Tree面板,进行规则定义与决策树的建立。
(4) 决策树执行
在ENVI Decision Tree面板中,选择Options﹣>Execute,执行定义好的决策树。
3.
SNOMAP算法在IDL中的实现
除了ENVI中已经做好的工具菜单,用户在实际的应用系统中也可以利用IDL语言以及ENVI的小部件函数,很方便的实现SNOMAP算法。原始Landsat 5 TM数据进行几何纠正、大气纠正和传感器定标后,SNOMAP算法实现步骤如下:
; 波段读取
Band2 = ENVI_GET_DATA(FID=TM_FID, DIMS=DIMS, POS=[1])
Band3 = ENVI_GET_DATA(FID=TM_FID, DIMS=DIMS, POS=[2])
Band4 = ENVI_GET_DATA(FID=TM_FID, DIMS=DIMS, POS=[3])
Band5 = ENVI_GET_DATA(FID=TM_FID, DIMS=DIMS, POS=[4])
; NDSI计算
NDSI_Add = Band2+Band5
NDVI = Band2-Band5
index = WHERE(NDSI_Add GT 0,nCount)
IF(nCount EQ 0) THEN BEGIN
STR_ERROR = 'Landsat NDSI failed!'
RETURN
ENDIF
NDSI[index] = NDSI[index]/NDSI_Add[index]
; NDVI计算
NDVI_Add = Band4+Band3
NDVI = Band4-Band3
index = WHERE(NDVI_Add GT 0,nCount)
IF(nCount EQ 0) THEN BEGIN
STR_ERROR = 'Landsat NDVI failed!'
RETURN
ENDIF
NDVI[index] = NDVI[index]/NDVI_Add[index]
; SNOMAP算法
SnowMask = BYTARR(NS,NL)
idx = WHERE(NDSI GT 0.4 and Band4 GT 0.11, nCount
IF(nCount GT 0) THEN SnowMask[idx] = 1
idx = WHERE(NDSI LE 0.4 and NDSI GT 0.1 and NDVI GT 0.38 AND Band4 GT 0.11, nCount)
IF(nCount GT 0) THEN SnowMask[idx] = 1
4.
结果浏览