Matlab 为什么我需要调整第一个图像的大小以混合两个图像?

Matlab 为什么我需要调整第一个图像的大小以混合两个图像?,matlab,gaussian,blending,laplacian,Matlab,Gaussian,Blending,Laplacian,我已经使用金字塔实现了图像混合。如果我调整第一个图像的大小,效果会很好,但是如果我调整它的大小,我得不到想要的东西。所以,我需要的是混合而不调整大小,以获得适当的结果。我的代码是: clc; close all; clear all eyeImg = im2double(imread('eye.jpg')); figure; imshow(eyeImg); title('Image 1'); handImg = im2double(imread('hand.jpg')); figure; i

我已经使用金字塔实现了图像混合。如果我调整第一个图像的大小,效果会很好,但是如果我调整它的大小,我得不到想要的东西。所以,我需要的是混合而不调整大小,以获得适当的结果。我的代码是:

clc; close all; clear all

eyeImg = im2double(imread('eye.jpg'));
figure; imshow(eyeImg); title('Image 1');

handImg = im2double(imread('hand.jpg'));
figure; imshow(handImg); title('Image 2');

mask1 = im2double(imread('maskOrgan.jpg'));

eyeImage = imresize(eyeImg,[size(handImg,1) size(handImg,2)]);


figure; imshow(eyeImage); title('Image 1');
figure; imshow(handImg); title('Image 2');


figure; imshow(mask1); title('Mask 1');
mask2 = 1-mask1; %complement of the mask
figure; imshow(mask2); title('Mask 2');

level = 5;
lpA = genPyr(eyeImage,'laplace',level); % the Laplacian pyramid
lpB = genPyr(handImg,'laplace',level); % the Laplacian pyramid

gpM1 = genPyr(mask1, 'gauss', level);
gpM2 = genPyr(mask2, 'gauss', level);

limgo = cell(1,level); % the blended pyramid

for p = 1:level
    [Mp, Np, ~] = size(lpA{p});
    maskap = imresize(mask1,[Mp Np]);
    maskbp = imresize(mask2,[Mp Np]);
    limgo{p} = lpA{p}.*maskap + lpB{p}.*maskbp;
end
imgo = pyrReconstruct(limgo);
figure,imshow(imgo) % blend by pyramid
我使用这些输入图像:

请注意,如果不调整大小,则会出现以下错误

Array dimensions must match for binary array op.

Error in main (line 35)
    limgo{p} = lpA{p}.*maskap + lpB{p}.*maskbp;

如果不想调整大小,则必须进行“填充”,即将最小图像的大小增加到最大图像的大小。。。从而保持两幅图像的原始比例。创建一个带有零的较大图像,并将最小的图像复制到其中