【数字图像处理matlab】(Brovey变换融合算法)

【数字图像处理matlab】(Brovey变换融合算法)

输入一张高分辨率的全色影像HighResultion,一张低分辨率的多光谱影像Multispectral,采用Brovey算法实现影像融合,其中多光谱重采样采用imresize()函数的最近邻插值算法。

function F=Broveymelt(HighResultion,Multispectral)
%调用代码-------------------------------------------------
%Image1=imread('HR.jpg');Image2=imread('MS.jpg');
%%Image1为高分辨率,Image2为多光谱
%Broveymelt(Image1,Image2);
%------------------------------------------------------

subplot(1,3,1),imshow(HighResultion);
title('原高分辨率图');
subplot(1,3,2),imshow(Multispectral);
title('原低分辨率图');
HighResultion=im2double(HighResultion);
Multispectral=im2double(Multispectral);
[row,column,bands]=size(HighResultion);   %求高分辨率的size
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  % B = imresize(A,[nrows ncols],method)
  %method的几种可选值:
          %'nearest'最近邻插值(默认值)
          % 'bilinear'双线性插值
          % 'bicubic'三次卷积插值
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
r=Multispectral(:,:,1);   R=imresize(r,[row,column]);
g=Multispectral(:,:,2);   G=imresize(g,[row,column]);
b=Multispectral(:,:,3);   B=imresize(b,[row,column]);

Xr=zeros(row,column);Xg=zeros(row,column);Xb=zeros(row,column);
for i=1:row
    for j=1:column
        sum=R(i,j)+G(i,j)+B(i,j);
        Xr(i,j)=HighResultion(i,j)*R(i,j)/sum;
        Xg(i,j)=HighResultion(i,j)*G(i,j)/sum;
        Xb(i,j)=HighResultion(i,j)*B(i,j)/sum;
    end
end

X=cat(3,Xr,Xg,Xb);
subplot(1,3,3),imshow(X);
title('Brovey变换融合后的图像');

end

测试:
在这里插入图片描述

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值