第十章 非监督分类:ISO-DATA 法
本文整理自我的原创教程《ENVIS5.6 非监督分类:ISO-DATA法目视分类基础流程》,内容基本保持原貌。
原理简介
基本原理
非监督分类与监督分类的不同在于它不需要先选取和定义分类样本再分类, 而是先分类再定义。
不同的地物会有不同的光谱特征,如果光谱特征相似,那么它们很可能是同一类地物, 所以我们可以先通过算法将图像中光谱特征相似的地方分为一类,也就是先分类。 但类别划分出后,我们并不知道这些类别代表着的是什么地物, 还需要对照实际情况一一对应上这些自动分出的类,赋予它们意义,也就是定义。
在一幅遥感影像中,图像景物会因环境或自身条件不同,而呈现出不同的光谱特征类。 如果采用监督分类,先训练样本,不仅难以保证样本分布比较均衡且不会遗漏, 也比较麻烦;而非监督方法可以自动发现这些类。
算法原理
传统的非监督分类算法有 K 均值法和 ISO-DATA 法。
K均值法的提出最早可追溯到上世纪50年代,它在遥感图像中分类的原理简单来说, 就是先随机挑选一些像元作为初始类中心,然后把图像中其它像元分配给距离最近的类中心。
注:这里的距离不是指长度单位,而是一种衡量光谱值差异的指标, 例如可以用欧式距离公式来计算:

分完后,接着再计算每类像元的平均值以平衡掉类中一些极端值的影响, 再以平均值作为类中心,重新再分类,一直按照这样的逻辑循环重复,也就是迭代, 直至结果符合我们的预期。
打个比方:我想对一大群互不认识的人通过共同点来分成十组,尽量保证每组有差异, 同时组内成员又非常相似,但我完全不了解他们,也不想麻烦一个个地了解, 希望他们自动分好。那么,我先随机挑选十个人作为组长,让组长介绍下自己, 其它人则加入与自己最相似的组。但这十位组长不一定与其它人都有明显的共同点, 有些人可能迷迷糊糊地就加入了一个组。所以分完后,组内再互相介绍自己, 总结出共同点,并推选出最符合新共同点的组长,其它人再重新分组, 加入与自己最相似的组,一直按照这样的逻辑循环重复,直至分出外部有明显差异、 内部极相似的十组。
ISO-DATA法则是对K均值法的改进,全称是 Iterative Self-Organizing Data Analysis Technique Algorithm。迭代运算过程与K均值法类似, 但它有更多的参数控制,允许在迭代过程中对生成的类拆分、合并或删除,从而提高分类精度。
基本流程
传统的非监督分类基本流程一般是:先影像分析确定要分出哪些地物类型, 并选择分类算法进行初始分类,再定义自动分出的类别,然后分类后处理,最后验证效果。

具体步骤
本次流程以采用传统的ISO-DATA法对已经预处理后的遥感影像 Miyun_2006
进行目视分类为例,利用 ENVI 5.6 软件,计划将 Miyun_2006 土地利用类型分为4类:
耕地、水体、林地、建筑用地。
1 ISO-DATA 初始分类
直接搜索或找到【IsoData Classification】工具,input 待分类且已预处理的影像。
Ok后,进入【ISODATA Parameters】设置相关参数:

各参数含义与设置经验:
- Number of Classes:设置最少分类数量和最大分类数量。一般最少分类数量 不能少于最终分类数量,最大分类数量是最终分类数量的2~3倍——这样既能尽量保证 光谱值相似但类型可能不同的地物不被归为一类,同时倍数不宜过大又能避免分类耗时过长。 这里设为6~12类。
- Maximum Iterations:设置迭代次数。次数越多,分类结果越精确, 但运算时间也会越久。算法会一直迭代运算直至稳定,一般10~20次就比较稳定,这里设为15次。
- Change Threshold % (0-100):设置像元变化阈值。在稳定之前,每次迭代, 都会使每类像元数被重新分配,当每一类像元数变化都小于阈值时,便结束迭代。 阈值越小,分类就越精确,但运算时间也会越久。这里设为5%。
- Minimum # Pixel in Class:设置形成类别所需的最少像元数。在迭代过程中, 如果出现像元数量少于这个值的类别,这个类别就会被删除,而其中的像元则会被归类于 光谱值最相近的类别中。这里默认为1。
- Maximum Class Stdv:设置类别最大标准差,用于衡量类中像元光谱值的离散程度。 在迭代过程中,如果某类的标准差超过所设的阈值,就会被拆成两类。 值越接近0,说明要求类中各像元之间的光谱值差异越小;当值为0时, 则要求类中各像元的光谱值必须都相同——但实际上几乎不可能分出这样的一类, 因为即使是同类地物,也会有细微的光谱差异。如果要分的类中某类光谱差异变化会比较大, 但要强行归为一类,最大标准差就要调大些,比如浑浊的水体与清澈的水体光谱差异 就非常明显,如果要强行统归为一类的话,就不能被标准差所限。但标准差也不能过大, 否则会导致各类别之间区分不清。一般设置在0.5~1.5之间,这里默认为1。
- Minimum Class Distance:设置最小分类距离。这里的 distance 不是指长度单位, 而是指光谱值差距。在迭代过程中,如果某两类的平均值之间的差距小于这个值, 说明这两类比较相似,可能是同一类,就会被合并成一类。
- Maximum # Merge Pairs:设置每次迭代时所允许的最多合并对数。 类别合并也不能没有限制,否则会增加那些虽然光谱平均值差距小于 Minimum Class Distance、 但实际是不同的类也被合并的概率。这里默认为2。
- Maximum Stdev From Mean & Maximum Distance Error:用来调整最大标准偏差和 最大差距误差,需要根据实验情况来确定,这里默认不设置。
选择输出路径和文件名后,开始执行迭代运算分类:

