function [imgc]=IHS_fusion(imga,imgb)
% imga是RGB类型的 imgb是pan图像 2副图像大小一样
%————————————————————————————————
AA=[1/sqrt(3),1/sqrt(3),1/sqrt(3);
1/sqrt(6),1/sqrt(6),-2/sqrt(6); %RGB->IHS正变换矩阵
1/sqrt(2),-1/sqrt(2),0];
%————————————————————————————————
BB=[1/sqrt(3),1/sqrt(6),1/sqrt(2);
1/sqrt(3),1/sqrt(6),-1/sqrt(2); %IHS->RGB逆变换矩阵
1/sqrt(3),-2/sqrt(6),0];
%——————————————————————————————-—
v1=zeros(3,1); % 存 RGB 信息
u1=zeros(3,1); % 存 IHS 信息
[M,N]=size(imgb);
R=imga(:,:,1);
G=imga(:,:,2);
B=imga(:,:,3);
imgc=zeros(M,N,3);
I=zeros(M,N);
IHS=zeros(M,N,3);
%------------------------对多光谱图的RGB分量 imga 进行 IHS正变换-----------
for i=1:M
for j=1:N
v1(1)=R(i,j); % v1(3,1)为(i,j)点的RGB向量
v1(2)=G(i,j);
v1(3)=B(i,j);
u1=AA*v1; % u1(3,1)为(i,j)点的IHS向量
IHS(i,j,:)=u1;
I(i,j)=IHS(i,j,1);
end
end
% I分量有问题 有大于1的数据!!
%-----------------------------直方图匹配----------------
% 先把I处理归一化一下,使其可以用于imhist函数
a=I(:);
b=max(a);
a=(a)/(b);
imI=reshape(a,M,N);
figure(4)
subplot(1,2,1)
imshow(imI);
title('归一化的I分量')
hgram=imhist(a); % 用imga的I分量为参照对imgb进行匹配
imgb=histeq(imgb,hgram);
subplot(1,2,2)
imshow(imgb);
title('直方图匹配后的pan图像')
%-----------------------------------------------------------
IHS(:,:,1)=imgb(:,:); % 匹配后的imgb替换掉I分量
%-----------------------------IHS反变换--------------------
for i=1:M
for j=1:N
u1(1)=IHS(i,j,1);
u1(2)=IHS(i,j,2);
u1(3)=IHS(i,j,3);
v1=BB*u1;
imgc(i,j,:)=v1;
end
end
end