clc;clear;close all;
image1 = imread('coke1.png');
image2 = imread('coke2.png');
image2=rgb2gray(image2);%灰度图像更清晰
image1=align_image(image1,image2);%对齐
nums = 4;
Gau1 = cell(nums,1);
Gau2 = cell(nums,1);
N =1;
cutoff_low = 1;
cutoff_high = 100;
% 原图进高斯金字塔最底层
Gau1{N} = image1;
Gau2{N} = image2;
% 确定高斯模糊核
a = 0.4;
h = [1/4-a/2 1/4 a 1/4 1/4-a/2];
% ------------------------生成高斯金字塔-------------------------------%
for N = 2:nums
temp1 = imfilter(Gau1{N-1},h,'conv','same','replicate');
temp1 = imfilter(temp1,h','conv','same','replicate');
% 高斯模糊
temp1 = imgaussfilt(temp1, cutoff_low);
Gau1{N} = temp1(1:2:end,1:2:end,:);
temp2 = imfilter(Gau2{N-1},h,'conv','same','replicate');
temp2 = imfilter(temp2,h','conv','same','replicate');
% 高斯模糊
temp2 = imgaussfilt(temp2, cutoff_low);
Gau2{N} = temp2(1:2:end,1:2:end,:);
end
Gau2{1}=imgaussfilt(Gau2{1}, cutoff_low);
% 显示高斯金字塔
figure
subplot('position',[0.05,0.2,0.4,0.6]);imshow(Gau2{1});title('1');
subplot('position',[0.5,0.2,0.2,0.3]);imshow(Gau2{2});title('2');
subplot('position',[0.75,0.2,0.1,0.15]);imshow(Gau2{3});title('3');
subplot('position',[0.9,0.2,0.05,0.075]);imshow(Gau2{4});title('4');
% -------------------生成拉普拉斯金字塔-----------------------------------%
Lapla = cell(nums-1,1);
% 拉普拉斯金字塔的最高层等于高斯金字塔的最高层
% 得到残差放入拉普拉斯金字塔
for index = nums-1:-1:1
% 上采样
temp = imresize(Gau1{index+1},2,'bilinear');
temp = imgaussfilt(temp, cutoff_high);
Lapla{index} = Gau1{index} -temp;
end
% 显示拉普拉斯金字塔
figure
subplot('position',[0.05,0.2,0.4,0.6]);imshow(Lapla{1});title('1');
subplot('position',[0.5,0.2,0.2,0.3]);imshow(Lapla{2});title('2');
subplot('position',[0.75,0.2,0.1,0.15]);imshow(Lapla{3});title('3');
% ---------------------组合-------------------------%
out = cell(nums-1,1);
for N = 1:nums-1
out{N}=Gau2{N}+Lapla{N};
end
figure
subplot('position',[0.05,0.2,0.4,0.6]);imshow(out{1});title('1');
subplot('position',[0.5,0.2,0.2,0.3]);imshow(out{2});title('2');
subplot('position',[0.75,0.2,0.1,0.15]);imshow(out{3});title('3');