南京林业大学森林遥感实习报告

基于决策树的林业遥感影像分类

Classification of RS Image based on Decision Tree Classifier

一、        实习目的与要求

林业遥感是遥感技术在林业经营中具体应用的实用性强的专业课,旨在培养学生利用遥感手段进行森林资源监测和管理的基本技能,实习的主要目的是培养学生使用GPS进行野外地形参数的手工测量,内业计算机遥感图像的几何精校正和探索学习决策树分类方法对林业遥感影像进行分类研究的动手能力。通过实习,加深遥感技术在森林资源监测和管理中的应用和理解。

二、        实习内容

1)      GPS采集地面控制点坐标(经纬度或平面直角坐标)以及地形参数(坡度,坡向)

2)      野外训练区的地面调查

3)      内业遥感图像的几何精校正

4)      ENVI图像处理软件决策树分类器建立逐级决策规则

5)      决策规则的修改与添加(与实地调查进行比较分析)

6)      利用建立的决策规则对林业遥感图像进行分类

7)      保存分类规则与分类图像

三、        实习中涉及的理论知识

1.  决策树分类简介

与其它分类方法相比,决策树分类具有如下特点:1)决策树分类是非参数分类,因此其独立于训练区像元亮度值的统计分布模式;2)决策树分类时模型的输入既可以是连续的光谱波段值,也可以是离散的数值,甚至是定名变量;3)分类结束后可以生成易于解译的分类判别准则文件;4)样本训练的速度快,分类精度通常高于其它的分类器

2.  决策树分类原理

决策树分类实质是利用输入分类器的多元特征参数,从多角度挖掘出蕴藏在其中的模式类别间的差异,并建立起“特征识别矩阵”(类似于判读检索表),其外在表现为多个“If Then, else if then”的连用,就如同数学上的多个集合求交集运算,从而将满足交集条件的模式与不满足交集条件的模式区分开来,实现不同模式类别的自动识别。具体地讲,决策树可以像分类过程一样被定义,依据某种规则将窨数据集一级级往下细分以定义决策树的各个分支。决策树由一个根结点,一系列内部结点及终极结点组成,每一个结点只有一个父结点和两个或多个子结点。根据决策树的构成思想,以选定的样本数据为对象逐级找到分类树的结点,并且在每个结点上记录所选的空间数据图层的编号以及相应的判别函数参数,从而有可能反过来从树根到叶按照生成的判别规则,逐级地在每个结点上对样本数据以外的待分类数据进行分类

3.  本实习决策树分类规则描述

类1(class 1):NDVI值大于0.3,坡度大于或等于20度

类2(class 2):NDVI值大于0.3,坡度小于20度,阴坡

类3(class 3):NDVI值大于0.3,坡度小于20度,阳坡

类4(class 4):NDVI值小于或等于0.3,波段4的值大于或等于20

类5(class 5):NDVI值小于或等于0.3,波段4的值小于20

类6(class 6):波段4的值等于0

类7(class 7):波段1的值小于波段1的均值

决策树分类规则是在决策树分类过程中不断修改和添加的,为了实现逐步分类更加精细与准确

四、         实习步骤

1.  外业数据采集

在中山陵地区选取若干样点,利用GPS记录样点坐标,测定相应位置的地形参数。目的:练习使用GPS以及DEM的建立方法。

2.  研究资料确定与处理

1) 运行ENVI软件,打开并显示对决策树分类有贡献的影像文件:

bouldr_tm.dat (Landsat 5 TM影像) 与boulder_dem.dat(相应的DEM空间子集)

2) 投影类型转换

查看bouldr_tm影像特征:

Projection : UTM

  Pixel: 30 Meters

  Datum: NAD 27

查看boulder_dem影像特征:

Projection : GAUSS-KRUGER

  Pixel: 30 Meters

  Datum: WGS84

以bouldr_tm影像为基准,转换boulder_dem影像的投影类型:

