zoukankan      html  css  js  c++  java
  • ENVI自带的非监督分类测试情况

    最近写了两个关于遥感图像的简单的非监督分类算法KMEAN和ISODATA,发现结果和ENVI的一直有差异,而且还蛮大的,找了好久也没有找到原因。于是用PS自己绘制了一个简单的图像用于测试。如图1所示,该图中共有四个颜色(类别),四个角为绿色,上下为蓝色,左右为红色,中心为黄色。按道理来说,非监督分类应该初始种子点设置为4类应该可以将该图像分为四类。


    图1 使用PS绘制的测试图像

    首先使用ENVI自带的KMEAN分类,初始类别个数设置为5类,迭代次数为5,其他参数默认。图2是处理的结果。我自己写的KMEAN参数也是初始类别个数为5,迭代次数为5,处理结果见图3。从图2和图3对比可以看出,ENVI的结果就剩下2类,四周全部合并为一类,中间的黄色为另外一类。图3中处理的结果与原图一样,颜色是随机给的,所以颜色和原图不一样,类别个数还是5类。由于KMEAN对初始种子点的选取比较敏感,不知道ENVI的种子点是如何选取的,我自己使用随机数进行选取。


    图2 ENVI的KMEAN处理结果


    图3 我写的KMEAN处理结果

    接下来再看看ISODATA分类的结果,和上面一样,初始类别个数设置为5和10,也就是最小五类,最大十类。迭代次数还是5次,图4是使用ENVI处理的结果,图5是我自己写的结果。对比发现,ISODATA相对KMEAN来说,效果要好一些(仅仅以图1中的数据来说),总共找出了四类,中间的和左右两边的合并为一类了。而我自己写的和原图类别个数保持一致,至少说明我写的没有错误。


    图4 ENVI的ISODATA处理结果


    图5 我写的ISODATA处理结果

    下面是我写KMEAN和ISODATA算法参考的几个资料,有需要的同学可以看看。另外很多开源库里面都有这两个算法的源码,比如OpenCV,RSGIS,OTB等。


    参考资料

    [1]:k-means clustering  http://en.wikipedia.org/wiki/K-means_clustering
    [2]:KMean cluster algorithm  http://blog.sina.com.cn/s/blog_51eea616010091ub.html
    [3]:K-Mean Clustering Tutorials  http://people.revoledu.com/kardi/tutorial/kMean/index.html
    [4]:深入浅出K-Means算法  http://www.csdn.net/article/2012-07-03/2807073-k-means
    [5]:基本Kmeans算法介绍及其实现  http://blog.csdn.net/qll125596718/article/details/8243404

    [6]:A Tutorial on Clustering Algorithms  http://home.deib.polimi.it/matteucc/Clustering/tutorial_html/index.html

  • 相关阅读:
    第19 章 : 调度器的调度流程和算法介绍
    第18 章 : Kubernetes 调度和资源管理
    关于一次配合开发工作而产生的服务器内核参数问题(Android 网络问题)
    第17 章 : 深入理解 etcd:etcd 性能优化实践
    第16 章 : 深入理解 etcd:基于原理解析
    第15 章 : 深入解析 Linux 容器
    第14 章 : Kubernetes Service讲解
    第13 章 : Kubernetes 网络概念及策略控制
    第12 章 : 可观测性-监控与日志
    第11 章 : 可观测性:你的应用健康吗?(liveness和readiness)
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6313912.html
Copyright © 2011-2022 走看看