光谱分类算法 matlab,Matlab K-means聚类算法对多光谱遥感图像进行分类(一)

Matlab K-means聚类算法对多光谱遥感图像进行分类

作者: 白艺亭

测试了下matlab自带kmeans函数,作者编写函数,以及ENVI下的Kmeans方法,对比其效果,代码及结果图展示见下。(K均值聚类的matlab代码,对其算法进行实现。)

1. K-Means无监督聚类算法:

ENVI中,在主菜单上,选择Classification>>Unsupervised>>K-Means,在Classification Input File中选择TM影像,单击OK。打开K-means Parameters对话框中,设置以下的参数:

1)分类数量(Number of Classes):一般为最终输出分类数量的2-3倍。

2)变换阈值(Change Threshold):5。每当一类的变化像元数小于阈值时,结束迭代过程。这个值越小得到的结果越精确,运算量也越大。

3)最大迭代次数(Maximum Iterations):30(我选的).迭代次数越大,精度越高。

4)距离类别的值的最大误差(Maximum Stdev From Mean)。此数可选。

5)允许的最大距离误差:(Maximum Distance Error);可选

6)选择路径,OK执行。

077f159efebaf84730f38c84282b970c.png

以上参考东腾的博客。

2. 自编matlab函数实现

2.1被调function

function [new_class_label] = Kmeans_of_muldim(data,k,change_threshold,iteration)

% 功能:实现多光谱遥感数据非监督分类算法之K-means聚类算法

%Author: Mr. BAI

% 输入:data是s*fl*b的矩阵,s为列数(sample),fl为行数(fileline),b为波段数(band);

% k 为类别数,如果有背景值,背景值会归到某一地类中去,到时再用矢量边界图形裁剪一下即可。我考虑过将出现次数最多

% 的背景值单独划归一类,但是程序设计时不好判断,取数组中元素出现次数最多的像元为一类,有点大胆,因为无背

% 景的图像像元值也可能出现这种情况;

% change_threshold变化阈值

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值