运行ENVI软件,点击Map/Convert Map Projection,在弹出的Convert Map Projection Input Image中选择boulder_dem,在弹出的Convert Map Projection对话框中选择UTM,DATUM选择NAD 27,可选择多项式和最邻近点方式,保存投影类型转换后的图像。

3)图像配准

为提高TM影像的分辨率,从而提高分类精度,以bouldr_tm影像与相应地区的SPOT影像配准(SPOT为已经过精校正的影像,空间分辨率为10m)

配准方法:点击Map/Registration/Select GCPs: Image to Image,使得bouldr_tm影像的分辨率也达到10m,查看配准后的影像特征:

Projection : UTM

Pixel: 10 Meters

Datum: NAD 27

如图1所示:

3.  输入决策树规则

1)  选择Classification/Decision Tree/Build new decision tree,打开决策树工具

决策树工具打开时就只有一个空的决策节点,在这个空的节点中输入任意条件的决策表达式,将该数据集的像素分为两组

2)  第一个决策要基于landsat影像。要定义这个决策点,点击决策节点,当前这个节点被标注为Node,输入表达式:

{ndvi} gt 0.3

这个决策将像素分为两类,一类为绿色植被,另一类为非植被

3)  指定应用决策表达式的文件

在出现的Variables/Files Pairing对话框中,点击{ndvi},在随后出现的对话框中选择bouldr_tm影像,这表明当上述决策规则计算时,NDVI值将从bouldr_tm影像中计算出来

这里ENVI会根据NDVI这个特定名称,自动搜索所需的红波段和近红外波段,计算出NDVI值

4)  完成第一个简单决策树分类器,NDVI大于0.3被分成白色类,NDVI值小于或等于0.3像素被分为黑色。

4.  输入决策树附加规则

1)  右键点击Class 1的节点,从弹出的快捷菜单中选择Add Children,从而将NDVI大的那类细分为两个新的子类

2)  点击空白节点,并在Edit Decision Parameters对话框中,输入下面这个决策规则:

{Slope} lt 20

这个决策规则将根据坡面的陡峭程度,将NDVI值高的像素分为两类,同样,ENVI会根据Slope(坡度)这个特定名称,自动搜索计算Slope值

3)  在节点的Name区域,输入slope<20,点击OK

4)  指定应用决策表达式的文件

在出现的Variables/Files Pairing对话框中,点击{slope},在随后出现的对话框中选择boulder_dem影像,这表明当上述决策规则计算时,slope值将从boulder_dem影像中计算出来

5)  继续添加决策规则

右键点击绿色的端元节点,它包括了NDVI值高、坡度低的那类像素,从弹出的快捷菜单中,选择Add Children。点击节点,在Edit Decision Parameters对话框中,输入下面这个决策规则:

{aspect} lt 20 and {aspect} gt 340

这个决策将把NDVI值高、坡度小的那些像素,分为坡面北朝向的和坡面北朝向不显著的两类。

6)  在节点的Name区域,输入North,点击OK

7)  指定应用决策表达式的文件

在出现的Variables/Files Pairing对话框中,点击{aspect},在随后出现的对话框中选择boulder_dem影像,这表明当上述决策规则计算时,aspect值将从boulder_dem影像中计算出来

8)  在节点的Name区域,输入North,点击OK

9)  继续添加决策规则

右键点击黑色的端元节点,它包括了NDVI值低的那类像素,从弹出的快捷菜单中,选择Add Children。点击节点,在Edit Decision Parameters对话框中,输入下面这个决策规则:

b4 lt 20

这个决策规则将水体非植被中分离出来,经过目视解译遥感影像发现,在波段4中,像素值小于20的主要是水体

10)              指定应用决策表达式的文件

在出现的Variables/Files Pairing对话框中,点击b4,在随后出现的对话框中选择bouldr_tm影像

11)              在节点的Name区域,输入Low B4,点击OK

决策树如图2所示:

应用决策表达式的文件如图3所示:

