高斯金字塔:
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}));
效果: