function yugang = IHS_RongHe( A,B )
%IHS变换融合,影像大小分辨率可不同(不推荐)
%A全色波段
%B多光谱波段
u1=zeros(3,1);
u2=zeros(3,1);
v11=zeros(3,1);%高分辨率RGB值
v12=zeros(3,1);%低分辨率RGB值
%%%%%%%%%%%%%%%%%%%%%%
AA=[1/sqrt(3),1/sqrt(3),1/sqrt(3);1/sqrt(6),1/sqrt(6),-2/sqrt(6);1/sqrt(2),-1/sqrt(2),0];%RGB->IHS变换矩阵
BB=[1/sqrt(3),1/sqrt(6),1/sqrt(2);1/sqrt(3),1/sqrt(6),-1/sqrt(2);1/sqrt(3),-2/sqrt(6),0];%IHS->RGB逆变换矩阵
%%%%%%%%%%%%%%%%%%%%%%
[m,n,color_A]=size(A);
[p,q,color_B]=size(B);
if(m~=p)%若大小分辨率不同
xishu_x=ceil(m/p);%全色图像与多光谱图像大小比例
xishu_y=ceil(n/q);
C=double(B);
B=zeros(m,n,color_B);
for i=1:m
for j=1:n
i_=ceil(i/xishu_x);
j_=ceil(j/xishu_y);%比例缩放
B(i,j,:)=C(i_,j_,:);
end
end
end
RGB=zeros(m,n,3);
for i=1:m
for j=1:n
v11(1)=double(A(i,j,1));
v11(2)=double(A(i,j,1));
v11(3)=double(A(i,j,1));
v12(1)=double(B(i,j,1));
v12(2)=double(B(i,j,2));
v12(3)=double(B(i,j,3));
u1=AA*v11;
u2=AA*v12;
u2(1)=u1(1);
v12=BB*u2;
RGB(i,j,:)=v12;
end
end
yugang=uint8(round(RGB));
end
评论5
最新资源