多种方法实现高光谱影像匹配

多种方法实现高光谱影像匹配

clc,clear,close all;
%% 加载文件
addpath(genpath(‘F:\课程\高光谱遥感’));
PixSpe=importdata(‘PixelSpectrum.xls’);
LibSpe=importdata(‘SpectrumLibrary.xls’);
%% 矩阵元素二值化
P=PixSpe.Sheet1;
P(P>=0.5)=1;
P(P<0.5)=0;
ABC=LibSpe.Sheet1;
ABC(ABC>=0.5)=1;
ABC(ABC<0.5)=0;
%% 计算汉明距离
P_ABC=zeros(size(ABC,1),size(ABC,2));
num=zeros(size(ABC,1),1);
for i=1:size(ABC,1)
P_ABC(i,:)=ABC(i,:)-P;
num(i,1)=sum(P_ABC(i,:)~=0);
end
%% 升序排列找最小距离
[X,index]=sort(num,‘ascend’);
fprintf(“最接近类别为%s”,num2str(index(1,1)));
%% 保存文件
OK=index(1,1);
fid = fopen(‘F:\课程\高光谱遥感\最接近类别.txt’,‘wt’);
fprintf(fid,‘最接近类别是%g\n’,OK);
fclose(fid);
%% 基于线性相似度计算的光谱波形匹配
P=PixSpe.Sheet1;
ABC=LibSpe.Sheet1;
D=zeros(size(ABC,1),1);
for i=1:size(ABC,1)
D(i,1)=sum(abs(ABC(i,:)-P));
end
[X,index]=sort(D,‘ascend’);
fprintf(“最接近类别为%s\n”,num2str(index(1,1)));
%% 光谱角度匹配
P=PixSpe.Sheet1;
ABC=LibSpe.Sheet1;
seta=zeros(3,1);
for i=1:size(ABC,1)
numerator=sum(P.ABC(i,:));
denominator=sqrt(P
P’)*sqrt(ABC(i,:)ABC(i,:)’);
seta(i,1)=acosd(numerator/denominator);
end
[X,index]=sort(seta,‘ascend’);
fprintf(“最接近类别为%s\n”,num2str(index(1,1)));
%% 交叉相关匹配
P=PixSpe.Sheet1;
ABC=LibSpe.Sheet1;
P_ave=mean§;
ABC_ave=mean(ABC,2);
denominator_1=zeros(size(ABC,1),size(ABC,2));
denominator_2=zeros(size(ABC,1),size(ABC,2));
R=zeros(size(ABC,1),1);
for i=1:size(ABC,1)
for j=1:size(ABC,2)
numerator(i,j)=(P(1,j)-P_ave)
(ABC(i,j)-ABC_ave(i,1));
denominator_1(i,j)=(P(1,j)-P_ave)^2;
denominator_2(i,j)=(ABC(i,j)-ABC_ave(i,1))^2;
end
R(i,1)=sum(numerator(i,:))/sqrt(sum(denominator_1(i,:))sum(denominator_2(i,:)));
end
[X,index]=sort(R,‘descend’);
fprintf(“最接近类别为%s\n”,num2str(index(1,1)));
%% 偏度
P=PixSpe.Sheet1;
ABC=LibSpe.Sheet1;
P_2_10=P(1,2:10);
ABC_1_9=ABC(:,1:9);
R1=zeros(3,1);
R2=zeros(3,1);
for i=1:size(ABC,1)
temp=corrcoef(P_2_10,ABC_1_9(i,:));
R1(i,1)=temp(1,2);
end
P_1_9=P(1,1:9);
ABC_2_10=ABC(:,2:10);
for i=1:size(ABC,1)
temp=corrcoef(P_1_9,ABC_2_10(i,:));
R2(i,1)=temp(1,2);
end
AS=1-0.5
abs(R1-R2);
[X,index]=sort(AS,‘descend’);
fprintf(“最接近类别为%s\n”,num2str(index(1,1)));

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值