数字图像处理第一二次实验报告.docx
- 文档编号:4412522
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:13
- 大小:237.98KB
数字图像处理第一二次实验报告.docx
《数字图像处理第一二次实验报告.docx》由会员分享,可在线阅读,更多相关《数字图像处理第一二次实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
数字图像处理第一二次实验报告
中国地质大学(武汉)
模式识别实验报告
姓名:
班级:
学号:
指导老师:
马丽
遥感图像处理
实验内容:
一学习使用ENVI
1.使用ENVI打开遥感图像(任选3个波段合成假彩色图像,保存写入报告)
2.会查看图像的头文件(保存或者copy至报告)
3.会看地物的光谱曲线(保存或者copy至报告)
4.进行数据信息统计(保存或者copy至报告)
5.设置ROI,对每类地物自己添加标记数据,并保存为ROI文件和图像文件(CMap贴到报告中)。
6.使用自己设置的ROI进行图像分类(ENVI中的两种有监督分类算法)(分类算法名称和分类结果写入报告)
最小距离(Minimum Distance):
利用训练样本数据计算出每一类的均值向量和标准差向量,然后以均值向量作为该类在特征空间中的中心位置,计算输入图像中每个像元到各类中心的距离,到哪一类中心的距离最小,该像元就归入到哪一类。
马氏距离(Mahalanobis Distance):
计算输入图像到各训练样本的马氏距离(一种有效的计
算两个未知样本集的相似度的方法),最终统计马氏距离最小的,即为此类别。
二MATLAB处理遥感数据(提交代码和结果)
7.用MATLAB读入遥感数据(zy3和DC两个数据)
8.用MATLAB读入遥感图像中ROI中的数据(包括数据和标签)
9.把图像数据m*n*L(其中m表示行数,n表示列数,L表示波段数),重新排列为N*L的二维矩阵(其中N=m*n),其中N表示所有的数据点数量m*n。
(提示,用reshape函数,可以help查看这个函数的用法)
10.计算每一类数据的均值(平均光谱),并把所有类别的平均光谱画出来(plot)(类似下面的效果)。
11.画出zy3数据中“农作物类别”的数据点(自己ROI标记的这个类别的点)在每个波段的直方图(matlab函数:
nbins=50;hist(Xi,nbins),其中Xi表示这类数据在第i波段的数值)。
计算出这个类别数据的协方差矩阵,并画出(figure,imagesc(C),colorbar)。
%读遥感数据,以及读入带标签的数据
clearall
%readthedatazy3sample1
Img=multibandread('zy3sample1',[400,400,4],'float',0,'bsq','n',{'Band','Direct',[1:
4]});%将高光谱数据读入
GT=multibandread('123',[400,400,1],'uint8',0,'bsq','n',{'Band','Direct',[1:
1]});%将groundtruth读入(也就是带标签的CMap或说ROI信息读入)
test_class=1:
4;
C=length(test_class);
NbRow=400;
NbCol=400;
NbDim=4;
dataname='zy3';
%第一种方式读入带标签数据
[X,Y]=ExtractDataFromROI(Img,GT);
%或者自己写程序,根据Img和GT来读带标签数据。
X=[];Y=[];
fori=1:
NbRow
forj=1:
NbCol
ifGT(i,j)~=0%%表明是带标签的数据
data=Img(i,j,:
);
data=reshape(data,1,NbDim);
X=[X;data];
Y=[Y;GT(i,j)];
end
end
end
%计算平均光谱
img1=reshape(Img,NbRow*NbCol,NbDim);
T=1:
5;
s=zeros(4,4);
c=length(find(Y==1));
T
(2)=c;
fori=3:
5
T(i)=T(i-1)+length(find(Y==(i-1)));
end
forj=1:
4
form=1:
4
s(m,j)=sum(X(T(m):
T(m+1),j))/(T(m+1)-T(m));
end
end
figure(5);
plot(s);
%画直方图和求协方差矩阵
nbins=50;
figure
(1);
hist(X(T
(1):
T
(2),1),nbins);
figure
(2);
hist(X(T
(1):
T
(2),2),nbins);
figure(3);
hist(X(T
(1):
T
(2),3),nbins);
figure(4);
hist(X(T
(1):
T
(2),4),nbins);
C=cov(X);
figure(6);
imagesc(C);
colorbar;
基于k-means算法的遥感图像分类
实验内容:
1.采用zy3sample数据(400*400*4),该数据包含4个类别:
土地;农作物/植被;大棚;道路。
2.关于初始聚类中心的选择,如果是采用随机选择方法,那么至少随机选择3次,并进行结果比较。
(注意:
道路占有的像素很少,所以随机选择4个聚类中心的话,很可能选择不到这种地物。
可以思考该如何解决这个问题?
可以简单的先从带有标签的CMap(也就是自己做的ROI保存的图像)中选择,也就是当选择的4个聚类中心都正确的分别属于一类地物的话,看看k-means算法的结果,是否比在整个图像中随机选择要好。
)
3.关于迭代终止条件。
可以参考下面的一种方法:
(1)设置一个阈值,当前后两次聚类中心的差别小于这个阈值的时候,停止迭代。
(2)设置一个阈值,当前后两次聚类中所包含的点的数目变化小于这个阈值的时候,停止迭代。
(3)设置最多迭代次数,也就是不管迭代有没有收敛,只要达到这个迭代次数就停止。
4.关于距离度量方法,可以选用欧氏距离,光谱角距离(提供代码),如果两个都选择,那么比较一下聚类效果哪个好,或者也可以查资料采用其他更好的方法。
5.画出整个图像的聚类结果,每种类别采用一种彩色(提供ColorTable和画图代码)。
算法原理:
Kmeans算法是一种经典的聚类算法,在模式识别中得到了广泛的应用,基于Kmeans的变种算法也有很多,模糊Kmeans、分层Kmeans等。
Kmeans和应用于混合高斯模型的受限EM算法是一致的。
高斯混合模型广泛用于数据挖掘、模式识别、机器学习、统计分析。
Kmeans的迭代步骤可以看成E步和M步,E:
固定参数类别中心向量重新标记样本,M:
固定标记样本调整类别中心向量。
K均值只考虑(估计)了均值,而没有估计类别的方差,所以聚类的结构比较适合于特征协方差相等的类别。
k-means 算法接受参数 k ;然后将事先输入的n个数据对象划分为 k个聚类以便使得所获得的聚类满足:
同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。
聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。
%%读遥感数据,以及读入带标签的数据
clearall
%%readthedatazy3sample1
Img=multibandread('zy3sample1',[400,400,4],'float',0,'bsq','n',{'Band','Direct',[1:
4]});%将高光谱数据读入
GT=multibandread('1',[400,400,1],'uint8',0,'bsq','n',{'Band','Direct',[1:
1]});%将groundtruth读入(也就是带标签的CMap或说ROI信息读入)
test_class=1:
4;
C=length(test_class);
NbRow=400;
NbCol=400;
NbDim=4;
dataname='zy3';
%%第一种方式读入带标签数据
[X,Y]=ExtractDataFromROI(Img,GT);
%%计算平均光谱
img1=reshape(Img,NbRow*NbCol,NbDim);
%%K-MEAN算法
a=zeros(1,4);
%a1=input('1-3386的一个数','s');
a
(1)=img1(45,1);
%b1=input('3386-11157的一个数','s');
a
(2)=img1(15150,1);
%c1=input('11157-12364的一个数','s');
a(3)=img1(123600,1);
%d1=input('12364-12535的一个数','s');
a(4)=img1(160000,1);
%e1=input('12535-12666的一个数','s');
W=zeros(length(img1),4);
Q=zeros(1,length(img1));
U=0;
%a12=Euclidian_distance(img1(1,1),a);
fory=1:
3
fori=1:
length(img1(:
1))
a11=abs(img1(i,1)-a);
[V,I]=sort(a11);
W(i,I
(1))=img1(i,1);
if(I
(1)==1)
Q((i))=1;
end
if(I
(1)==2)
Q((i))=2;
end
if(I
(1)==3)
Q((i))=3;
end
if(I
(1)==4)
Q((i))=4;
end
end
R=a;
forj=1:
4
a(j)=sum(W(:
j))/length(find(W(:
j)~=0));
end
end
M=reshape(Q,400,400);
st=zeros(400,400,3);
fori=1:
400
forj=1:
400
if(M(i,j)==1)
st(i,j,:
)=[25500];
end
if(M(i,j)==2)
st(i,j,:
)=[0,255,0];
end
if(M(i,j)==3)
st(i,j,:
)=[2052050];
end
if(M(i,j)==4)
st(i,j,:
)=[255255255];
end
end
end
imshow(st);
实验分析:
选用合适的数据结构存储数据元组,然后设定参数,数据的总量,维度,聚类类别数量,然后随机产生K个D维的数据作为质心,计算每个数据与质心距离,并加入所属的簇中,经多次迭代后,质心不变后,得到分类后的结果。
由于初始化质心是随机的,所以每次运行聚类分析花费的时间略有不同,本实验采用结构体来存储数据,聚类的操作多应用指针来实现,在选择所属的簇,并加入簇中,加入的是数据的索引值,提高了效率,在一步中如果使用指针指向数据可以进一步提高效率。
总体上说算法的运行时间还是比较令人满意。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 第一 二次 实验 报告