5.  执行决策树

1)  选择Options/Execute

2)  在Decision Tree Execution Parameters对话框中,点击bouldr_tm影像,作为基准影像。其它影像的地图投影,像素大小和范围都将被自动调整,以匹配该基准影像

3)  输入要输出的分类影像文件名,保存

6.  查看决策树分类结果

1)  输出的决策树分类结果中,给定像素的颜色是由分类指定的端元节点的颜色确定的。Class1,Class2,Class3,Class4,Class5分别对应红色,绿色,蓝色,黄色,蓝绿色。如下图所示

2)  查看决策树信息

在ENVI Decision Tree对话框的空白背景上,点击右键,从弹出的对话框中,选择Zoom In,现在每个节点标签都会显示像素的个数以及所包含像素点总影像像素的百分比。

如下图所示:

7.  修改决策树

1)  添加新的决策

执行完决策树后查看分类结果,发现上述决策规则中,波段4小于20的那些像素中,某些像素是边缘像素,值为0,以蓝绿色显示,因此需修改决策树:

在波段4的值小于20的那些像素的端元节点上,点击右键,并从弹出的快捷菜单中,选择Add Children。点击节点,在Edit Decision Parameters对话框中,输入下面这个决策规则:

b4 eq 0

在Name文本框中,输入B4=0

2)  执行新添加的决策,此时输出结果中,边缘像素就归为另一类了,以红紫色表示

如下图所示:

8.  在决策表达式中使用波段索引

几个内置的决策树变量在决策表达式使用过程中,需要波段索引

1)  在黄色端元节点上,点击右键,该节点包括了NDVI值低但波段4的值高的那一类像素。从快捷菜单中,选择Add Children。点击节点,在Edit Decision Parameters对话框中,输入下面这个决策规则:

b1 lt {mean[1]}

在Name文本框中,输入Low B1

该表达式将判断波段1的像素值是否小于波段1的均值

2)  指定应用决策表达式的文件

在出现的Variables/Files Pairing对话框中,点击b1,在随后出现的对话框中选择bouldr_tm影像的band 1

在出现的Variables/Files Pairing对话框中,点击mean,在随后出现的对话框中选择bouldr_tm影像

如下图所示:

3)  运行决策树

4)  查看结果,波段1的值较低的某些黄色像素的颜色已变为暗红色

如下图所示:

9.  修剪决策树

在使用决策树的过程中,经常需要测试某个指定的子节点是否对决策树的分类结果有效,即对决策树的修剪

1)  在Low B1节点上,点击右键,从弹出的快捷菜单中,选择Prune Children。结果表明,可以看到这个子节点,但它们不再带有颜色,而且也没有连接到决策树上,表明已被修剪,当执行决策树时,它们不会被使用

如下图所示:

修剪后分类结果如下图所示:

2)  右键点击Low B1节点,从弹出的快捷菜单中,选择Restore Pruned Children,可恢复修剪

10.            保存生成的决策树

ENVI Decision Tree Text File (version=1.0)

begin node

  name = "Node 1"

  type = Decision

  location = 1,1

  expression = "{ndvi} gt 0.3"

end node

begin node

  name = "slope<20"

  type = Decision

  location = 2,2

  parent name = "Node 1"

  parent decision = Yes

  expression = "{Slope} lt 20"

end node

begin node

  name = "North"

  type = Decision

  location = 3,4

  parent name = "slope<20"

  parent decision = Yes

  expression = "{aspect} lt 20 and {aspect} gt 340"

end node

begin node

  name = "Class 3"

  type = Result

  location = 4,8

  parent name = "North"

  parent decision = Yes

  class value = 3

  class rgb = 0,0,255

end node

begin node

  name = "Class 2"

  type = Result

  location = 4,7

  parent name = "North"

  parent decision = No

  class value = 2

  class rgb = 0,255,0

end node

