首页 > 编程知识 正文

matlab遥感数字图像处理,matlab平均值模型

时间:2023-05-06 03:11:43 阅读:181412 作者:637

首先,这些代码采用最基本的方法,通过一步一步迭代算法的原理和实现过程来理解,没有在实际应用工程中采用,读者对此可以作为学习参考。

非监督分类——k均值算法图像分类概念:将图像中的像素点分为不同类别,每个类别具有特定的物理含义。 例如,地物类型可能有很多,包括草地、混凝土地、建筑、道路、森林和山地。

图像分类的两个步骤:特征提取和分类算法。

特征提取:如何描述各像素点、颜色特征成分。

分类算法: k均值聚类算法。

监督分类和非监督分类监督分类,又称训练场法、训练分类法,是以建立统计识别函数为理论基础,基于典型样本训练方法进行分类的技术。 即,根据已知训练区域提供的样本,通过选择特征参数,求出特征参数作为决策规则,建立用于对各分类对象图像进行图像分类的判别函数。

无监督分类是以不同影像地物特征空间中类别特征差异为依据的一种无先验分类准则的图像分类,是以聚类为理论基础,通过计算机对图像进行集成统计分析的方法。 根据待分类样本特征参数的统计特征,建立决策规则进行分类。

k均值聚类算法

分类结果采用rgb成分作为特征向量,分为3种,因此颜色相近的像素分为1种,在伪彩色处理中显示为相同的颜色。 由于初始中心是随机产生的,表示三种类型的颜色也随机变化,但分类结果均一致。

像素分布散布图

图中,蓝点是所有像素点的位置,红色星号表示第一类聚类中心的坐标位置变化,绿色星号表示第二类聚类中心的坐标位置变化,紫色星号表示第三类聚类中心的坐标位置变化

平均距离随重复次数变化的关系

从该图可以明显看出,平均距离随着反复次数逐渐缩小,在实验中有减少后突然增加的现象。 通过初始点的随机选择,某一类距离发生了突然变化,推测平均距离随着变动较大的类别的距离而急剧增加,但从分类结果来看,各类别的像素点随着反复次数而明显集中。

源代码clc; clearvarsclose all; im1=imread(Buildings91.TIF ); %读取图像figure(1) subplot ) 2、2、1 )、imshow ) im1; IR=double (im1 (:1 ); %分解图像的红色成分ig=double (im1 (:2 ); %绿色成分IB=double (im1 (:3 ); %蓝色分量[m,n]=size(IR ); 调整%图像大小的t=Zeros(m,n ); 制作%类别表示d=zeros (3,1 ); %临时保存在各类距离的一维矩阵dmin=zeros (256,1 )中; %记录最短距离cux=round(unifrnd(1,m,3,1 ); 作为%初始聚类中心cuy=round(unifrnd(1,n,3,1 ) ),随机生成3组坐标; ZZ=Zeros(n,9 ); %簇中心保持矩阵ZZ (1,1 )=IR ) cux ),cuy(1); ZZ (1,2 )=ig ) cux(1,cuy ) ); ZZ (1,3 )=IB ) cux(1),cux(1) ); ZZ (1,4 )=IR ) cux )、cuy ) ); ZZ (1,5 )=ig ) cux )、cuy ) ); ZZ (1,6 )=IB ) cux(2),cuy ) ); ZZ (1,7 )=IR ) cux(3),cux(3) ); ZZ (1,8 )=ig ) cux(3),cuy ) ); ZZ (1,9 )=IB ) cux(3),cux(3) ); %读取3个初始聚类中心的各色成分值for count=1:256 ddr1=0; ddg1=0; ddb1=0; %统计类别1各成分之和ddr2=0; ddg2=0; ddb2=0; %统计类别2各成分之和ddr3=0; ddg3=0; ddb3=0; %统计类别3各成分之和d1=0; d2=0; d3=0; dmins=0; forI=1:mforj=1:nd(1)=sqrt((IR(I,j )-ZZ (count,1 ) ) (ig ) I,j )-ZZ (count,2 ) ) ) ) 5 ) ) ) IB ) I,j )-ZZ ) ) 652 %与第二类的距离d(3)=sqrt ) (IR ) I,j )-ZZ ) count,7 ) )2) ig ) I,j )-ZZ 判断为IFD(1) d )2) d )1) d )3) %属于第一类t ) I,j )=0; DDR1=DDR1IR(I,j ); DDG1=DDG1ig(I,j ); DDB1=DDB1IB(I,j ); d1=d1 1; 判断ELSEifd(2) d )1) d )2) d )3) %属于第二类t ) I,j )=1;

ddr2=ddr2+ir(i,j); ddg2=ddg2+ig(i,j); ddb2=ddb2+ib(i,j); d2=d2+1; else%判断属于第三类 T(i,j)=2; ddr3=ddr3+ir(i,j); ddg3=ddg3+ig(i,j); ddb3=ddb3+ib(i,j); d3=d3+1; end end end dmin(count)=dmins/(m*n); Zz(count+1,1)=ddr1/d1; Zz(count+1,2)=ddg1/d1; Zz(count+1,3)=ddb1/d1; Zz(count+1,4)=ddr2/d2; Zz(count+1,5)=ddg2/d2; Zz(count+1,6)=ddb2/d2; Zz(count+1,7)=ddr3/d3; Zz(count+1,8)=ddg3/d3; Zz(count+1,9)=ddb3/d3;%计算各平均值 if sum(Zz(count,:)==Zz(count+1,:))==9%判断是否结束循环 break; endendfigure(1)subplot(2,2,2),imshow(T,[]);tu1=zeros(m*n,3);%第一类点tu2=zeros(m*n,3);%第二类点tu3=zeros(m*n,3);%第三类点%对灰度图进行伪彩色处理[M N] = size(T);T=T*255/(max(max(T)));T2=zeros(M,N,3); %初始化三通道for x=1:M for y=1:N if T(x,y)<=127 % R T2(x,y,1)=0; elseif T(x,y)<=191 T2(x,y,1)=4*T(x,y)-510; else T2(x,y,1)=255; end if T(x,y)<=63 % G T2(x,y,2)=254-4*T(x,y); elseif T(x,y)<=127 T2(x,y,2)=4*T(x,y)-254; elseif T(x,y)<=191 T2(x,y,2)=255; else T2(x,y,2)=1022-4*T(x,y); end if T(x,y)<=63 % B T2(x,y,3)=255; elseif T(x,y)<=127 T2(x,y,3)=510-4*T(x,y); else T2(x,y,3)=0; end endendfigure(1)subplot(2,2,3),imshow(uint8(T2));ir1=zeros(m*n,1);ig1=zeros(m*n,1);ib1=zeros(m*n,1);k=1;for i=1:m for j=1:n ir1(k)=ir(i,j); ig1(k)=ig(i,j); ib1(k)=ib(i,j); k=k+1; endendfigure(2)scatter3(ir1,ig1,ib1,'.');%生成散点图xlabel('R');ylabel('G');zlabel('B');hold on;scatter3(Zz(:,1),Zz(:,2),Zz(:,3),'*','r');hold on;scatter3(Zz(:,4),Zz(:,5),Zz(:,6),'*','g');hold on;scatter3(Zz(:,7),Zz(:,8),Zz(:,9),'*','m');counts=1:count;figure(3)plot(counts,dmin(1:count));

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。