在此过程之后,我在将图像应用到图像时出现问题:
1]我使用roipoly
在matlab中创建了一个掩码。
2]我将它从逻辑转换为双,因此我可以应用高斯模糊。
3]我对面具应用了高斯模糊。
然后我想将一个图像与这个蒙版相乘,以便“切出”由蒙版定义的区域(但由于高斯模糊,它应该看起来很混合)。这是问题发生的地方。我收到以下错误:
Error using .*
Matrix dimensions must agree.
图片尺寸为480x640x3
,而面具尺寸仅为480x640
。我该如何组合这些图像?任何帮助将不胜感激。
function blendedImage = BlendImages(pyr1, pyr2, mask, level)
maskImage = double(mask);
pyr1_mask = GaussianPyramid(maskImage, level);
pyr2_mask = GaussianPyramid(1 - mask, level);
pyr_combined = cell(level, 1);
for i=1:level
% this is where the error is:
pyr_combined{i} = (pyr1{i} .* pyr1_mask{i}) + (pyr2{i} .* pyr2_mask{i});
figure; imshow(pyr_combined{i});
end
figure; imshow((pyr1_mask{level}));
答案 0 :(得分:1)
尝试使用此错误部分 -
pyr_combined{i} = bsxfun(@times,pyr1{i},pyr1_mask{i}) + bsxfun(@times,pyr2{i},pyr2_mask{i});
BSXFUN可能比使用here使用的REPMAT方法更快。