2 类别定义 / 合并
通过目视或其它识别方法,定义ISO-DATA初始分类出的类别。
目视判断:为了方便通过目视的方法识别出各类别分别对应的是什么地物类型, 我们可以打开两个视图窗口,一边是待定义的分类结果,另一边打开用来对照的遥感影像, 然后通过链接视图同步移动操作,再打开定位光标,精确判断。
更改类别名称和颜色:右键分类图层,调出【Edit Class Names and Colors】, 利用定位光标,对照遥感影像逐一修改类别名称和颜色,直至所有名称和颜色修改完成。
注:在 ENVI 5.6 编辑类别名称和颜色中输入中文名称可能会出现闪退, 尽量以英文命名,并定时【File】→【Save ENVI Session】保存工程。
合并子类:一开始,我们希望ISO-DATA法的初始分类数量多于最终分类数量, 以尽量保证光谱值相似但类型可能不同的地物不会被归为一类,而可以被拆分成多类, 之后再根据实际情况考虑要不要合并,从而提高分类精度。
定义完类别后,利用【Combine Classes】工具,Input 待合并的类别, Output 要并入的类别,然后【Add Combination】添加到【Combined Classes】合并方案中, 最后 Ok 并【Remove Empty Classes】完成所有方案合并:

3 分类后处理
初始分类后就可以做地物分类统计分析、提取类别区域矢量等工作, 但难免还会有些不令人满意的地方,比如本次分类后还有许多零零散散的分类小斑点、 背景颜色也与水体归成了一类,还要进一步处理。
斑点处理:小斑点去除方法有 Majority/Minority 分析、聚类(Clump)和 过滤(Sieve),都在【Post Classification】工具中,也可直接搜索到; 不过本次是简单流程,就不处理了。
背景处理:先将边界矢量数据添加到图层中,通过【Subset Data from ROIs】裁剪工具, 利用边界矢量数据进行裁剪,并勾选【Mask pixels outside of ROI】避免背景颜色干扰。
4 结果验证
根据实际情况(真实参考源)评价分类结果,看结果精度和可靠性如何, 从而考虑是否需要重新调整分类。
常用【Confusion Matrix】(混淆矩阵)来得到一份分类精度评价表。 它有两种基于真实参考源的方法:【Confusion Matrix Using Ground Truth Image】 基于标准分类图;【Confusion Matrix Using Ground Truth ROI】基于真实类别的感兴趣区。 由于没有标准分类图,这里采取后者。
先右键遥感影像新建【New Region Of Interest】,圈出四类实际真实的感兴趣区 (Ground Truth ROI)作为真实参考源;再利用【Confusion Matrix Using Ground Truth ROI】 工具,输入 Ground Truth ROI 和相应待评价的 Classification Class, 完成后会得到一份分类精度评价表:

其中 Overall Accuracy(总体精度) 表示所有分类正确的像元数量在总像元中的占比, 本次达到了97%,说明分类结果非常接近真实参考源。
Kappa Coefficient(Kappa系数) 则能反映分类结果的可靠性: 如果总体精度较高,Kappa系数也接近1,说明分类结果比较可靠; 如果总体精度较高,但Kappa系数接近0,说明分类结果大部分是凑巧被分对了,不可靠。
参考资料
- ENVI-IDL技术殿堂 - 博客园
- 刘美玲, 明冬萍. 遥感地学应用实验教程[M]. 北京: 科学出版社, 2018
- Thomas M. Lillesand. 遥感与图像解译[M]. 北京: 电子工业出版社, 2023
