ENVI/IDL笔记(7)基于IDL的非监督分类(K-mean法)
1
K-Means算法是以距离作为相似度的评价指标,用样本点到类别中心的误差平方和作为聚类好坏的评价指标,通过迭代的方法使总体分类的误差平方和函数达到最小的聚类方法。
其算法步骤如下:
❶从集合(x1, x2, …, xn)中随机取k个元素,作为k个类别的各自的中心。
❷聚类。分别计算集合中每一个元素到k个类别中心的距离,将这些元素分别划归到距离最小的那一个类别中去,这个过程其实是一个重新聚类的过程。
❸更新类别中心。根据前面聚类的结果,重新计算每一个类别的中心,计算方法是取当前类别中所有元素,然后计算这些元素在每一个维度的平均值。每一个类别中心都重新计算一遍后,就得到了一个新的类别中心组 。
❹重复第2,3步,直到聚类结果不再发生变化,这样得到的类别中心,基本上就是我们最后想要找的类别中心。
2
envi_doit
例程envi_doit用于对ENVI文件进行监督分类或非监督分类
语法:
envi_doit,'class_doit',fid=file fid,dims=array,pos=array,r_fid=variable,out_name=string,/in_memory,method={0|1|2|3|4|5|6|7|8},m_fid=file id,m_pos=value,class_names=string array,lookup=array,out_bname=string
关键字lookup用于设置各个类别颜色值,method设置分类方法(见下表)。
3
K-means关键字
num_classes=integet,iterations=integer,change_thresh=floating point{0.0to 1.0},thresh=value,std_mult=floating point
关键字num_classes设置分类数目,关键字iterations设置迭代最大次数,关键字change_thresh设置阈值(0~100%)。
4
method
分类方法 | 0 | 平行六面体法 |
---|---|---|
1 | 最小距离法 | |
2 | 最大似然法 | |
3 | 波谱角分类法 | |
4 | ISODATA法 | |
5 | 马氏距离法 | |
6 | 二值编码法 | |
7 | K-mean法 | |
8 | 光谱信息散度法 |
本文中TM数据为例,进行演示。
▲非监督分类拉伸前 ▲非监督分类拉伸后
1
优点
♂无需对分类区有较多的了解,仅需一定的知识来解释分类出现的集群组;
♂人为误差减少,需输入的初始参数较少;
♂可形成范围很小但有独特光谱特征的集群,所分的类别比监督分类的类别更均质;
♂独特的覆盖量小的类别均能够被识别
1
缺点
♀ 对其结果需进行大量分析及后处理,才能得到可靠分类结果;
♀存在同物异谱及异物同谱现象,使集群组与类别的匹配难度大;
♀ 不同图像间的光谱集群组无法保持其连续性,难以对比。