最近写了两个关于遥感图像的简单的非监督分类算法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

ENVI自带的非监督分类测试情况的更多相关文章

  1. Github实战测试情况

    测试情况 很久没有熬夜测试程序了,经过测试,没有复现功能的有echo.葫芦娃.火鸡堂.那周余嘉熊掌将得队.为了交项目而干杯.修!咻咻!.云打印和追光的人.据汪老师反应在现场实践课程中大都能实现的,公平 ...

  2. 4分钟apache自带ab压力测试工具使用: 2015.10.4

    2015.10.44分钟apache自带ab压力测试工具使用:win8.1 wampserver2.5 -Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b 可以参考一下部 ...

  3. win8.1上wamp环境中利用apache自带ab压力测试工具使用超简单讲解

    2015.10.4apache自带ab压力测试工具使用:本地环境:win8.1 wampserver2.5 -Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b 可以参考一 ...

  4. sql 邮件发送测试情况

    sql 邮件发送测试情况 select * from msdb.dbo.sysmail_allitems select * from msdb.dbo.sysmail_event_log

  5. 分布式事务之:TCC几个框架的测试情况记录

    国内主要的开源TCC分布式事务框架包括 框架名称 Github地址  star数量  tcc-transaction  https://github.com/changmingxie/tcc-tran ...

  6. 网站服务器压力Web性能测试(1):Apache Bench:Apache自带服务器压力测试工具

    一个网站或者博客到底能够承受多大的用户访问量经常是我们在用VPS或者独立服务器搭建网站了最关心的问题,还有不少人喜欢对LNMP或者LAMP进行一些优化以便提高Web性能,而优化后到底有多大的效果,就需 ...

  7. 装饰器1、无参数的装饰器 2、有参数的装饰器 3、装饰器本身带参数的以及如果函数带return结果的情况

     装饰器分成三种: 1.无参数的: 2.有参数的: 3.装饰器本身带参数的. 装饰器decorator又叫语法糖 定义:本质是函数,器就是函数的意思.装饰其他函数.就是为其他函数添加附加功能. 原则: ...

  8. PHP测试与优化(1)-- Apache自带的压力测试工具ab(apache bench) - 简单使用

    ab是apache自带的网站压力测试工具,能够测试网站在一定时间内的发生高并发时的反应. 使用 1.进入apache的bin文件夹 2.模拟并发级别为100,请求数为1000个的api数据请求数量测试 ...

  9. spring boot web开发 简单的增删改查和spring boot 自带的Junit测试 案例

    创建 web项目 配置pom.xml文件   ------相当于jar包 配置application.yml -----配置文件(spring数据库连接.server服务.logging日志等) 创建 ...

随机推荐

  1. UVA1349:Optimal Bus Route Design

    题意:给定一个有向带权图,找若干个环,使得每个点属于且仅属于一个环,要求使得环权值之和最小 题解:发现这题中每个点属于且仅属于一个环,这时候"仅"这种恰好的含义,让我们想到了匹配问 ...

  2. ●BZOJ 3963 [WF2011]MachineWorks

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3963 题解: 斜率优化DP,CDQ分治. 先按时间排序.(规定以下内容的第i台机器的卖出时间 ...

  3. 关于Miller-Rabbin的一点想法

    在好久之后终于搞完了miller-rabbin素性测试,谈谈自己的理解 要判断的数设为 a, 主要思想就是运用费马小定理来搞,随机几个数x(x<=a-1),判断x^(a-1)=1(mod a)是 ...

  4. Python入门之装饰器九步学习入门

    第一步:最简单的函数,准备附加额外功能 '''示例1: 最简单的函数,表示调用了两次''' def myfunc(): print("myfunc() called.") myfu ...

  5. 浙大patB习题的一点总结

    嘛嘛,patB的习题已经结束了,这些基本上没有啥特别难的,但还是有几道特别坑爹的题(o(╯□╰)o),还是把这些题的代码打包上传吧.

  6. cocos2d-x-3.x 学习总结(一)

    这周学习了<cocos2d-x 3.x 游戏开发之旅>的第三章,做如下总结: 1.关于创建标签对象 书中是 Label* label = Label::create(); 可是总是提示出错 ...

  7. SpringMVC中url-pattern /和/*的区别

    http://blog.csdn.net/u010648555/article/details/51612030

  8. supervisor使用,配置和安装(包括监控守护进程httpd,keepalived)

    yum -y install supervisor(如果安装不成功,需要更新源,yum -y install epel) 或者: wget --no-check-certificate https:/ ...

  9. CF | Alyona and Numbers

    After finishing eating her bun, Alyona came up with two integers n and m. She decided to write down ...

  10. Go 语言数组

    Go 语言提供了数组类型的数据结构. 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型. 相对于去声明number0, number ...