图像融合方法-高斯金字塔

高斯金字塔:
clc;
clear;
close all;

img=imread('7left.jpg');
[m,n]=size(img);

if size(img,3)==3  
    img = rgb2gray(img);  
end  

gauss_pyr=gauss_pyramid2(img,6);  

 for i=1:length(gauss_pyr) -1          %获得残差图像,i级预测残差
    imgn{i}=gauss_pyr{i} - expand(gauss_pyr{i+1});  
 end

for i=1:length(imgn)  
   subplot(2,3,i),imshow(gauss_pyr{i}); 
end   

分解图像如下:


残差图像

图像的重建过程:

clear all; close all; clc;

img_left=double(imread('7left.jpg'));
img_right=double(imread('7right.jpg'));

[m n]=size(img_left);

w=1/256*[1  4  6  4 1;      %拉普拉斯滤波器
         4 16 24 16 4;
         6 24 36 24 6;
         4 16 24 16 4;
         1  4  6  4 1];

imgn_left{1}=img_left;
imgn_right{1}=img_right;
for i=2:5                   %滤波,下采样
   imgn_left{i}=imfilter(imgn_left{i-1},w,'replicate');
   imgn_left{i}=imgn_left{i}(1:2:size(imgn_left{i},1)-1,1:2:size(imgn_left{i},2)-1); %i-1级近似
   
   imgn_right{i}=imfilter(imgn_right{i-1},w,'replicate');
   imgn_right{i}=imgn_right{i}(1:2:size(imgn_right{i},1)-1,1:2:size(imgn_right{i},2)-1); %i-1级近似
end

 
for i=5:-1:2        %调整图像大小
   imgn_left{i-1}=imgn_left{i-1}(1:2*size(imgn_left{i},1),1:2*size(imgn_left{i},2)); 
   imgn_right{i-1}=imgn_right{i-1}(1:2*size(imgn_right{i},1),1:2*size(imgn_right{i},2)); 
end
 for i=1:4          %获得残差图像,i级预测残差
    imgn_left{i}=imgn_left{i}-expand(imgn_left{i+1},w);     
    imgn_right{i}=imgn_right{i}-expand(imgn_right{i+1},w);  
 end
 
for i=4:-1:1        %残差图像重构原图像
    imgn_left{i}=imgn_left{i}+expand(imgn_left{i+1},w);
    imgn_right{i}=imgn_right{i}+expand(imgn_right{i+1},w);
end

a1 = subplot('position',[0.0,0.5,0.5,0.5]);imshow(uint8(imgn_left{1}));
a2 = subplot('position',[0.5,0.5,0.25,0.25]);imshow(uint8(imgn_left{2}));
a3 = subplot('position',[0.75,0.5,0.125,0.125]);imshow(uint8(imgn_left{3}));
a4 = subplot('position',[0.875,0.5,0.0625,0.0625]);imshow(uint8(imgn_left{4}));

a1 = subplot('position',[0.0,0.0,0.5,0.5]);imshow(uint8(imgn_right{1}));
a2 = subplot('position',[0.5,0.0,0.25,0.25]);imshow(uint8(imgn_right{2}));
a3 = subplot('position',[0.75,0.0,0.125,0.125]);imshow(uint8(imgn_right{3}));
a4 = subplot('position',[0.875,0.0,0.0625,0.0625]);imshow(uint8(imgn_right{4}));




结果为:

合成代码:

clear all; close all; clc;

img_left=double(imread('7left.jpg'));
img_right=double(imread('7right.jpg'));

[m n]=size(img_left);

w=1/256*[1  4  6  4 1;      %拉普拉斯滤波器
         4 16 24 16 4;
         6 24 36 24 6;
         4 16 24 16 4;
         1  4  6  4 1];

imgn_left{1}=img_left;
imgn_right{1}=img_right;
for i=2:5                   %滤波,下采样
   imgn_left{i}=imfilter(imgn_left{i-1},w,'replicate');
   imgn_left{i}=imgn_left{i}(1:2:size(imgn_left{i},1)-1,1:2:size(imgn_left{i},2)-1); %i-1级近似
   
   imgn_right{i}=imfilter(imgn_right{i-1},w,'replicate');
   imgn_right{i}=imgn_right{i}(1:2:size(imgn_right{i},1)-1,1:2:size(imgn_right{i},2)-1); %i-1级近似
end

 
for i=5:-1:2        %调整图像大小
   imgn_left{i-1}=imgn_left{i-1}(1:2*size(imgn_left{i},1),1:2*size(imgn_left{i},2)); 
   imgn_right{i-1}=imgn_right{i-1}(1:2*size(imgn_right{i},1),1:2*size(imgn_right{i},2)); 
end

 imgn = imgn_left;
 for i=1:4          %获得残差图像,i级预测残差
    imgn{i} = imadd(0.5*imgn_left{i},0.5*imgn_right{i});            %获得融合图像
    imgn_left{i}=imgn_left{i}-expand(imgn_left{i+1},w);     
    imgn_right{i}=imgn_right{i}-expand(imgn_right{i+1},w); 
    
    
 end
 
 %融合图像的残差
for i=1:4          %获得残差图像,i级预测残差
    imgn{i}=imgn{i}-expand(imgn{i+1},w);  
 end
    
    
for i=4:-1:1        %残差图像重构原图像
    imgn{i}=imgn{i}+expand(imgn{i+1},w);
    imgn_left{i}=imgn_left{i}+expand(imgn_left{i+1},w);
    imgn_right{i}=imgn_right{i}+expand(imgn_right{i+1},w);
end

a1 = subplot('position',[0.0,0.3,0.5,0.5]);imshow(uint8(imgn_left{1}));
a2 = subplot('position',[0.5,0.3,0.5,0.5]);imshow(uint8(imgn{1}));




 

效果:

猜你喜欢

转载自blog.csdn.net/nineship/article/details/80805978