【图像分割】基于K-means算法实现遥感图像分类附Matlab代码

简介: 【图像分割】基于K-means算法实现遥感图像分类附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

实验目的

利用matlab软件,通过K-means算法的方法处理给定的7幅遥感图像,将其分成水域、居民区和其他三类区域。

实验方法:

1 遥感图像的分类[1]

遥感图像是通过反映地物光谱信息的像元亮度值及反映地物空间信息的像元空间变化来表征不同地物的。对遥感图像中各类地物的光谱信息和空间信息进行分析,选择特征(能够反映地物光谱信息和空间信息并可用于遥感图像分类处理的变量),并用一定的方式将特征空间划分为互不重叠的子空间,然后将图像中各个像元划归到各个子空间去。这就是图像分类。其理论依据是:遥感图像中的同类地物在相同的条件下,应具有相同或相似的光谱和空间信息特征,从而表现出同类地物的某种内在的相似性,将集群在同一特征空间区域;而不同类的地物其光谱和空间信息特征不同,将集群在不同的特征空间区域。

在遥感图像的分类中,按照是否有已知训练样本的分类数据,分类方法可分为:监督和非监督两大类。我们所进行的卫星核查方面的研究,缺少一定的训练样本,所以一般只能采用非监督分类的方法。非监督分类方法快速简单具有一定的精度,可作为监督分类的重要补充手段。常用的处理方法有:平行六面体分类、简单均方差阈值分类、动态聚类分类,每种分类方法各有优缺点。对于遥感图像使用动态聚类方法比较理想。

2 动态聚类

动态聚类分析可通过分析像元的类似度(距离)一次完成像元的归并分类,也可以多次完成。我们的作法是先按某些原则选择一些代表点作为聚类的核心,然后把其余的待分点按某种方法(判据准则)分到各类中去,完成初始分类。初始分类完成以后,重新计算各聚类中心,把各点按初始判据重新分到各类,完成了第一次迭代。然后再修改聚类中心,再进行下一次迭代,用来对上次分类结果进行修改。如此反复进行,直到最后满意为止。动态聚类算法是一种普遍采用的方法,具有以下三个要点:

(1) 选定某种距离度量作为样本间的相似性度量。

(2) 确定某个评价聚类结果质量的准则函数。

(3) 给定某个初始分类,然后用迭代算法找出使准则函数取极值的最好聚类结果。

动态聚类方法有很多,并且还在不断地发展,各种分类方法各有优缺点,其中K-means和ISO-DATA算法是目前较为成熟的两种动态聚类方法。通过从模型上进行的分析比较发现:K-means及ISODATA算法的优点在于把分析判别的统计聚类算法和简单多光谱分类融合在一起,使聚类更准确、客观。

3 K-means算法(本实验所用的方法

K-means算法是一种较典型的逐点修改迭代的动态聚类算法,也是一种普遍采用的方法,其要点是以误差平方和为准则函数。一般的作法是先按某些原则选择一些代表点作为聚类的核心,然后把其余的待分点按某种方法(判据准则)分到各类中去,完成初始分类。初始分类完成以后,重新计算各聚类中心,完成了第一次迭代。然后修改聚类中心,以便进行下一次迭代。这种修改有两种方案,即逐点修改和逐批修改。逐点修改类中心就是一个像元样本按某一原则归属于某一组类后,就要重新计算这个组类的均值,并且以新的均值作为凝聚中心点进行下一次像元聚类。逐批修改类中心就是在全部像元样本按某一组的类中心分类之后,再计算修改各类的均值,作为下一次分类的凝聚中心点。采用了以下K-means算法:

⛄ 部分代码

clear all;   s=imread('L1.bmp'); s=double(s);  X1=20;X2=45;X3=90;  num1=0;num2=0;num3=0;[M,N]=size(s); R=zeros(M,N);     a=10;b=20;counter=0;      format long;  while(abs(b-a)>0.001)       counter=counter+1     a    b=a;     a=0;     for i=1:M     for j=1:N                 %-------------------------------------------------------            p1=(s(i,j)-X1).^2;                 p2=(s(i,j)-X2).^2;             p3=(s(i,j)-X3).^2;                   min_p=min([p1,p2,p3]);                    if (p1==min_p)                  R(i,j)=1;                        num1=num1+1;               elseif (p2==min_p)                 R(i,j)=2;                       num2=num2+1;             elseif (p3==min_p)                 R(i,j)=3;                        num3=num3+1;             end                a=a+sqrt(min_p);                             end     end            X1=X1*0;   X2=X2*0;   X3=X3*0;                                 a=a/M/N;         %---------------------------------------------------    for i=1:M     for j=1:N             if (R(i,j)==1) X1=X1+s(i,j);             elseif (R(i,j)==2) X2=X2+s(i,j);             elseif (R(i,j)==3) X3=X3+s(i,j);            end         end     end         X1=X1/num1; num1=0;         X2=X2/num2; num2=0;     X3=X3/num3; num3=0;     end   r=zeros(M,N); for  i=1:M for j=1:N                        if (R(i,j)==1)     r(i,j)=30;               elseif(R(i,j)==2)  r(i,j)=100;              elseif(R(i,j)==3)  r(i,j)=200;         end     end end  r=uint8(r); figure; imshow(r);                           imwrite(r,'r1.bmp');

⛄ 运行结果

通过K-means算法,并用matlab程序来实现,将给定了7幅遥感图像通过处理,分成水域、居民区和其他三类区域。并用RGB彩色进行标记划分,这样看起来更易识别。

上述的K-means算法是在类别数k给定的情况下进行的。当类别数未知的情况下,在使用k-均值算法时,可以假设类别数是逐步增加的。例如,k=1,k=2,k=3,,分别使用该算法。显然,准则函数是随k的增加而单调地减少的。当数据集表现为k′个很集中的聚类时, 随着从一个聚类增加到k′个聚类而迅速减少。当k再增加时,相当于将本来是较密集的类再行分开。因此Je虽有所减少,但减少的速度比较缓慢,直到k=N, 等于0。如果作一条k的曲线,其拐点对应的就是最优的聚类数。

K-means分类方法简便易行,实践表明该方法对卫星数据分类处理效果很好,在地球物理和地质探查分析中获得了成功应用。

⛄ 参考文献

[1] 陈华,陈书海,张平,严卫东. K-means算法在遥感分类中的应用. [J].红外与激光工程,2000,29.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料

🍅 仿真咨询

1.卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
2.图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
3.旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划
4.无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配
5.传感器部署优化、通信协议优化、路由优化、目标定位
6.信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号
7.生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化
8.微电网优化、无功优化、配电网重构、储能配置
9.元胞自动机交通流 人群疏散 病毒扩散 晶体生长





相关文章
|
3月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
367 0
|
4月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
251 3
|
4月前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
189 6
|
3月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
199 8
|
3月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
214 8
|
3月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
3月前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
4月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
289 2
|
4月前
|
canal 算法 vr&ar
【图像处理】基于电磁学优化算法的多阈值分割算法研究(Matlab代码实现)
【图像处理】基于电磁学优化算法的多阈值分割算法研究(Matlab代码实现)
154 1
|
3月前
|
机器学习/深度学习 数据采集 负载均衡
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
191 0