本人是新手小白 第一次写博客 最近在做关于高光谱图像模糊聚类的课题 分享一下用matlab自带函数进行模糊聚类算法的学习过程 如有错误 欢迎指正!
相信大家都知道FCM的原理 我在这里就不解释了
matlab中有自带的fcm函数 可以进行模糊聚类 用法如下
[centers,U,objFunc] = fcm(data,N);
centers是聚类中心
U是隶属度矩阵
objFunc是目标函数值
data是待分类数据 一个n
×
\times
×m=K的矩阵
N是分类数
这个代码在网上很多地方可以找到 但我的目的是为了给影像分类 运行之后得到的数据也比较抽象 让我很难和图像分类联系到一起 我又查了一些相关资料 稍微明白了一点:
U是一个N
×
\times
×K的矩阵 矩阵里的数值是该像素属于各个类别的可能性 选择可能性最大的类别作为该像素的所属类别才能尽可能准确地达到图像分类的目的
所以要对U的每一列取最大值 得到像素的类别索引 就可以实现图像分类了
为了方便 我把U转置了一下 这时候需要对每一行取最大值
[max_u,index]=max(U,[],2);
index就是各像素最终所属的类别