begin node

  name = "Class 1"

  type = Result

  location = 3,3

  parent name = "slope<20"

  parent decision = No

  class value = 1

  class rgb = 255,0,0

end node

begin node

  name = "Low B4"

  type = Decision

  location = 2,1

  parent name = "Node 1"

  parent decision = No

  expression = "b4 lt 20"

end node

begin node

  name = "B4=0"

  type = Decision

  location = 3,2

  parent name = "Low B4"

  parent decision = Yes

  expression = "b4 eq 0"

end node

begin node

  name = "Class 6"

  type = Result

  location = 4,4

  parent name = "B4=0"

  parent decision = Yes

  class value = 6

  class rgb = 255,0,255

end node

begin node

  name = "Class 5"

  type = Result

  location = 4,3

  parent name = "B4=0"

  parent decision = No

  class value = 5

  class rgb = 0,255,255

end node

begin node

  name = "Low B1"

  type = Decision

  location = 3,1

  parent name = "Low B4"

  parent decision = No

  expression = "b1 lt {mean[1]} "

end node

begin node

  name = "Class 7"

  type = Result

  location = 4,2

  parent name = "Low B1"

  parent decision = Yes

  class value = 7

  class rgb = 176,48,96

end node

begin node

  name = "Class 4"

  type = Result

  location = 4,1

  parent name = "Low B1"

  parent decision = No

  class value = 4

  class rgb = 255,255,0

end node

begin variable

  variable name = "ndvi"

  file name = "C:\Users\Administrator.PC-20120901PXNP\Desktop\数据\decision\bouldr_tm.dat"

  file pos = 4,3

end variable

begin variable

  variable name = "Slope"

  file name = "C:\Users\Administrator.PC-20120901PXNP\Desktop\数据\decision\boulder_dem.dat"

  file pos = 1

end variable

begin variable

  variable name = "aspect"

  file name = "C:\Users\Administrator.PC-20120901PXNP\Desktop\数据\decision\boulder_dem.dat"

  file pos = 1

end variable

begin variable

  variable name = "b4"

  file name = "C:\Users\Administrator.PC-20120901PXNP\Desktop\数据\decision\bouldr_tm.dat"

  file pos = 4

end variable

begin variable

  variable name = "b1"

  file name = "C:\Users\Administrator.PC-20120901PXNP\Desktop\数据\decision\bouldr_tm.dat"

  file pos = 1

end variable

begin variable

  variable name = "mean"

  file name = "C:\Users\Administrator.PC-20120901PXNP\Desktop\数据\decision\bouldr_tm.dat"

  file pos = 1-6

end variable

11.            对分类结果进行评价

ndvi>0.3的占35.09%,ndvi<0.3的占64.91%;在ndvi>0.3的那一部分中,slope>20的部分占总的13.07%,slope<20的部分占总的22.02%;在ndvi>0.3,slope<20的那一部分中,没有坡向朝北的,全为坡向朝南;ndvi<0.3的部分中,波段四像素值小于20的占总体的6.76%,大于20的占总体的58.15%;在ndvi<0.3的波段四像素值小于20的那一部分中,水体非植被占总体的0.39%,边缘像素占6.37%;在ndvi<0.3的波段四像素值大于20的那一部分中,波段1像素值小于1的均值的占总体的13.02%,大于1的均值的总体的45.13%

五、         实习心得

这次森林遥感的实习,对于我来说是一次很大的挑战,对于从来没有用过ENVI的人来说,全新的、全英文的界面,让我感到无从下手。还好有老师的指导和实习指导书的指示,让我有可能完成这一艰苦的工作。

但是即便如此,在实习的过程中,我依然碰到了很多的问题,找不到这个找不到那个的新手问题依然困扰着我,但是,在同学们的讨论和老师的引导下,终于在最后完成了这个实习。

经过这一次森林遥感的实习,我懂得了即便是自己不熟悉的软件,只要肯琢磨、肯试验,认真按照老师和指导书的指引,我们依然能够克服任何困难。

相关推荐